1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

vultr.py: fix env var handling (#42659)

This commit is contained in:
Yanis Guenane 2018-07-16 15:00:08 +02:00 committed by René Moser
parent cf4e7fd70a
commit 08acc74056

View file

@ -43,9 +43,9 @@ class Vultr:
# For caching HTTP API responses # For caching HTTP API responses
self.api_cache = dict() self.api_cache = dict()
# Reads the config from vultr.ini
try: try:
config = self.read_ini_config() config = self.read_env_variables()
config.update(self.read_ini_config())
except KeyError: except KeyError:
config = {} config = {}
@ -61,6 +61,9 @@ class Vultr:
"in section '%s' in the ini config file has not an int value: timeout, retries. " "in section '%s' in the ini config file has not an int value: timeout, retries. "
"Error was %s" % (self.module.params.get('api_account'), to_native(e))) "Error was %s" % (self.module.params.get('api_account'), to_native(e)))
if not self.api_config.get('api_key'):
self.module.fail_json(msg="The API key is not speicied. Please refer to the documentation.")
# Common vultr returns # Common vultr returns
self.result['vultr_api'] = { self.result['vultr_api'] = {
'api_account': self.module.params.get('api_account'), 'api_account': self.module.params.get('api_account'),
@ -76,30 +79,32 @@ class Vultr:
'Accept': 'application/json', 'Accept': 'application/json',
} }
def read_ini_config(self): def read_env_variables(self):
ini_group = self.module.params.get('api_account')
keys = ['key', 'timeout', 'retries', 'endpoint'] keys = ['key', 'timeout', 'retries', 'endpoint']
env_conf = {} env_conf = {}
for key in keys: for key in keys:
if 'VULTR_API_%s' % key.upper() not in os.environ: if 'VULTR_API_%s' % key.upper() not in os.environ:
break continue
else:
env_conf[key] = os.environ['VULTR_API_%s' % key.upper()] env_conf[key] = os.environ['VULTR_API_%s' % key.upper()]
else:
return env_conf return env_conf
def read_ini_config(self):
ini_group = self.module.params.get('api_account')
paths = ( paths = (
os.path.join(os.path.expanduser('~'), '.vultr.ini'), os.path.join(os.path.expanduser('~'), '.vultr.ini'),
os.path.join(os.getcwd(), 'vultr.ini'), os.path.join(os.getcwd(), 'vultr.ini'),
) )
if 'VULTR_API_CONFIG' in os.environ: if 'VULTR_API_CONFIG' in os.environ:
paths += (os.path.expanduser(os.environ['VULTR_API_CONFIG']),) paths += (os.path.expanduser(os.environ['VULTR_API_CONFIG']),)
if not any((os.path.exists(c) for c in paths)):
self.module.fail_json(msg="Config file not found. Tried : %s" % ", ".join(paths))
conf = configparser.ConfigParser() conf = configparser.ConfigParser()
conf.read(paths) conf.read(paths)
if not conf._sections.get(ini_group):
return dict()
return dict(conf.items(ini_group)) return dict(conf.items(ini_group))
def fail_json(self, **kwargs): def fail_json(self, **kwargs):