From 045f2e7e0618fdf22c260625d64554382afefde1 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Mon, 16 May 2022 12:32:25 +0100 Subject: volume: Correct output of 'volume attachment create' When adding these, we missed that the underlying cinder library call actually returns a dictionary and not a Resource-based object. This requires slightly different handling. Fix this. Change-Id: Ie065fe4198ae1238830cb619220e856390d4cb6e Signed-off-by: Stephen Finucane --- .../tests/unit/volume/v3/test_volume_attachment.py | 3 ++- openstackclient/volume/v3/volume_attachment.py | 23 +++++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-) (limited to 'openstackclient') diff --git a/openstackclient/tests/unit/volume/v3/test_volume_attachment.py b/openstackclient/tests/unit/volume/v3/test_volume_attachment.py index 09f698e7..44fac6c5 100644 --- a/openstackclient/tests/unit/volume/v3/test_volume_attachment.py +++ b/openstackclient/tests/unit/volume/v3/test_volume_attachment.py @@ -73,8 +73,9 @@ class TestVolumeAttachmentCreate(TestVolumeAttachment): self.volumes_mock.get.return_value = self.volume self.servers_mock.get.return_value = self.server + # VolumeAttachmentManager.create returns a dict self.volume_attachments_mock.create.return_value = \ - self.volume_attachment + self.volume_attachment.to_dict() self.cmd = volume_attachment.CreateVolumeAttachment(self.app, None) diff --git a/openstackclient/volume/v3/volume_attachment.py b/openstackclient/volume/v3/volume_attachment.py index 39a9c37f..c7401837 100644 --- a/openstackclient/volume/v3/volume_attachment.py +++ b/openstackclient/volume/v3/volume_attachment.py @@ -51,18 +51,27 @@ def _format_attachment(attachment): 'Properties', ) - # TODO(stephenfin): Improve output with the nested connection_info - # field - cinderclient printed two things but that's equally ugly - return ( - column_headers, - utils.get_item_properties( + # VolumeAttachmentManager.create returns a dict while everything else + # returns a VolumeAttachment object + if isinstance(attachment, dict): + data = [] + for column in columns: + if column == 'connection_info': + data.append(format_columns.DictColumn(attachment[column])) + continue + data.append(attachment[column]) + else: + data = utils.get_item_properties( attachment, columns, formatters={ 'connection_info': format_columns.DictColumn, }, - ), - ) + ) + + # TODO(stephenfin): Improve output with the nested connection_info + # field - cinderclient printed two things but that's equally ugly + return (column_headers, data) class CreateVolumeAttachment(command.ShowOne): -- cgit v1.2.1