
cxml.dumpxml(server) dom = cxml.xml_get_dom_name() cpu = virsh_vcpuinfo(server, dom, virt) - if cpu is None: + if int(cpu) < int(ncpu) or cpu is None:
This works, but it's more of a work around. In this case, vcpuinfo returns an error. When we check the output for the VCPU string, we get zero occurrences, which is what virsh_vcpuinfo() returns.
A better check would be to see if the virsh call returns an error. If it does, virsh_vcpuinfo() should return None. Otherwise, it should return an integer. virsh_vcpuinfo() uses the following command cmd = "virsh -c %s vcpuinfo %s 2>/dev/null | grep VCPU | wc -l" % (virt2uri(virt), dom) which would return success even when no records are found. So I think a
Agreed. I think that's a flaw of the virsh_vcpuinfo() call though. Because you never know whether "virsh -c %s vcpuinfo %s" fails. I would remove the "| grep VCPU | wc -l" portion of the command. Check to see if the call fails - if it does, return None from virsh_vcpuinfo(). If the call doesn't fall, parse the output to get the VCPU count.
Yes! This is what I was thinking of, but was as you said this will take little more code than the one line which did the work for us.
Thoughts? This is a lot more work, but then you would know when the virsh call is failing (as opposed to just returning 0 VCPus). I will work on this and send the patch.
Sounds great. Thanks! -- Kaitlin Rupert IBM Linux Technology Center kaitlin@linux.vnet.ibm.com