Example #1
0
 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'])
Example #2
0
 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))
Example #3
0
 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'])
Example #4
0
 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'])
Example #5
0
 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'])
Example #6
0
 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))
Example #7
0
 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)
Example #8
0
 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))
Example #9
0
 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)
Example #10
0
 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))