Move --version to --identity_api_version
* Default to OS_IDENTITY_API_VERSION before KEYSTONE_VERSION * Copy in 'env' function from python-novaclient hat supports multiple env var names * Fixes bug 936162 Change-Id: I3b4013408465ea45788517cb31afb7fc652e6e95
This commit is contained in:
@@ -82,8 +82,9 @@ You'll find complete documentation on the shell by running
|
||||
--password PASSWORD Defaults to env[OS_PASSWORD].
|
||||
--tenant_name TENANT_NAME Defaults to env[OS_TENANT_NAME].
|
||||
--tenant_id TENANT_ID Defaults to env[OS_TENANT_ID].
|
||||
--url AUTH_URL Defaults to env[OS_AUTH_URL] or
|
||||
--version VERSION Defaults to env[KEYSTONE_VERSION] or 2.0.
|
||||
--url AUTH_URL Defaults to env[OS_AUTH_URL].
|
||||
--identity_api_version IDENTITY_API_VERSION
|
||||
Defaults to env[OS_IDENTITY_API_VERSION] or 2.0.
|
||||
--region_name NAME The region name in the Keystone Service
|
||||
Catalog to use after authentication.
|
||||
Defaults to env[KEYSTONE_REGION_NAME] or the
|
||||
|
@@ -42,9 +42,9 @@ options, it is easier to just set them as environment variables:
|
||||
|
||||
The OpenStack API server URL.
|
||||
|
||||
.. envvar:: KEYSTONE_VERSION
|
||||
.. envvar:: OS_IDENTITY_API_VERSION
|
||||
|
||||
The OpenStack API version.
|
||||
The OpenStack Identity API version.
|
||||
|
||||
For example, in Bash you'd use::
|
||||
|
||||
@@ -52,7 +52,7 @@ For example, in Bash you'd use::
|
||||
export OS_PASSWORD=yadayadayada
|
||||
export OS_TENANT_NAME=myproject
|
||||
export OS_AUTH_URL=http://example.com:5000/v2.0/
|
||||
export KEYSTONE_VERSION=2.0
|
||||
export OS_IDENTITY_API_VERSION=2.0
|
||||
|
||||
From there, all shell commands take the form::
|
||||
|
||||
|
@@ -29,8 +29,18 @@ from keystoneclient.v2_0 import shell as shell_v2_0
|
||||
from keystoneclient.generic import shell as shell_generic
|
||||
|
||||
|
||||
def env(e):
|
||||
return os.environ.get(e, '')
|
||||
def env(*vars, **kwargs):
|
||||
"""Search for the first defined of possibly many env vars
|
||||
|
||||
Returns the first environment variable defined in vars, or
|
||||
returns the default defined in kwargs.
|
||||
|
||||
"""
|
||||
for v in vars:
|
||||
value = os.environ.get(v, None)
|
||||
if value:
|
||||
return value
|
||||
return kwargs.get('default', '')
|
||||
|
||||
|
||||
class OpenStackIdentityShell(object):
|
||||
@@ -88,9 +98,9 @@ class OpenStackIdentityShell(object):
|
||||
default=env('OS_REGION_NAME'),
|
||||
help='Defaults to env[OS_REGION_NAME].')
|
||||
|
||||
parser.add_argument('--version',
|
||||
default=env('KEYSTONE_VERSION'),
|
||||
help='Accepts 1.0 or 1.1, defaults to env[KEYSTONE_VERSION].')
|
||||
parser.add_argument('--identity_api_version',
|
||||
default=env('OS_IDENTITY_API_VERSION', 'KEYSTONE_VERSION'),
|
||||
help='Defaults to env[OS_IDENTITY_API_VERSION] or 2.0.')
|
||||
|
||||
return parser
|
||||
|
||||
@@ -143,7 +153,8 @@ class OpenStackIdentityShell(object):
|
||||
(options, args) = parser.parse_known_args(argv)
|
||||
|
||||
# build available subcommands based on version
|
||||
subcommand_parser = self.get_subcommand_parser(options.version)
|
||||
api_version = options.identity_api_version
|
||||
subcommand_parser = self.get_subcommand_parser(api_version)
|
||||
self.parser = subcommand_parser
|
||||
|
||||
# Parse args again and call whatever callback was selected
|
||||
@@ -183,7 +194,8 @@ class OpenStackIdentityShell(object):
|
||||
if args.token and args.endpoint:
|
||||
token = args.token
|
||||
endpoint = args.endpoint
|
||||
self.cs = self.get_api_class(options.version)(
|
||||
api_version = options.identity_api_version
|
||||
self.cs = self.get_api_class(api_version)(
|
||||
username=args.username,
|
||||
tenant_name=args.tenant_name,
|
||||
tenant_id=args.tenant_id,
|
||||
|
@@ -55,16 +55,16 @@ class ShellTest(utils.TestCase):
|
||||
assert do_tenant_mock.called
|
||||
((a, b), c) = do_tenant_mock.call_args
|
||||
assert (b.auth_url, b.password, b.tenant_id,
|
||||
b.tenant_name, b.username, b.version) == \
|
||||
b.tenant_name, b.username, b.identity_api_version) == \
|
||||
(DEFAULT_AUTH_URL, DEFAULT_PASSWORD, DEFAULT_TENANT_ID,
|
||||
DEFAULT_TENANT_NAME, DEFAULT_USERNAME, '')
|
||||
shell('--auth_url http://0.0.0.0:5000/ --password xyzpdq '
|
||||
'--tenant_id 1234 --tenant_name fred --username barney '
|
||||
'--version 2.0 user-list')
|
||||
'--identity_api_version 2.0 user-list')
|
||||
assert do_tenant_mock.called
|
||||
((a, b), c) = do_tenant_mock.call_args
|
||||
assert (b.auth_url, b.password, b.tenant_id,
|
||||
b.tenant_name, b.username, b.version) == \
|
||||
b.tenant_name, b.username, b.identity_api_version) == \
|
||||
('http://0.0.0.0:5000/', 'xyzpdq', '1234',
|
||||
'fred', 'barney', '2.0')
|
||||
|
||||
@@ -84,7 +84,7 @@ class ShellTest(utils.TestCase):
|
||||
((a, b), c) = do_uc_mock.call_args
|
||||
# restore os_tenant_id when review 4295 is merged
|
||||
assert (b.auth_url, b.password, # b.os_tenant_id,
|
||||
b.tenant_name, b.username, b.version) == \
|
||||
b.tenant_name, b.username, b.identity_api_version) == \
|
||||
(DEFAULT_AUTH_URL, DEFAULT_PASSWORD, # DEFAULT_TENANT_ID,
|
||||
DEFAULT_TENANT_NAME, DEFAULT_USERNAME, '')
|
||||
assert (b.tenant_id, b.name, b.passwd, b.enabled) == \
|
||||
@@ -97,7 +97,7 @@ class ShellTest(utils.TestCase):
|
||||
((a, b), c) = do_uc_mock.call_args
|
||||
# restore os_tenant_id when review 4295 is merged
|
||||
assert (b.auth_url, b.password, # b.os_tenant_id,
|
||||
b.tenant_name, b.username, b.version) == \
|
||||
b.tenant_name, b.username, b.identity_api_version) == \
|
||||
(DEFAULT_AUTH_URL, DEFAULT_PASSWORD, # 'os-tenant',
|
||||
DEFAULT_TENANT_NAME, DEFAULT_USERNAME, '')
|
||||
assert (b.tenant_id, b.name, b.passwd, b.enabled) == \
|
||||
|
Reference in New Issue
Block a user