summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Baptiste Barth <jeanbaptiste.barth@gmail.com>2015-01-06 17:10:11 +0100
committerJames Cammarata <jimi@sngx.net>2015-02-17 14:47:38 -0600
commit45390b98782858c81855a1f07fb98f1ce82a416c (patch)
tree6234e773af96386e6b71a30af762d5c21179a9a8
parent742715064e2d3461dcc12cd0995d72f7b5559542 (diff)
downloadansible-modules-core-45390b98782858c81855a1f07fb98f1ce82a416c.tar.gz
EC2: move logic about terminated instances up (#423)
As stated in #423, the commit 7f11c3d broke ec2 spot instance launching after 1.7.2. This is because it acts on the 'res' variable which have 2 different types in the method, and in case we request spot instances, the resulting object is not a result of ec2.run_instances() but ec2.request_spot_instances(). Actually this fix doesn't seem to be relevant in the spot instances case, because by construction we won't retrieve 'terminated' instances in the end.
-rwxr-xr-x[-rw-r--r--]cloud/amazon/ec2.py20
1 files changed, 11 insertions, 9 deletions
diff --git a/cloud/amazon/ec2.py b/cloud/amazon/ec2.py
index 04e419ea..a367cfeb 100644..100755
--- a/cloud/amazon/ec2.py
+++ b/cloud/amazon/ec2.py
@@ -890,6 +890,17 @@ def create_instances(module, ec2, override_count=None):
continue
else:
module.fail_json(msg = str(e))
+
+ # The instances returned through ec2.run_instances above can be in
+ # terminated state due to idempotency. See commit 7f11c3d for a complete
+ # explanation.
+ terminated_instances = [ str(instance.id) for instance in res.instances
+ if instance.state == 'terminated' ]
+ if terminated_instances:
+ module.fail_json(msg = "Instances with id(s) %s " % terminated_instances +
+ "were created previously but have since been terminated - " +
+ "use a (possibly different) 'instanceid' parameter")
+
else:
if private_ip:
module.fail_json(
@@ -927,15 +938,6 @@ def create_instances(module, ec2, override_count=None):
except boto.exception.BotoServerError, e:
module.fail_json(msg = "Instance creation failed => %s: %s" % (e.error_code, e.error_message))
- # The instances returned through run_instances can be in
- # terminated state due to idempotency.
- terminated_instances = [ str(instance.id) for instance in res.instances
- if instance.state == 'terminated' ]
- if terminated_instances:
- module.fail_json(msg = "Instances with id(s) %s " % terminated_instances +
- "were created previously but have since been terminated - " +
- "use a (possibly different) 'instanceid' parameter")
-
# wait here until the instances are up
num_running = 0
wait_timeout = time.time() + wait_timeout