From f387243e367cbe11a9b79aae3459db4b7762d1aa Mon Sep 17 00:00:00 2001 From: Marc Koderer Date: Mon, 25 Jul 2016 11:47:33 +0200 Subject: [PATCH] Add validation for token and bypass_url Specifying only token or only bypass_url leads to a client error. Better to have a corresponding sanity check on shell level to include the needed parameters/env variables. Change-Id: I55dac599d4dadc273eacab14746bf449d3495f2b Closes-bug: #1604820 --- manilaclient/shell.py | 21 +++++++++++++------ manilaclient/tests/unit/test_shell.py | 2 ++ .../bug_1606168_fix-54d3c3bb78389f01.yaml | 3 +++ 3 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 releasenotes/notes/bug_1606168_fix-54d3c3bb78389f01.yaml diff --git a/manilaclient/shell.py b/manilaclient/shell.py index 5b0d641d7..6a9aee47e 100644 --- a/manilaclient/shell.py +++ b/manilaclient/shell.py @@ -602,19 +602,28 @@ class OpenStackManilaShell(object): def _validate_required_options(self, tenant_name, tenant_id, project_name, project_id, token, service_catalog_url, auth_url): + if token and not service_catalog_url: + raise exc.CommandError( + "bypass_url missing: When specifying a token the bypass_url " + "must be set via --bypass-url or env[OS_MANILA_BYPASS_URL]") + if service_catalog_url and not token: + raise exc.CommandError( + "Token missing: When specifying a bypass_url a token must be " + "set via --os-token or env[OS_TOKEN]") if token and service_catalog_url: return + if not (tenant_name or tenant_id or project_name or project_id): raise exc.CommandError( "You must provide a tenant_name, tenant_id, " "project_id or project_name (with " "project_domain_name or project_domain_id) via " - "--os-tenant-name (env[OS_TENANT_NAME]), " - "--os-tenant-id (env[OS_TENANT_ID]), " - "--os-project-id (env[OS_PROJECT_ID]), " - "--os-project-name (env[OS_PROJECT_NAME]), " - "--os-project-domain-id (env[OS_PROJECT_DOMAIN_ID]) and " - "--os-project-domain-name (env[OS_PROJECT_DOMAIN_NAME])." + "--os-tenant-name or env[OS_TENANT_NAME], " + "--os-tenant-id or env[OS_TENANT_ID], " + "--os-project-id or env[OS_PROJECT_ID], " + "--os-project-name or env[OS_PROJECT_NAME], " + "--os-project-domain-id or env[OS_PROJECT_DOMAIN_ID] and " + "--os-project-domain-name or env[OS_PROJECT_DOMAIN_NAME]." ) if not auth_url: diff --git a/manilaclient/tests/unit/test_shell.py b/manilaclient/tests/unit/test_shell.py index 74727a988..f4aabbaee 100644 --- a/manilaclient/tests/unit/test_shell.py +++ b/manilaclient/tests/unit/test_shell.py @@ -77,6 +77,8 @@ class OpenstackManilaShellTest(utils.TestCase): 'OS_PASSWORD': 'foo_password'}, {'OS_TENANT_NAME': 'foo_tenant', 'OS_USERNAME': 'foo_user', 'OS_PASSWORD': 'foo_password'}, + {'OS_TOKEN': 'foo_token'}, + {'OS_MANILA_BYPASS_URL': 'http://foo.foo'}, ) def test_main_failure(self, env_vars): self.set_env_vars(env_vars) diff --git a/releasenotes/notes/bug_1606168_fix-54d3c3bb78389f01.yaml b/releasenotes/notes/bug_1606168_fix-54d3c3bb78389f01.yaml new file mode 100644 index 000000000..1515fd0c5 --- /dev/null +++ b/releasenotes/notes/bug_1606168_fix-54d3c3bb78389f01.yaml @@ -0,0 +1,3 @@ +--- +fixes: + - Fix error handling for os-token and bypass-url.