summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVipin Balachandran <vbala@vmware.com>2019-05-09 14:52:45 -0700
committerVipin Balachandran <vbala@vmware.com>2019-05-10 18:30:13 -0700
commitae6c2ae1d244f242d6c447d72556d768ecf14f8a (patch)
treed361b769dd5073b82c18a4b7ba68539ebc354a5c
parent95d849ebe733c3748bdc293362d3a9a4b744b857 (diff)
downloadoslo-vmware-ae6c2ae1d244f242d6c447d72556d768ecf14f8a.tar.gz
Update NFC lease progress
Adding a looping call to periodically update NFC lease progress during virtual disk copy from ESXi to file handle. Change-Id: Id562d200c92af94151b08d3ae4217da41edea55e
-rw-r--r--oslo_vmware/image_transfer.py8
-rw-r--r--oslo_vmware/tests/test_image_transfer.py12
2 files changed, 17 insertions, 3 deletions
diff --git a/oslo_vmware/image_transfer.py b/oslo_vmware/image_transfer.py
index fa29385..6ff2acb 100644
--- a/oslo_vmware/image_transfer.py
+++ b/oslo_vmware/image_transfer.py
@@ -286,7 +286,13 @@ def copy_stream_optimized_disk(
kwargs.get('vm'),
kwargs.get('vmdk_file_path'),
file_size)
- _start_transfer(read_handle, write_handle, timeout_secs)
+
+ updater = loopingcall.FixedIntervalLoopingCall(read_handle.update_progress)
+ try:
+ updater.start(interval=NFC_LEASE_UPDATE_PERIOD)
+ _start_transfer(read_handle, write_handle, timeout_secs)
+ finally:
+ updater.stop()
LOG.debug("Downloaded virtual disk: %s.", vmdk_file_path)
diff --git a/oslo_vmware/tests/test_image_transfer.py b/oslo_vmware/tests/test_image_transfer.py
index 22506e6..08ac0e7 100644
--- a/oslo_vmware/tests/test_image_transfer.py
+++ b/oslo_vmware/tests/test_image_transfer.py
@@ -315,12 +315,16 @@ class ImageTransferUtilityTest(base.TestCase):
@mock.patch.object(image_transfer, '_start_transfer')
@mock.patch('oslo_vmware.rw_handles.VmdkReadHandle')
+ @mock.patch('oslo_vmware.common.loopingcall.FixedIntervalLoopingCall')
def test_copy_stream_optimized_disk(
- self, vmdk_read_handle, start_transfer):
+ self, loopingcall, vmdk_read_handle, start_transfer):
- read_handle = mock.sentinel.read_handle
+ read_handle = mock.Mock()
vmdk_read_handle.return_value = read_handle
+ updater = mock.Mock()
+ loopingcall.return_value = updater
+
context = mock.sentinel.context
timeout = mock.sentinel.timeout
write_handle = mock.Mock(name='/cinder/images/tmpAbcd.vmdk')
@@ -338,8 +342,12 @@ class ImageTransferUtilityTest(base.TestCase):
vmdk_read_handle.assert_called_once_with(
session, host, port, vm, vmdk_file_path, vmdk_size)
+ loopingcall.assert_called_once_with(read_handle.update_progress)
+ updater.start.assert_called_once_with(
+ interval=image_transfer.NFC_LEASE_UPDATE_PERIOD)
start_transfer.assert_called_once_with(read_handle, write_handle,
timeout)
+ updater.stop.assert_called_once_with()
@mock.patch('oslo_vmware.rw_handles.VmdkReadHandle')
@mock.patch.object(image_transfer, '_start_transfer')