diff options
author | Lee Yarwood <lyarwood@redhat.com> | 2020-11-25 15:46:36 +0000 |
---|---|---|
committer | melanie witt <melwittt@gmail.com> | 2022-08-16 08:08:21 +0000 |
commit | 5c228e8d39a6bf6e0e4a4efbb8db3993a2dfb029 (patch) | |
tree | e527785fe652835d04046459d8464e7a330b7155 | |
parent | 6d9e8739d4a5a0e12f99f7c793f2fc6e84b5c43e (diff) | |
download | nova-5c228e8d39a6bf6e0e4a4efbb8db3993a2dfb029.tar.gz |
blockinfo: Add encryption details to the disk_info mappings when provided
Change-Id: Ice54f63d4e27650755e61775cd386222f4f9e2ab
-rw-r--r-- | nova/tests/unit/virt/libvirt/test_blockinfo.py | 11 | ||||
-rw-r--r-- | nova/virt/libvirt/blockinfo.py | 11 |
2 files changed, 20 insertions, 2 deletions
diff --git a/nova/tests/unit/virt/libvirt/test_blockinfo.py b/nova/tests/unit/virt/libvirt/test_blockinfo.py index 9505dbe31c..5a0dbb40ce 100644 --- a/nova/tests/unit/virt/libvirt/test_blockinfo.py +++ b/nova/tests/unit/virt/libvirt/test_blockinfo.py @@ -1172,7 +1172,10 @@ class LibvirtBlockInfoTest(test.NoDBTestCase): 'device_type': 'lame_type', 'delete_on_termination': True}, {'disk_bus': 'sata', 'guest_format': None, - 'device_name': '/dev/sda', 'size': 3}] + 'device_name': '/dev/sda', 'size': 3}, + {'encrypted': True, 'encryption_secret_uuid': uuids.secret, + 'encryption_format': 'luks', + 'encryption_options': '{"json": "options"}'}] expected = [{'dev': 'vds', 'type': 'disk', 'bus': 'usb'}, {'dev': 'vdb', 'type': 'disk', 'bus': 'virtio', 'format': 'ext4'}, @@ -1181,7 +1184,11 @@ class LibvirtBlockInfoTest(test.NoDBTestCase): 'bus': 'scsi', 'boot_index': '1'}, {'dev': 'vdo', 'type': 'disk', 'bus': 'scsi', 'boot_index': '2'}, - {'dev': 'sda', 'type': 'disk', 'bus': 'sata'}] + {'dev': 'sda', 'type': 'disk', 'bus': 'sata'}, + {'dev': 'vda', 'type': 'disk', 'bus': 'virtio', + 'encrypted': True, 'encryption_secret_uuid': uuids.secret, + 'encryption_format': 'luks', + 'encryption_options': {'json': 'options'}}] image_meta = objects.ImageMeta.from_dict(self.test_image_meta) for bdm, expected in zip(bdms, expected): diff --git a/nova/virt/libvirt/blockinfo.py b/nova/virt/libvirt/blockinfo.py index 9a4aa671be..4efc6fbaeb 100644 --- a/nova/virt/libvirt/blockinfo.py +++ b/nova/virt/libvirt/blockinfo.py @@ -73,6 +73,7 @@ import itertools import operator from oslo_config import cfg +from oslo_serialization import jsonutils from nova import block_device @@ -400,6 +401,16 @@ def get_info_from_bdm(instance, virt_type, image_meta, bdm, # NOTE(ndipanov): libvirt starts ordering from 1, not 0 bdm_info['boot_index'] = str(boot_index + 1) + # If the device is encrypted pass through the secret, format and options + if bdm.get('encrypted'): + bdm_info['encrypted'] = bdm.get('encrypted') + bdm_info['encryption_secret_uuid'] = bdm.get('encryption_secret_uuid') + bdm_info['encryption_format'] = bdm.get('encryption_format') + encryption_options = bdm.get('encryption_options') + if encryption_options: + bdm_info['encryption_options'] = jsonutils.loads( + encryption_options) + return bdm_info |