diff --git a/releasenotes/notes/cli-tests-v3fixes-fb38189cefd64213.yaml b/releasenotes/notes/cli-tests-v3fixes-fb38189cefd64213.yaml new file mode 100644 index 0000000000..e3443c8a2c --- /dev/null +++ b/releasenotes/notes/cli-tests-v3fixes-fb38189cefd64213.yaml @@ -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. diff --git a/tempest/lib/cli/base.py b/tempest/lib/cli/base.py index f39ecbc634..3a97801a93 100644 --- a/tempest/lib/cli/base.py +++ b/tempest/lib/cli/base.py @@ -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: diff --git a/tempest/tests/lib/cli/test_execute.py b/tempest/tests/lib/cli/test_execute.py index c276386ab2..c069af5156 100644 --- a/tempest/tests/lib/cli/test_execute.py +++ b/tempest/tests/lib/cli/test_execute.py @@ -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])