|
|
3d61c0 |
From 14747da70222d66e9b9f7180274d67ed37fee3ee Mon Sep 17 00:00:00 2001
|
|
|
3d61c0 |
Message-Id: <14747da70222d66e9b9f7180274d67ed37fee3ee@dist-git>
|
|
|
3d61c0 |
From: Pavel Hrdina <phrdina@redhat.com>
|
|
|
3d61c0 |
Date: Mon, 4 Jun 2018 14:30:26 -0400
|
|
|
3d61c0 |
Subject: [PATCH] domain.numatune: Drop cpuset validation
|
|
|
3d61c0 |
|
|
|
3d61c0 |
From: Cole Robinson <crobinso@redhat.com>
|
|
|
3d61c0 |
|
|
|
3d61c0 |
This type of validation should really be done at the libvirt level,
|
|
|
3d61c0 |
particularly for a non-mandatory feature like cpuset. Otherwise
|
|
|
3d61c0 |
it's just more code for us to test which will rarely be hit by users
|
|
|
3d61c0 |
|
|
|
3d61c0 |
(cherry picked from commit 39a7cbbad750656a7d89694c3b0341a5ae98d346)
|
|
|
3d61c0 |
|
|
|
3d61c0 |
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1566818
|
|
|
3d61c0 |
|
|
|
3d61c0 |
Reviewed-by: Cole Robinson <crobinso@redhat.com>
|
|
|
3d61c0 |
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
|
|
3d61c0 |
---
|
|
|
3d61c0 |
tests/clitest.py | 3 ---
|
|
|
3d61c0 |
virtinst/domainnumatune.py | 48 --------------------------------------
|
|
|
3d61c0 |
virtinst/guest.py | 6 +----
|
|
|
3d61c0 |
3 files changed, 1 insertion(+), 56 deletions(-)
|
|
|
3d61c0 |
|
|
|
3d61c0 |
diff --git a/tests/clitest.py b/tests/clitest.py
|
|
|
3d61c0 |
index eb608769..5e000194 100644
|
|
|
3d61c0 |
--- a/tests/clitest.py
|
|
|
3d61c0 |
+++ b/tests/clitest.py
|
|
|
3d61c0 |
@@ -600,7 +600,6 @@ c.add_compare("--memory 1024,hotplugmemorymax=2048,hotplugmemoryslots=2 --cpu ce
|
|
|
3d61c0 |
####################################################
|
|
|
3d61c0 |
|
|
|
3d61c0 |
c = vinst.add_category("cpuram", "--hvm --nographics --noautoconsole --nodisks --pxe")
|
|
|
3d61c0 |
-c.add_valid("--vcpus 4 --cpuset=1,3-5,") # Cpuset with trailing comma
|
|
|
3d61c0 |
c.add_valid("--connect %(URI-XEN)s --vcpus 4 --cpuset=auto") # cpuset=auto but xen doesn't support it
|
|
|
3d61c0 |
c.add_valid("--ram 4000000") # Ram overcommit
|
|
|
3d61c0 |
c.add_valid("--vcpus sockets=2,threads=2") # Topology only
|
|
|
3d61c0 |
@@ -609,8 +608,6 @@ c.add_valid("--security label=foobar.label,relabel=yes") # --security implicit
|
|
|
3d61c0 |
c.add_valid("--security label=foobar.label,a1,z2,b3,type=static,relabel=no") # static with commas 1
|
|
|
3d61c0 |
c.add_valid("--security label=foobar.label,a1,z2,b3") # --security static with commas 2
|
|
|
3d61c0 |
c.add_compare("--cpuset auto --vcpus 2", "cpuset-auto") # --cpuset=auto actually works
|
|
|
3d61c0 |
-c.add_invalid("--vcpus 32 --cpuset=969-1000") # Bogus cpuset
|
|
|
3d61c0 |
-c.add_invalid("--vcpus 32 --cpuset=autofoo") # Bogus cpuset
|
|
|
3d61c0 |
c.add_invalid("--clock foo_tickpolicy=merge") # Unknown timer
|
|
|
3d61c0 |
c.add_invalid("--security foobar") # Busted --security
|
|
|
3d61c0 |
|
|
|
3d61c0 |
diff --git a/virtinst/domainnumatune.py b/virtinst/domainnumatune.py
|
|
|
3d61c0 |
index 9795011b..f8797e9c 100644
|
|
|
3d61c0 |
--- a/virtinst/domainnumatune.py
|
|
|
3d61c0 |
+++ b/virtinst/domainnumatune.py
|
|
|
3d61c0 |
@@ -17,61 +17,13 @@
|
|
|
3d61c0 |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
|
|
3d61c0 |
# MA 02110-1301 USA.
|
|
|
3d61c0 |
|
|
|
3d61c0 |
-import re
|
|
|
3d61c0 |
-
|
|
|
3d61c0 |
from .xmlbuilder import XMLBuilder, XMLProperty
|
|
|
3d61c0 |
|
|
|
3d61c0 |
|
|
|
3d61c0 |
-def get_phy_cpus(conn):
|
|
|
3d61c0 |
- """
|
|
|
3d61c0 |
- Get number of physical CPUs.
|
|
|
3d61c0 |
- """
|
|
|
3d61c0 |
- hostinfo = conn.getInfo()
|
|
|
3d61c0 |
- pcpus = hostinfo[4] * hostinfo[5] * hostinfo[6] * hostinfo[7]
|
|
|
3d61c0 |
- return pcpus
|
|
|
3d61c0 |
-
|
|
|
3d61c0 |
-
|
|
|
3d61c0 |
class DomainNumatune(XMLBuilder):
|
|
|
3d61c0 |
"""
|
|
|
3d61c0 |
Class for generating <numatune> XML
|
|
|
3d61c0 |
"""
|
|
|
3d61c0 |
-
|
|
|
3d61c0 |
- @staticmethod
|
|
|
3d61c0 |
- def validate_cpuset(conn, val):
|
|
|
3d61c0 |
- if val is None or val == "":
|
|
|
3d61c0 |
- return
|
|
|
3d61c0 |
-
|
|
|
3d61c0 |
- if not isinstance(val, str) or len(val) == 0:
|
|
|
3d61c0 |
- raise ValueError(_("cpuset must be string"))
|
|
|
3d61c0 |
- if re.match("^[0-9,-^]*$", val) is None:
|
|
|
3d61c0 |
- raise ValueError(_("cpuset can only contain numeric, ',', '^', or "
|
|
|
3d61c0 |
- "'-' characters"))
|
|
|
3d61c0 |
-
|
|
|
3d61c0 |
- pcpus = get_phy_cpus(conn)
|
|
|
3d61c0 |
- for c in val.split(','):
|
|
|
3d61c0 |
- # Redundant commas
|
|
|
3d61c0 |
- if not c:
|
|
|
3d61c0 |
- continue
|
|
|
3d61c0 |
-
|
|
|
3d61c0 |
- if "-" in c:
|
|
|
3d61c0 |
- (x, y) = c.split('-', 1)
|
|
|
3d61c0 |
- x = int(x)
|
|
|
3d61c0 |
- y = int(y)
|
|
|
3d61c0 |
- if x > y:
|
|
|
3d61c0 |
- raise ValueError(_("cpuset contains invalid format."))
|
|
|
3d61c0 |
- if x >= pcpus or y >= pcpus:
|
|
|
3d61c0 |
- raise ValueError(_("cpuset's pCPU numbers must be less "
|
|
|
3d61c0 |
- "than pCPUs."))
|
|
|
3d61c0 |
- else:
|
|
|
3d61c0 |
- if c.startswith("^"):
|
|
|
3d61c0 |
- c = c[1:]
|
|
|
3d61c0 |
- c = int(c)
|
|
|
3d61c0 |
-
|
|
|
3d61c0 |
- if c >= pcpus:
|
|
|
3d61c0 |
- raise ValueError(_("cpuset's pCPU numbers must be less "
|
|
|
3d61c0 |
- "than pCPUs."))
|
|
|
3d61c0 |
-
|
|
|
3d61c0 |
-
|
|
|
3d61c0 |
_XML_ROOT_NAME = "numatune"
|
|
|
3d61c0 |
_XML_PROP_ORDER = ["memory_mode", "memory_nodeset"]
|
|
|
3d61c0 |
|
|
|
3d61c0 |
diff --git a/virtinst/guest.py b/virtinst/guest.py
|
|
|
3d61c0 |
index a19b8999..04a64aa2 100644
|
|
|
3d61c0 |
--- a/virtinst/guest.py
|
|
|
3d61c0 |
+++ b/virtinst/guest.py
|
|
|
3d61c0 |
@@ -182,11 +182,7 @@ class Guest(XMLBuilder):
|
|
|
3d61c0 |
default_cb=lambda s: 1)
|
|
|
3d61c0 |
curvcpus = XMLProperty("./vcpu/@current", is_int=True)
|
|
|
3d61c0 |
vcpu_placement = XMLProperty("./vcpu/@placement")
|
|
|
3d61c0 |
-
|
|
|
3d61c0 |
- def _validate_cpuset(self, val):
|
|
|
3d61c0 |
- DomainNumatune.validate_cpuset(self.conn, val)
|
|
|
3d61c0 |
- cpuset = XMLProperty("./vcpu/@cpuset",
|
|
|
3d61c0 |
- validate_cb=_validate_cpuset)
|
|
|
3d61c0 |
+ cpuset = XMLProperty("./vcpu/@cpuset")
|
|
|
3d61c0 |
|
|
|
3d61c0 |
def _get_default_uuid(self):
|
|
|
3d61c0 |
if self._random_uuid is None:
|
|
|
3d61c0 |
--
|
|
|
3d61c0 |
2.20.1
|
|
|
3d61c0 |
|