On 29/11/10 16:53 +0200, [email protected] wrote: Resending this ACK ;-)
From: marios <[email protected]> ACK. Code looks safe to me. EC2 driver fix is backported also for new EC2 driver. -- Michal --- server/lib/deltacloud/drivers/ec2/ec2_driver.rb | 4 +- .../drivers/rackspace/rackspace_driver.rb | 29 +++++++++++++++++++- server/views/buckets/index.html.haml | 3 +- server/views/buckets/show.html.haml | 7 +++-- 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb index d38f8f7..a7a9dbb 100644 --- a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb +++ b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb @@ -410,11 +410,11 @@ class EC2Driver < Deltacloud::BaseDriver s3_client = s3_client(credentials) #data is a construct with the temporary file created by server @.tempfile #also file[:type] will give us the content-type - res = s3_client.interface.put(bucket_id, blob_id, data.tempfile, {"Content-Type" => data[:type]}) + res = s3_client.interface.put(bucket_id, blob_id, data[:tempfile], {"Content-Type" => data[:type]}) #create a new Blob object and return that Blob.new( { :id => blob_id, :bucket => bucket_id, - :content_length => data.tempfile.length, + :content_length => data[:tempfile].length, :content_type => data[:type], :last_modified => '' } diff --git a/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb b/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb index 7d7d367..e40fb9c 100644 --- a/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb +++ b/server/lib/deltacloud/drivers/rackspace/rackspace_driver.rb @@ -228,6 +228,33 @@ class RackspaceDriver < Deltacloud::BaseDriver end end +#-- +# Create Blob +#-- + def create_blob(credentials, bucket_id, blob_id, blob_data, opts=nil) + cf = cloudfiles_client(credentials) + #must first create the object using cloudfiles_client.create_object + #then can write using object.write(data) + object = cf.container(bucket_id).create_object(blob_id) + #blob_data is a construct with data in .tempfile and content-type in {:type} + res = object.write(blob_data[:tempfile], {'Content-Type' => blob_data[:type]}) + Blob.new( { :id => object.name, + :bucket => object.container.name, + :content_length => blob_data[:tempfile].length, + :content_type => blob_data[:type], + :last_modified => '' + } + ) + end + +#-- +# Delete Blob +#-- + def delete_blob(credentials, bucket_id, blob_id, opts=nil) + cf = cloudfiles_client(credentials) + cf.container(bucket_id).delete_object(blob_id) + end + private def convert_srv_to_instance(srv) @@ -271,7 +298,7 @@ private def cloudfiles_client(credentials) safely do - CloudFiles::Connection.new(credentials.user, credentials.password) + CloudFiles::Connection.new(:username => credentials.user, :api_key => credentials.password) end end diff --git a/server/views/buckets/index.html.haml b/server/views/buckets/index.html.haml index 279d06d..0cb7ebe 100644 --- a/server/views/buckets/index.html.haml +++ b/server/views/buckets/index.html.haml @@ -30,4 +30,5 @@ -bucket.blob_list.each do |blob| = blob %td - =link_to_action 'Delete', destroy_bucket_url(bucket.name), :delete + -if bucket.size == 0 + =link_to_action 'Delete', destroy_bucket_url(bucket.name), :delete diff --git a/server/views/buckets/show.html.haml b/server/views/buckets/show.html.haml index 6346a50..9be3696 100644 --- a/server/views/buckets/show.html.haml +++ b/server/views/buckets/show.html.haml @@ -14,9 +14,10 @@ %dd [email protected]_list.each do |blob| = link_to blob, bucket_url(@bucket.name) + '/' + blob - %dt Delete bucket (must be empty) - %dd %dt Create a new blob %dd =link_to 'Create Blob', bucket_url(@bucket.name) + '/new_blob' - =link_to_action 'Delete', destroy_bucket_url(@bucket.name), :delete + %dt Delete bucket (must be empty) + %dd + -if @bucket.size == 0 + =link_to_action 'Delete', destroy_bucket_url(@bucket.name), :delete \ No newline at end of file -- 1.7.2.3
-- -------------------------------------------------------- Michal Fojtik, [email protected] Deltacloud API: http://deltacloud.org --------------------------------------------------------
