summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Waldon <bcwaldon@gmail.com>2012-02-19 04:32:26 -0800
committerBrian Waldon <bcwaldon@gmail.com>2012-02-21 15:39:54 -0800
commitc4093ec56edb7d14afc7e55d558e1b4796a975ee (patch)
tree4a0d943f6225aa28f0a07b2b46c211f2dbdc5db0
parentf4297ce10d9fde2f87e3ae45591944d6da2f0a4c (diff)
downloadpython-keystoneclient-c4093ec56edb7d14afc7e55d558e1b4796a975ee.tar.gz
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
-rw-r--r--README.rst5
-rw-r--r--docs/shell.rst6
-rw-r--r--keystoneclient/shell.py26
-rw-r--r--tests/test_shell.py10
4 files changed, 30 insertions, 17 deletions
diff --git a/README.rst b/README.rst
index e47c657..9f26cf9 100644
--- a/README.rst
+++ b/README.rst
@@ -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) == \