Changed behavior of deregister. If an instance is not found in the ELB then simply return 'changed=false'. Otherwise always remove the instance from the ELB no matter what state its currently in.

This commit is contained in:
Bruce Pennypacker 2014-04-22 18:44:41 +00:00
parent afd0e78f16
commit 733508d07f

View file

@ -129,18 +129,20 @@ class ElbManager:
for lb in self.lbs:
initial_state = self._get_instance_health(lb) if wait else None
if initial_state and initial_state.state == 'InService':
lb.deregister_instances([self.instance_id])
else:
if initial_state is None:
# The instance isn't registered with this ELB so just
# return unchanged
return
lb.deregister_instances([self.instance_id])
# The ELB is changing state in some way. Either an instance that's
# InService is moving to OutOfService, or an instance that's
# already OutOfService is being deregistered.
self.changed = True
if wait:
self._await_elb_instance_state(lb, 'OutOfService', initial_state, timeout)
else:
# We cannot assume no change was made if we don't wait
# to find out
self.changed = True
def register(self, wait, enable_availability_zone, timeout):
"""Register the instance for all ELBs and wait for the ELB