1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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)
|