From: Daniel Henrique Barboza <danielhb(a)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(a)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 321516c..4d31439 100644
--- a/i18n.py
+++ b/i18n.py
@@ -347,7 +347,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, CPUs 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 1657fdc..9ccbd3b 100644
--- a/tests/test_model.py
+++ b/tests/test_model.py
@@ -1261,23 +1261,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': {}}})
--
2.7.4