From bd73a5482ca8174b6ac83b26ae09cac0e82a468e Mon Sep 17 00:00:00 2001
From: Oleksii Chuprykov <ochuprykov@mirantis.com>
Date: Thu, 23 Oct 2014 18:12:23 +0300
Subject: [PATCH] Add os_ prefix to project_domain_name/id

Running glance without defining --os-tenant-id and
--os-tenant-name leads to AttributeError. Add os_ prefix
to project_domain_name and project_domain_id because args
object doesn't have them

Closes-Bug: #1384759

Change-Id: Id85569aad538efcf327312d9936bb6463279ce34
---
 glanceclient/shell.py |  6 +++---
 tests/test_shell.py   | 16 ++++++++++++++++
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/glanceclient/shell.py b/glanceclient/shell.py
index 61c3c72f..cf3209c9 100644
--- a/glanceclient/shell.py
+++ b/glanceclient/shell.py
@@ -475,12 +475,12 @@ class OpenStackImagesShell(object):
             project_info = (args.os_tenant_name or
                             args.os_tenant_id or
                             (args.os_project_name and
-                            (args.project_domain_name or
-                                args.project_domain_id)) or
+                            (args.os_project_domain_name or
+                                args.os_project_domain_id)) or
                             args.os_project_id)
 
             if (not project_info):
-                # tenent is deprecated in Keystone v3. Use the latest
+                # tenant is deprecated in Keystone v3. Use the latest
                 # terminology instead.
                 raise exc.CommandError(
                     _("You must provide a project_id or project_name ("
diff --git a/tests/test_shell.py b/tests/test_shell.py
index 1a6e5baa..bc49e9ce 100644
--- a/tests/test_shell.py
+++ b/tests/test_shell.py
@@ -273,6 +273,22 @@ class ShellTest(utils.TestCase):
         # Make sure we are actually prompted.
         mock_getpass.assert_called_with('OS Password: ')
 
+    @mock.patch(
+        'glanceclient.shell.OpenStackImagesShell._get_keystone_session')
+    @mock.patch.object(openstack_shell.OpenStackImagesShell, '_cache_schemas')
+    def test_no_auth_with_proj_name(self, cache_schemas, session):
+        with mock.patch('glanceclient.v2.client.Client'):
+            args = ('--os-project-name myname '
+                    '--os-project-domain-name mydomain '
+                    '--os-project-domain-id myid '
+                    '--os-image-api-version 2 image-list')
+            glance_shell = openstack_shell.OpenStackImagesShell()
+            glance_shell.main(args.split())
+            ((args), kwargs) = session.call_args
+            self.assertEqual('myname', kwargs['project_name'])
+            self.assertEqual('mydomain', kwargs['project_domain_name'])
+            self.assertEqual('myid', kwargs['project_domain_id'])
+
 
 class ShellTestWithKeystoneV3Auth(ShellTest):
     # auth environment to use