DL> This question comes up in other contexts than migration, too, for
DL> example, when you want to start an image you just downloaded. I
DL> think it would make sense if there was a common baseline in
DL> libvirt that could tell you if a VM has any chance of running at
DL> all - otherwise that logic will be scattered across lots of apps.
The migration case is significantly more strict, though, at least for
Xen. A domain image may start up on two machines that are different,
but the same domain would not migrate from one to the other.
On that note, how about a libvirt function that allows you to compare
the capabilities of two hypervisors for varying levels of
compatibility? A given implementation such as Xen could analyze the
hypervisor and machine characteristics to provide a "compatible for
migration" result, as well as a "can run on" result (and perhaps
others). Something like the following:
virIsCompatible(hyp1, hyp2, COMPAT_MIGRATION);
virIsCompatible(hyp1, hyp3, COMPAT_MIGRATION | COMPAT_RUN);
The former would return true (in the Xen case) only if both machines
were the same bitness, processor revision, etc.
The latter could, potentially, return true for a given domain across
Xen and qemu, if that domain is fully-virtualized.
--
Dan Smith
IBM Linux Technology Center
Open Hypervisor Team
email: danms(a)us.ibm.com