From 74aeac3c5c24396563a7f6c74d9733c05d30ed99 Mon Sep 17 00:00:00 2001 From: Rajat Dhasmana Date: Fri, 6 Mar 2020 07:53:27 +0000 Subject: Pass "base_image_ref" to backend when transfer volume to image Cinder has a current implementation to support glance colocation of volume images[1]. To support this feature for vmdk driver, we need to pass the base image reference (from which the volume was originally created) to the image service update method which this patch addresses. [1] https://review.opendev.org/#/c/697636/ Change-Id: Iba7cbdd3f50877d360201391e87f1748433348a7 --- oslo_vmware/image_transfer.py | 4 +++- oslo_vmware/tests/test_image_transfer.py | 16 ++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/oslo_vmware/image_transfer.py b/oslo_vmware/image_transfer.py index 264fb19..34a9218 100644 --- a/oslo_vmware/image_transfer.py +++ b/oslo_vmware/image_transfer.py @@ -339,10 +339,12 @@ def upload_image(context, timeout_secs, image_service, image_id, owner_id, updater = loopingcall.FixedIntervalLoopingCall(read_handle.update_progress) store_id = kwargs.get('store_id') + base_image_ref = kwargs.get('base_image_ref') try: updater.start(interval=NFC_LEASE_UPDATE_PERIOD) image_service.update(context, image_id, image_metadata, - data=read_handle, store_id=store_id) + data=read_handle, store_id=store_id, + base_image_ref=base_image_ref) finally: updater.stop() read_handle.close() diff --git a/oslo_vmware/tests/test_image_transfer.py b/oslo_vmware/tests/test_image_transfer.py index 0bb61b7..436671e 100644 --- a/oslo_vmware/tests/test_image_transfer.py +++ b/oslo_vmware/tests/test_image_transfer.py @@ -373,6 +373,7 @@ class ImageTransferUtilityTest(base.TestCase): image_name = 'fake_image' image_version = 1 store_id = 'fake_store' + base_image_ref = 'e79161cd-5f9d-4007-8823-81a807a64332' fake_VmdkReadHandle = mock.Mock() fake_rw_handles_VmdkReadHandle.return_value = fake_VmdkReadHandle @@ -391,7 +392,8 @@ class ImageTransferUtilityTest(base.TestCase): is_public=is_public, image_name=image_name, image_version=image_version, - store_id=store_id) + store_id=store_id, + base_image_ref=base_image_ref) fake_rw_handles_VmdkReadHandle.assert_called_once_with(session, host, @@ -407,8 +409,10 @@ class ImageTransferUtilityTest(base.TestCase): 'vmware_disktype': 'streamOptimized', 'owner_id': owner_id}} - image_service.update.assert_called_once_with(context, - image_id, - image_metadata, - data=fake_VmdkReadHandle, - store_id=store_id) + image_service.update.assert_called_once_with( + context, + image_id, + image_metadata, + data=fake_VmdkReadHandle, + store_id=store_id, + base_image_ref=base_image_ref) -- cgit v1.2.1