On Sun, Aug 07, 2016 at 14:43:27 -0500, David Ashley wrote:
All -
What is the proper XML to supply to the Python Connections compareCPU
method?
The same XML which can be used in domain XML to describe guest CPU
configuration, i.e.,
http://libvirt.org/formatdomain.html#elementsCPU
I have looked at the cpu_map.xml file and I believe I have the
cpu_map.xml is an internal data file and its structure is completely
irrelevant.
proper XML configured but the method always throws an exception with
a
missing CPU architecture error. Here is the code.
from __future__ import print_function
import sys
import libvirt
conn = libvirt.open('qemu:///system')
if conn == None:
print('Failed to open connection to qemu:///system', file=sys.stderr)
exit(1)
retc = conn.compareCPU('<cpu><arch name="x86"><model
name="kvm64"/></arch></cpu>')
<cpu mode='custom' match='exact'>
<model fallback='forbid'>kvm64</model>
</cpu>
if retc == -1:
print("CPUs are not the same.")
else:
print("CPUs are the same.")
This won't work either. The documentation of this APIs clearly says the
function returns one of VIR_CPU_COMPARE_* values, where -1 is used for
errors and the result of the comparison (if there was no error) is
either 0, 1, or 2. So even if the result is != -1, the CPUs may still be
incompatible. In other words the return values are
-1 error
0 incompatible CPUs
1 identical CPUs
2 host CPU is better than the CPU described by XML
However, if you want to treat incompatible CPUs as a failure, you can
use VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE flag and than your check
for retc == -1 will work.
Jirka