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 2012/01/12 14:27:46 UTC

[PATCH core] EC2: A full list of created instances should be now returned when use specified the 'instance_count' parameter. (DTACLOUD-79)

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


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 server/lib/deltacloud/drivers/ec2/ec2_driver.rb |   10 ++++++-
 server/lib/deltacloud/server.rb                 |   28 ++++++++++++++++++----
 2 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
index f899ea1..5c1ddcc 100644
--- a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
+++ b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
@@ -231,8 +231,14 @@ module Deltacloud
             }]
           end
           safely do
-            new_instance = convert_instance(ec2.launch_instances(image_id, instance_options).first)
-            new_instance
+            new_instances = ec2.launch_instances(image_id, instance_options).collect do |i|
+              convert_instance(i)
+            end
+            if new_instances.size == 1
+              new_instances.first
+            else
+              new_instances
+            end
           end
         end
 
diff --git a/server/lib/deltacloud/server.rb b/server/lib/deltacloud/server.rb
index db742d6..649871f 100644
--- a/server/lib/deltacloud/server.rb
+++ b/server/lib/deltacloud/server.rb
@@ -476,14 +476,32 @@ END
     param :hwp_id,       :string, :optional
     control do
       @instance = driver.create_instance(credentials, params[:image_id], params)
+      if @instance.kind_of? Array
+        @instances = @instance
+        action_handler = "index"
+      else
+        response['Location'] = instance_url(@instance.id)
+        action_handler = "show"
+      end
       status 201  # Created
-      response['Location'] = instance_url(@instance.id)
       respond_to do |format|
-        format.xml  { haml :"instances/show" }
-        format.json { convert_to_json(:instance, @instance) }
+        format.xml  { haml :"instances/action_handler" }
+        format.json do
+          if @instances
+            convert_to_json(:instances, @instances)
+          else
+            convert_to_json(:instance, @instance)
+          end
+        end
         format.html do
-          redirect instance_url(@instance.id) if @instance and @instance.id
-          redirect instances_url
+          if @instances
+            haml :"instances/index"
+          elsif @instance and @instance.id
+            response['Location'] = instance_url(@instance.id)
+            redirect instance_url(@instance.id)
+          else
+            redirect instances_url
+          end
         end
       end
     end
-- 
1.7.4.4