Support --os-key option
keystoneclient Session expects as cert argument, one of the followings: * None (no client certificate), * a path to client certificate, * a tuple with client certificate/key paths. The change updates manilaclient code to support the last case (ie: os_cert and os_key are non-empty) with the --os-key option and OS_KEY environment variable. Closes-Bug: #1999775 Change-Id: I09313b7c55a5f9d4ec032a37e69a1d79db29d648
This commit is contained in:
parent
cb14e965ef
commit
43943fdf67
@ -351,6 +351,13 @@ class OpenStackManilaShell(object):
|
|||||||
parser.add_argument('--os_cert',
|
parser.add_argument('--os_cert',
|
||||||
help=argparse.SUPPRESS)
|
help=argparse.SUPPRESS)
|
||||||
|
|
||||||
|
parser.add_argument('--os-key',
|
||||||
|
metavar='<key>',
|
||||||
|
default=cliutils.env('OS_KEY'),
|
||||||
|
help='Defaults to env[OS_KEY].')
|
||||||
|
parser.add_argument('--os_key',
|
||||||
|
help=argparse.SUPPRESS)
|
||||||
|
|
||||||
if osprofiler_profiler:
|
if osprofiler_profiler:
|
||||||
parser.add_argument('--profile',
|
parser.add_argument('--profile',
|
||||||
metavar='HMAC_KEY',
|
metavar='HMAC_KEY',
|
||||||
@ -542,6 +549,9 @@ class OpenStackManilaShell(object):
|
|||||||
os_service_type = constants.SERVICE_TYPES[major_version_string]
|
os_service_type = constants.SERVICE_TYPES[major_version_string]
|
||||||
|
|
||||||
os_endpoint_type = args.endpoint_type or DEFAULT_MANILA_ENDPOINT_TYPE
|
os_endpoint_type = args.endpoint_type or DEFAULT_MANILA_ENDPOINT_TYPE
|
||||||
|
cert = args.os_cert or None
|
||||||
|
if cert and args.os_key:
|
||||||
|
cert = cert, args.os_key
|
||||||
|
|
||||||
client_args = dict(
|
client_args = dict(
|
||||||
username=args.os_username,
|
username=args.os_username,
|
||||||
@ -565,7 +575,7 @@ class OpenStackManilaShell(object):
|
|||||||
user_domain_name=args.os_user_domain_name,
|
user_domain_name=args.os_user_domain_name,
|
||||||
project_domain_id=args.os_project_domain_id,
|
project_domain_id=args.os_project_domain_id,
|
||||||
project_domain_name=args.os_project_domain_name,
|
project_domain_name=args.os_project_domain_name,
|
||||||
cert=args.os_cert,
|
cert=cert,
|
||||||
input_auth_token=args.os_token,
|
input_auth_token=args.os_token,
|
||||||
service_catalog_url=args.bypass_url,
|
service_catalog_url=args.bypass_url,
|
||||||
)
|
)
|
||||||
|
@ -86,7 +86,8 @@ class OpenstackManilaShellTest(utils.TestCase):
|
|||||||
self.assertRaises(exceptions.CommandError, self.shell, 'list')
|
self.assertRaises(exceptions.CommandError, self.shell, 'list')
|
||||||
self.assertFalse(mock_client.Client.called)
|
self.assertFalse(mock_client.Client.called)
|
||||||
|
|
||||||
def test_main_success(self):
|
@ddt.data(None, 'foo_key')
|
||||||
|
def test_main_success(self, os_key):
|
||||||
env_vars = {
|
env_vars = {
|
||||||
'OS_AUTH_URL': 'http://foo.bar',
|
'OS_AUTH_URL': 'http://foo.bar',
|
||||||
'OS_USERNAME': 'foo_username',
|
'OS_USERNAME': 'foo_username',
|
||||||
@ -102,8 +103,13 @@ class OpenstackManilaShellTest(utils.TestCase):
|
|||||||
'OS_USER_DOMAIN_NAME': 'foo_user_domain_name',
|
'OS_USER_DOMAIN_NAME': 'foo_user_domain_name',
|
||||||
'OS_USER_DOMAIN_ID': 'foo_user_domain_id',
|
'OS_USER_DOMAIN_ID': 'foo_user_domain_id',
|
||||||
'OS_CERT': 'foo_cert',
|
'OS_CERT': 'foo_cert',
|
||||||
|
'OS_KEY': os_key,
|
||||||
}
|
}
|
||||||
self.set_env_vars(env_vars)
|
self.set_env_vars(env_vars)
|
||||||
|
cert = env_vars['OS_CERT']
|
||||||
|
if os_key:
|
||||||
|
cert = (cert, env_vars['OS_KEY'])
|
||||||
|
|
||||||
with mock.patch.object(shell, 'client') as mock_client:
|
with mock.patch.object(shell, 'client') as mock_client:
|
||||||
|
|
||||||
self.shell('list')
|
self.shell('list')
|
||||||
@ -131,7 +137,7 @@ class OpenstackManilaShellTest(utils.TestCase):
|
|||||||
user_domain_name=env_vars['OS_USER_DOMAIN_NAME'],
|
user_domain_name=env_vars['OS_USER_DOMAIN_NAME'],
|
||||||
project_domain_id=env_vars['OS_PROJECT_DOMAIN_ID'],
|
project_domain_id=env_vars['OS_PROJECT_DOMAIN_ID'],
|
||||||
project_domain_name=env_vars['OS_PROJECT_DOMAIN_NAME'],
|
project_domain_name=env_vars['OS_PROJECT_DOMAIN_NAME'],
|
||||||
cert=env_vars['OS_CERT'],
|
cert=cert,
|
||||||
input_auth_token='',
|
input_auth_token='',
|
||||||
service_catalog_url='',
|
service_catalog_url='',
|
||||||
)
|
)
|
||||||
@ -203,7 +209,7 @@ class OpenstackManilaShellTest(utils.TestCase):
|
|||||||
user_domain_name="",
|
user_domain_name="",
|
||||||
project_domain_id="",
|
project_domain_id="",
|
||||||
project_domain_name="",
|
project_domain_name="",
|
||||||
cert="",
|
cert=None,
|
||||||
input_auth_token=expected["input_auth_token"],
|
input_auth_token=expected["input_auth_token"],
|
||||||
service_catalog_url=expected["service_catalog_url"],
|
service_catalog_url=expected["service_catalog_url"],
|
||||||
)
|
)
|
||||||
@ -282,7 +288,7 @@ class OpenstackManilaShellTest(utils.TestCase):
|
|||||||
user_domain_name="",
|
user_domain_name="",
|
||||||
project_domain_id="",
|
project_domain_id="",
|
||||||
project_domain_name="",
|
project_domain_name="",
|
||||||
cert="",
|
cert=None,
|
||||||
input_auth_token=expected["input_auth_token"],
|
input_auth_token=expected["input_auth_token"],
|
||||||
service_catalog_url=expected["service_catalog_url"],
|
service_catalog_url=expected["service_catalog_url"],
|
||||||
)
|
)
|
||||||
@ -311,6 +317,7 @@ class OpenstackManilaShellTest(utils.TestCase):
|
|||||||
'--os-auth-url', '--os-region-name', '--service-type',
|
'--os-auth-url', '--os-region-name', '--service-type',
|
||||||
'--service-name', '--share-service-name', '--endpoint-type',
|
'--service-name', '--share-service-name', '--endpoint-type',
|
||||||
'--os-share-api-version', '--os-cacert', '--retries', '--os-cert',
|
'--os-share-api-version', '--os-cacert', '--retries', '--os-cert',
|
||||||
|
'--os-key',
|
||||||
)
|
)
|
||||||
|
|
||||||
help_text = self.shell('help')
|
help_text = self.shell('help')
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- |
|
||||||
|
Support --os-key option and OS_KEY environment variable which allows to
|
||||||
|
provide client cert and its private key separately.
|
Loading…
x
Reference in New Issue
Block a user