You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2010/12/15 21:15:08 UTC

[PATCH core 10/10] Imported endpoint patches from Tobi from previous EC2 gem

From: Michal Fojtik <mf...@redhat.com>

---
 server/lib/deltacloud/drivers/ec2/ec2_driver.rb |   36 +++++++++++++++-------
 tests/ec2/api.feature                           |    1 -
 2 files changed, 24 insertions(+), 13 deletions(-)

diff --git a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
index bf99a84..c547d5c 100644
--- a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
+++ b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
@@ -44,6 +44,8 @@ module Deltacloud
         feature :images, :owner_id
         feature :buckets, :bucket_location
 
+        DEFAULT_REGION = 'us-east-1'
+
         define_hardware_profile('t1.micro') do
           cpu                1
           memory             0.63 * 1024
@@ -183,9 +185,6 @@ module Deltacloud
           instance_options.merge!(:group_ids => opts[:security_group]) if opts[:security_group]
           safely do
             new_instance = convert_instance(ec2.launch_instances(image_id, instance_options).first)
-            if opts[:public_ip]
-              ec2.associate_address(new_instance.id, opts[:public_ip])
-            end
             if opts[:name]
               tag_instance(credentials, new_instance, opts[:name])
             end
@@ -226,10 +225,6 @@ module Deltacloud
           end
         end
 
-        def key(credentials, opts={})
-          keys(credentials, :id => opts[:id]).first
-        end
-
         def create_key(credentials, opts={})
           ec2 = new_client(credentials)
           safely do
@@ -324,14 +319,18 @@ module Deltacloud
         #--  
         def delete_blob(credentials, bucket_id, blob_id, opts=nil)
           s3_client = new_client(credentials, :s3)
-          s3_client.interface.delete(bucket_id, blob_id)
+          safely do
+            s3_client.interface.delete(bucket_id, blob_id)
+          end
         end
 
 
         def blob_data(credentials, bucket_id, blob_id, opts)
           s3_client = new_client(credentials, :s3)
-          s3_client.interface.get(bucket_id, blob_id) do |chunk|
-            yield chunk
+          safely do
+            s3_client.interface.get(bucket_id, blob_id) do |chunk|
+              yield chunk
+            end
           end
         end
 
@@ -420,11 +419,24 @@ module Deltacloud
 
         def new_client(credentials, type = :ec2)
           case type
-            when :ec2 then Aws::Ec2.new(credentials.user, credentials.password)
-            when :s3 then Aws::S3.new(credentials.user, credentials.password)
+            when :ec2 then Aws::Ec2.new(credentials.user, credentials.password, :endpoint_url => endpoint_for_service(:ec2))
+            when :s3 then Aws::S3.new(credentials.user, credentials.password, :endpoint_url => endpoint_for_service(:s3))
           end
         end
 
+        def endpoint_for_service(service)
+          url = ""
+          url << case service
+            when :ec2
+              'ec2.'
+            when :elb
+              'elasticloadbalancing.'
+            end 
+          url << (Thread.current[:provider] || ENV['API_PROVIDER'] || DEFAULT_REGION)
+          url << '.amazonaws.com'
+          url
+        end
+
         def tag_instance(credentials, instance, name)
           ec2 = new_client(credentials)
           safely do
diff --git a/tests/ec2/api.feature b/tests/ec2/api.feature
index bf0e1a0..8b16cfd 100644
--- a/tests/ec2/api.feature
+++ b/tests/ec2/api.feature
@@ -50,5 +50,4 @@ Feature: Accessing API entry points
     Then client should get list of features inside 'instances':
     | authentication_key |
     | user_data |
-    | public_ip |
     | security_group |
-- 
1.7.3.2