class Deltacloud::Drivers::Opennebula::OpennebulaDriver

Constants

OCCI_ACTION
OCCI_VM

TBD Add Context to the VMs

REALMS
VM_STATES

Public Instance Methods

create_instance(credentials, image_id, opts=nil) click to toggle source
# 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
destroy_image(credentials, id) click to toggle source
# 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
destroy_instance(credentials, id) click to toggle source
# File lib/deltacloud/drivers/opennebula/opennebula_driver.rb, line 197
def destroy_instance(credentials, id)
  occi_action(credentials, id, 'DONE')
end
hardware_profiles(credentials, opts=nil) click to toggle source

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
image(credentials, opts=nil) click to toggle source
# 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(credentials, opts=nil) click to toggle source

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
instance(credentials, opts=nil) click to toggle source
# 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
instances(credentials, opts=nil) click to toggle source
# 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
realms(credentials, opts=nil) click to toggle source
# 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
reboot_instance(credentials, id) click to toggle source
# 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
start_instance(credentials, id) click to toggle source
# File lib/deltacloud/drivers/opennebula/opennebula_driver.rb, line 187
def start_instance(credentials, id)
  occi_action(credentials, id, 'RESUME')
end
stop_instance(credentials, id) click to toggle source
# File lib/deltacloud/drivers/opennebula/opennebula_driver.rb, line 192
def stop_instance(credentials, id)
  occi_action(credentials, id, 'STOPPED')
end