Hi all,
I’ve been trying to use the newest ec2_elb_facts module and realized that boto is truncating results for elb lists >400. I know boto3 does this as well and that boto allows bypassing this through the use of the marker parameter. However, based on what I’ve seen from the current module code, getting names is done through filtering the list of all elbs.
`
def list_elbs(self): |
|
elb_array = |
|
try: |
|
all_elbs = self.connection.get_all_load_balancers() |
|
except BotoServerError as err: |
|
self.module.fail_json(msg = “%s: %s” % (err.error_code, err.error_message)) |
|
if all_elbs: |
|
if self.names: |
|
for existing_lb in all_elbs: |
|
if existing_lb.name in self.names: |
|
elb_array.append(existing_lb) |
|
else: |
|
elb_array = all_elbs |
|
return list(map(self._get_elb_info, elb_array)) |
Based on this code, boto gets all load balancers (which will only return 400), and then it attempts to find whatever load balancer names I’ve provided by filtering that resulting boto result. If my elb name isn’t within that first 400, it won’t return anything.
I saw an issue related to this dated last year or so about this same functionality error and they changed it to use a loop based on the elb.next_marker idea. Has this been discussed or seen by anyone else? Or, if it’s known, what is the current workaround without changing the ansible core code.
Thanks!