You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by ma...@apache.org on 2011/06/24 16:47:02 UTC

svn commit: r1139338 - /incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb

Author: marios
Date: Fri Jun 24 14:47:02 2011
New Revision: 1139338

URL: http://svn.apache.org/viewvc?rev=1139338&view=rev
Log:
Adds streaming PUT blob for rax (initialise the http,request objects
for use with the BlobStreamIO class)

Modified:
    incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb

Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb?rev=1139338&r1=1139337&r2=1139338&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb Fri Jun 24 14:47:02 2011
@@ -318,6 +318,34 @@ class RackspaceDriver < Deltacloud::Base
     end
   end
 
+  #params: {:user,:password,:bucket,:blob,:content_type,:content_length,:metadata}
+  def blob_stream_connection(params)
+    #create a cloudfiles connection object to get the authtoken
+    cf, cf_host, cf_path, cf_authtoken = nil
+    safely do
+      cf = CloudFiles::Connection.new(:username => params[:user],
+                                :api_key => params[:password])
+      cf_authtoken = cf.authtoken
+      cf_host = cf.storagehost
+      cf_path = cf.storagepath
+    end
+    provider = "https://#{cf_host}"
+    uri = URI.parse(provider)
+    http = Net::HTTP.new(uri.host, uri.port )
+    http.use_ssl = true
+    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
+    request = Net::HTTP::Put.new("#{cf_path}/#{params[:bucket]}/#{params[:blob]}")
+    request['Host'] = "#{cf_host}"
+    request['X-Auth-Token'] = "#{cf_authtoken}"
+    request['Content-Type'] = params[:content_type]
+    request['Content-Length'] = params[:content_length]
+    request['Expect'] = "100-continue"
+    metadata = params[:metadata] || {}
+    BlobHelper::rename_metadata_headers(metadata, 'X-Object-Meta-')
+    metadata.each{|k,v| request[k] = v}
+    return http, request
+  end
+
 private