aboutsummaryrefslogtreecommitdiffstats
path: root/tools/xm-test/tests/cpupool/pools.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/xm-test/tests/cpupool/pools.py')
-rw-r--r--tools/xm-test/tests/cpupool/pools.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/tools/xm-test/tests/cpupool/pools.py b/tools/xm-test/tests/cpupool/pools.py
new file mode 100644
index 0000000000..944104aa72
--- /dev/null
+++ b/tools/xm-test/tests/cpupool/pools.py
@@ -0,0 +1,78 @@
+#!/usr/bin/python
+
+
+from XmTestLib import *
+
+def checkRequirements():
+ # - min 4 cpus
+ # - only Pool-0 defined
+ nr_cpus = int(getInfo("nr_cpus"))
+ if nr_cpus < 4:
+ SKIP("Need at least 4 cpus for pool tests")
+ if len(getPoolList()) > 1:
+ SKIP("More than one pool already defined")
+
+ # reduce Pool-0 to CPU-0
+ traceCommand("xm pool-cpu-add Pool-0 0")
+ for i in range(1, nr_cpus):
+ traceCommand("xm pool-cpu-remove Pool-0 %s" % i)
+
+def createStdPool(add_param=None):
+ cmd = "xm pool-create pool1.cfg "
+ if add_param:
+ for k,v in add_param.items():
+ cmd += "%s=%s " % (k,v)
+ status, output = traceCommand(cmd)
+ if status != 0 or "Traceback" in output:
+ raise XmError("xm failed", trace=output, status=status)
+
+def deletePool(name):
+ cmd = "xm pool-delete %s" % name
+ status, output = traceCommand(cmd)
+ if status != 0 or "Traceback" in output:
+ raise XmError("xm failed", trace=output, status=status)
+
+def destroyPool(name, delete_on_xenapi=False):
+ cmd = "xm pool-destroy %s" % name
+ status, output = traceCommand(cmd)
+ if status != 0 or "Traceback" in output:
+ raise XmError("xm failed", trace=output, status=status)
+ if os.getenv("XM_USES_API") and delete_on_xenapi:
+ deletePool(name)
+
+def getPoolList():
+ status, output = traceCommand("xm pool-list")
+ if status != 0 or "Traceback" in output:
+ raise XmError("xm failed", trace=output, status=status)
+ lines = output.splitlines()
+ pools = []
+ for l in lines[1:]:
+ elms = l.split(" ", 1)
+ pools.append(elms[0]);
+ return pools
+
+def domInPool(dom, pool):
+ cmd = "xm list --pool=%s" % pool
+ status, output = traceCommand(cmd)
+ if status != 0 or "Traceback" in output:
+ raise XmError("xm failed", trace=output, status=status)
+ return re.search(dom, output) != None
+
+def migrateToPool(dom, pool):
+ status, output = traceCommand("xm pool-migrate %s %s" % (dom, pool))
+ if status != 0 or "Traceback" in output:
+ raise XmError("xm failed", trace=output, status=status)
+ return domInPool(dom, pool)
+
+def cleanupPoolsDomains():
+ destroyAllDomUs()
+ for pool in getPoolList():
+ if pool != 'Pool-0':
+ destroyPool(pool, True)
+
+def waitForDomain(name):
+ for i in range(10):
+ if not isDomainRunning(name):
+ break
+ time.sleep(1)
+