On Mon, Sep 09, 2019 at 10:37:07PM +0300, Nir Soffer wrote:
On Mon, Sep 9, 2019 at 7:02 PM Richard W.M. Jones
<rjones(a)redhat.com> wrote:
> From: Daniel Erez <derez(a)redhat.com>
>
> After invoking transfer_service.finalize, check operation status by
> examining DiskStatus. This is done instead of failing after a
> predefined timeout regardless the status.
>
> Bug-Url:
https://bugzilla.redhat.com/show_bug.cgi?id=1680361
> Signed-off-by: Richard W.M. Jones <rjones(a)redhat.com>
> Tested-by: Ilanit Stein <istein(a)redhat.com>
> ---
> v2v/rhv-upload-plugin.py | 19 +++++++++++++------
> 1 file changed, 13 insertions(+), 6 deletions(-)
>
> diff --git a/v2v/rhv-upload-plugin.py b/v2v/rhv-upload-plugin.py
> index 9e71021..8f13ce1 100644
> --- a/v2v/rhv-upload-plugin.py
> +++ b/v2v/rhv-upload-plugin.py
> @@ -549,16 +549,23 @@ def close(h):
> # waiting for the transfer object to cease to exist, which
> # falls through to the exception case and then we can
> # continue.
> - endt = time.time() + timeout
> + disk_id = disk.id
> + start = time.time()
> try:
> while True:
> time.sleep(1)
> - tmp = transfer_service.get()
> - if time.time() > endt:
> - raise RuntimeError("timed out waiting for transfer "
> - "to finalize")
> + disk_service = h['disk_service']
> + disk = disk_service.get()
> + if disk.status == types.DiskStatus.LOCKED:
> + if time.time() > start + timeout:
> + raise RuntimeError("timed out waiting for
> transfer "
> + "to finalize")
> + continue
> + if disk.status == types.DiskStatus.OK:
> + debug("finalized after %s seconds" % (time.time() -
> start))
> + break
> except sdk.NotFoundError:
> - pass
> + raise RuntimeError("transfer failed: disk %s not found" %
> disk_id)
>
> # Write the disk ID file. Only do this on successful completion.
> with builtin_open(params['diskid_file'], 'w') as fp:
> --
> 1.8.3.1
>
Looks good.
Yup, I've also checked this on Python 3 now - previously it
was only tested against Python 2 on RHEL 7.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top