summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinmin Ren <renmm6@chinaunicom.cn>2019-05-14 02:42:30 +0000
committerTakashi Kajinami <tkajinam@redhat.com>2020-01-21 09:31:17 +0900
commit511224425804621550bf30403f7768eebe6f34ca (patch)
treebbcd4dec41118cb772bc3046ffc3485840af1100
parent9c9e797d07f64d4841ecb695d177c5e0c7d8266b (diff)
downloadpython-cinderclient-511224425804621550bf30403f7768eebe6f34ca.tar.gz
Add missed 'Server ID' output in attachment-liststein-em4.2.2
'server_id' is not Attachment attribute, should be set by 'instance' attribute. v3/attachments respond body: {"attachments": [{"status": "attached", "instance": INSTANCE_UUID, "id": ATTACHMENT_UUID, "volume_id": VOLUME_UUID, }, ... ] } Closes-Bug: #1860393 Change-Id: Ica5d278cb7455befe1db4be0ab65114fd606ea0a (cherry picked from commit 03f228c11e0d88dcc396b30b7544b5cfde894750)
-rw-r--r--cinderclient/tests/unit/v3/fakes.py22
-rw-r--r--cinderclient/tests/unit/v3/test_shell.py16
-rw-r--r--cinderclient/v3/shell.py2
3 files changed, 31 insertions, 9 deletions
diff --git a/cinderclient/tests/unit/v3/fakes.py b/cinderclient/tests/unit/v3/fakes.py
index b552f5e..5f03623 100644
--- a/cinderclient/tests/unit/v3/fakes.py
+++ b/cinderclient/tests/unit/v3/fakes.py
@@ -30,6 +30,18 @@ fake_attachment = {'attachment': {
'instance': 'e84fda45-4de4-4ce4-8f39-fc9d3b0aa05e',
'volume_id': '557ad76c-ce54-40a3-9e91-c40d21665cc3', }}
+fake_attachment_list = {'attachments': [
+ {'instance': 'instance_1',
+ 'name': 'attachment-1',
+ 'volume_id': 'fake_volume_1',
+ 'status': 'reserved',
+ 'id': 'attachmentid_1'},
+ {'instance': 'instance_2',
+ 'name': 'attachment-2',
+ 'volume_id': 'fake_volume_2',
+ 'status': 'reserverd',
+ 'id': 'attachmentid_2'}]}
+
fake_connection_info = {
'auth_password': 'i6h9E5HQqSkcGX3H',
'attachment_id': 'a232e9ae',
@@ -289,15 +301,7 @@ class FakeHTTPClient(fake_v2.FakeHTTPClient):
return (200, {}, fake_attachment)
def get_attachments(self, **kw):
- return (200, {}, {
- 'attachments': [{'instance': 1,
- 'name': 'attachment-1',
- 'volume_id': 'fake_volume_1',
- 'status': 'reserved'},
- {'instance': 2,
- 'name': 'attachment-2',
- 'volume_id': 'fake_volume_2',
- 'status': 'reserverd'}]})
+ return (200, {}, fake_attachment_list)
def post_attachments_a232e9ae_action(self, **kw): # noqa: E501
attached_fake = fake_attachment
diff --git a/cinderclient/tests/unit/v3/test_shell.py b/cinderclient/tests/unit/v3/test_shell.py
index b145d8e..88ea6d8 100644
--- a/cinderclient/tests/unit/v3/test_shell.py
+++ b/cinderclient/tests/unit/v3/test_shell.py
@@ -51,6 +51,7 @@ from cinderclient import client
from cinderclient import exceptions
from cinderclient import shell
from cinderclient import utils as cinderclient_utils
+from cinderclient.v3 import attachments
from cinderclient.v3 import volume_snapshots
from cinderclient.v3 import volumes
@@ -404,6 +405,21 @@ class ShellTest(utils.TestCase):
self.run_command(command)
self.assert_called('GET', '/attachments%s' % expected)
+ @mock.patch('cinderclient.utils.print_list')
+ @mock.patch.object(cinderclient.v3.attachments.VolumeAttachmentManager,
+ 'list')
+ def test_attachment_list_setattr(self, mock_list, mock_print):
+ command = '--os-volume-api-version 3.27 attachment-list '
+ fake_attachment = [attachments.VolumeAttachment(mock.ANY, attachment)
+ for attachment in fakes.fake_attachment_list['attachments']]
+ mock_list.return_value = fake_attachment
+ self.run_command(command)
+ for attach in fake_attachment:
+ setattr(attach, 'server_id', getattr(attach, 'instance'))
+ columns = ['ID', 'Volume ID', 'Status', 'Server ID']
+ mock_print.assert_called_once_with(fake_attachment, columns,
+ sortby_index=0)
+
def test_revert_to_snapshot(self):
original = cinderclient_utils.find_resource
diff --git a/cinderclient/v3/shell.py b/cinderclient/v3/shell.py
index da55f4a..dc9fadd 100644
--- a/cinderclient/v3/shell.py
+++ b/cinderclient/v3/shell.py
@@ -2155,6 +2155,8 @@ def do_attachment_list(cs, args):
marker=args.marker,
limit=args.limit,
sort=args.sort)
+ for attachment in attachments:
+ setattr(attachment, 'server_id', getattr(attachment, 'instance', None))
columns = ['ID', 'Volume ID', 'Status', 'Server ID']
if args.sort:
sortby_index = None