From 3226ad42842f5e1fdf0cec35e6c3c1808dc13d22 Mon Sep 17 00:00:00 2001 From: Robb Wagoner Date: Tue, 12 Jan 2016 10:07:09 -0700 Subject: [PATCH 1/2] Include instance states (InService or OutOfService) as ELB facts --- cloud/amazon/ec2_elb_facts.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/cloud/amazon/ec2_elb_facts.py b/cloud/amazon/ec2_elb_facts.py index 172efe7326e..0c832382564 100644 --- a/cloud/amazon/ec2_elb_facts.py +++ b/cloud/amazon/ec2_elb_facts.py @@ -131,7 +131,7 @@ def get_health_check(health_check): return health_check_dict -def get_elb_info(elb): +def get_elb_info(connection,elb): elb_info = { 'name': elb.name, 'zones': elb.availability_zones, @@ -142,9 +142,23 @@ def get_elb_info(elb): 'security_groups': elb.security_groups, 'health_check': get_health_check(elb.health_check), 'subnets': elb.subnets, + 'instances_inservice': [], + 'instances_inservice_count': 0, + 'instances_outofservice': [], + 'instances_outofservice_count': 0, + 'instances_inservice_percent': 0.0, } if elb.vpc_id: elb_info['vpc_id'] = elb.vpc_id + if elb.instances: + instance_health = connection.describe_instance_health(elb.name) + elb_info['instances_inservice'] = [inst.instance_id for inst in instance_health if inst.state == 'InService'] + elb_info['instances_inservice_count'] = len(elb_info['instances_inservice']) + elb_info['instances_outofservice'] = [inst.instance_id for inst in instance_health if inst.state == 'OutOfService'] + elb_info['instances_outofservice_count'] = len(elb_info['instances_outofservice']) + elb_info['instances_inservice_percent'] = float(elb_info['instances_inservice_count'])/( + float(elb_info['instances_inservice_count']) + + float(elb_info['instances_outofservice_count'])) return elb_info @@ -161,7 +175,7 @@ def list_elb(connection, module): elb_array = [] for elb in all_elbs: - elb_array.append(get_elb_info(elb)) + elb_array.append(get_elb_info(connection,elb)) module.exit_json(elbs=elb_array) From 4be856a40cc3492df5a95b92b6e81dc007427784 Mon Sep 17 00:00:00 2001 From: Robb Wagoner Date: Tue, 12 Jan 2016 10:46:21 -0700 Subject: [PATCH 2/2] InService percent key as literal percent (i.e 50, not .5) --- cloud/amazon/ec2_elb_facts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud/amazon/ec2_elb_facts.py b/cloud/amazon/ec2_elb_facts.py index 0c832382564..8b7853ac6f6 100644 --- a/cloud/amazon/ec2_elb_facts.py +++ b/cloud/amazon/ec2_elb_facts.py @@ -158,7 +158,7 @@ def get_elb_info(connection,elb): elb_info['instances_outofservice_count'] = len(elb_info['instances_outofservice']) elb_info['instances_inservice_percent'] = float(elb_info['instances_inservice_count'])/( float(elb_info['instances_inservice_count']) + - float(elb_info['instances_outofservice_count'])) + float(elb_info['instances_outofservice_count']))*100 return elb_info