region,show-regions,save-json,fin

This commit is contained in:
c0decave
2019-12-17 13:56:59 +01:00
parent 036f2b3a41
commit ac0686385c

View File

@@ -2,8 +2,9 @@ import click
import boto3 import boto3
import sys import sys
import botocore import botocore
from IPython import embed import json
# added and saved not printed yet
mperm = {} mperm = {}
@@ -14,11 +15,13 @@ resource_totals = {}
@click.option('--access', help='AWS Access Key. Otherwise will use the standard credentials path for the AWS CLI.') @click.option('--access', help='AWS Access Key. Otherwise will use the standard credentials path for the AWS CLI.')
@click.option('--secret', help='AWS Secret Key') @click.option('--secret', help='AWS Secret Key')
@click.option('--profile', help='If you have multiple credential profiles, use this option to specify one.') @click.option('--profile', help='If you have multiple credential profiles, use this option to specify one.')
@click.option('--cregion', help='Choose the region to test for (example: us-east-1, us-west-1), you can provide comma seperated list, like so: us-east-1,me-south-1,us-west-2') @click.option('--region', help='Choose the region to test for (example: us-east-1, us-west-1), you can provide comma seperated list, like so: us-east-1,me-south-1,us-west-2')
@click.option('--show-regions', help='Show available regions',default=False,is_flag=True) @click.option('--show-regions', help='Show available regions',default=False,is_flag=True)
def controller(access, secret, profile, cregion,show_regions): @click.option('--save-json','savejson', help='Save result regions as json',default=False,is_flag=True)
def controller(access, secret, profile, region,show_regions, savejson):
global session global session
global args global args
cregion = region
args = {'region':None} args = {'region':None}
# lets addup a region flag # lets addup a region flag
@@ -81,7 +84,7 @@ def controller(access, secret, profile, cregion,show_regions):
region_list = session.get_available_regions('ec2') region_list = session.get_available_regions('ec2')
for region in region_list: for region in region_list:
resource_counts[region] = {} resource_counts[region] = {}
print('Region: {0}'.format(region)) #print('Region: {0}'.format(region))
# iterate through the various services to build the counts # iterate through the various services to build the counts
@@ -195,16 +198,32 @@ def controller(access, secret, profile, cregion,show_regions):
mperm[op] = {'Code':code,'Message':msg} mperm[op] = {'Code':code,'Message':msg}
# show results # show results
click.echo('Resources by region') #click.echo('Resources by region')
click.echo(resource_counts) click.echo(resource_counts)
for key in sorted(resource_counts.keys()):
click.echo(' ')
click.echo('Ressources in {0}'.format(key))
click.echo('-----------------------')
for kitem, vitem in sorted(resource_counts[key].items()):
click.echo("{} : {}".format(kitem, vitem))
click.echo(' ') click.echo(' ')
click.echo('Resource totals across all regions') click.echo('Resource totals across all regions')
click.echo('----------------------------------')
for key, value in sorted(resource_totals.items()): for key, value in sorted(resource_totals.items()):
click.echo("{} : {}".format(key, value)) click.echo("{} : {}".format(key, value))
total = sum(resource_totals.values()) total = sum(resource_totals.values())
click.echo('') click.echo('')
click.echo('Total resources: ' + str(total)) click.echo('Total resources: ' + str(total))
if savejson:
click.echo('Saving json results in rc.json')
click.echo('------------------------------')
jd = json.dumps(resource_counts)
fw = open('rc.json','w')
fw.write(jd)
fw.close()
# ec2 = boto3.client('ec2', region_name='us-west-2') # ec2 = boto3.client('ec2', region_name='us-west-2')
# ec2 = session.client('ec2', region_name='us-west-2') # ec2 = session.client('ec2', region_name='us-west-2')
@@ -245,7 +264,7 @@ def ec2_counter(account_id, cregion):
for region in region_list: for region in region_list:
ec2 = session.resource('ec2', region_name=region) ec2 = session.resource('ec2', region_name=region)
ec2client = session.client('ec2', region_name=region) ec2client = session.client('ec2', region_name=region)
print("Region: {0}".format(region)) print("Checking Region: {0}".format(region))
# build the collections to count # build the collections to count
instance_iterator = ec2.instances.all() instance_iterator = ec2.instances.all()
@@ -680,7 +699,7 @@ def dynamo_counter():
def rds_counter(): def rds_counter():
region_list = session.get_available_regions('rds') region_list = session.get_available_regions('rds')
print(region_list) #print(region_list)
total_dbinstances = 0 total_dbinstances = 0