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