From 8afc06c562ac8c189fae6ded7cc50f1b579f06c4 Mon Sep 17 00:00:00 2001 From: Ian Cordasco Date: Wed, 8 Jul 2015 09:37:07 -0500 Subject: [PATCH] Remove unnecessary check for tenant information Keystone v3 has changed the name of tenants to projects which means that OS_TENANT_NAME is meaningless in a cloud where v3 is the default authentication version. As such, if a user does not have OS_TENANT_NAME enabled, cinderclient will not work even though it has checks for v3 immediately below this check (and the same check replicated further below that). Removing this allows cinderclient to work with Keystone v3 without setting OS_TENANT_NAME unnecessarily. Further, the check for project information was incorrectly referring to project_domain_name and project_domain_id instead of os_project_domain_name and os_project_domain_id. Closes-bug: 1472636 Change-Id: Ifabb4a2aec070c00349e794364a71394feea99f1 --- cinderclient/shell.py | 66 +++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/cinderclient/shell.py b/cinderclient/shell.py index 857b0381c..710a6550d 100644 --- a/cinderclient/shell.py +++ b/cinderclient/shell.py @@ -611,6 +611,14 @@ class OpenStackCinderShell(object): # FIXME(usrleon): Here should be restrict for project id same as # for os_username or os_password but for compatibility it is not. + # V3 stuff + project_info_provided = ((self.options.os_tenant_name or + self.options.os_tenant_id) or + (self.options.os_project_name and + (self.options.os_project_domain_name or + self.options.os_project_domain_id)) or + self.options.os_project_id) + if not utils.isunauthenticated(args.func): if auth_plugin: auth_plugin.parse_opts(args) @@ -637,32 +645,20 @@ class OpenStackCinderShell(object): "env[OS_PASSWORD] " "or, prompted response.") - if not (os_tenant_name or os_tenant_id): - raise exc.CommandError("You must provide a tenant ID " - "through --os-tenant-id or " - "env[OS_TENANT_ID].") - - # V3 stuff - project_info_provided = self.options.os_tenant_name or \ - self.options.os_tenant_id or \ - (self.options.os_project_name and - (self.options.project_domain_name or - self.options.project_domain_id)) or \ - self.options.os_project_id - - if (not project_info_provided): - 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])" - " --os-project-domain-name " - "(env[OS_PROJECT_DOMAIN_NAME])")) + if not project_info_provided: + 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])" + " --os-project-domain-name " + "(env[OS_PROJECT_DOMAIN_NAME])" + )) if not os_auth_url: if os_auth_system and os_auth_system != 'keystone': @@ -673,10 +669,20 @@ class OpenStackCinderShell(object): "You must provide an authentication URL " "through --os-auth-url or env[OS_AUTH_URL].") - if not (os_tenant_name or os_tenant_id): - raise exc.CommandError( - "You must provide a tenant ID " - "through --os-tenant-id or env[OS_TENANT_ID].") + if not project_info_provided: + 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])" + " --os-project-domain-name " + "(env[OS_PROJECT_DOMAIN_NAME])" + )) if not os_auth_url: raise exc.CommandError(