
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)