You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by ma...@redhat.com on 2012/07/11 14:35:44 UTC
[PATCH] Updates for Opennebula driver - brings compatibility for ON 3.6 Many thanks to Daniel Molina dmolina@opennebula.org
From: marios <ma...@redhat.com>
Signed-off-by: marios <ma...@redhat.com>
---
.../deltacloud/drivers/opennebula/occi_client.rb | 18 ++++++++++++------
.../drivers/opennebula/opennebula_driver.rb | 18 +++++-------------
2 files changed, 17 insertions(+), 19 deletions(-)
diff --git a/server/lib/deltacloud/drivers/opennebula/occi_client.rb b/server/lib/deltacloud/drivers/opennebula/occi_client.rb
index 8688995..7d71962 100644
--- a/server/lib/deltacloud/drivers/opennebula/occi_client.rb
+++ b/server/lib/deltacloud/drivers/opennebula/occi_client.rb
@@ -83,8 +83,8 @@ module OCCIClient
######################################################################
# Retieves the pool of Virtual Machines
######################################################################
- def get_vms
- get('/compute')
+ def get_vms(verbose=false)
+ get('/compute', verbose)
end
######################################################################
@@ -196,8 +196,8 @@ module OCCIClient
######################################################################
# Retieves the pool of Images owned by the user
######################################################################
- def get_images
- get('/storage')
+ def get_images(verbose=false)
+ get('/storage', verbose)
end
@@ -275,10 +275,16 @@ module OCCIClient
private
- def get(path)
+ def get(path, verbose=false)
url = URI.parse(@endpoint+path)
+
+ params = []
+ params << "verbose=true" if verbose
+ params << "#{url.query}" if url.query
+
path = url.path
- path << "?#{url.query}" if url.query
+ path << "?#{params.join('&')}"
+
req = Net::HTTP::Get.new(path)
do_request(url, req)
diff --git a/server/lib/deltacloud/drivers/opennebula/opennebula_driver.rb b/server/lib/deltacloud/drivers/opennebula/opennebula_driver.rb
index b44482e..c9421b3 100644
--- a/server/lib/deltacloud/drivers/opennebula/opennebula_driver.rb
+++ b/server/lib/deltacloud/drivers/opennebula/opennebula_driver.rb
@@ -84,13 +84,11 @@ class OpennebulaDriver < Deltacloud::BaseDriver
def images(credentials, opts=nil)
occi_client = new_client(credentials)
- xml = treat_response(occi_client.get_images)
+ 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|
- im_id = d.attributes['href'].split("/").last
- storage = treat_response(occi_client.get_image(im_id))
- convert_image(storage, credentials)
+ convert_image(d, credentials)
end
end
@@ -156,13 +154,10 @@ class OpennebulaDriver < Deltacloud::BaseDriver
def instances(credentials, opts=nil)
occi_client = new_client(credentials)
- xml = treat_response(occi_client.get_vms)
-
+ 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|
- vm_id = d.attributes['href'].split("/").last
- computexml = treat_response(occi_client.get_vm(vm_id))
- convert_instance(computexml, credentials)
+ convert_instance(d, credentials)
end
instances = filter_on( instances, :state, opts )
@@ -235,10 +230,8 @@ class OpennebulaDriver < Deltacloud::BaseDriver
} )
end
-
def convert_instance(computexml, credentials)
- compute = REXML::Document.new(computexml)
- computehash = compute.root.elements
+ computehash = REXML::Document.new(computexml.to_s).root.elements
network = []
computehash.each('NIC/IP') {|ip| network<<InstanceAddress.new(ip.text, :type => :ipv4)}
@@ -247,7 +240,6 @@ class OpennebulaDriver < Deltacloud::BaseDriver
if computehash['DISK/STORAGE']
image_id = computehash['DISK/STORAGE'].attributes['href'].split("/").last
end
-
Instance.new( {
:id=>computehash['ID'].text,
:owner_id=>credentials.user,
--
1.7.6.5