1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

[rackspace|storage] updated directory to lazy load metadata when necessary

This commit is contained in:
Kyle Rames 2013-02-14 09:56:57 -06:00
parent 6089fe027c
commit abb8b8acda
4 changed files with 19 additions and 7 deletions

View file

@ -24,7 +24,11 @@ module Fog
end
def metadata
@metadata ||= Fog::Storage::Rackspace::Metadata.new
unless @metadata
response = service.head_container(key)
@metadata = Fog::Storage::Rackspace::Metadata.from_headers(response.headers)
end
@metadata
end
def destroy
@ -72,7 +76,8 @@ module Fog
def save
requires :key
service.put_container(key, metadata.to_headers)
headers = @metadata.nil? ? {} : metadata.to_headers
service.put_container(key, headers)
if service.cdn && public?
# if public and CDN connection then update cdn to public

View file

@ -42,7 +42,7 @@ module Fog
headers.each_pair do |k, v|
key = Metadata.to_key(k)
next unless key
metadata.data[key] = v
metadata.data[key] = Fog::JSON.decode(v)
end
metadata
end

View file

@ -14,13 +14,13 @@ Shindo.tests('Fog::Rackspace::Storage | directories', ['rackspace']) do
tests('#get').succeeds do
instance = @service.directories.get @name
returns(false) { instance.nil? }
returns('true') { instance.metadata[:fog_test] }
returns(true) { instance.metadata[:fog_test] }
returns(@name) { instance.key }
returns(1) { instance.count }
returns( Fog::Storage.get_body_size(lorem_file)) {instance.bytes }
returns(@filename) { instance.files.first.key }
end
end
ensure
@file.destroy if @file
@dir.destroy if @dir

View file

@ -41,7 +41,14 @@ Shindo.tests('Fog::Rackspace::Storage | directory', ['rackspace']) do
@instance.metadata.delete(:draft)
@instance.save
container_meta_attributes
end
end
tests('should retrieve metadata when necessary') do
@service.put_container(@instance.key, {"X-Container-Meta-List-Test"=>"true"} )
dir = @service.directories.find {|d| d.key == @instance.key }
returns(nil) { dir.instance_variable_get("@metadata") }
returns(true) { dir.metadata[:list_test] }
end
end
end