Class: OpenNebula::Document
- Inherits:
-
PoolElement
- Object
- XMLElement
- PoolElement
- OpenNebula::Document
- Defined in:
- lib/opennebula/document.rb
Overview
All subclasses must define the DOCUMENT_TYPE constant.
Direct Known Subclasses
Constant Summary collapse
- DOCUMENT_METHODS =
Constants and Class Methods
{ :allocate => "document.allocate", :delete => "document.delete", :info => "document.info", :update => "document.update", :chown => "document.chown", :chmod => "document.chmod", :clone => "document.clone", :rename => "document.rename", :lock => "document.lock", :unlock => "document.unlock" }
Class Method Summary collapse
-
.build_xml(pe_id = nil) ⇒ Nokogiri::XML::Node, REXML::Element
Creates a Document Object description with just its identifier this method should be used to create plain Document objects.
Instance Method Summary collapse
-
#allocate(description) ⇒ nil, OpenNebula::Error
Allocates a new Document in OpenNebula.
-
#chmod(owner_u, owner_m, owner_a, group_u, group_m, group_a, other_u, other_m, other_a) ⇒ nil, OpenNebula::Error
Changes the Document permissions.
-
#chmod_octet(octet) ⇒ nil, OpenNebula::Error
Changes the Document permissions.
-
#chown(uid, gid) ⇒ nil, OpenNebula::Error
Changes the owner/group.
-
#clone(name) ⇒ Integer, OpenNebula::Error
Clones this Document into a new one.
-
#delete ⇒ nil, OpenNebula::Error
Deletes the Document.
- #document_type ⇒ Object
-
#gid ⇒ Integer
Returns the group identifier.
-
#info ⇒ nil, OpenNebula::Error
(also: #info!)
Retrieves the information of the given Document.
-
#initialize(xml, client) ⇒ Document
constructor
Class constructor.
-
#lock(owner = "") ⇒ Bool, OpenNebula::Error
Locks this object.
-
#owner_id ⇒ Integer
Returns the owner user ID.
-
#public? ⇒ true, false
Returns true if the GROUP_U permission bit is set.
-
#rename(name) ⇒ nil, OpenNebula::Error
Renames this Document.
-
#unlock(owner = "") ⇒ nil, OpenNebula::Error
Unlocks this object.
-
#update(new_template, append = false) ⇒ nil, OpenNebula::Error
Replaces the template contents.
Methods inherited from PoolElement
#id, #name, new_with_id, #to_str
Methods inherited from XMLElement
#[], #add_element, #attr, #delete_element, #each, #each_xpath, #element_xml, #has_elements?, #initialize_xml, #name, #retrieve_elements, #template_like_str, #template_str, #template_xml, #text, #to_hash, #to_xml
Constructor Details
#initialize(xml, client) ⇒ Document
Class constructor
77 78 79 |
# File 'lib/opennebula/document.rb', line 77 def initialize(xml, client) super(xml,client) end |
Class Method Details
.build_xml(pe_id = nil) ⇒ Nokogiri::XML::Node, REXML::Element
Creates a Document Object description with just its identifier this method should be used to create plain Document objects.
57 58 59 60 61 62 63 64 65 |
# File 'lib/opennebula/document.rb', line 57 def Document.build_xml(pe_id=nil) if pe_id obj_xml = "<DOCUMENT><ID>#{pe_id}</ID></DOCUMENT>" else obj_xml = "<DOCUMENT></DOCUMENT>" end XMLElement.build_xml(obj_xml,'DOCUMENT') end |
Instance Method Details
#allocate(description) ⇒ nil, OpenNebula::Error
Allocates a new Document in OpenNebula
107 108 109 |
# File 'lib/opennebula/document.rb', line 107 def allocate(description) super(DOCUMENT_METHODS[:allocate], description, document_type) end |
#chmod(owner_u, owner_m, owner_a, group_u, group_m, group_a, other_u, other_m, other_a) ⇒ nil, OpenNebula::Error
Changes the Document permissions. Each [Integer] argument must be 1 to allow, 0 deny, -1 do not change
169 170 171 172 173 174 175 176 |
# File 'lib/opennebula/document.rb', line 169 def chmod(owner_u, owner_m, owner_a, group_u, group_m, group_a, other_u, other_m, other_a) rc = check_type() return rc if OpenNebula.is_error?(rc) super(DOCUMENT_METHODS[:chmod], owner_u, owner_m, owner_a, group_u, group_m, group_a, other_u, other_m, other_a) end |
#chmod_octet(octet) ⇒ nil, OpenNebula::Error
Changes the Document permissions.
157 158 159 160 161 162 |
# File 'lib/opennebula/document.rb', line 157 def chmod_octet(octet) rc = check_type() return rc if OpenNebula.is_error?(rc) super(DOCUMENT_METHODS[:chmod], octet) end |
#chown(uid, gid) ⇒ nil, OpenNebula::Error
Changes the owner/group
144 145 146 147 148 149 |
# File 'lib/opennebula/document.rb', line 144 def chown(uid, gid) rc = check_type() return rc if OpenNebula.is_error?(rc) super(DOCUMENT_METHODS[:chown], uid, gid) end |
#clone(name) ⇒ Integer, OpenNebula::Error
Clones this Document into a new one
184 185 186 187 188 189 190 191 192 193 |
# File 'lib/opennebula/document.rb', line 184 def clone(name) rc = check_type() return rc if OpenNebula.is_error?(rc) return Error.new('ID not defined') if !@pe_id rc = @client.call(DOCUMENT_METHODS[:clone], @pe_id, name) return rc end |
#delete ⇒ nil, OpenNebula::Error
Deletes the Document
115 116 117 118 119 120 |
# File 'lib/opennebula/document.rb', line 115 def delete() rc = check_type() return rc if OpenNebula.is_error?(rc) return call(DOCUMENT_METHODS[:delete], @pe_id) end |
#document_type ⇒ Object
257 258 259 |
# File 'lib/opennebula/document.rb', line 257 def document_type self.class::DOCUMENT_TYPE end |
#gid ⇒ Integer
Returns the group identifier
237 238 239 |
# File 'lib/opennebula/document.rb', line 237 def gid self['GID'].to_i end |
#info ⇒ nil, OpenNebula::Error Also known as: info!
Retrieves the information of the given Document.
89 90 91 92 93 94 95 96 97 |
# File 'lib/opennebula/document.rb', line 89 def info() rc = super(DOCUMENT_METHODS[:info], 'DOCUMENT') if !OpenNebula.is_error?(rc) && self['TYPE'].to_i != document_type return OpenNebula::Error.new("[DocumentInfo] Error getting document [#{@pe_id}].") end return rc end |
#lock(owner = "") ⇒ Bool, OpenNebula::Error
Locks this object
212 213 214 215 216 217 218 |
# File 'lib/opennebula/document.rb', line 212 def lock(owner="") return Error.new('ID not defined') if !@pe_id rc = @client.call(DOCUMENT_METHODS[:lock], @pe_id, owner) return rc end |
#owner_id ⇒ Integer
Returns the owner user ID
243 244 245 |
# File 'lib/opennebula/document.rb', line 243 def owner_id self['UID'].to_i end |
#public? ⇒ true, false
Returns true if the GROUP_U permission bit is set
249 250 251 252 253 254 255 |
# File 'lib/opennebula/document.rb', line 249 def public? if self['PERMISSIONS/GROUP_U'] == "1" || self['PERMISSIONS/OTHER_U'] == "1" true else false end end |
#rename(name) ⇒ nil, OpenNebula::Error
Renames this Document
201 202 203 |
# File 'lib/opennebula/document.rb', line 201 def rename(name) return call(DOCUMENT_METHODS[:rename], @pe_id, name) end |
#unlock(owner = "") ⇒ nil, OpenNebula::Error
Unlocks this object
227 228 229 |
# File 'lib/opennebula/document.rb', line 227 def unlock(owner="") return call(DOCUMENT_METHODS[:unlock], @pe_id, owner) end |
#update(new_template, append = false) ⇒ nil, OpenNebula::Error
Replaces the template contents
130 131 132 133 134 135 |
# File 'lib/opennebula/document.rb', line 130 def update(new_template, append=false) rc = check_type() return rc if OpenNebula.is_error?(rc) super(DOCUMENT_METHODS[:update], new_template, append ? 1 : 0) end |