You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by lu...@apache.org on 2010/07/09 01:37:56 UTC

svn commit: r962226 - /incubator/deltacloud/trunk/client/lib/deltacloud.rb

Author: lutter
Date: Thu Jul  8 23:37:56 2010
New Revision: 962226

URL: http://svn.apache.org/viewvc?rev=962226&view=rev
Log:
Final fix for rest-client issues

Modified:
    incubator/deltacloud/trunk/client/lib/deltacloud.rb

Modified: incubator/deltacloud/trunk/client/lib/deltacloud.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/client/lib/deltacloud.rb?rev=962226&r1=962225&r2=962226&view=diff
==============================================================================
--- incubator/deltacloud/trunk/client/lib/deltacloud.rb (original)
+++ incubator/deltacloud/trunk/client/lib/deltacloud.rb Thu Jul  8 23:37:56 2010
@@ -28,20 +28,13 @@ require 'dcloud/state'
 require 'dcloud/transition'
 require 'base64'
 
-module RestClient
-  class Response
-    def body
-      self.to_s
-    end
-  end
-end
-
 class DeltaCloud
 
   attr_accessor :logger
   attr_reader   :api_uri
   attr_reader   :entry_points
   attr_reader   :driver_name
+  attr_reader   :last_request_xml
 
   def self.driver_name(url)
     DeltaCloud.new( nil, nil, url) do |client|
@@ -95,7 +88,7 @@ class DeltaCloud
 
   def flavor(id)
     request( entry_points[:flavors], :get, {:id=>id } ) do |response|
-      doc = REXML::Document.new( response.body )
+      doc = REXML::Document.new( response )
       doc.get_elements( '/flavor' ).each do |flavor|
         uri = flavor.attributes['href']
         return DCloud::Flavor.new( self, uri, flavor )
@@ -111,7 +104,7 @@ class DeltaCloud
 
   def fetch_resource(type, uri)
     request( uri ) do |response|
-      doc = REXML::Document.new( response.body )
+      doc = REXML::Document.new( response )
       if ( doc.root && ( doc.root.name == type.to_s.gsub( /_/, '-' ) ) )
         return doc.root
       end
@@ -154,7 +147,7 @@ class DeltaCloud
   def instance_states
     states = []
     request( entry_points[:instance_states] ) do |response|
-      doc = REXML::Document.new( response.body )
+      doc = REXML::Document.new( response )
       doc.get_elements( 'states/state' ).each do |state_elem|
         state = DCloud::State.new( state_elem.attributes['name'] )
         state_elem.get_elements( 'transition' ).each do |transition_elem|
@@ -177,7 +170,7 @@ class DeltaCloud
   def realms(opts={})
     realms = []
     request( entry_points[:realms], :get, opts ) do |response|
-      doc = REXML::Document.new( response.body )
+      doc = REXML::Document.new( response )
       doc.get_elements( 'realms/realm' ).each do |realm|
         uri = realm.attributes['href']
         realms << DCloud::Realm.new( self, uri, realm )
@@ -188,7 +181,7 @@ class DeltaCloud
 
   def realm(id)
     request( entry_points[:realms], :get, {:id=>id } ) do |response|
-      doc = REXML::Document.new( response.body )
+      doc = REXML::Document.new( response )
       doc.get_elements( 'realm' ).each do |realm|
         uri = realm.attributes['href']
         return DCloud::Realm.new( self, uri, realm )
@@ -207,7 +200,7 @@ class DeltaCloud
     images = []
     request_path = entry_points[:images]
     request( request_path, :get, opts ) do |response|
-      doc = REXML::Document.new( response.body )
+      doc = REXML::Document.new( response )
       doc.get_elements( 'images/image' ).each do |image|
         uri = image.attributes['href']
         images << DCloud::Image.new( self, uri, image )
@@ -218,7 +211,7 @@ class DeltaCloud
 
   def image(id)
     request( entry_points[:images], :get, {:id=>id } ) do |response|
-      doc = REXML::Document.new( response.body )
+      doc = REXML::Document.new( response )
       doc.get_elements( 'image' ).each do |instance|
         uri = instance.attributes['href']
         return DCloud::Image.new( self, uri, instance )
@@ -230,7 +223,7 @@ class DeltaCloud
   def instances(opts={})
     instances = []
     request( entry_points[:instances], :get, opts ) do |response|
-      doc = REXML::Document.new( response.body )
+      doc = REXML::Document.new( response )
       doc.get_elements( 'instances/instance' ).each do |instance|
         uri = instance.attributes['href']
         instances << DCloud::Instance.new( self, uri, instance )
@@ -241,7 +234,7 @@ class DeltaCloud
 
   def instance(id)
     request( entry_points[:instances], :get, {:id=>id } ) do |response|
-      doc = REXML::Document.new( response.body )
+      doc = REXML::Document.new( response )
       doc.get_elements( 'instance' ).each do |instance|
         uri = instance.attributes['href']
         return DCloud::Instance.new( self, uri, instance )
@@ -275,7 +268,7 @@ class DeltaCloud
 
     params[:image_id] = image_id
     request( entry_points[:instances], :post, {}, params ) do |response|
-      doc = REXML::Document.new( response.body )
+      doc = REXML::Document.new( response )
       instance = doc.root
       uri = instance.attributes['href']
       return DCloud::Instance.new( self, uri, instance )
@@ -285,7 +278,7 @@ class DeltaCloud
   def storage_volumes(opts={})
     storage_volumes = []
     request( entry_points[:storage_volumes] ) do |response|
-      doc = REXML::Document.new( response.body )
+      doc = REXML::Document.new( response )
       doc.get_elements( 'storage-volumes/storage-volume' ).each do |instance|
         uri = instance.attributes['href']
         storage_volumes << DCloud::StorageVolume.new( self, uri, instance )
@@ -296,7 +289,7 @@ class DeltaCloud
 
   def storage_volume(id)
     request( entry_points[:storage_volumes], :get, {:id=>id } ) do |response|
-      doc = REXML::Document.new( response.body )
+      doc = REXML::Document.new( response )
       doc.get_elements( 'storage-volume' ).each do |storage_volume|
         uri = storage_volume.attributes['href']
         return DCloud::StorageVolume.new( self, uri, storage_volume )
@@ -314,7 +307,7 @@ class DeltaCloud
   def storage_snapshots(opts={})
     storage_snapshots = []
     request( entry_points[:storage_snapshots] ) do |response|
-      doc = REXML::Document.new( response.body )
+      doc = REXML::Document.new( response )
       doc.get_elements( 'storage-snapshots/storage-snapshot' ).each do |instance|
         uri = instance.attributes['href']
         storage_snapshots << DCloud::StorageSnapshot.new( self, uri, instance )
@@ -325,7 +318,7 @@ class DeltaCloud
 
   def storage_snapshot(id)
     request( entry_points[:storage_snapshots], :get, {:id=>id } ) do |response|
-      doc = REXML::Document.new( response.body )
+      doc = REXML::Document.new( response )
       doc.get_elements( 'storage-snapshot' ).each do |storage_snapshot|
         uri = storage_snapshot.attributes['href']
         return DCloud::StorageSnapshot.new( self, uri, storage_snapshot )
@@ -352,7 +345,7 @@ class DeltaCloud
 
   def discover_entry_points
     request(api_uri.to_s) do |response|
-      doc = REXML::Document.new( response.body )
+      doc = REXML::Document.new( response )
       @driver_name = doc.root.attributes['driver']
       doc.get_elements( 'api/link' ).each do |link|
         rel = link.attributes['rel']
@@ -378,11 +371,19 @@ class DeltaCloud
       :authorization => "Basic "+Base64.encode64("#{@name}:#{@password}"),
       :accept => "application/xml"
     }
+
     logger << "Request [#{method.to_s.upcase}] #{request_path}]\n"  if @verbose
+
     if method.eql?(:get)
-      RestClient.send(method, request_path, headers, &block)
+      RestClient.send(method, request_path, headers) do |response|
+        @last_request_xml = response
+        yield response.to_s
+      end
     else
-      RestClient.send(method, request_path, form_data, headers, &block)
+      RestClient.send(method, request_path, form_data, headers) do |response|
+        @last_request_xml = response
+        yield response.to_s
+      end
     end
   end