standardize environmental settings for cli auth

a first pass at common configuration between cli tools
https://blueprints.launchpad.net/openstack-common/+spec/cli-auth

Change-Id: Ie1354268ef647fb265ad9f30e730ddcac990e7f7
This commit is contained in:
Jesse Andrews 2011-12-16 00:10:47 -08:00
parent 3661be6673
commit 95f277a09f

@ -31,8 +31,15 @@ from novaclient import utils
from novaclient.v1_1 import shell as shell_v1_1
def env(e):
return os.environ.get(e, '')
def env(*vars):
"""
returns the first environment variable set
"""
for v in vars:
value = os.environ.get(v, None)
if value:
return value
return ''
class OpenStackComputeShell(object):
@ -59,24 +66,24 @@ class OpenStackComputeShell(object):
help=argparse.SUPPRESS)
parser.add_argument('--username',
default=env('NOVA_USERNAME'),
help='Defaults to env[NOVA_USERNAME].')
default=env('OS_USER_NAME', 'NOVA_USERNAME'),
help='Defaults to env[OS_USER_NAME].')
parser.add_argument('--apikey',
default=env('NOVA_API_KEY'),
help='Defaults to env[NOVA_API_KEY].')
parser.add_argument('--password',
default=env('NOVA_PASSWORD'),
help='Defaults to env[NOVA_PASSWORD].')
default=env('OS_PASSWORD', 'NOVA_PASSWORD'),
help='Defaults to env[OS_PASSWORD].')
parser.add_argument('--projectid',
default=env('NOVA_PROJECT_ID'),
help='Defaults to env[NOVA_PROJECT_ID].')
default=env('OS_TENANT_NAME', 'NOVA_PROJECT_ID'),
help='Defaults to env[OS_TENANT_NAME].')
parser.add_argument('--url',
default=env('NOVA_URL'),
help='Defaults to env[NOVA_URL].')
default=env('OS_AUTH_URL', 'NOVA_URL'),
help='Defaults to env[OS_AUTH_URL].')
parser.add_argument('--region_name',
default=env('NOVA_REGION_NAME'),
@ -225,25 +232,24 @@ class OpenStackComputeShell(object):
if not user:
raise exc.CommandError("You must provide a username, either "
"via --username or via "
"env[NOVA_USERNAME]")
"env[OS_USER_NAME]")
if not password:
if not apikey:
raise exc.CommandError("You must provide a password, either "
"via --password or via env[NOVA_PASSWORD]")
"via --password or via env[OS_PASSWORD]")
else:
password = apikey
if options.version:
if not projectid:
raise exc.CommandError("You must provide an projectid, either "
"via --projectid or via "
"env[NOVA_PROJECT_ID")
if not projectid:
raise exc.CommandError("You must provide an projectid, either "
"via --projectid or via "
"env[OS_TENANT_NAME]")
if not url:
raise exc.CommandError("You must provide a auth url, either "
"via --url or via "
"env[NOVA_URL")
if not url:
raise exc.CommandError("You must provide a auth url, either "
"via --url or via "
"env[OS_AUTH_URL]")
self.cs = self.get_api_class(options.version)(user, password,
projectid, url, insecure,