QemuImgInfo: Fix inconsistent value format of encrypted

The qemu-img info command shows the encrpyed field in different formats
according to the output format. When the default human format is used
the field can be 'yes' or None while when json format is used the same
field can be True or False.
This change ensures the corresponding attribute has the consistent
format regardless of the output format used.

Closes-Bug: #1942682
Change-Id: I949f07582a708114fdfba76f1a05aa3a3e5c4f40
This commit is contained in:
Takashi Kajinami 2021-09-04 23:03:17 +09:00
parent 2c74bb92e5
commit 2922a3491a
3 changed files with 11 additions and 2 deletions

View File

@ -63,7 +63,7 @@ class QemuImgInfo(object):
self.cluster_size = details.get('cluster-size')
self.disk_size = details.get('actual-size')
self.snapshots = details.get('snapshots', [])
self.encrypted = details.get('encrypted')
self.encrypted = 'yes' if details.get('encrypted') else None
self.format_specific = details.get('format-specific')
else:
if cmd_output is not None:

View File

@ -238,7 +238,8 @@ class ImageUtilsJSONTestCase(test_base.BaseTestCase):
"cluster-size": 65536,
"format": "qcow2",
"actual-size": 13168640,
"format-specific": {"data": {"foo": "bar"}}
"format-specific": {"data": {"foo": "bar"}},
"encrypted": true
}'''
image_info = imageutils.QemuImgInfo(img_output, format='json')
mock_deprecate.assert_not_called()
@ -248,6 +249,7 @@ class ImageUtilsJSONTestCase(test_base.BaseTestCase):
self.assertEqual('qcow2', image_info.file_format)
self.assertEqual(13168640, image_info.disk_size)
self.assertEqual("bar", image_info.format_specific["data"]["foo"])
self.assertEqual('yes', image_info.encrypted)
@mock.patch("debtcollector.deprecate")
def test_qemu_img_info_blank(self, mock_deprecate):
@ -260,3 +262,4 @@ class ImageUtilsJSONTestCase(test_base.BaseTestCase):
self.assertIsNone(image_info.file_format)
self.assertIsNone(image_info.disk_size)
self.assertIsNone(image_info.format_specific)
self.assertIsNone(image_info.encrypted)

View File

@ -0,0 +1,6 @@
---
fixes:
- |
`bug #1942682 <https://bugs.launchpad.net/oslo.utils/+bug/1942682>`_:
Fix inconsistent value of `QemuImgInfo.encrypted`. Now the attribute is
always `'yes'` or `None` regardless of the format(`human` or `json`) used.