Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion lib/fog/storage/openstack.rb
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,15 @@ def initialize(options = {})
require_mime_types
@openstack_api_key = options[:openstack_api_key]
@openstack_username = options[:openstack_username]
@path = '/v1/AUTH_1234'
@openstack_management_url = options[:openstack_management_url] || 'http://example:8774/v2/AUTH_1234'

@openstack_management_uri = URI.parse(@openstack_management_url)

@host = @openstack_management_uri.host
@path = @openstack_management_uri.path
@path.sub!(%r{/$}, '')
@port = @openstack_management_uri.port
@scheme = @openstack_management_uri.scheme
end

def data
Expand Down
10 changes: 9 additions & 1 deletion lib/fog/storage/openstack/requests/public_url.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module Fog
module Storage
class OpenStack
class Real
module PublicUrl
# Get public_url for an object
#
# ==== Parameters
Expand All @@ -21,6 +21,14 @@ def url
"#{@scheme}://#{@host}:#{@port}#{@path}"
end
end

class Real
include PublicUrl
end

class Mock
include PublicUrl
end
end
end
end
24 changes: 24 additions & 0 deletions lib/fog/storage/openstack/requests/put_object.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,30 @@ def put_object(container, object, data, options = {}, &block)
request(params)
end
end

class Mock
require 'digest'

def put_object(container, object, data, options = {}, &block)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused method argument - container. If it's necessary, use _ or _container as an argument name to indicate that it won't be used.
Unused method argument - object. If it's necessary, use _ or _object as an argument name to indicate that it won't be used.
Unused method argument - options. If it's necessary, use _ or _options as an argument name to indicate that it won't be used.

dgst = Digest::MD5.new
if block_given?
Kernel.loop do
chunk = yield
break if chunk.empty?
dgst.update chunk
end
elsif data.kind_of?(String)
dgst.update data
else
dgst.file data
end
response = Excon::Response.new
response.status = 201
response.body = ''
response.headers = {'ETag' => dgst.hexdigest}
response
end
end
end
end
end
13 changes: 4 additions & 9 deletions test/requests/storage/object_tests.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,12 @@ def override_path(path)

describe "success" do
it "#put_object('fogobjecttests', 'fog_object')" do
skip if Fog.mocking?
resp = Fog::Storage[:openstack].put_object('fogobjecttests', 'fog_object', lorem_file)
resp.headers['ETag'].must_equal '80d7930fe13ff4e45156b6581656a247'
end

describe "with_object" do
before do
skip if Fog.mocking?
file = lorem_file
resp = Fog::Storage[:openstack].put_object('fogobjecttests', 'fog_object', file)
file.close
Expand Down Expand Up @@ -118,7 +116,6 @@ def override_path(path)

describe "put_object with block" do
it "#put_object('fogobjecttests', 'fog_object', &block)" do
skip if Fog.mocking?
begin
file = lorem_file
buffer_size = file.stat.size / 2 # chop it up into two buffers
Expand All @@ -133,13 +130,11 @@ def override_path(path)

describe "with_object" do
before do
unless Fog.mocking?
file = lorem_file
Fog::Storage[:openstack].put_object('fogobjecttests', 'fog_block_object', nil) do
file.read(file.stat.size).to_s
end
file.close
file = lorem_file
Fog::Storage[:openstack].put_object('fogobjecttests', 'fog_block_object', nil) do
file.read(file.stat.size).to_s
end
file.close
end

it "#get_object" do
Expand Down