Class: Deltacloud::Drivers::Opennebula::OpennebulaDriver

Inherits:
BaseDriver
  • Object
show all
Defined in:
lib/deltacloud/drivers/opennebula/opennebula_driver.rb

Instance Method Summary collapse

Methods inherited from BaseDriver

#catched_exceptions_list, declare_feature, define_hardware_profile, define_instance_states, feature, feature_decl_for, feature_decls, #features, features, #filter_hardware_profiles, #filter_on, #find_hardware_profile, #hardware_profile, hardware_profiles, #hardware_profiles, #has_collection?, #image, #instance, #instance_actions_for, instance_state_machine, #instance_state_machine, #realm, #reboot_instance, #safely, #storage_snapshot, #storage_snapshots, #storage_volume, #storage_volumes, #supported_collections

Instance Method Details

#create_instance(credentials, image_id, opts = nil) ⇒ Object



126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/deltacloud/drivers/opennebula/opennebula_driver.rb', line 126

def create_instance(credentials, image_id, opts=nil)
	occi_client = new_client(credentials)

	hwp_id = opts[:hwp_id] || 'small'

	instancexml = ERB.new(OCCI_VM).result(binding)
	instancefile = "|echo '#{instancexml}'"

	xmlvm = occi_client.post_vms(instancefile)

	convert_instance(xmlvm.to_s(), credentials)
end

#destroy_instance(credentials, id) ⇒ Object



150
151
152
# File 'lib/deltacloud/drivers/opennebula/opennebula_driver.rb', line 150

def destroy_instance(credentials, id)
	occi_action(credentials, id, 'DONE')
end

#images(credentials, opts = nil) ⇒ Object

Images



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/deltacloud/drivers/opennebula/opennebula_driver.rb', line 72

def images(credentials, opts=nil)
	occi_client = new_client(credentials)

	images = []
	imagesxml = occi_client.get_images

	storage = REXML::Document.new(imagesxml)
	storage.root.elements.each do |d|
id = d.attributes['href'].split("/").last

diskxml = occi_client.get_image(id)

images << convert_image(diskxml.to_s(), credentials)
	end
	images
end

#instances(credentials, opts = nil) ⇒ Object



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/deltacloud/drivers/opennebula/opennebula_driver.rb', line 106

def instances(credentials, opts=nil)
	occi_client = new_client(credentials)

	instances = []
	instancesxml = occi_client.get_vms

	computes = REXML::Document.new(instancesxml)
	computes.root.elements.each do |d|
vm_id = d.attributes['href'].split("/").last

computexml = occi_client.get_vm(vm_id)

instances << convert_instance(computexml.to_s(), credentials)
	end
      instances = filter_on( instances, :id, opts )
      instances = filter_on( instances, :state, opts )
	instances
end

#realms(credentials, opts = nil) ⇒ Object



60
61
62
63
64
65
# File 'lib/deltacloud/drivers/opennebula/opennebula_driver.rb', line 60

def realms(credentials, opts=nil)
	return REALMS if ( opts.nil? )
	results = REALMS
	results = filter_on( results, :id, opts )
	results
end

#start_instance(credentials, id) ⇒ Object



140
141
142
# File 'lib/deltacloud/drivers/opennebula/opennebula_driver.rb', line 140

def start_instance(credentials, id)
	occi_action(credentials, id, 'RESUME')
end

#stop_instance(credentials, id) ⇒ Object



145
146
147
# File 'lib/deltacloud/drivers/opennebula/opennebula_driver.rb', line 145

def stop_instance(credentials, id)
	occi_action(credentials, id, 'STOPPED')
end