From 0bf56a0a54524dfcda67727ca1c64e57bfaf0bc6 Mon Sep 17 00:00:00 2001
From: xiexs <xiexs@cn.fujitsu.com>
Date: Tue, 24 May 2016 01:28:14 -0400
Subject: [PATCH] Fix Capabilities.__repr__ to remove the undefined attribute

The self.name is undefined in the Capabilities class.
And also there is no need any unique information to
identify this object, so we just remove it directly.

Change-Id: I0b821345c0d4c9a4636b9d097b9a66ba59768092
Partial-Bug: #1585024
---
 .../tests/unit/v2/test_capabilities.py        | 42 ++++++++++++-------
 cinderclient/v3/capabilities.py               |  2 +-
 2 files changed, 28 insertions(+), 16 deletions(-)

diff --git a/cinderclient/tests/unit/v2/test_capabilities.py b/cinderclient/tests/unit/v2/test_capabilities.py
index ce0b67e7c..be6aecd7d 100644
--- a/cinderclient/tests/unit/v2/test_capabilities.py
+++ b/cinderclient/tests/unit/v2/test_capabilities.py
@@ -13,30 +13,42 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+from cinderclient.v2.capabilities import Capabilities
 from cinderclient.tests.unit import utils
 from cinderclient.tests.unit.v2 import fakes
 
 cs = fakes.FakeClient()
 
+FAKE_CAPABILITY = {
+    'namespace': 'OS::Storage::Capabilities::fake',
+    'vendor_name': 'OpenStack',
+    'volume_backend_name': 'lvm',
+    'pool_name': 'pool',
+    'storage_protocol': 'iSCSI',
+    'properties': {
+        'compression': {
+            'title': 'Compression',
+            'description': 'Enables compression.',
+            'type': 'boolean',
+        },
+    },
+}
+
 
 class CapabilitiesTest(utils.TestCase):
 
     def test_get_capabilities(self):
-        expected = {
-            'namespace': 'OS::Storage::Capabilities::fake',
-            'vendor_name': 'OpenStack',
-            'volume_backend_name': 'lvm',
-            'pool_name': 'pool',
-            'storage_protocol': 'iSCSI',
-            'properties': {
-                'compression': {
-                    'title': 'Compression',
-                    'description': 'Enables compression.',
-                    'type': 'boolean'},
-            }
-        }
-
         capabilities = cs.capabilities.get('host')
         cs.assert_called('GET', '/capabilities/host')
-        self.assertEqual(expected, capabilities._info)
+        self.assertEqual(FAKE_CAPABILITY, capabilities._info)
         self._assert_request_id(capabilities)
+
+    def test___repr__(self):
+        """
+        Unit test for Capabilities.__repr__
+
+        Verify that Capabilities object can be printed.
+        """
+        cap = Capabilities(None, FAKE_CAPABILITY)
+        self.assertEqual(
+            "<Capabilities: %s>" % FAKE_CAPABILITY['namespace'], repr(cap))
diff --git a/cinderclient/v3/capabilities.py b/cinderclient/v3/capabilities.py
index d0f8ab218..5c0761c6d 100644
--- a/cinderclient/v3/capabilities.py
+++ b/cinderclient/v3/capabilities.py
@@ -23,7 +23,7 @@ class Capabilities(base.Resource):
     NAME_ATTR = 'name'
 
     def __repr__(self):
-        return "<Capabilities: %s>" % self.name
+        return "<Capabilities: %s>" % self._info['namespace']
 
 
 class CapabilitiesManager(base.Manager):