diff --git a/contrib/inventory/ec2.py b/contrib/inventory/ec2.py index 98a5df06013..6fc57f6c95d 100755 --- a/contrib/inventory/ec2.py +++ b/contrib/inventory/ec2.py @@ -165,8 +165,7 @@ class Ec2Inventory(object): # as pre 2.24 boto will fall over otherwise if self.boto_profile: if not hasattr(boto.ec2.EC2Connection, 'profile_name'): - sys.stderr.write("boto version must be >= 2.24 to use profile\n") - sys.exit(1) + self.fail_with_error("boto version must be >= 2.24 to use profile") # Cache if self.args.refresh_cache: @@ -386,7 +385,6 @@ class Ec2Inventory(object): continue self.ec2_instance_filters[filter_key].append(filter_value) - def parse_cli_args(self): ''' Command line argument processing ''' @@ -425,10 +423,7 @@ class Ec2Inventory(object): conn = boto.connect_euca(host=self.eucalyptus_host) conn.APIVersion = '2010-08-31' else: - conn = ec2.connect_to_region(region) - # connect_to_region will fail "silently" by returning None if the region name is wrong or not supported - if conn is None: - self.fail_with_error("region name: %s likely not supported, or AWS is down. connection to region failed." % region) + conn = self.connect_to_aws(ec2, region) return conn def boto_fix_security_token_in_profile(self, connect_args): @@ -438,7 +433,6 @@ class Ec2Inventory(object): connect_args['security_token'] = boto.config.get(profile, 'aws_security_token') return connect_args - def connect_to_aws(self, module, region): connect_args = {} @@ -448,9 +442,11 @@ class Ec2Inventory(object): self.boto_fix_security_token_in_profile(connect_args) conn = module.connect_to_region(region, **connect_args) + # connect_to_region will fail "silently" by returning None if the region name is wrong or not supported + if conn is None: + self.fail_with_error("region name: %s likely not supported, or AWS is down. connection to region failed." % region) return conn - def get_instances_by_region(self, region): ''' Makes an AWS EC2 API call to the list of instances in a particular region ''' @@ -462,14 +458,8 @@ class Ec2Inventory(object): for filter_key, filter_values in self.ec2_instance_filters.items(): reservations.extend(conn.get_all_instances(filters = { filter_key : filter_values })) else: - conn = ec2.connect_to_region(region, profile_name=self.boto_profile) + reservations = conn.get_all_instances() - # connect_to_region will fail "silently" by returning None if the region name is wrong or not supported - if conn is None: - print("region name: %s likely not supported, or AWS is down. connection to region failed." % region) - sys.exit(1) - - reservations = conn.get_all_instances() for reservation in reservations: for instance in reservation.instances: self.add_instance(instance, region) @@ -482,7 +472,6 @@ class Ec2Inventory(object): error = "Error connecting to %s backend.\n%s" % (backend, e.message) self.fail_with_error(error, 'getting EC2 instances') - def get_rds_instances_by_region(self, region): ''' Makes an AWS API call to the list of RDS instances in a particular region '''