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].
|
--password PASSWORD Defaults to env[OS_PASSWORD].
|
||||||
--tenant_name TENANT_NAME Defaults to env[OS_TENANT_NAME].
|
--tenant_name TENANT_NAME Defaults to env[OS_TENANT_NAME].
|
||||||
--tenant_id TENANT_ID Defaults to env[OS_TENANT_ID].
|
--tenant_id TENANT_ID Defaults to env[OS_TENANT_ID].
|
||||||
--url AUTH_URL Defaults to env[OS_AUTH_URL] or
|
--url AUTH_URL Defaults to env[OS_AUTH_URL].
|
||||||
--version VERSION Defaults to env[KEYSTONE_VERSION] or 2.0.
|
--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
|
--region_name NAME The region name in the Keystone Service
|
||||||
Catalog to use after authentication.
|
Catalog to use after authentication.
|
||||||
Defaults to env[KEYSTONE_REGION_NAME] or the
|
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.
|
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::
|
For example, in Bash you'd use::
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ For example, in Bash you'd use::
|
|||||||
export OS_PASSWORD=yadayadayada
|
export OS_PASSWORD=yadayadayada
|
||||||
export OS_TENANT_NAME=myproject
|
export OS_TENANT_NAME=myproject
|
||||||
export OS_AUTH_URL=http://example.com:5000/v2.0/
|
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::
|
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
|
from keystoneclient.generic import shell as shell_generic
|
||||||
|
|
||||||
|
|
||||||
def env(e):
|
def env(*vars, **kwargs):
|
||||||
return os.environ.get(e, '')
|
"""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):
|
class OpenStackIdentityShell(object):
|
||||||
@@ -88,9 +98,9 @@ class OpenStackIdentityShell(object):
|
|||||||
default=env('OS_REGION_NAME'),
|
default=env('OS_REGION_NAME'),
|
||||||
help='Defaults to env[OS_REGION_NAME].')
|
help='Defaults to env[OS_REGION_NAME].')
|
||||||
|
|
||||||
parser.add_argument('--version',
|
parser.add_argument('--identity_api_version',
|
||||||
default=env('KEYSTONE_VERSION'),
|
default=env('OS_IDENTITY_API_VERSION', 'KEYSTONE_VERSION'),
|
||||||
help='Accepts 1.0 or 1.1, defaults to env[KEYSTONE_VERSION].')
|
help='Defaults to env[OS_IDENTITY_API_VERSION] or 2.0.')
|
||||||
|
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
@@ -143,7 +153,8 @@ class OpenStackIdentityShell(object):
|
|||||||
(options, args) = parser.parse_known_args(argv)
|
(options, args) = parser.parse_known_args(argv)
|
||||||
|
|
||||||
# build available subcommands based on version
|
# 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
|
self.parser = subcommand_parser
|
||||||
|
|
||||||
# Parse args again and call whatever callback was selected
|
# Parse args again and call whatever callback was selected
|
||||||
@@ -183,7 +194,8 @@ class OpenStackIdentityShell(object):
|
|||||||
if args.token and args.endpoint:
|
if args.token and args.endpoint:
|
||||||
token = args.token
|
token = args.token
|
||||||
endpoint = args.endpoint
|
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,
|
username=args.username,
|
||||||
tenant_name=args.tenant_name,
|
tenant_name=args.tenant_name,
|
||||||
tenant_id=args.tenant_id,
|
tenant_id=args.tenant_id,
|
||||||
|
@@ -55,16 +55,16 @@ class ShellTest(utils.TestCase):
|
|||||||
assert do_tenant_mock.called
|
assert do_tenant_mock.called
|
||||||
((a, b), c) = do_tenant_mock.call_args
|
((a, b), c) = do_tenant_mock.call_args
|
||||||
assert (b.auth_url, b.password, b.tenant_id,
|
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_AUTH_URL, DEFAULT_PASSWORD, DEFAULT_TENANT_ID,
|
||||||
DEFAULT_TENANT_NAME, DEFAULT_USERNAME, '')
|
DEFAULT_TENANT_NAME, DEFAULT_USERNAME, '')
|
||||||
shell('--auth_url http://0.0.0.0:5000/ --password xyzpdq '
|
shell('--auth_url http://0.0.0.0:5000/ --password xyzpdq '
|
||||||
'--tenant_id 1234 --tenant_name fred --username barney '
|
'--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
|
assert do_tenant_mock.called
|
||||||
((a, b), c) = do_tenant_mock.call_args
|
((a, b), c) = do_tenant_mock.call_args
|
||||||
assert (b.auth_url, b.password, b.tenant_id,
|
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',
|
('http://0.0.0.0:5000/', 'xyzpdq', '1234',
|
||||||
'fred', 'barney', '2.0')
|
'fred', 'barney', '2.0')
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ class ShellTest(utils.TestCase):
|
|||||||
((a, b), c) = do_uc_mock.call_args
|
((a, b), c) = do_uc_mock.call_args
|
||||||
# restore os_tenant_id when review 4295 is merged
|
# restore os_tenant_id when review 4295 is merged
|
||||||
assert (b.auth_url, b.password, # b.os_tenant_id,
|
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_AUTH_URL, DEFAULT_PASSWORD, # DEFAULT_TENANT_ID,
|
||||||
DEFAULT_TENANT_NAME, DEFAULT_USERNAME, '')
|
DEFAULT_TENANT_NAME, DEFAULT_USERNAME, '')
|
||||||
assert (b.tenant_id, b.name, b.passwd, b.enabled) == \
|
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
|
((a, b), c) = do_uc_mock.call_args
|
||||||
# restore os_tenant_id when review 4295 is merged
|
# restore os_tenant_id when review 4295 is merged
|
||||||
assert (b.auth_url, b.password, # b.os_tenant_id,
|
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_AUTH_URL, DEFAULT_PASSWORD, # 'os-tenant',
|
||||||
DEFAULT_TENANT_NAME, DEFAULT_USERNAME, '')
|
DEFAULT_TENANT_NAME, DEFAULT_USERNAME, '')
|
||||||
assert (b.tenant_id, b.name, b.passwd, b.enabled) == \
|
assert (b.tenant_id, b.name, b.passwd, b.enabled) == \
|
||||||
|
Reference in New Issue
Block a user