[Kimchi-devel] [PATCH] [Kimchi] Bug fix #1072 - changing vpus verification
Daniel Henrique Barboza
dhbarboza82 at gmail.com
Mon Nov 7 12:54:03 UTC 2016
I see. I thought the bug was about the UI failing to update the vcpus even
in a valid case because the topology verification in backend was wrong.
I believe we can make the Kimchi UI to show the topology attributes
instead of
the maxvcpu values if the guest has a topology set.
About the "Please, also check why Kimchi is not getting in count the value
on guest XML." , I'll look into it.
On 11/04/2016 06:51 PM, Aline Manera wrote:
>
>
> On 11/04/2016 06:36 PM, Aline Manera wrote:
>>
>> Hi Daniel,
>>
>> I am not sure this is the root cause of the issue.
>> I created a guest with topology and tried to change maxvcpus and
>> vcpus values on UI and I got the same error reported on github.
>>
>> The test I did:
>> - create a new guest with topology set
>> |"cpu_info":{ ||"maxvcpus":4, ||"vcpus":4, ||"topology":{ ||"cores":2, ||"threads":2, ||"sockets":1 ||} ||}|
>>
>> - try to change maxvcpus to 8
>> - try to change vcpus to 8
>>
>>
>>
>>
>
>> I believe the problem is because, on UI, there is no information
>> about topology, only about maxvcpus and vcpus.
>> When user sets maxvcpus (and topology is set), the topology must be
>> changed according to the new maxvcpus value.
>> We will need to update the UI to show and let the user change the
>> topology instead of maxvcpus (as maxvcpus must be cores * threads *
>> sockets).
>>
>
> Just to clarify, the exactly error described on #0172, happens when
> trying to increase vCPUS and max vCPUS at the same time as there is no
> other way (through kimchi) to change max vCPUS value to be allowed to
> increate the vCPUS number.
>
> Also, when I tried to increase the max vCPUs for a given guest (by
> manually editing the topology on guest XML), Kimchi keeps displaying
> the older value.
> So I needed to edit it again on Kimchi UI and everything worked fine.
>
> Please, also check why Kimchi is not getting in count the value on
> guest XML.
>
> Steps to reproduce:
>
> - Create a guest with topology (cores: 2, thread: 2, sockets: 1)
> - Edit the guest XML and change cores to 4 (that way maxvcpus will be 8)
> - Open guest edit dialog.
> - Max vCPUS shows 4 (instead of 8)
>
>
>> On 11/04/2016 04:15 PM, dhbarboza82 at gmail.com wrote:
>>> From: Daniel Henrique Barboza<danielhb at linux.vnet.ibm.com>
>>>
>>> This patch changes the vcpu verification when
>>> editing a turned off VM, if the VM has a topology
>>> set, to comply with the current libvirt schema: vcpus
>>> must be a multiple of the 'threads' value.
>>>
>>> Unit tests were adapted to reflect these changes.
>>>
>>> Signed-off-by: Daniel Henrique Barboza<danielhb at linux.vnet.ibm.com>
>>> ---
>>> i18n.py | 2 +-
>>> model/cpuinfo.py | 2 +-
>>> tests/test_model.py | 12 ++++++------
>>> 3 files changed, 8 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/i18n.py b/i18n.py
>>> index 03929e5..2ec0e78 100644
>>> --- a/i18n.py
>>> +++ b/i18n.py
>>> @@ -357,7 +357,7 @@ messages = {
>>> "KCHCPUINF0002E": _("When CPU topology is defined, maximum number of vCPUs must be a product of sockets, cores, and threads."),
>>> "KCHCPUINF0003E": _("This host (or current configuration) does not allow CPU topology."),
>>> "KCHCPUINF0004E": _("The maximum number of vCPUs is too large for this system."),
>>> - "KCHCPUINF0005E": _("When CPU topology is defined, vCPUs must be a multiple of a product of cores and threads."),
>>> + "KCHCPUINF0005E": _("When CPU topology is defined, vCPUs must be a multiple of the 'threads' number defined."),
>>> "KCHCPUINF0006E": _("The number of threads is too large for this system."),
>>> "KCHCPUINF0007E": _("When CPU topology is specified, sockets, cores and threads are required paramaters."),
>>> "KCHCPUINF0008E": _("Parameter 'cpu_info' expects an object with fields among: 'vcpus', 'maxvcpus', 'topology'."),
>>> diff --git a/model/cpuinfo.py b/model/cpuinfo.py
>>> index 3707a02..5f82320 100644
>>> --- a/model/cpuinfo.py
>>> +++ b/model/cpuinfo.py
>>> @@ -138,7 +138,7 @@ class CPUInfoModel(object):
>>> raise InvalidParameter("KCHCPUINF0006E")
>>> if maxvcpus != sockets * cores * threads:
>>> raise InvalidParameter("KCHCPUINF0002E")
>>> - if vcpus % (cores * threads) != 0:
>>> + if vcpus % threads != 0:
>>> raise InvalidParameter("KCHCPUINF0005E")
>>>
>>> if maxvcpus > self.get_host_max_vcpus():
>>> diff --git a/tests/test_model.py b/tests/test_model.py
>>> index 05d7415..1246be6 100644
>>> --- a/tests/test_model.py
>>> +++ b/tests/test_model.py
>>> @@ -1298,23 +1298,23 @@ class ModelTests(unittest.TestCase):
>>>
>>> # define CPU topology
>>> inst.vm_update(u'kimchi-vm1', {'cpu_info': {'topology': {
>>> - 'sockets': 4, 'cores': 2, 'threads': 1}}})
>>> + 'sockets': 2, 'cores': 2, 'threads': 2}}})
>>> vm_info = inst.vm_lookup(u'kimchi-vm1')
>>> - self.assertEquals({'sockets': 4, 'cores': 2, 'threads': 1},
>>> + self.assertEquals({'sockets': 2, 'cores': 2, 'threads': 2},
>>> vm_info['cpu_info']['topology'])
>>>
>>> - # vcpus not a multiple of (cores * threads)
>>> + # vcpus not a multiple of threads
>>> self.assertRaises(InvalidParameter, inst.vm_update, u'kimchi-vm1',
>>> - {'cpu_info': {'vcpus': 1}})
>>> + {'cpu_info': {'vcpus': 5}})
>>>
>>> # maxvcpus different of (sockets * cores * threads)
>>> self.assertRaises(InvalidParameter, inst.vm_update, u'kimchi-vm1',
>>> {'cpu_info': {'maxvcpus': 4}})
>>>
>>> - # topology does not match maxvcpus (8 != 2 * 2 * 1)
>>> + # topology does not match maxvcpus (8 != 3 * 2 * 2)
>>> self.assertRaises(InvalidParameter, inst.vm_update, u'kimchi-vm1',
>>> {'cpu_info': {'topology': {
>>> - 'sockets': 2, 'cores': 2, 'threads': 1}}})
>>> + 'sockets': 3, 'cores': 2, 'threads': 2}}})
>>>
>>> # undefine CPU topology
>>> inst.vm_update(u'kimchi-vm1', {'cpu_info': {'topology': {}}})
>>
>>
>>
>> _______________________________________________
>> Kimchi-devel mailing list
>> Kimchi-devel at ovirt.org
>> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ovirt.org/pipermail/kimchi-devel/attachments/20161107/072828c7/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 33670 bytes
Desc: not available
URL: <http://lists.ovirt.org/pipermail/kimchi-devel/attachments/20161107/072828c7/attachment.jpe>
More information about the Kimchi-devel
mailing list