Pretty well done

This commit is contained in:
Dave North 2017-10-20 13:39:30 -04:00
parent ad1a002d1c
commit d792ca8df5
2 changed files with 79 additions and 0 deletions

View File

@ -0,0 +1,78 @@
import sys
import boto3
import argparse
import pprint
def remove_target_group(arn, elb_client):
request_id = None
try:
response = elb_client.delete_target_group(
TargetGroupArn=arn,
)
except Exception as e:
print("Error removing target group " + arn + " (" + str(e) + ")")
if response:
if response['ResponseMetadata']['HTTPStatusCode'] == 200:
request_id = response['ResponseMetadata']['RequestId']
return request_id
def main(argv):
plugin_results = dict()
parser = argparse.ArgumentParser(description='Remove ALB target groups not assigned to load balancers')
parser.add_argument('-f','--force', help='Perform the actual deletes (will run in dryrun mode by default)', action='store_true')
parser.add_argument('-r','--region', help='AWS region to process', required=True)
parser.add_argument('-p','--prefix', help='Only process target groups with this prefix in their name', required=False)
args = parser.parse_args()
if args.prefix:
print("Prefix specified - only evaluating target groups beginning with " + args.prefix)
if args.force:
print("Force flag specified - doing deletion")
session = boto3.session.Session(region_name=args.region)
elb_client = session.client("elbv2")
tg_paginator = elb_client.get_paginator('describe_target_groups')
tg_iterator = tg_paginator.paginate()
for response in tg_iterator:
# pprint.pprint(response)
for target_group in response['TargetGroups']:
punt = False
target_group_name = target_group['TargetGroupName']
target_group_load_balancers = target_group['LoadBalancerArns']
target_group_arn = target_group['TargetGroupArn']
if args.prefix:
if target_group_name.startswith(args.prefix):
if not target_group_load_balancers:
punt = True
else:
if not target_group_load_balancers:
punt = True
if punt:
sys.stdout.write("Target group " + target_group_name + " has no load balancers - removing....")
if args.force:
request_id = remove_target_group(target_group_arn, elb_client)
if request_id:
print("REMOVED (request id " + request_id + ")")
else:
print("ERROR")
else:
print("DRYRUN,no deletion took place")
print "Complete"
if __name__ == "__main__":
main(sys.argv[1:])

1
src/requirements.txt Normal file
View File

@ -0,0 +1 @@
boto3