TBD Add Context to the VMs
# File lib/deltacloud/drivers/opennebula/opennebula_driver.rb, line 172 def create_instance(credentials, image_id, opts=nil) occi_client = new_client(credentials) storage_href = "#{occi_client.endpoint}/storage/#{image_id}" instancexml = ERB.new(OCCI_VM).result(binding) instancefile = "|echo '#{instancexml}'" # TBD Specify VNET in the template. xmlvm = treat_response(occi_client.post_vms(instancefile)) convert_instance(xmlvm, credentials) end
# File lib/deltacloud/drivers/opennebula/opennebula_driver.rb, line 101 def destroy_image(credentials, id) occi_client = new_client(credentials) treat_response(occi_client.delete_image(opts[:id])) end
# File lib/deltacloud/drivers/opennebula/opennebula_driver.rb, line 197 def destroy_instance(credentials, id) occi_action(credentials, id, 'DONE') end
Hardware profiles
# File lib/deltacloud/drivers/opennebula/opennebula_driver.rb, line 35 def hardware_profiles(credentials, opts=nil) occi_client = new_client(credentials) xml = occi_client.get_instance_types if CloudClient.is_error?(xml) # OpenNebula 3.0 support @hardware_profiles = ['small','medium','large'].map {|name| ::Deltacloud::HardwareProfile.new(name) } else # OpenNebula 3.2 support @hardware_profiles = REXML::Document.new(xml).root.elements.map {|d| elem = d.elements ::Deltacloud::HardwareProfile.new(elem['NAME'].text) { cpu elem['CPU'].text if elem['CPU'] memory elem['MEMORY'].text if elem['MEMORY'] storage elem['STORAGE'].text if elem['STORAGE'] architecture elem['ARCHITECTURE'].text if elem['ARCHITECTURE'] } } end filter_hardware_profiles(@hardware_profiles, opts) end
# File lib/deltacloud/drivers/opennebula/opennebula_driver.rb, line 95 def image(credentials, opts=nil) occi_client = new_client(credentials) xml = treat_response(occi_client.get_image(opts[:id])) convert_image(xml, credentials) end
Images
# File lib/deltacloud/drivers/opennebula/opennebula_driver.rb, line 84 def images(credentials, opts=nil) occi_client = new_client(credentials) xml = treat_response(occi_client.get_images(true)) # TBD Add extended info in the pool images = REXML::Document.new(xml).root.elements.map do |d| convert_image(d, credentials) end end
# File lib/deltacloud/drivers/opennebula/opennebula_driver.rb, line 166 def instance(credentials, opts=nil) occi_client = new_client(credentials) xml = treat_response(occi_client.get_vm(opts[:id])) convert_instance(xml, credentials) end
# File lib/deltacloud/drivers/opennebula/opennebula_driver.rb, line 154 def instances(credentials, opts=nil) occi_client = new_client(credentials) xml = treat_response(occi_client.get_vms(true)) # TBD Add extended info in the pool instances = REXML::Document.new(xml).root.elements.map do |d| convert_instance(d, credentials) end instances = filter_on( instances, :state, opts ) end
# File lib/deltacloud/drivers/opennebula/opennebula_driver.rb, line 73 def realms(credentials, opts=nil) return REALMS if ( opts.nil? ) results = REALMS results = filter_on( results, :id, opts ) results end
# File lib/deltacloud/drivers/opennebula/opennebula_driver.rb, line 201 def reboot_instance(credentials, id) begin occi_action(credentials, id, 'REBOOT') rescue Exception => e # TBD Check exception # OpenNebula 3.0 support raise "Reboot action not supported" end end
# File lib/deltacloud/drivers/opennebula/opennebula_driver.rb, line 187 def start_instance(credentials, id) occi_action(credentials, id, 'RESUME') end
# File lib/deltacloud/drivers/opennebula/opennebula_driver.rb, line 192 def stop_instance(credentials, id) occi_action(credentials, id, 'STOPPED') end