Return-Path: Delivered-To: apmail-incubator-deltacloud-dev-archive@minotaur.apache.org Received: (qmail 71487 invoked from network); 29 Nov 2010 15:15:41 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 29 Nov 2010 15:15:41 -0000 Received: (qmail 87428 invoked by uid 500); 29 Nov 2010 15:15:41 -0000 Delivered-To: apmail-incubator-deltacloud-dev-archive@incubator.apache.org Received: (qmail 87411 invoked by uid 500); 29 Nov 2010 15:15:41 -0000 Mailing-List: contact deltacloud-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: deltacloud-dev@incubator.apache.org Delivered-To: mailing list deltacloud-dev@incubator.apache.org Delivered-To: moderator for deltacloud-dev@incubator.apache.org Received: (qmail 48266 invoked by uid 99); 29 Nov 2010 14:54:08 -0000 X-ASF-Spam-Status: No, hits=-5.0 required=10.0 tests=RCVD_IN_DNSWL_HI,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of marios@redhat.com designates 209.132.183.28 as permitted sender) From: marios@redhat.com To: deltacloud-dev@incubator.apache.org Subject: [PATCH] Adds 'create_blob' and 'delete_blob' for rackspace cloudfiles. Also some minor mods to haml for aesthetics (move 'delete' button and only display when bucket.size == 0) Date: Mon, 29 Nov 2010 16:53:23 +0200 Message-Id: <1291042403-19205-2-git-send-email-marios@redhat.com> In-Reply-To: <1291042403-19205-1-git-send-email-marios@redhat.com> References: <1291042403-19205-1-git-send-email-marios@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Virus-Checked: Checked by ClamAV on apache.org From: marios --- 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 -@bucket.blob_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