On Thu, Oct 26, 2023 at 06:15:35PM +0200, Tomáš Golembiovský wrote:
I have opended a pull request [1] on GitHub with the fix. Since the
patch is
simple and the test for that passes there is low risk. I have attached the
relevant portion (without the test) to the email. What you need to do is take
the attached patch, apply it on your host and restart vdsm:
$ cd /usr/lib...
Whops sorry, this should be:
$ cd /usr/lib/python3.9/site-packages/vdsm
$ patch -p3 < /tmp/progress-fix.patch
$ systemctl restart vdsmd
Then you try the import as usual. To revert the patch or if you fail to apply
it properly for some reason, or generally in case of any doubt, reinstall the
vdsm package with dnf and restart vdsm:
$ dnf reinstall vdsm
$ systemctl restart vdsmd
If the import fails please post again any errors from vdsm.log and the import
log file. It could be the patch is not good enough or perhaps there is yet
another problem blocking you.
On Thu, Oct 26, 2023 at 03:28:10PM -0000, Michaal R via Users wrote:
> Also, I would like to help with the error trying to import Windows VMs when you set
the OS appropriately (ie... matching the OS type at import to the OS of the VM, then
getting the time zone error). If there's anything I can do or provide, please let me
know.
This is more problematic as it likely involves fixing ovirt-engine. That
in turn requires recompiling it and rebuilding the packages. That's
much more involved and someting I cannot help with.
Tomas
[1]
https://github.com/oVirt/vdsm/pull/402
[2]
https://patch-diff.githubusercontent.com/raw/oVirt/vdsm/pull/402.diff
diff --git a/lib/vdsm/v2v.py b/lib/vdsm/v2v.py
index 2df126a368..a05d38313e 100644
--- a/lib/vdsm/v2v.py
+++ b/lib/vdsm/v2v.py
@@ -933,7 +933,7 @@ def _abort(self):
class OutputParser(object):
COPY_DISK_RE = re.compile(br'.*(Copying disk (\d+)/(\d+)).*')
- DISK_PROGRESS_RE = re.compile(br'\s+\((\d+).*')
+ DISK_PROGRESS_RE = re.compile(br'\s+\((\d+).*|.+ (\d+)% \[[*-]+\]')
def parse(self, stream):
for line in stream:
@@ -970,8 +970,9 @@ def _parse_progress(self, chunk):
m = self.DISK_PROGRESS_RE.match(chunk)
if m is None:
return None
+ value = [x for x in m.groups() if x is not None][0]
try:
- return int(m.group(1))
+ return int(value)
except ValueError:
raise OutputParserError('error parsing progress regex: %r'
% m.groups)