CLI tests: Identity v3 (project name, api version)

Switch to --os-project-name instead of --os-tenant-name, and pass
also --os-identity-api-version.
All the clients which are wrapped by some method of the CLIClient class
and which use cmd_with_auth support the newly introduced flags at least
since Liberty.
Only exception: the keystone client, which was removed in Newton, so
it is not supported anyway (and it has not been fixed).

Closes-Bug: #1721553
Change-Id: I6d34e76b4089be024093a75f9e467d273d80f1c2
This commit is contained in:
Luigi Toscano 2018-01-11 10:26:54 +01:00
parent 5895ec110e
commit d3db306af8
3 changed files with 42 additions and 2 deletions

View File

@ -0,0 +1,9 @@
---
other:
- |
The CLIClient class, when it calls a command line client, uses
--os-project-name instead of --os-tenant-name for the project, and
passes --os-identity-api-version (default empty).
All CLI clients still available in supported releases of OpenStack
which are wrapped by the cmd_with_auth() method support those
switches.

View File

@ -101,12 +101,15 @@ class CLIClient(object):
:type project_domain_name: string
:param project_domain_id: Project's domain ID
:type project_domain_id: string
:param identity_api_version: Version of the Identity API
:type identity_api_version: string
"""
def __init__(self, username='', password='', tenant_name='', uri='',
cli_dir='', insecure=False, prefix='', user_domain_name=None,
user_domain_id=None, project_domain_name=None,
project_domain_id=None, *args, **kwargs):
project_domain_id=None, identity_api_version=None, *args,
**kwargs):
"""Initialize a new CLIClient object."""
super(CLIClient, self).__init__()
self.cli_dir = cli_dir if cli_dir else '/usr/bin'
@ -120,6 +123,7 @@ class CLIClient(object):
self.user_domain_id = user_domain_id
self.project_domain_name = project_domain_name
self.project_domain_id = project_domain_id
self.identity_api_version = identity_api_version
def nova(self, action, flags='', params='', fail_ok=False,
endpoint_type='publicURL', merge_stderr=False):
@ -374,12 +378,15 @@ class CLIClient(object):
:param merge_stderr: if True the stderr buffer is merged into stdout
:type merge_stderr: boolean
"""
creds = ('--os-username %s --os-tenant-name %s --os-password %s '
creds = ('--os-username %s --os-project-name %s --os-password %s '
'--os-auth-url %s' %
(self.username,
self.tenant_name,
self.password,
self.uri))
if self.identity_api_version:
creds += ' --os-identity-api-version %s' % (
self.identity_api_version)
if self.user_domain_name is not None:
creds += ' --os-user-domain-name %s' % self.user_domain_name
if self.user_domain_id is not None:

View File

@ -125,3 +125,27 @@ class TestCLIClient(base.TestCase):
mock_execute.call_args[0][2])
self.assertNotIn('--os-project-domain-name',
mock_execute.call_args[0][2])
@mock.patch.object(cli_base, 'execute')
def test_execute_with_default_api_version(self, mock_execute):
cli = cli_base.CLIClient()
cli.openstack('action')
self.assertEqual(mock_execute.call_count, 1)
self.assertNotIn('--os-identity-api-version ',
mock_execute.call_args[0][2])
@mock.patch.object(cli_base, 'execute')
def test_execute_with_empty_api_version(self, mock_execute):
cli = cli_base.CLIClient(identity_api_version='')
cli.openstack('action')
self.assertEqual(mock_execute.call_count, 1)
self.assertNotIn('--os-identity-api-version ',
mock_execute.call_args[0][2])
@mock.patch.object(cli_base, 'execute')
def test_execute_with_explicit_api_version(self, mock_execute):
cli = cli_base.CLIClient(identity_api_version='0.0')
cli.openstack('action')
self.assertEqual(mock_execute.call_count, 1)
self.assertIn('--os-identity-api-version 0.0 ',
mock_execute.call_args[0][2])