[test-API][PATCH] Add env check function for memory_params_live

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In this case, domain memory cgroup path is hardcoded and fail the
case after cgroup path changed recently. To avoid such failure, add
check function for lscgroup command before run this case, if check
fail then skip this case.

Signed-off-by: Wayne Sun <gsun@xxxxxxxxxx>
---
 repos/domain/memory_params_live.py | 36 ++++++++++++++++++++++++++++++------
 1 file changed, 30 insertions(+), 6 deletions(-)

diff --git a/repos/domain/memory_params_live.py b/repos/domain/memory_params_live.py
index 44fb8b4..280792a 100644
--- a/repos/domain/memory_params_live.py
+++ b/repos/domain/memory_params_live.py
@@ -4,6 +4,7 @@
 
 import os
 import math
+import commands
 from xml.dom import minidom
 
 import libvirt
@@ -15,27 +16,35 @@ required_params = ('guestname', 'hard_limit', 'soft_limit', 'swap_hard_limit', )
 optional_params = {}
 
 UNLIMITED = 9007199254740991
-CGROUP_PATH = "/cgroup/memory/libvirt/qemu"
+CGROUP_PATH = "/cgroup/"
 
 def get_cgroup_setting(guestname):
     """get domain memory parameters in cgroup
     """
     if os.path.exists(CGROUP_PATH):
-        cgroup_path = "%s/%s" % (CGROUP_PATH, guestname)
+        cgroup_path = CGROUP_PATH
     else:
-        cgroup_path = "/sys/fs%s/%s" % (CGROUP_PATH, guestname)
+        cgroup_path = "/sys/fs%s" % CGROUP_PATH
 
-    f = open("%s/memory.limit_in_bytes" % cgroup_path)
+    cmd = "lscgroup | grep %s | grep memory:" % guestname
+    ret, out = commands.getstatusoutput(cmd)
+    if ret:
+        logger.error(out)
+        return 1
+    else:
+        mem_cgroup_path = "%s%s" % (cgroup_path, out.replace(':', ''))
+
+    f = open("%s/memory.limit_in_bytes" % mem_cgroup_path)
     hard = int(f.read())
     logger.info("memory.limit_in_bytes value is %s" % hard)
     f.close()
 
-    f = open("%s/memory.soft_limit_in_bytes" % cgroup_path)
+    f = open("%s/memory.soft_limit_in_bytes" % mem_cgroup_path)
     soft = int(f.read())
     logger.info("memory.soft_limit_in_bytes value is %s" % soft)
     f.close()
 
-    f = open("%s/memory.memsw.limit_in_bytes" % cgroup_path)
+    f = open("%s/memory.memsw.limit_in_bytes" % mem_cgroup_path)
     swap = int(f.read())
     logger.info("memory.memsw.limit_in_bytes value is %s" % swap)
     f.close()
@@ -98,6 +107,10 @@ def memory_params_live(params):
 
         logger.info("check memory parameters in cgroup")
         ret = get_cgroup_setting(guestname)
+        if ret == 1:
+            logger.error("fail to get domain memory cgroup setting")
+            return 1
+
         for i in param_dict.keys():
             if math.fabs(param_dict[i] - ret[i]) > 1:
                 logger.error("%s value not match with cgroup setting" % i)
@@ -110,3 +123,14 @@ def memory_params_live(params):
         return 1
 
     return 0
+
+def memory_params_live_check(params):
+    """check lscgroup packages
+    """
+    logger = params['logger']
+    cmd = 'lscgroup'
+    ret, out = commands.getstatusoutput(cmd)
+    if ret and 'command not found' in out:
+        logger.error(out)
+        logger.error("package libcgroup or libcgroup-tools is not installed")
+        return 1
-- 
1.8.2.1

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]