From 2be8feebced4f8af1408305b4c8eb1c3835af6dd Mon Sep 17 00:00:00 2001 From: Bruce Pennypacker Date: Tue, 22 Apr 2014 18:44:41 +0000 Subject: [PATCH] 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. --- library/cloud/ec2_elb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/library/cloud/ec2_elb b/library/cloud/ec2_elb index e76816fbca..e36a71e1ba 100644 --- a/library/cloud/ec2_elb +++ b/library/cloud/ec2_elb @@ -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