[aws] ec2_instance: don't report changed when instance is already stopped (#46714)

This commit is contained in:
Brian Scholer 2018-10-17 12:34:37 -04:00 committed by Ryan Brown
parent e744c83808
commit 2043aad582

View file

@ -1343,7 +1343,7 @@ def change_instance_state(filters, desired_state, ec2=None):
changed = set()
instances = find_instances(ec2, filters=filters)
to_change = set(i['InstanceId'] for i in instances)
to_change = set(i['InstanceId'] for i in instances if i['State']['Name'].upper() != desired_state)
unchanged = set()
for inst in instances:
@ -1358,7 +1358,7 @@ def change_instance_state(filters, desired_state, ec2=None):
resp = ec2.terminate_instances(InstanceIds=[inst['InstanceId']])
[changed.add(i['InstanceId']) for i in resp['TerminatingInstances']]
if desired_state == 'STOPPED':
if inst['State']['Name'] == 'stopping':
if inst['State']['Name'] in ('stopping', 'stopped'):
unchanged.add(inst['InstanceId'])
continue
@ -1383,7 +1383,7 @@ def change_instance_state(filters, desired_state, ec2=None):
await_instances(ids=list(changed) + list(unchanged), state=desired_state)
change_failed = list(to_change - changed)
instances = find_instances(ec2, ids=list(to_change))
instances = find_instances(ec2, ids=list(i['InstanceId'] for i in instances))
return changed, change_failed, instances