loop to get all load balancers, boto limited to 400 at a time fixes #2115

pull/18777/head
Brian Coca 9 years ago committed by Matt Clay
parent bd03dd67ff
commit 90d084d82b

@ -259,12 +259,23 @@ class ElbManager:
ec2_elbs = self._get_auto_scaling_group_lbs() ec2_elbs = self._get_auto_scaling_group_lbs()
try: try:
elb = connect_to_aws(boto.ec2.elb, self.region, elb = connect_to_aws(boto.ec2.elb, self.region, **self.aws_connect_params)
**self.aws_connect_params)
except (boto.exception.NoAuthHandlerFound, StandardError), e: except (boto.exception.NoAuthHandlerFound, StandardError), e:
self.module.fail_json(msg=str(e)) self.module.fail_json(msg=str(e))
elbs = []
marker = None
while True:
try:
newelbs = elb.get_all_load_balancers(marker=marker)
if not newelbs.is_truncated:
break
elbs.extend(newelbs)
marker = newelbs.next_marker
except TypeError:
# Older version of boto do not allow for params
elbs = elb.get_all_load_balancers() elbs = elb.get_all_load_balancers()
break
if ec2_elbs: if ec2_elbs:
lbs = sorted(lb for lb in elbs if lb.name in ec2_elbs) lbs = sorted(lb for lb in elbs if lb.name in ec2_elbs)
@ -305,8 +316,7 @@ class ElbManager:
def _get_instance(self): def _get_instance(self):
"""Returns a boto.ec2.InstanceObject for self.instance_id""" """Returns a boto.ec2.InstanceObject for self.instance_id"""
try: try:
ec2 = connect_to_aws(boto.ec2, self.region, ec2 = connect_to_aws(boto.ec2, self.region, **self.aws_connect_params)
**self.aws_connect_params)
except (boto.exception.NoAuthHandlerFound, StandardError), e: except (boto.exception.NoAuthHandlerFound, StandardError), e:
self.module.fail_json(msg=str(e)) self.module.fail_json(msg=str(e))
return ec2.get_only_instances(instance_ids=[self.instance_id])[0] return ec2.get_only_instances(instance_ids=[self.instance_id])[0]
@ -345,8 +355,7 @@ def main():
module.fail_json(msg="ELBs are required for registration") module.fail_json(msg="ELBs are required for registration")
instance_id = module.params['instance_id'] instance_id = module.params['instance_id']
elb_man = ElbManager(module, instance_id, ec2_elbs, elb_man = ElbManager(module, instance_id, ec2_elbs, region=region, **aws_connect_params)
region=region, **aws_connect_params)
if ec2_elbs is not None: if ec2_elbs is not None:
for elb in ec2_elbs: for elb in ec2_elbs:

Loading…
Cancel
Save