diff options
author | Minmin Ren <renmm6@chinaunicom.cn> | 2019-05-14 02:42:30 +0000 |
---|---|---|
committer | Takashi Kajinami <tkajinam@redhat.com> | 2020-01-21 09:33:16 +0900 |
commit | 522e5a938bb478ec190e741a0d47eb16f8c4af00 (patch) | |
tree | e25fee726add14a2435733ba6fc29a66bb4c964c | |
parent | 1b63bdd0611c19c093b21a3bf21f743bc83790b6 (diff) | |
download | python-cinderclient-522e5a938bb478ec190e741a0d47eb16f8c4af00.tar.gz |
Add missed 'Server ID' output in attachment-list
'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)
(cherry picked from commit 511224425804621550bf30403f7768eebe6f34ca)
(cherry picked from commit 14547dfb1b9aced82d5d333ab329870461034565)
-rw-r--r-- | cinderclient/tests/unit/v3/fakes.py | 22 | ||||
-rw-r--r-- | cinderclient/tests/unit/v3/test_shell.py | 16 | ||||
-rw-r--r-- | cinderclient/v3/shell.py | 2 |
3 files changed, 31 insertions, 9 deletions
diff --git a/cinderclient/tests/unit/v3/fakes.py b/cinderclient/tests/unit/v3/fakes.py index f1ef3fd..365e5ea 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 ae15587..cdc70e9 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 @@ -336,6 +337,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 05bdbef..698a0b0 100644 --- a/cinderclient/v3/shell.py +++ b/cinderclient/v3/shell.py @@ -2069,6 +2069,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 |