Rely on the Python 3 sorting facilities to sort the mount points using a key based on the length of the mount point, doing the same effect as the old compare function. As side change required by this, enable python_return_dict on the GuestFS handle, so we get proper hashes instead of lists. This requires libguestfs 1.22, which is 6 years old by now (and other virt-manager requires are way more recent than that). --- virtManager/inspection.py | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/virtManager/inspection.py b/virtManager/inspection.py index 084571bb..6021e130 100644 --- a/virtManager/inspection.py +++ b/virtManager/inspection.py @@ -198,7 +198,7 @@ class vmmInspection(vmmGObject): import guestfs # pylint: disable=import-error - g = guestfs.GuestFS(close_on_exit=False) + g = guestfs.GuestFS(close_on_exit=False, python_return_dict=True) prettyvm = conn.get_uri() + ":" + vm.get_name() try: g.add_libvirt_dom(vm.get_backend(), readonly=1) @@ -239,23 +239,16 @@ class vmmInspection(vmmGObject): # Sort keys by length, shortest first, so that we end up # mounting the filesystems in the correct order. - mps = list(g.inspect_get_mountpoints(root)) - def compare(a, b): - if len(a[0]) > len(b[0]): - return 1 - elif len(a[0]) == len(b[0]): - return 0 - else: - return -1 - - mps.sort(key=functools.cmp_to_key(compare)) - for mp_dev in mps: + mps = g.inspect_get_mountpoints(root) + + mps = sorted(mps.items(), key=lambda k: len(k[0])) + for mp, dev in mps: try: - g.mount_ro(mp_dev[1], mp_dev[0]) + g.mount_ro(dev, mp) except Exception: logging.exception("%s: exception mounting %s on %s " "(ignored)", - prettyvm, mp_dev[1], mp_dev[0]) + prettyvm, dev, mp) filesystems_mounted = True -- 2.20.1 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list