Ensure v*password auth_type correctly implies auth version
Change-Id: I787b0988b7518850f1e1f93ca269f39f8cdec15c
This commit is contained in:
parent
825145e9e6
commit
ee952c1bf2
@ -90,14 +90,26 @@ class SwiftError(Exception):
|
|||||||
|
|
||||||
|
|
||||||
def process_options(options):
|
def process_options(options):
|
||||||
|
auth_types_to_versions = {
|
||||||
|
'v1password': '1.0',
|
||||||
|
'v2password': '2.0',
|
||||||
|
'v3password': '3',
|
||||||
|
'v3applicationcredential': '3',
|
||||||
|
}
|
||||||
|
|
||||||
|
version_from_type = auth_types_to_versions.get(options['os_auth_type'])
|
||||||
|
if version_from_type:
|
||||||
|
options['auth_version'] = version_from_type
|
||||||
|
|
||||||
# tolerate sloppy auth_version
|
# tolerate sloppy auth_version
|
||||||
if options.get('auth_version') == '3.0':
|
if options.get('auth_version') == '3.0':
|
||||||
options['auth_version'] = '3'
|
options['auth_version'] = '3'
|
||||||
elif options.get('auth_version') == '2':
|
elif options.get('auth_version') == '2':
|
||||||
options['auth_version'] = '2.0'
|
options['auth_version'] = '2.0'
|
||||||
|
|
||||||
if options.get('auth_version') not in ('2.0', '3') and not all(
|
if options.get('auth_version') not in ('2.0', '3') and \
|
||||||
options.get(key) for key in ('auth', 'user', 'key')):
|
options.get('os_auth_type') != 'v1password' and \
|
||||||
|
not all(options.get(key) for key in ('auth', 'user', 'key')):
|
||||||
# Use keystone auth if any of the new-style args are present
|
# Use keystone auth if any of the new-style args are present
|
||||||
if any(options.get(k) for k in (
|
if any(options.get(k) for k in (
|
||||||
'os_user_domain_id',
|
'os_user_domain_id',
|
||||||
@ -109,9 +121,6 @@ def process_options(options):
|
|||||||
else:
|
else:
|
||||||
options['auth_version'] = '2.0'
|
options['auth_version'] = '2.0'
|
||||||
|
|
||||||
if options.get('os_auth_type', None) == 'v3applicationcredential':
|
|
||||||
options['auth_version'] == '3'
|
|
||||||
|
|
||||||
# Use new-style args if old ones not present
|
# Use new-style args if old ones not present
|
||||||
if not options['auth'] and options['os_auth_url']:
|
if not options['auth'] and options['os_auth_url']:
|
||||||
options['auth'] = options['os_auth_url']
|
options['auth'] = options['os_auth_url']
|
||||||
|
@ -2759,6 +2759,92 @@ class TestParsing(TestBase):
|
|||||||
swiftclient.shell.main(args)
|
swiftclient.shell.main(args)
|
||||||
self._verify_opts(result[0], expected_opts, expected_os_opts, {})
|
self._verify_opts(result[0], expected_opts, expected_os_opts, {})
|
||||||
|
|
||||||
|
def test_os_auth_type_password_implies_version(self):
|
||||||
|
args = ["", "stat"]
|
||||||
|
env = {
|
||||||
|
'OS_AUTH_URL': 'http://example.com/auth',
|
||||||
|
'OS_AUTH_TYPE': 'v1password',
|
||||||
|
'OS_USERNAME': 'user',
|
||||||
|
'OS_PASSWORD': 'secret',
|
||||||
|
}
|
||||||
|
result = [None, None]
|
||||||
|
fake_command = self._make_fake_command(result)
|
||||||
|
with mock.patch.dict(os.environ, env):
|
||||||
|
with mock.patch('swiftclient.shell.st_stat', fake_command):
|
||||||
|
swiftclient.shell.main(args)
|
||||||
|
self._verify_opts(result[0], {
|
||||||
|
'auth_version': '1.0',
|
||||||
|
'user': 'user',
|
||||||
|
'key': 'secret',
|
||||||
|
}, {
|
||||||
|
'auth_url': 'http://example.com/auth',
|
||||||
|
'auth_type': 'v1password',
|
||||||
|
'username': 'user',
|
||||||
|
'password': 'secret',
|
||||||
|
}, {
|
||||||
|
'auth_url': 'http://example.com/auth',
|
||||||
|
'auth_type': 'v1password',
|
||||||
|
'username': 'user',
|
||||||
|
'password': 'secret',
|
||||||
|
'identity_api_version': '1.0',
|
||||||
|
})
|
||||||
|
|
||||||
|
env = {
|
||||||
|
'OS_AUTH_URL': 'http://example.com/auth',
|
||||||
|
'OS_AUTH_TYPE': 'v2password',
|
||||||
|
'OS_USERNAME': 'user',
|
||||||
|
'OS_PASSWORD': 'secret',
|
||||||
|
}
|
||||||
|
result = [None, None]
|
||||||
|
fake_command = self._make_fake_command(result)
|
||||||
|
with mock.patch.dict(os.environ, env):
|
||||||
|
with mock.patch('swiftclient.shell.st_stat', fake_command):
|
||||||
|
swiftclient.shell.main(args)
|
||||||
|
self._verify_opts(result[0], {
|
||||||
|
'auth_version': '2.0',
|
||||||
|
'user': 'user',
|
||||||
|
'key': 'secret',
|
||||||
|
}, {
|
||||||
|
'auth_url': 'http://example.com/auth',
|
||||||
|
'auth_type': 'v2password',
|
||||||
|
'username': 'user',
|
||||||
|
'password': 'secret',
|
||||||
|
}, {
|
||||||
|
'auth_url': 'http://example.com/auth',
|
||||||
|
'auth_type': 'v2password',
|
||||||
|
'username': 'user',
|
||||||
|
'password': 'secret',
|
||||||
|
'identity_api_version': '2.0',
|
||||||
|
})
|
||||||
|
|
||||||
|
env = {
|
||||||
|
'OS_AUTH_URL': 'http://example.com/auth',
|
||||||
|
'OS_AUTH_TYPE': 'v3password',
|
||||||
|
'OS_USERNAME': 'user',
|
||||||
|
'OS_PASSWORD': 'secret',
|
||||||
|
}
|
||||||
|
result = [None, None]
|
||||||
|
fake_command = self._make_fake_command(result)
|
||||||
|
with mock.patch.dict(os.environ, env):
|
||||||
|
with mock.patch('swiftclient.shell.st_stat', fake_command):
|
||||||
|
swiftclient.shell.main(args)
|
||||||
|
self._verify_opts(result[0], {
|
||||||
|
'auth_version': '3',
|
||||||
|
'user': 'user',
|
||||||
|
'key': 'secret',
|
||||||
|
}, {
|
||||||
|
'auth_url': 'http://example.com/auth',
|
||||||
|
'auth_type': 'v3password',
|
||||||
|
'username': 'user',
|
||||||
|
'password': 'secret',
|
||||||
|
}, {
|
||||||
|
'auth_url': 'http://example.com/auth',
|
||||||
|
'auth_type': 'v3password',
|
||||||
|
'username': 'user',
|
||||||
|
'password': 'secret',
|
||||||
|
'identity_api_version': '3',
|
||||||
|
})
|
||||||
|
|
||||||
def test_args_v3(self):
|
def test_args_v3(self):
|
||||||
opts = {"auth_version": "3"}
|
opts = {"auth_version": "3"}
|
||||||
os_opts = {"password": "secret",
|
os_opts = {"password": "secret",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user