summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xinventory/multi_ec2.py38
1 files changed, 30 insertions, 8 deletions
diff --git a/inventory/multi_ec2.py b/inventory/multi_ec2.py
index 7fbfb0c90..456bda8c8 100755
--- a/inventory/multi_ec2.py
+++ b/inventory/multi_ec2.py
@@ -15,15 +15,33 @@ class MultiEc2(object):
def __init__(self):
self.config = None
- self.results = {}
+ self.all_ec2_results = {}
self.result = {}
self.cache_path_cache = os.path.expanduser('~/.ansible/tmp/multi_ec2_inventory.cache')
self.file_path = os.path.join(os.path.dirname(os.path.realpath(__file__)))
-
+ self.config_file = os.path.join(self.file_path,"multi_ec2.yaml")
self.parse_cli_args()
# load yaml
- self.load_yaml_config()
+ if os.path.isfile(self.config_file):
+ self.config = self.load_yaml_config()
+ elif os.environ.has_key("AWS_ACCESS_KEY_ID") and os.environ.has_key("AWS_SECRET_ACCESS_KEY"):
+ self.config = {}
+ self.config['accounts'] = [
+ {
+ 'name': 'default',
+ 'provider': 'aws/ec2.py',
+ 'env_vars': {
+ 'AWS_ACCESS_KEY_ID': os.environ["AWS_ACCESS_KEY_ID"],
+ 'AWS_SECRET_ACCESS_KEY': os.environ["AWS_SECRET_ACCESS_KEY"],
+ }
+ },
+ ]
+
+ self.config['cache_max_age'] = 0
+ else:
+ raise RuntimeError("Could not find valid ec2 credentials in the environment.")
+
# if its a host query, fetch and do not cache
if self.args.host:
@@ -41,10 +59,14 @@ class MultiEc2(object):
respective cloud for inventory.
"""
config = None
+
if not conf_file:
- conf_file = os.path.join(self.file_path,'multi_ec2.yaml')
+ conf_file = self.config_file
+
with open(conf_file) as conf:
- self.config = yaml.safe_load(conf)
+ config = yaml.safe_load(conf)
+
+ return config
def get_provider_tags(self,provider, env={}):
"""Call <provider> and query all of the tags that are usuable
@@ -103,10 +125,10 @@ class MultiEc2(object):
if result['code'] != 0:
raise RuntimeError(result['err'])
else:
- self.results[result['name']] = json.loads(result['out'])
- values = self.results.values()
+ self.all_ec2_results[result['name']] = json.loads(result['out'])
+ values = self.all_ec2_results.values()
values.insert(0, self.result)
- map(lambda x: self.merge_destructively(self.result, x), values)
+ [self.merge_destructively(self.result, x) for x in values]
else:
# For any 0 result, return it
count = 0