Class: OpenNebula::VirtualNetwork
- Inherits:
-
PoolElement
- Object
- XMLElement
- PoolElement
- OpenNebula::VirtualNetwork
- Defined in:
- lib/opennebula/virtual_network.rb
Constant Summary collapse
- VN_METHODS =
Constants and Class Methods
{ :info => "vn.info", :allocate => "vn.allocate", :delete => "vn.delete", :add_ar => "vn.add_ar", :rm_ar => "vn.rm_ar", :update_ar => "vn.update_ar", :chown => "vn.chown", :chmod => "vn.chmod", :update => "vn.update", :hold => "vn.hold", :release => "vn.release", :rename => "vn.rename", :reserve => "vn.reserve", :free_ar => "vn.free_ar" }
Class Method Summary collapse
-
.build_xml(pe_id = nil) ⇒ Object
Creates a VirtualNetwork description with just its identifier this method should be used to create plain VirtualNetwork objects.
Instance Method Summary collapse
-
#add_ar(ar_template) ⇒ Object
Adds Address Ranges to the VirtualNetwork.
-
#addleases(ip, mac = nil) ⇒ Object
deprecated
Deprecated.
use #add_ar
-
#allocate(description, cluster_id = ClusterPool::NONE_CLUSTER_ID) ⇒ Integer, OpenNebula::Error
Allocates a new VirtualNetwork 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 virtual network permissions.
-
#chmod_octet(octet) ⇒ nil, OpenNebula::Error
Changes the virtual network permissions.
-
#chown(uid, gid) ⇒ nil, OpenNebula::Error
Changes the owner/group.
-
#delete ⇒ Object
Deletes the VirtualNetwork.
-
#free(ar_id) ⇒ Object
Removes an Address Range from the VirtualNetwork.
-
#gid ⇒ Object
Returns the group identifier [return] Integer the element’s group ID.
-
#hold(ip, ar_id = -1)) ⇒ Object
Holds a virtual network address.
-
#info ⇒ Object
(also: #info!)
Retrieves the information of the given VirtualNetwork.
-
#initialize(xml, client) ⇒ VirtualNetwork
constructor
Class constructor.
- #public? ⇒ Boolean
-
#publish ⇒ Object
Publishes the VirtualNetwork, to be used by other users.
-
#release(ip, ar_id = -1)) ⇒ Object
Releases an address on hold.
-
#rename(name) ⇒ nil, OpenNebula::Error
Renames this virtual network.
-
#reserve(rname, rsize, ar_id, addr, vnet) ⇒ Integer, OpenNebula::Error
Reserve a set of addresses from this virtual network.
-
#rm_ar(ar_id) ⇒ Object
Removes an Address Range from the VirtualNetwork.
-
#rmleases(ip) ⇒ Object
deprecated
Deprecated.
use ##rm_ar
-
#unpublish ⇒ Object
Unplubishes the VirtualNetwork.
-
#update(new_template = nil, append = false) ⇒ nil, OpenNebula::Error
Replaces the template contents.
-
#update_ar(ar_template) ⇒ Object
Updates Address Ranges from the VirtualNetwork.
-
#vrouter_ids ⇒ Object
Returns an array with the numeric virtual router ids.
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, #retrieve_xmlelements, #template_like_str, #template_str, #template_xml, #text, #to_hash, #to_xml, #xml_nil?
Constructor Details
#initialize(xml, client) ⇒ VirtualNetwork
Class constructor
62 63 64 |
# File 'lib/opennebula/virtual_network.rb', line 62 def initialize(xml, client) super(xml,client) end |
Class Method Details
.build_xml(pe_id = nil) ⇒ Object
Creates a VirtualNetwork description with just its identifier this method should be used to create plain VirtualNetwork objects. id
the id of the network
Example:
vnet = VirtualNetwork.new(VirtualNetwork.build_xml(3),rpc_client)
51 52 53 54 55 56 57 58 59 |
# File 'lib/opennebula/virtual_network.rb', line 51 def VirtualNetwork.build_xml(pe_id=nil) if pe_id vn_xml = "<VNET><ID>#{pe_id}</ID></VNET>" else vn_xml = "<VNET></VNET>" end XMLElement.build_xml(vn_xml, 'VNET') end |
Instance Method Details
#add_ar(ar_template) ⇒ Object
Adds Address Ranges to the VirtualNetwork
116 117 118 119 120 121 122 123 |
# File 'lib/opennebula/virtual_network.rb', line 116 def add_ar(ar_template) return Error.new('ID not defined') if !@pe_id rc = @client.call(VN_METHODS[:add_ar], @pe_id, ar_template) rc = nil if !OpenNebula.is_error?(rc) return rc end |
#addleases(ip, mac = nil) ⇒ Object
use #add_ar
Simulates old addleases call
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/opennebula/virtual_network.rb', line 127 def addleases(ip, mac=nil) self.info ar_id = self.retrieve_elements("AR_POOL/AR[IP='#{ip}' and SIZE='1']/AR_ID") if !ar_id.nil? return Error.new("IP Address Range found with IP #{ip}") end template = 'AR = [ ' template << 'TYPE = "IP4"' template << ', IP = "' << ip << '"' if ip template << ', MAC = "' << mac << '"' if mac template << ', SIZE = 1 ]' add_ar(template) end |
#allocate(description, cluster_id = ClusterPool::NONE_CLUSTER_ID) ⇒ Integer, OpenNebula::Error
Allocates a new VirtualNetwork in OpenNebula
84 85 86 |
# File 'lib/opennebula/virtual_network.rb', line 84 def allocate(description,cluster_id=ClusterPool::NONE_CLUSTER_ID) super(VN_METHODS[:allocate], description, cluster_id) 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 virtual network permissions. Each [Integer] argument must be 1 to allow, 0 deny, -1 do not change
288 289 290 291 292 |
# File 'lib/opennebula/virtual_network.rb', line 288 def chmod(owner_u, owner_m, owner_a, group_u, group_m, group_a, other_u, other_m, other_a) super(VN_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 virtual network permissions.
279 280 281 |
# File 'lib/opennebula/virtual_network.rb', line 279 def chmod_octet(octet) super(VN_METHODS[:chmod], octet) end |
#chown(uid, gid) ⇒ nil, OpenNebula::Error
Changes the owner/group
270 271 272 |
# File 'lib/opennebula/virtual_network.rb', line 270 def chown(uid, gid) super(VN_METHODS[:chown], uid, gid) end |
#delete ⇒ Object
Deletes the VirtualNetwork
111 112 113 |
# File 'lib/opennebula/virtual_network.rb', line 111 def delete() super(VN_METHODS[:delete]) end |
#free(ar_id) ⇒ Object
Removes an Address Range from the VirtualNetwork
254 255 256 257 258 259 260 261 |
# File 'lib/opennebula/virtual_network.rb', line 254 def free(ar_id) return Error.new('ID not defined') if !@pe_id rc = @client.call(VN_METHODS[:free_ar], @pe_id, ar_id.to_i) rc = nil if !OpenNebula.is_error?(rc) return rc end |
#gid ⇒ Object
Returns the group identifier
- return
-
Integer the element’s group ID
310 311 312 |
# File 'lib/opennebula/virtual_network.rb', line 310 def gid self['GID'].to_i end |
#hold(ip, ar_id = -1)) ⇒ Object
Holds a virtual network address
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 |
# File 'lib/opennebula/virtual_network.rb', line 185 def hold(ip, ar_id=-1) return Error.new('ID not defined') if !@pe_id addr_name = address_type(ip) return addr_name if OpenNebula.is_error?(addr_name) lease_template = "LEASES = [ #{addr_name} = #{ip}" lease_template << ", AR_ID = #{ar_id}" if ar_id != -1 lease_template << "]" rc = @client.call(VN_METHODS[:hold], @pe_id, lease_template) rc = nil if !OpenNebula.is_error?(rc) return rc end |
#info ⇒ Object Also known as: info!
Retrieves the information of the given VirtualNetwork.
71 72 73 |
# File 'lib/opennebula/virtual_network.rb', line 71 def info() super(VN_METHODS[:info], 'VNET') end |
#public? ⇒ Boolean
314 315 316 317 318 319 320 |
# File 'lib/opennebula/virtual_network.rb', line 314 def public? if self['PERMISSIONS/GROUP_U'] == "1" || self['PERMISSIONS/OTHER_U'] == "1" true else false end end |
#publish ⇒ Object
Publishes the VirtualNetwork, to be used by other users
101 102 103 |
# File 'lib/opennebula/virtual_network.rb', line 101 def publish set_publish(true) end |
#release(ip, ar_id = -1)) ⇒ Object
Releases an address on hold
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 |
# File 'lib/opennebula/virtual_network.rb', line 206 def release(ip, ar_id=-1) return Error.new('ID not defined') if !@pe_id addr_name = address_type(ip) return addr_name if OpenNebula.is_error?(addr_name) lease_template = "LEASES = [ #{addr_name} = #{ip}" lease_template << ", AR_ID = #{ar_id}" if ar_id != -1 lease_template << "]" rc = @client.call(VN_METHODS[:release], @pe_id, lease_template) rc = nil if !OpenNebula.is_error?(rc) return rc end |
#rename(name) ⇒ nil, OpenNebula::Error
Renames this virtual network
300 301 302 |
# File 'lib/opennebula/virtual_network.rb', line 300 def rename(name) return call(VN_METHODS[:rename], @pe_id, name) end |
#reserve(rname, rsize, ar_id, addr, vnet) ⇒ Integer, OpenNebula::Error
Reserve a set of addresses from this virtual network
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 |
# File 'lib/opennebula/virtual_network.rb', line 234 def reserve(rname, rsize, ar_id, addr, vnet) return Error.new('ID not defined') if !@pe_id rtmpl = "SIZE = #{rsize}\n" rtmpl << "NAME = \"#{rname}\"\n" if !rname.nil? rtmpl << "AR_ID = #{ar_id}\n" if !ar_id.nil? rtmpl << "NETWORK_ID = #{vnet}\n" if !vnet.nil? if !addr.nil? addr_name = address_type(addr) return addr_name if OpenNebula.is_error?(addr_name) rtmpl << "#{addr_name} = #{addr}\n" end return @client.call(VN_METHODS[:reserve], @pe_id, rtmpl) end |
#rm_ar(ar_id) ⇒ Object
Removes an Address Range from the VirtualNetwork
146 147 148 149 150 151 152 153 |
# File 'lib/opennebula/virtual_network.rb', line 146 def rm_ar(ar_id) return Error.new('ID not defined') if !@pe_id rc = @client.call(VN_METHODS[:rm_ar], @pe_id, ar_id.to_i) rc = nil if !OpenNebula.is_error?(rc) return rc end |
#rmleases(ip) ⇒ Object
use ##rm_ar
Simulates old rmleases call
157 158 159 160 161 162 163 164 165 166 167 168 169 |
# File 'lib/opennebula/virtual_network.rb', line 157 def rmleases(ip) self.info ar_id = self.retrieve_elements("AR_POOL/AR[IP='#{ip}' and SIZE='1']/AR_ID") if !ar_id Error.new("No single IP Address Range found with IP #{ip}") elsif ar_id.size > 1 Error.new("More than one Address Range found with IP #{ip} use rmar") else rm_ar(ar_id[0]) end end |
#unpublish ⇒ Object
Unplubishes the VirtualNetwork
106 107 108 |
# File 'lib/opennebula/virtual_network.rb', line 106 def unpublish set_publish(false) end |
#update(new_template = nil, append = false) ⇒ nil, OpenNebula::Error
Replaces the template contents
96 97 98 |
# File 'lib/opennebula/virtual_network.rb', line 96 def update(new_template=nil, append=false) super(VN_METHODS[:update], new_template, append ? 1 : 0) end |
#update_ar(ar_template) ⇒ Object
Updates Address Ranges from the VirtualNetwork
172 173 174 175 176 177 178 179 |
# File 'lib/opennebula/virtual_network.rb', line 172 def update_ar(ar_template) return Error.new('ID not defined') if !@pe_id rc = @client.call(VN_METHODS[:update_ar], @pe_id, ar_template) rc = nil if !OpenNebula.is_error?(rc) return rc end |
#vrouter_ids ⇒ Object
Returns an array with the numeric virtual router ids
323 324 325 326 327 328 329 330 331 |
# File 'lib/opennebula/virtual_network.rb', line 323 def vrouter_ids array = Array.new self.each("VROUTERS/ID") do |id| array << id.text.to_i end return array end |