def report_elb(self): ''' This function is a wrapper for parsing arguments and printing for elb attribute reports Tested :return: ''' logger.info("Started report generation command") a = awsrequests(session=self.account_information['session']) parser = argparse.ArgumentParser(description='report generation about elbs', usage='''kerrigan.py elb report_elb [<args>]] ''' + self.global_options, formatter_class=argparse.ArgumentDefaultsHelpFormatter, prog="kerrigan") parser.add_argument('--columns', action='store', default=a.service_supported_columns(service="elb"), help="Which columns to display") parser.add_argument('--filters', action='store', default=None, help="The filters that should be used, example: key1:value1,key2:value2") args = parser.parse_args(sys.argv[3:]) columns = Misc.parse_service_columns(columns=args.columns, service="elb") if args.filters: filters = Misc.format_boto3_filter(filters=args.filters) else: filters = None result = a.information_elbs(columns=columns, filters=filters) for res in result: if self.account_information['logger_arguments']['table']: res['AvailabilityZones'] = Misc.list_to_multiline_string(list=res['AvailabilityZones']) res['SecurityGroups'] = Misc.list_to_multiline_string(list=res['SecurityGroups']) res['Instances'] = Misc.list_to_multiline_string(list=res['Instances']) else: res['AvailabilityZones'] = Misc.join_list_to_string(list=res['AvailabilityZones']) res['SecurityGroups'] = Misc.join_list_to_string(list=res['SecurityGroups']) res['Instances'] = Misc.join_list_to_string(list=res['Instances']) logger.output(data=result, csvvar=self.account_information['logger_arguments']['csv'], tablevar=self.account_information['logger_arguments']['table'])
def test_format_boto3_filter_multiple_values(self): filters = "tag-value:test,tag-test:test2" should_be = [{ 'Name': 'tag-value', 'Values': ['test'] }, { 'Name': 'tag-test', 'Values': ['test2'] }] self.assertEqual(should_be, Misc.format_boto3_filter(filters=filters))
def report_elb(self): ''' This function is a wrapper for parsing arguments and printing for elb attribute reports Tested :return: ''' logger.info("Started report generation command") a = awsrequests(session=self.account_information['session']) parser = argparse.ArgumentParser( description='report generation about elbs', usage='''kerrigan.py elb report_elb [<args>]] ''' + self.global_options, formatter_class=argparse.ArgumentDefaultsHelpFormatter, prog="kerrigan") parser.add_argument('--columns', action='store', default=a.service_supported_columns(service="elb"), help="Which columns to display") parser.add_argument( '--filters', action='store', default=None, help= "The filters that should be used, example: key1:value1,key2:value2" ) args = parser.parse_args(sys.argv[3:]) columns = Misc.parse_service_columns(columns=args.columns, service="elb") if args.filters: filters = Misc.format_boto3_filter(filters=args.filters) else: filters = None result = a.information_elbs(columns=columns, filters=filters) for res in result: if self.account_information['logger_arguments']['table']: res['AvailabilityZones'] = Misc.list_to_multiline_string( list=res['AvailabilityZones']) res['SecurityGroups'] = Misc.list_to_multiline_string( list=res['SecurityGroups']) res['Instances'] = Misc.list_to_multiline_string( list=res['Instances']) else: res['AvailabilityZones'] = Misc.join_list_to_string( list=res['AvailabilityZones']) res['SecurityGroups'] = Misc.join_list_to_string( list=res['SecurityGroups']) res['Instances'] = Misc.join_list_to_string( list=res['Instances']) logger.output( data=result, csvvar=self.account_information['logger_arguments']['csv'], tablevar=self.account_information['logger_arguments']['table'])
def report_ami(self): ''' This function is a wrapper for parsing arguments and printing for ami attribute reports :return: ''' logger.info("Started report generation command") a = awsrequests(session=self.account_information['session']) parser = argparse.ArgumentParser(description='report generation about ami', usage='''kerrigan.py ami report_ami [<args>]] ''' + self.global_options, formatter_class=argparse.ArgumentDefaultsHelpFormatter, prog="kerrigan") parser.add_argument('--columns', action='store', default=a.service_supported_columns(service="ami").keys(), help="Which columns to display") parser.add_argument('--filters', action='store', default=None, help="The filters that should be used, example: key1:value1,key2:value2") args = parser.parse_args(sys.argv[3:]) columns = Misc.parse_service_columns(service="ami", columns=args.columns) if args.filters: filters = Misc.format_boto3_filter(filters=args.filters) else: filters = None result = a.information_ami(columns=columns, filters=filters) logger.output(data=result, csvvar=self.account_information['logger_arguments']['csv'], tablevar=self.account_information['logger_arguments']['table'])
def report_ec2_instances(self): ''' This function is a wrapper for parsing arguments and printing for ec2 instance attribute reports Tested :return: ''' logger.info("Started report generation command") a = awsrequests(session=self.account_information['session']) parser = argparse.ArgumentParser(description='report generation about ec2 instances', usage='''kerrigan.py ec2 report_ec2_instances [<args>]] ''' + self.global_options, formatter_class=argparse.ArgumentDefaultsHelpFormatter, prog="kerrigan") parser.add_argument('--columns', action='store', default=a.service_supported_columns(service="ec2").keys(), help="Which columns to display") parser.add_argument('--filters', action='store', default=None, help="The filters that should be used, example: key1:value1,key2:value2") args = parser.parse_args(sys.argv[3:]) columns = Misc.parse_service_columns(service="ec2", columns=args.columns) if args.filters: filters = Misc.format_boto3_filter(filters=args.filters) else: filters = None result = a.information_ec2_instances(columns=columns, filters=filters) logger.output(data=result, csvvar=self.account_information['logger_arguments']['csv'], tablevar=self.account_information['logger_arguments']['table'])
def test_format_boto3_filter_multiple_values(self): filters = "tag-value:test,tag-test:test2" should_be = [{'Name': 'tag-value', 'Values': ['test']}, {'Name': 'tag-test', 'Values': ['test2']}] self.assertEqual(should_be, Misc.format_boto3_filter(filters=filters))
def test_format_boto3_filter_invalid_filter(self): filters = "tag:value:test" with self.assertRaises(ValueError) as cm: Misc.format_boto3_filter(filters=filters) self.assertTrue('too many values to unpack' in cm.exception)
def test_format_boto3_filter(self): filters = "tag-value:test" should_be = [{'Name': 'tag-value', 'Values': ['test']}] self.assertEqual(should_be, Misc.format_boto3_filter(filters=filters))