>>>> 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(a)linux.vnet.ibm.com