def test_build_filter_params_with_identical_keys(self): from botocross import build_filter_params args = ["tag:Name=boto", "tag:Name=botocross"] params = build_filter_params(args) self.assertEquals(1, len(params)) for k, v in params.iteritems(): self.assertTrue(isinstance(v, list)) self.assertEquals(2, len(v))
def test_build_filter_params_with_no_keys(self): from botocross import build_filter_params args = None params = build_filter_params(args) self.assertEquals(None, params)
description='Describe AWS resource tags in all/some available EC2 regions', parents=[bc.build_region_parser(), bc.build_common_parser()]) parser.add_argument( "-f", "--filter", action="append", help="An AWS resource filter. [can be used multiple times]") args = parser.parse_args() # process common command line arguments log = logging.getLogger('botocross') bc.configure_logging(log, args.log_level) credentials = bc.parse_credentials(args) regions = bc.filter_regions(boto.ec2.regions(), args.region) filters = bc.build_filter_params(args.filter) # execute business logic log.info("Describing AWS resource tags:") for region in regions: try: ec2 = boto.connect_ec2(region=region, **credentials) resources = ec2.get_all_tags(filters=filters) print region.name + ": " + str(len(resources)) + " resources with tags" for resource in resources: if args.verbose: pprint(vars(resource)) else: print "type: " + resource.res_type + ", id: " + resource.res_id + ", key: " + resource.name + ", value: " + resource.value except boto.exception.BotoServerError, e:
import boto.ec2 import botocross as bc import logging # configure command line argument parsing parser = argparse.ArgumentParser(description='Describe AWS resource tags in all/some available EC2 regions', parents=[bc.build_region_parser(), bc.build_common_parser()]) parser.add_argument("-f", "--filter", action="append", help="An AWS resource filter. [can be used multiple times]") args = parser.parse_args() # process common command line arguments log = logging.getLogger('botocross') bc.configure_logging(log, args.log_level) credentials = bc.parse_credentials(args) regions = bc.filter_regions(boto.ec2.regions(), args.region) filters = bc.build_filter_params(args.filter) # execute business logic log.info("Describing AWS resource tags:") for region in regions: try: ec2 = boto.connect_ec2(region=region, **credentials) resources = ec2.get_all_tags(filters=filters) print region.name + ": " + str(len(resources)) + " resources with tags" for resource in resources: if args.verbose: pprint(vars(resource)) else: print "type: " + resource.res_type + ", id: " + resource.res_id + ", key: " + resource.name + ", value: " + resource.value