class OpenNebula::VNTemplate
Constants
- TEMPLATE_METHODS
Constants and Class Methods
Public Class Methods
Creates a VNTemplate
description with just its identifier this method should be used to create plain VNTemplate
objects. id
the id of the user
Example:
vntemplate = VNTemplate.new(VNTemplate.build_xml(3),rpc_client)
# File lib/opennebula/vntemplate.rb, line 48 def VNTemplate.build_xml(pe_id=nil) if pe_id obj_xml = "<VNTEMPLATE><ID>#{pe_id}</ID></VNTEMPLATE>" else obj_xml = "<VNTEMPLATE></VNTEMPLATE>" end XMLElement.build_xml(obj_xml,'VNTEMPLATE') end
Class constructor
OpenNebula::PoolElement::new
# File lib/opennebula/vntemplate.rb, line 59 def initialize(xml, client) super(xml,client) @client = client end
Public Instance Methods
Allocates a new VNTemplate
in OpenNebula
@param description [String] The contents of the VNTemplate
.
@return [nil, OpenNebula::Error] nil in case of success, Error
otherwise
OpenNebula::PoolElement#allocate
# File lib/opennebula/vntemplate.rb, line 95 def allocate(description) super(TEMPLATE_METHODS[:allocate], description) end
Changes the VNTemplate
permissions. Each [Integer] argument must be 1 to allow, 0 deny, -1 do not change
@param recursive [true,false] optional, chmods the vntemplate plus any image defined in DISK.
@return [nil, OpenNebula::Error] nil in case of success, Error
otherwise
# File lib/opennebula/vntemplate.rb, line 189 def chmod(owner_u, owner_m, owner_a, group_u, group_m, group_a, other_u, other_m, other_a, recursive=false) return call(TEMPLATE_METHODS[:chmod], @pe_id, owner_u, owner_m, owner_a, group_u, group_m, group_a, other_u, other_m, other_a, recursive) end
Changes the VNTemplate
permissions.
@param octet [String] Permissions octed , e.g. 640 @param recursive [true,false] optional, chmods the vntemplate plus any image defined in DISK.
@return [nil, OpenNebula::Error] nil in case of success, Error
otherwise
# File lib/opennebula/vntemplate.rb, line 166 def chmod_octet(octet, recursive=false) owner_u = octet[0..0].to_i & 4 != 0 ? 1 : 0 owner_m = octet[0..0].to_i & 2 != 0 ? 1 : 0 owner_a = octet[0..0].to_i & 1 != 0 ? 1 : 0 group_u = octet[1..1].to_i & 4 != 0 ? 1 : 0 group_m = octet[1..1].to_i & 2 != 0 ? 1 : 0 group_a = octet[1..1].to_i & 1 != 0 ? 1 : 0 other_u = octet[2..2].to_i & 4 != 0 ? 1 : 0 other_m = octet[2..2].to_i & 2 != 0 ? 1 : 0 other_a = octet[2..2].to_i & 1 != 0 ? 1 : 0 chmod(owner_u, owner_m, owner_a, group_u, group_m, group_a, other_u, other_m, other_a, recursive) end
Changes the owner/group
- uid
-
Integer the new owner id. Set to -1 to leave the current one
- gid
-
Integer the new group id. Set to -1 to leave the current one
- return
-
nil in case of success or an
Error
object
OpenNebula::PoolElement#chown
# File lib/opennebula/vntemplate.rb, line 154 def chown(uid, gid) super(TEMPLATE_METHODS[:chown], uid, gid) end
Clones this VNTemplate
into a new one
@param [String] name for the new VNTemplate
. any image defined in DISK. The new IMAGE_ID is set into each DISK.
@return [Integer, OpenNebula::Error] The new Template
ID in case
of success, Error otherwise
# File lib/opennebula/vntemplate.rb, line 202 def clone(name) return Error.new('ID not defined') if !@pe_id rc = @client.call(TEMPLATE_METHODS[:clone], @pe_id, name, false) return rc end
Returns the group identifier
- return
-
Integer the element's group ID
# File lib/opennebula/vntemplate.rb, line 226 def gid self['GID'].to_i end
Retrieves the information of the given VNTemplate
. include extended information, such as the SIZE for each DISK
# File lib/opennebula/vntemplate.rb, line 71 def info() return Error.new('ID not defined') if !@pe_id rc = @client.call(TEMPLATE_METHODS[:info], @pe_id, false) if !OpenNebula.is_error?(rc) initialize_xml(rc, 'VNTEMPLATE') rc = nil @pe_id = self['ID'].to_i if self['ID'] @name = self['NAME'] if self['NAME'] end return rc end
Creates a VNet instance from a VNTemplate
@param name [String] Name for the VNet instance. If it is an empty
string OpenNebula will set a default name
@param template [String] User
provided VNTemplate
to merge with the
one being instantiated
@return [Integer, OpenNebula::Error] The new VNet id, Error
otherwise
# File lib/opennebula/vntemplate.rb, line 116 def instantiate(name="", template="") return Error.new('ID not defined') if !@pe_id name ||= "" template ||= "" rc = @client.call(TEMPLATE_METHODS[:instantiate], @pe_id, name, template) return rc end
Lock a VNTemplate
# File lib/opennebula/vntemplate.rb, line 235 def lock(level) return call(TEMPLATE_METHODS[:lock], @pe_id, level) end
# File lib/opennebula/vntemplate.rb, line 230 def owner_id self['UID'].to_i end
# File lib/opennebula/vntemplate.rb, line 244 def public? if self['PERMISSIONS/GROUP_U'] == "1" || self['PERMISSIONS/OTHER_U'] == "1" true else false end end
Publishes the Template
, to be used by other users
# File lib/opennebula/vntemplate.rb, line 141 def publish set_publish(true) end
Renames this VNTemplate
@param name [String] New name for the VNTemplate
.
@return [nil, OpenNebula::Error] nil in case of success, Error
otherwise
# File lib/opennebula/vntemplate.rb, line 216 def rename(name) return call(TEMPLATE_METHODS[:rename], @pe_id, name) end
Unlock a VNTemplate
# File lib/opennebula/vntemplate.rb, line 240 def unlock() return call(TEMPLATE_METHODS[:unlock], @pe_id) end
Unplubishes the Image
# File lib/opennebula/vntemplate.rb, line 146 def unpublish set_publish(false) end
Replaces the vntemplate contents
@param new_template [String] New vntemplate contents @param append [true, false] True to append new attributes instead of
replace the whole template
@return [nil, OpenNebula::Error] nil in case of success, Error
otherwise
OpenNebula::PoolElement#update
# File lib/opennebula/vntemplate.rb, line 136 def update(new_template, append=false) super(TEMPLATE_METHODS[:update], new_template, append ? 1 : 0) end
Private Instance Methods
# File lib/opennebula/vntemplate.rb, line 254 def set_publish(published) group_u = published ? 1 : 0 chmod(-1, -1, -1, group_u, -1, -1, -1, -1, -1) end