Hi All,

I received a bug report (apologies for no link, but it's not publicly
accessible) about migration failing with virt-manager between Xen hosts. It's
rather embarrassing to admit, but I've never tried migration with virt-manager
and Xen :-/.

The libvirt libxl driver for Xen only supports the extensible params version of
the migration V3 API. virt-manager currently uses the virDomainMigrate API,
which can accommodate migration protocol versions 1, 2 and 3, but doesn't
support the extensible params variant of the V3 protocol. The virDomainMigrate3
API does support the extensible params variant. Switching virt-manager to use
virDomainMigrate3 would allow virt-manager's migrate functionality to work with
hypervisors only supporting the newer migrate APIs.

Any opinions on changing virt-manager to use virDomainMigrate3? Attached is an
initial attempt at doing so.

Regards,
Jim
>From 5314d51a91f57542d97f04aa589e79d13352ce22 Mon Sep 17 00:00:00 2001
From: Jim Fehlig <[email protected]>
Date: Wed, 31 Aug 2016 11:26:24 -0600
Subject: [PATCH 1/2] virt-manager: use virDomainMigrate3 API

libvirt has supported the migration V3 protocol for many years now.
A nice feature of the virDomainMigrate3 API is that it will detect
the protocol version supported by the underlying hypervisor,
including whether it supports the extensible parameters variant,
and call the hypervisor API with parameters fixed up as needed.

Change virt-manager to use the virDomainMigrate3 API, allowing
migration to work with hypervisors that only support the extensible
parameters variant of the migration V3 API.

Signed-off-by: Jim Fehlig <[email protected]>
---
 virtManager/domain.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/virtManager/domain.py b/virtManager/domain.py
index 3185cf8..a707f25 100644
--- a/virtManager/domain.py
+++ b/virtManager/domain.py
@@ -1487,7 +1487,11 @@ class vmmDomain(vmmLibvirtObject):
         if meter:
             start_job_progress_thread(self, meter, _("Migrating domain"))
 
-        self._backend.migrate(libvirt_destconn, flags, None, interface, 0)
+        params = {}
+        if interface:
+            params[libvirt.VIR_MIGRATE_PARAM_URI] = interface
+
+        self._backend.migrate3(libvirt_destconn, params, flags)
 
         # Don't schedule any conn update, migrate dialog handles it for us
 
-- 
2.1.4

_______________________________________________
virt-tools-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/virt-tools-list

Reply via email to