diff options
-rw-r--r-- | README.rst | 5 | ||||
-rw-r--r-- | docs/shell.rst | 6 | ||||
-rw-r--r-- | keystoneclient/shell.py | 26 | ||||
-rw-r--r-- | tests/test_shell.py | 10 |
4 files changed, 30 insertions, 17 deletions
@@ -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 diff --git a/docs/shell.rst b/docs/shell.rst index d19a755..229f484 100644 --- a/docs/shell.rst +++ b/docs/shell.rst @@ -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:: diff --git a/keystoneclient/shell.py b/keystoneclient/shell.py index b1e4b2f..c7f6680 100644 --- a/keystoneclient/shell.py +++ b/keystoneclient/shell.py @@ -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, diff --git a/tests/test_shell.py b/tests/test_shell.py index ada719e..f23e634 100644 --- a/tests/test_shell.py +++ b/tests/test_shell.py @@ -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) == \ |