Skip to content

Commit

Permalink
ELB info: return all LB if names is not defined (ansible-collections#693
Browse files Browse the repository at this point in the history
)

ELB info: return all LB if names is not defined

SUMMARY
Documentation says
options:
  names:
    description:
      - List of ELB names to gather information about. Pass this option to gather information about a set of ELBs, otherwise, all ELBs are returned.

But doing this elb_classic_lb_info returns an empty list.
ISSUE TYPE

Bugfix Pull Request

COMPONENT NAME
elb_classic_lb_info
ADDITIONAL INFORMATION
- hosts: localhost
  tasks:
  - community.aws.elb_classic_lb_info: {}
    register: elb_info

  - debug: var=elb_info

$ ansible-playbook playbook.yaml
TASK [community.aws.elb_classic_lb_info] ********
ok: [localhost]

TASK [debug] ********
ok: [localhost] => {
    "elb_info": {
        "changed": false,
        "elbs": [],  # <-- should return list of all ELB
        "failed": false
    }
}

Reviewed-by: Mark Chappell <None>
Reviewed-by: None <None>
Reviewed-by: None <None>
  • Loading branch information
christophemorio authored and abikouo committed Sep 18, 2023
1 parent fe0d1b5 commit a4e7e52
Showing 1 changed file with 23 additions and 9 deletions.
32 changes: 23 additions & 9 deletions elb_classic_lb_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,22 +157,36 @@
def list_elbs(connection, load_balancer_names):
results = []

if not load_balancer_names:
for lb in get_all_lb(connection):
results.append(describe_elb(connection, lb))

for load_balancer_name in load_balancer_names:
lb = get_lb(connection, load_balancer_name)
if not lb:
continue
description = camel_dict_to_snake_dict(lb)
name = lb['LoadBalancerName']
instances = lb.get('Instances', [])
description['tags'] = get_tags(connection, name)
description['instances_inservice'], description['instances_inservice_count'] = lb_instance_health(connection, name, instances, 'InService')
description['instances_outofservice'], description['instances_outofservice_count'] = lb_instance_health(connection, name, instances, 'OutOfService')
description['instances_unknownservice'], description['instances_unknownservice_count'] = lb_instance_health(connection, name, instances, 'Unknown')
description['attributes'] = get_lb_attributes(connection, name)
results.append(description)
results.append(describe_elb(connection, lb))
return results


def describe_elb(connection, lb):
description = camel_dict_to_snake_dict(lb)
name = lb['LoadBalancerName']
instances = lb.get('Instances', [])
description['tags'] = get_tags(connection, name)
description['instances_inservice'], description['instances_inservice_count'] = lb_instance_health(connection, name, instances, 'InService')
description['instances_outofservice'], description['instances_outofservice_count'] = lb_instance_health(connection, name, instances, 'OutOfService')
description['instances_unknownservice'], description['instances_unknownservice_count'] = lb_instance_health(connection, name, instances, 'Unknown')
description['attributes'] = get_lb_attributes(connection, name)
return description


@AWSRetry.jittered_backoff()
def get_all_lb(connection):
paginator = connection.get_paginator('describe_load_balancers')
return paginator.paginate().build_full_result()['LoadBalancerDescriptions']


def get_lb(connection, load_balancer_name):
try:
return connection.describe_load_balancers(aws_retry=True, LoadBalancerNames=[load_balancer_name])['LoadBalancerDescriptions'][0]
Expand Down

0 comments on commit a4e7e52

Please sign in to comment.