Class: OpenNebula::Acl
- Inherits:
-
PoolElement
- Object
- XMLElement
- PoolElement
- OpenNebula::Acl
- Defined in:
- OpenNebula/Acl.rb
Overview
Abstract rules of the type USER RESOURCE RIGHTS which are:
USER -> #<num> @<num> ALL RESOURCE -> + separated list and "/{#,@}<num>|ALL" VM, HOST NET IMAGE USER TEMPLATE GROUP ACL RIGHTS -> + separated list USE MANAGE ADMIN CREATE
Constant Summary
- USERS =
{ "UID" => 0x100000000, "GID" => 0x200000000, "ALL" => 0x400000000 }
- RESOURCES =
{ "VM" => 0x1000000000, "HOST" => 0x2000000000, "NET" => 0x4000000000, "IMAGE" => 0x8000000000, "USER" => 0x10000000000, "TEMPLATE" => 0x20000000000, "GROUP" => 0x40000000000 }
- RIGHTS =
{ "USE" => 0x1, # Auth. to use an object "MANAGE" => 0x2, # Auth. to perform management actions "ADMIN" => 0x4, # Auth. to perform administrative actions "CREATE" => 0x8 # Auth. to create an object }
Class Method Summary (collapse)
-
+ (String) build_xml(pe_id = nil)
Creates an empty XML representation.
-
+ (Array) parse_rule(rule_str)
Parses a rule string, e.g.
Instance Method Summary (collapse)
-
- (nil, OpenNebula::Error) allocate(user, resource, rights)
Creates a new ACL rule.
-
- (nil, OpenNebula::Error) delete
Deletes the Acl rule.
-
- (nil) info
Does nothing, individual ACL rules info can’t be retrieved from OpenNebula.
-
- (Acl) initialize(xml, client)
constructor
Constructor.
Methods inherited from PoolElement
#id, #name, new_with_id, #to_str
Methods inherited from XMLElement
#[], #attr, #each, #each_xpath, #has_elements?, #initialize_xml, #name, #retrieve_elements, #template_like_str, #template_str, #text, #to_hash, #to_xml
Constructor Details
- (Acl) initialize(xml, client)
Constructor
70 71 72 |
# File 'OpenNebula/Acl.rb', line 70 def initialize(xml, client) super(xml,client) end |
Class Method Details
+ (String) build_xml(pe_id = nil)
Creates an empty XML representation. It contains the id, if it is specified.
81 82 83 84 85 86 87 88 89 |
# File 'OpenNebula/Acl.rb', line 81 def self.build_xml(pe_id=nil) if pe_id acl_xml = "<ACL><ID>#{pe_id}</ID></ACL>" else acl_xml = "<ACL></ACL>" end XMLElement.build_xml(acl_xml,'ACL') end |
+ (Array) parse_rule(rule_str)
Parses a rule string, e.g. “#5 HOST+VM/@12 INFO+CREATE+DELETE”
or OpenNebula::Error objects
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
# File 'OpenNebula/Acl.rb', line 131 def self.parse_rule(rule_str) ret = Array.new rule_str = rule_str.split(" ") if rule_str.length != 3 return OpenNebula::Error.new( "String needs three components: User, Resource, Rights") end ret << parse_users(rule_str[0]) ret << parse_resources(rule_str[1]) ret << parse_rights(rule_str[2]) errors=ret.map do |arg| if OpenNebula.is_error?(arg) arg. else nil end end errors.compact! if errors.length>0 return OpenNebula::Error.new(errors.join(', ')) end return ret end |
Instance Method Details
- (nil, OpenNebula::Error) allocate(user, resource, rights)
Creates a new ACL rule.
102 103 104 105 106 107 |
# File 'OpenNebula/Acl.rb', line 102 def allocate(user, resource, rights) return super( AclPool::ACL_POOL_METHODS[:addrule], user, resource, rights ) end |
- (nil, OpenNebula::Error) delete
Deletes the Acl rule
113 114 115 |
# File 'OpenNebula/Acl.rb', line 113 def delete() super(AclPool::ACL_POOL_METHODS[:delrule]) end |
- (nil) info
Does nothing, individual ACL rules info can’t be retrieved from OpenNebula
121 122 123 |
# File 'OpenNebula/Acl.rb', line 121 def info() return nil end |