You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by ma...@redhat.com on 2011/07/14 16:58:32 UTC

Adds get/set blob metadata for ec2 driver

While updating the API docs and writing the line 'EC2 does not 
support retrieving or setting of blob metadata values' I thought 
I'd double check the EC2 API/appoxy aws rubygem. It seems I missed 
this (or the EC2 API was updated... weak I know ... ). This patch 
adds the 'blob_metadata' and 'update_blob_metadata' methods to the
 EC2 driver:

retrieve metadata like:

HEAD /api/buckets/:bucket/:blob
(since its HEAD, no message body, but response headers contain the 
blob metadata)

set metadata like:

POST /api/buckets/:bucket/:blob
X-Deltacloud-Blobmeta-KEY:Value
X-Deltacloud-Blobmeta-Version:2.1

marios

Re: [PATCH] Adds get and update blob metadata for ec2 driver:

Posted by Michal Fojtik <mi...@mifo.sk>.
On Jul 14, 2011, at 4:58 PM, marios@redhat.com wrote:

ACK. Sorry for delay ;-)

  -- Michal

> From: marios <ma...@redhat.com>
> 
> 
> Signed-off-by: marios <ma...@redhat.com>
> ---
> server/lib/deltacloud/drivers/ec2/ec2_driver.rb |   18 ++++++++++++++++++
> 1 files changed, 18 insertions(+), 0 deletions(-)
> 
> diff --git a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
> index 45032d6..175e4ca 100644
> --- a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
> +++ b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
> @@ -415,6 +415,24 @@ module Deltacloud
>           end
>         end
> 
> +        def blob_metadata(credentials, opts={})
> +          s3_client = new_client(credentials, :s3)
> +          blob_meta = {}
> +          safely do
> +            the_blob = s3_client.bucket(opts['bucket']).key(opts[:id], true)
> +            blob_meta = the_blob.meta_headers
> +          end
> +          blob_meta

Just a minor catch: If you're using 'block' the value returned from it is the value of the
last statement in this block. In this case, it's 'blob_meta', so it's safe to use just:

def blob_metadata(...)
  ......
  safely do
    .....
    blob_meta = the_blob.meta_headers
  end
end

> +        end
> +
> +        def update_blob_metadata(credentials, opts={})
> +          s3_client = new_client(credentials, :s3)
> +          meta_hash = BlobHelper::rename_metadata_headers(opts['meta_hash'], '')
> +          safely do
> +            the_blob = s3_client.bucket(opts['bucket']).key(opts[:id])
> +            the_blob.save_meta(meta_hash)
> +          end
> +        end
> 
>         def blob_data(credentials, bucket_id, blob_id, opts={})
>           s3_client = new_client(credentials, :s3)
> -- 
> 1.7.3.4
> 


[PATCH] Adds get and update blob metadata for ec2 driver:

Posted by ma...@redhat.com.
From: marios <ma...@redhat.com>


Signed-off-by: marios <ma...@redhat.com>
---
 server/lib/deltacloud/drivers/ec2/ec2_driver.rb |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
index 45032d6..175e4ca 100644
--- a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
+++ b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
@@ -415,6 +415,24 @@ module Deltacloud
           end
         end
 
+        def blob_metadata(credentials, opts={})
+          s3_client = new_client(credentials, :s3)
+          blob_meta = {}
+          safely do
+            the_blob = s3_client.bucket(opts['bucket']).key(opts[:id], true)
+            blob_meta = the_blob.meta_headers
+          end
+          blob_meta
+        end
+
+        def update_blob_metadata(credentials, opts={})
+          s3_client = new_client(credentials, :s3)
+          meta_hash = BlobHelper::rename_metadata_headers(opts['meta_hash'], '')
+          safely do
+            the_blob = s3_client.bucket(opts['bucket']).key(opts[:id])
+            the_blob.save_meta(meta_hash)
+          end
+        end
 
         def blob_data(credentials, bucket_id, blob_id, opts={})
           s3_client = new_client(credentials, :s3)
-- 
1.7.3.4


Re: Adds get/set blob metadata for ec2 driver

Posted by "marios@redhat.com" <ma...@redhat.com>.
<nag> this patch is now 1 week old so I feel entitled to ask for a 
review (pretty please?) </nag>

On 14/07/11 17:58, marios@redhat.com wrote:
> While updating the API docs and writing the line 'EC2 does not
> support retrieving or setting of blob metadata values' I thought
> I'd double check the EC2 API/appoxy aws rubygem. It seems I missed
> this (or the EC2 API was updated... weak I know ... ). This patch
> adds the 'blob_metadata' and 'update_blob_metadata' methods to the
>   EC2 driver:
>
> retrieve metadata like:
>
> HEAD /api/buckets/:bucket/:blob
> (since its HEAD, no message body, but response headers contain the
> blob metadata)
>
> set metadata like:
>
> POST /api/buckets/:bucket/:blob
> X-Deltacloud-Blobmeta-KEY:Value
> X-Deltacloud-Blobmeta-Version:2.1
>
> marios