Merge pull request #1488 from robbwagoner/ec2-elb-facts-with-instance-health

Include instance states (InService or OutOfService) as ELB facts
reviewable/pr18780/r1
Brian Coca 9 years ago
commit 65686221af

@ -131,7 +131,7 @@ def get_health_check(health_check):
return health_check_dict return health_check_dict
def get_elb_info(elb): def get_elb_info(connection,elb):
elb_info = { elb_info = {
'name': elb.name, 'name': elb.name,
'zones': elb.availability_zones, 'zones': elb.availability_zones,
@ -142,9 +142,23 @@ def get_elb_info(elb):
'security_groups': elb.security_groups, 'security_groups': elb.security_groups,
'health_check': get_health_check(elb.health_check), 'health_check': get_health_check(elb.health_check),
'subnets': elb.subnets, 'subnets': elb.subnets,
'instances_inservice': [],
'instances_inservice_count': 0,
'instances_outofservice': [],
'instances_outofservice_count': 0,
'instances_inservice_percent': 0.0,
} }
if elb.vpc_id: if elb.vpc_id:
elb_info['vpc_id'] = 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']))*100
return elb_info return elb_info
@ -161,7 +175,7 @@ def list_elb(connection, module):
elb_array = [] elb_array = []
for elb in all_elbs: 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) module.exit_json(elbs=elb_array)

Loading…
Cancel
Save