summaryrefslogtreecommitdiff
path: root/swiftclient/shell.py
diff options
context:
space:
mode:
authorTim Burke <tim.burke@gmail.com>2020-05-13 10:30:30 -0700
committerTim Burke <tim.burke@gmail.com>2020-05-27 15:17:09 -0700
commit257a7185a8d5fdc11d91058f1735fa4273719aa9 (patch)
treeb3d9d6ae6db4693a2688906a0a5dc23f93cefb07 /swiftclient/shell.py
parent5840efe1d62d67735e6986512a66ddd1991fd60d (diff)
downloadpython-swiftclient-257a7185a8d5fdc11d91058f1735fa4273719aa9.tar.gz
Application credential support follow-up
Following the recent v3applicationcredentials patch, if you have your environment variables set up to work with python-openstackclient using swiftclient's v1password plugin, swiftclient won't work: $ env | egrep '^(OS|ST)_' ST_KEY=testing ST_USER=test:tester OS_AUTH_URL=http://saio/auth/v1.0 ST_AUTH=http://saio/auth/v1.0 OS_USERNAME=test:tester OS_AUTH_TYPE=v1password OS_PASSWORD=testing $ openstack object store account show +------------+----------------------------+ | Field | Value | +------------+----------------------------+ | Account | AUTH_test | | Bytes | 0 | | Containers | 11 | | Objects | 0 | +------------+----------------------------+ $ swift stat Only "v3applicationcredential" is supported for --os-auth-type We don't really want to allow (and mostly ignore) arbitrary OS_AUTH_TYPE values, though -- there are a whole bunch of plugins we don't remotely support. But it seems OK to allow any of the password plugins; while we won't actually use them (currently), we provide roughly equivalent functionality. Handful of other drive-bys: * Use a None sentinel to determine whether keystoneauth1 is installed instead of trying to catch a NameError. * Clarify error state when keystoneauth1 is not installed. * Fix a typo: "sses" -> "sess". Change-Id: Id7ea9c3ea8278ae86a04d057a472a8f8a87b8eae Related-Change: I9190e5e7e24b6a741970fa0d0ac792deccf73d25
Diffstat (limited to 'swiftclient/shell.py')
-rwxr-xr-xswiftclient/shell.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/swiftclient/shell.py b/swiftclient/shell.py
index 0fef755..b129d63 100755
--- a/swiftclient/shell.py
+++ b/swiftclient/shell.py
@@ -1651,7 +1651,12 @@ def parse_args(parser, args, enforce_requires=True):
return options, args
if enforce_requires:
- if options['os_auth_type'] == 'v3applicationcredential':
+ if options['os_auth_type'] and options['os_auth_type'] not in (
+ 'password', 'v1password', 'v2password', 'v3password',
+ 'v3applicationcredential'):
+ exit('Only "v3applicationcredential" is supported for '
+ '--os-auth-type')
+ elif options['os_auth_type'] == 'v3applicationcredential':
if not (options['os_application_credential_id'] and
options['os_application_credential_secret']):
exit('Auth version 3 (application credential) requires '
@@ -1659,9 +1664,6 @@ def parse_args(parser, args, enforce_requires=True):
'OS_APPLICATION_CREDENTIAL_SECRET to be set or '
'overridden with --os-application-credential-id and '
'--os-application-credential-secret respectively.')
- elif options['os_auth_type']:
- exit('Only "v3applicationcredential" is supported for '
- '--os-auth-type')
elif options['auth_version'] == '3':
if not options['auth']:
exit('Auth version 3 requires OS_AUTH_URL to be set or '