From 045f2e7e0618fdf22c260625d64554382afefde1 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Mon, 16 May 2022 12:32:25 +0100 Subject: [PATCH] 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 --- .../unit/volume/v3/test_volume_attachment.py | 3 ++- .../volume/v3/volume_attachment.py | 23 +++++++++++++------ ...nt-create-output-fix-56515b8fcdd260b9.yaml | 6 +++++ 3 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 releasenotes/notes/volume-attachment-create-output-fix-56515b8fcdd260b9.yaml diff --git a/openstackclient/tests/unit/volume/v3/test_volume_attachment.py b/openstackclient/tests/unit/volume/v3/test_volume_attachment.py index 09f698e7fd..44fac6c586 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 39a9c37fdb..c740183791 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): diff --git a/releasenotes/notes/volume-attachment-create-output-fix-56515b8fcdd260b9.yaml b/releasenotes/notes/volume-attachment-create-output-fix-56515b8fcdd260b9.yaml new file mode 100644 index 0000000000..b8bd06e195 --- /dev/null +++ b/releasenotes/notes/volume-attachment-create-output-fix-56515b8fcdd260b9.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + The ``volume attachment create`` command will now display information + for successfully created volume attachments. Previously an empty table was + returned.