On 24/06/10 10:35 -0400, Chris Lalancette wrote:
>Signed-off-by: Chris Lalancette <[email protected]>
>---
> server/lib/deltacloud/drivers/ec2/ec2_driver.rb |   38 +++++++++++++++++------
> 1 files changed, 28 insertions(+), 10 deletions(-)
>
>diff --git a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb 
>b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
>index 0f4e128..6d0b3b1 100644
>--- a/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
>+++ b/server/lib/deltacloud/drivers/ec2/ec2_driver.rb
>@@ -181,28 +181,46 @@ class EC2Driver < Deltacloud::BaseDriver
>       :disable_api_termination => false,
>       :instance_initiated_shutdown_behavior => 'terminate'
>     )
>-    convert_instance( ec2_instances.instancesSet.item.first, 'pending' )
>+    convert_instance( ec2_instances.instancesSet.item.first, credentials.user 
>)
>+  end
>+
>+  def generate_instance(ec2, id, backup)
>+    begin
>+      this_instance = ec2.describe_instances( :instance_id => id 
>).reservationSet.item.first.instancesSet.item.first
>+      convert_instance(this_instance, this_instance.ownerId)
>+    rescue Exception => e
>+      puts "WARNING: ignored error during instance refresh: #{e.message}"
>+      # at this point, the action has succeeded but our follow-up
>+      # "describe_instances" failed for some reason.  Create a simple Instance
>+      # object with only the ID and new state in place
>+      state = backup.instancesSet.item.first.currentState.name
>+      Instance.new( {
>+        :id => id,
>+        :state => state,
>+        :actions => instance_actions_for( state ),
>+      } )
>+    end
>   end
>
>   def reboot_instance(credentials, id)
>     ec2 = new_client(credentials)
>-    safely do
>-      ec2.reboot_instances( :instance_id => id )
>-    end
>+    backup = ec2.reboot_instances( :instance_id => id )
>+
>+    generate_instance(ec2, id, backup)
>   end
>
>   def stop_instance(credentials, id)
>     ec2 = new_client(credentials)
>-    safely do
>-      ec2.terminate_instances( :instance_id => id )
>-    end
>+    backup = ec2.terminate_instances( :instance_id => id )
>+
>+    generate_instance(ec2, id, backup)
>   end
>
>   def destroy_instance(credentials, id)
>     ec2 = new_client(credentials)
>-    safely do
>-      ec2.terminate_instances( :instance_id => id )
>-    end
>+    backup = ec2.terminate_instances( :instance_id => id )
>+
>+    generate_instance(ec2, id, backup)
>   end
>
>   #
>--

ACK.

-- 
--------------------------------------------------------
Michal Fojtik, [email protected], +420 532 294 4307
Ruby / Ruby On Rails Developer
Deltacloud API: http://deltacloud.org
--------------------------------------------------------
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to