block_device: Add encryption attributes to image and ephemeral disks

Change-Id: I0e3f0a15879f92e08f9e4465e7cdf53190fcc7b7
This commit is contained in:
Lee Yarwood 2022-01-26 17:53:35 +00:00 committed by melanie witt
parent 5df97016b4
commit d53d9eba22
3 changed files with 72 additions and 9 deletions

View File

@ -3279,7 +3279,11 @@ class ComputeTestCase(BaseTestCase,
'delete_on_termination': True,
'guest_format': None,
'volume_size': 2,
'boot_index': -1
'boot_index': -1,
'encrypted': True,
'encryption_secret_uuid': uuids.secret,
'encryption_format': 'luks',
'encryption_options': None,
})
swap = fake_block_device.FakeDbBlockDeviceDict({
'id': 3,
@ -3314,14 +3318,22 @@ class ComputeTestCase(BaseTestCase,
'device_type': 'disk',
'disk_bus': 'virtio',
'guest_format': None,
'size': 1
'size': 1,
'encrypted': False,
'encryption_secret_uuid': None,
'encryption_format': None,
'encryption_options': None,
},
{
'device_name': '/dev/vdc',
'device_type': 'disk',
'disk_bus': 'virtio',
'guest_format': None,
'size': 2
'size': 2,
'encrypted': True,
'encryption_secret_uuid': uuids.secret,
'encryption_format': 'luks',
'encryption_options': None,
}
],
'image': [],

View File

@ -79,14 +79,22 @@ class TestDriverBlockDevice(test.NoDBTestCase):
'volume_size': 4,
'guest_format': 'ext4',
'delete_on_termination': True,
'boot_index': -1})
'boot_index': -1,
'encrypted': False,
'encryption_secret_uuid': None,
'encryption_format': None,
'encryption_options': None})
ephemeral_driver_bdm = {
'device_name': '/dev/sdc1',
'size': 4,
'device_type': 'disk',
'guest_format': 'ext4',
'disk_bus': 'scsi'}
'disk_bus': 'scsi',
'encrypted': False,
'encryption_secret_uuid': None,
'encryption_format': None,
'encryption_options': None}
volume_bdm_dict = block_device.BlockDeviceDict(
{'id': 3, 'instance_uuid': uuids.instance,
@ -221,7 +229,11 @@ class TestDriverBlockDevice(test.NoDBTestCase):
'guest_format': 'ext4',
'boot_index': 0,
'image_id': 'fake-image-id-1',
'volume_size': 5})
'volume_size': 5,
'encrypted': True,
'encryption_secret_uuid': uuids.secret,
'encryption_format': 'plain',
'encryption_options': None})
image_driver_bdm = {
'device_name': '/dev/vda',
@ -230,7 +242,11 @@ class TestDriverBlockDevice(test.NoDBTestCase):
'disk_bus': 'virtio',
'boot_index': 0,
'image_id': 'fake-image-id-1',
'size': 5}
'size': 5,
'encrypted': True,
'encryption_secret_uuid': uuids.secret,
'encryption_format': 'plain',
'encryption_options': None}
def setUp(self):
super(TestDriverBlockDevice, self).setUp()

View File

@ -235,12 +235,24 @@ class DriverImageBlockDevice(DriverBlockDevice):
'device_type',
'guest_format',
'boot_index',
'encrypted',
'encryption_secret_uuid',
'encryption_format',
'encryption_options'
])
_fields = set([
'device_name',
'size']) | _new_only_fields
_legacy_fields = (
_fields - _new_only_fields | set(['num', 'virtual_name']))
_update_on_save = {
'disk_bus': None,
'device_name': None,
'device_type': None,
'encryption_secret_uuid': None,
'encryption_format': None,
'encryption_options': None,
}
def _transform(self):
if (not self._bdm_obj.get('source_type') == 'image' or
@ -254,12 +266,31 @@ class DriverImageBlockDevice(DriverBlockDevice):
'guest_format': self._bdm_obj.guest_format,
'image_id': self._bdm_obj.image_id,
'boot_index': 0,
'encrypted': self._bdm_obj.encrypted,
'encryption_secret_uuid': self._bdm_obj.encryption_secret_uuid,
'encryption_format': self._bdm_obj.encryption_format,
'encryption_options': self._bdm_obj.encryption_options
})
class DriverEphemeralBlockDevice(DriverBlockDevice):
_new_only_fields = set(['disk_bus', 'device_type', 'guest_format'])
_new_only_fields = set([
'disk_bus',
'device_type',
'guest_format',
'encrypted',
'encryption_secret_uuid',
'encryption_format',
'encryption_options'])
_fields = set(['device_name', 'size']) | _new_only_fields
_update_on_save = {
'disk_bus': None,
'device_name': None,
'device_type': None,
'encryption_secret_uuid': None,
'encryption_format': None,
'encryption_options': None,
}
def _transform(self):
if not block_device.new_format_is_ephemeral(self._bdm_obj):
@ -269,7 +300,11 @@ class DriverEphemeralBlockDevice(DriverBlockDevice):
'size': self._bdm_obj.volume_size or 0,
'disk_bus': self._bdm_obj.disk_bus,
'device_type': self._bdm_obj.device_type,
'guest_format': self._bdm_obj.guest_format
'guest_format': self._bdm_obj.guest_format,
'encrypted': self._bdm_obj.encrypted,
'encryption_secret_uuid': self._bdm_obj.encryption_secret_uuid,
'encryption_format': self._bdm_obj.encryption_format,
'encryption_options': self._bdm_obj.encryption_options
})