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
--------------------------------------------------------

Reply via email to