Method: Deltacloud::Drivers::Openstack::OpenstackDriver#blob_stream_connection

Defined in:
lib/deltacloud/drivers/openstack/openstack_driver.rb

#blob_stream_connection(params) ⇒ Object

params: :user,:password,:bucket,:blob,:content_type,:content_length,:metadata params holds the request object - for getting to blob segment params



351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
# File 'lib/deltacloud/drivers/openstack/openstack_driver.rb', line 351

def blob_stream_connection(params)
  if BlobHelper.segmented_blob_op_type(params[:context]) == "segment"
    params[:blob] = "#{params[:blob]}#{BlobHelper.segment_order(params[:context])}"
  end
  tokens = params[:user].split("+")
  user_name, tenant_name = tokens.first, tokens.last
  #need a client for the auth_token and endpoints
  os = OpenStack::Connection.create(:username => user_name, :api_key => params[:password], :authtenant => tenant_name, :auth_url => api_provider, :service_type => "object-store")
  http = Net::HTTP.new(os.connection.service_host, os.connection.service_port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  path = os.connection.service_path + URI.encode("/#{params[:bucket]}/#{params[:blob]}")
  request = Net::HTTP::Put.new(path)
  request['X-Auth-Token'] = os.connection.authtoken
  request['X-Storage-Token'] = os.connection.authtoken
  request['Connection'] = "Keep-Alive"
  request['Content-Type'] = params[:content_type]
  request['Content-Length'] = params[:content_length]
  request['Expect'] = "100-continue"
   = params[:metadata] || {}
  BlobHelper::(, 'X-Object-Meta-')
  .each{|k,v| request[k] = v}
  return http, request
end