Merge pull request #8402 from lukesneeringer/gce-inventory-envvars
Envirionment variable support in GCE inventory plugin.
This commit is contained in:
commit
bc2099b1ab
1 changed files with 33 additions and 15 deletions
|
@ -107,27 +107,38 @@ class GceInventory(object):
|
|||
sys.exit(0)
|
||||
|
||||
# Otherwise, assume user wants all instances grouped
|
||||
print self.json_format_dict(self.group_instances())
|
||||
print(self.json_format_dict(self.group_instances()))
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
def get_gce_driver(self):
|
||||
'''Determine GCE authorization settings and return libcloud driver.'''
|
||||
|
||||
"""Determine the GCE authorization settings and return a
|
||||
libcloud driver.
|
||||
"""
|
||||
gce_ini_default_path = os.path.join(
|
||||
os.path.dirname(os.path.realpath(__file__)), "gce.ini")
|
||||
gce_ini_path = os.environ.get('GCE_INI_PATH', gce_ini_default_path)
|
||||
|
||||
config = ConfigParser.SafeConfigParser()
|
||||
# Create a ConfigParser.
|
||||
# This provides empty defaults to each key, so that environment
|
||||
# variable configuration (as opposed to INI configuration) is able
|
||||
# to work.
|
||||
config = ConfigParser.SafeConfigParser(defaults={
|
||||
'gce_service_account_email_address': '',
|
||||
'gce_service_account_pem_file_path': '',
|
||||
'gce_project_id': '',
|
||||
'libcloud_secrets': '',
|
||||
})
|
||||
if 'gce' not in config.sections():
|
||||
config.add_section('gce')
|
||||
config.read(gce_ini_path)
|
||||
|
||||
# the GCE params in 'secrets.py' will override these
|
||||
# Attempt to get GCE params from a configuration file, if one
|
||||
# exists.
|
||||
secrets_path = config.get('gce', 'libcloud_secrets')
|
||||
|
||||
secrets_found = False
|
||||
try:
|
||||
import secrets
|
||||
args = getattr(secrets, 'GCE_PARAMS', ())
|
||||
args = list(getattr(secrets, 'GCE_PARAMS', []))
|
||||
kwargs = getattr(secrets, 'GCE_KEYWORD_PARAMS', {})
|
||||
secrets_found = True
|
||||
except:
|
||||
|
@ -142,24 +153,31 @@ class GceInventory(object):
|
|||
sys.path.append(os.path.dirname(secrets_path))
|
||||
try:
|
||||
import secrets
|
||||
args = getattr(secrets, 'GCE_PARAMS', ())
|
||||
args = list(getattr(secrets, 'GCE_PARAMS', []))
|
||||
kwargs = getattr(secrets, 'GCE_KEYWORD_PARAMS', {})
|
||||
secrets_found = True
|
||||
except:
|
||||
pass
|
||||
if not secrets_found:
|
||||
args = (
|
||||
args = [
|
||||
config.get('gce','gce_service_account_email_address'),
|
||||
config.get('gce','gce_service_account_pem_file_path')
|
||||
)
|
||||
kwargs = {'project': config.get('gce','gce_project_id')}
|
||||
]
|
||||
kwargs = {'project': config.get('gce', 'gce_project_id')}
|
||||
|
||||
# If the appropriate environment variables are set, they override
|
||||
# other configuration; process those into our args and kwargs.
|
||||
args[0] = os.environ.get('GCE_EMAIL', args[0])
|
||||
args[1] = os.environ.get('GCE_PEM_FILE_PATH', args[1])
|
||||
kwargs['project'] = os.environ.get('GCE_PROJECT', kwargs['project'])
|
||||
|
||||
# Retrieve and return the GCE driver.
|
||||
gce = get_driver(Provider.GCE)(*args, **kwargs)
|
||||
gce.connection.user_agent_append("%s/%s" % (
|
||||
USER_AGENT_PRODUCT, USER_AGENT_VERSION))
|
||||
gce.connection.user_agent_append(
|
||||
'%s/%s' % (USER_AGENT_PRODUCT, USER_AGENT_VERSION),
|
||||
)
|
||||
return gce
|
||||
|
||||
|
||||
def parse_cli_args(self):
|
||||
''' Command line argument processing '''
|
||||
|
||||
|
|
Loading…
Reference in a new issue