aboutsummaryrefslogtreecommitdiffstats
path: root/tools/xm-test/tests/xapi/20_xapi-cpu_pool_basic.py
blob: 0476412271f00740c90a723f4a91fdbfc926f15f (plain)
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#!/usr/bin/python


# Basic Pool creation tests

from XmTestLib import xapi
from XmTestLib import *


session = xapi.connect()
host_ref = session.xenapi.host.get_all()[0]
pools = session.xenapi.host.get_resident_cpu_pools(host_ref)
if len(pools) != 1:
       SKIP("Only Pool-0 have to be created for this test")


# check extension of host object
host_recs = session.xenapi.host.get_all_records()
host_rec = host_recs[host_recs.keys()[0]]
if len(host_recs.keys()) != 1 or not host_rec.has_key("resident_cpu_pools") or \
               len(host_rec["resident_cpu_pools"]) != 1:
       FAIL("Missing or wrong field 'resident_cpu_pools' in host record")


# check extension of host_cpu object
host_cpu_recs = session.xenapi.host_cpu.get_all_records()
assigned_cpus = [ cpu for cpu in host_cpu_recs.values() if len(cpu["cpu_pool"]) > 0 ]
unassigned_cpus = session.xenapi.host_cpu.get_unassigned_cpus()
if len(host_cpu_recs) - len(assigned_cpus) != len(unassigned_cpus):
       FAIL("Wrong host_cpu count values; CPUS total: %d, CPUS ass: %d, CPUS unass: %d" % (
                       len(host_cpu_recs), len(assigned_cpus), len(unassigned_cpus)))

for cpu_rec in host_cpu_recs.values():
       cpu_pool = session.xenapi.host_cpu.get_cpu_pool(cpu_rec['uuid'])
       if cpu_pool != cpu_rec['cpu_pool']:
               FAIL("Inconsistency of cpu_pool ref between host_cpu record (%s) "
                        "and get_cpu_pool (%s)" % (cpu_rec['cpu_pool'], cpu_pool))


# create / modify / remove managed cpu pools
pool1_cfg = { 'name_label' : 'Pool-1',
              'name_description' : 'new pool',
              'auto_power_on' : False,
              'ncpu' : '3',
              'sched_policy' : 'credit',
              'proposed_CPUs' : ['1','2'],
              'other_config' : { 'xmtest' : True },
            }
pool1 = session.xenapi.cpu_pool.create(pool1_cfg)
pool1_rec = session.xenapi.cpu_pool.get_record(pool1)
for k in pool1_cfg.keys():
       if pool1_rec[k] != pool1_cfg[k]:
               FAIL("Create error Pool-1 (create config %s, current config: %s, key: %s)" % (
                               pool1_cfg, pool1_rec, k))

pool_all = session.xenapi.cpu_pool.get_all()
if len(pool_all) != 2:
       FAIL("cpu_pool.get_all() returns '%d', expected '2'" % len(pool_all))

pool_all = session.xenapi.cpu_pool.get_all_records()
if len(pool_all) != 2:
       FAIL("cpu_pool.get_all_records() returns '%d', expected '2'" % len(pool_all))

if pool1 != session.xenapi.cpu_pool.get_by_name_label(pool1_cfg['name_label'])[0]:
       FAIL("cpu_pool.get_by_name_label() returns wrong value")

if pool1 != session.xenapi.cpu_pool.get_by_uuid(pool1):
       FAIL("cpu_pool.get_by_uuid() returns wrong value")

if session.xenapi.cpu_pool.get_activated(pool1):
       FAIL("cpu_pool.get_activated() returns 'true' instead of 'false'")

if pool1_cfg['auto_power_on'] != session.xenapi.cpu_pool.get_auto_power_on(pool1):
       FAIL("cpu_pool.get_auto_power_on() returns wrong value")

if len(session.xenapi.cpu_pool.get_host_CPUs(pool1)) != 0:
       FAIL("cpu_pool.get_host_CPUs has to return an empty list")

if pool1_cfg['name_label'] != session.xenapi.cpu_pool.get_name_label(pool1):
       FAIL("cpu_pool.get_name_label() returns wrong value")

if pool1_cfg['name_description'] != session.xenapi.cpu_pool.get_name_description(pool1):
       FAIL("cpu_pool.get_name_description() returns wrong value")

if pool1_cfg['ncpu'] != session.xenapi.cpu_pool.get_ncpu(pool1):
       FAIL("cpu_pool.get_ncpu() returns wrong value")

cfg_len = len(pool1_cfg['proposed_CPUs'])
api_len = len(session.xenapi.cpu_pool.get_proposed_CPUs(pool1))
if cfg_len != api_len:
       FAIL("cpu_pool.get_proposed_CPUs() returns wrong value; cfg_cnt: %s, api_cnt:%s" % (cfg_len, api_len))

other_config = session.xenapi.cpu_pool.get_other_config(pool1)
if pool1_cfg['other_config']['xmtest'] != other_config.get('xmtest'):
       FAIL("cpu_pool.get_other_config() returns wrong value")

if session.xenapi.cpu_pool.get_resident_on(pool1) != session.xenapi.host.get_all()[0]:
       FAIL("cpu_pool.get_resident_on() returns wrong value")

if pool1_cfg['sched_policy'] != session.xenapi.cpu_pool.get_sched_policy(pool1):
       FAIL("cpu_pool.get_sched_policy() returns wrong value")

if len(session.xenapi.cpu_pool.get_started_VMs(pool1)) != 0:
       FAIL("cpu_pool.get_started_VMs() returns wrong value")

if pool1 != session.xenapi.cpu_pool.get_uuid(pool1):
       FAIL("cpu_pool.get_uuid() returns wrong value")

session.xenapi.cpu_pool.set_auto_power_on(pool1, True)
if not session.xenapi.cpu_pool.get_auto_power_on(pool1):
       FAIL("cpu_pool.get_auto_power_on() returns wrong value")

session.xenapi.cpu_pool.set_proposed_CPUs(pool1, [4])
if '4' not in session.xenapi.cpu_pool.get_proposed_CPUs(pool1):
       FAIL("cpu_pool.get_proposed_CPUs() returns wrong value; (set_proposed_CPUs)")

session.xenapi.cpu_pool.add_to_proposed_CPUs(pool1, 5)
val = session.xenapi.cpu_pool.get_proposed_CPUs(pool1)
if '5' not in val:
       FAIL("cpu_pool.get_proposed_CPUs() returns wrong value; %s not in %s" % ('5',val))

session.xenapi.cpu_pool.remove_from_proposed_CPUs(pool1, 5)
val = session.xenapi.cpu_pool.get_proposed_CPUs(pool1)
if '5' in val:
       FAIL("cpu_pool.get_proposed_CPUs() returns wrong value; %s in %s" % ('5',val))

session.xenapi.cpu_pool.set_name_label(pool1, 'New-Pool-1')
if 'New-Pool-1' != session.xenapi.cpu_pool.get_name_label(pool1):
       FAIL("cpu_pool.get_name_label() returns wrong value")

session.xenapi.cpu_pool.set_ncpu(pool1, 4)
if '4' != session.xenapi.cpu_pool.get_ncpu(pool1):
       FAIL("cpu_pool.get_ncpu() returns wrong value")

session.xenapi.cpu_pool.set_other_config(pool1, {'test' : 'ok'})
other_config = session.xenapi.cpu_pool.get_other_config(pool1)
if other_config.get('test') != 'ok':
       FAIL("cpu_pool.get_other_config() returns wrong value")

session.xenapi.cpu_pool.add_to_other_config(pool1, 'new_entry', 'added')
other_config = session.xenapi.cpu_pool.get_other_config(pool1)
if other_config.get('new_entry') != 'added':
       FAIL("cpu_pool.get_other_config() returns wrong value")

session.xenapi.cpu_pool.remove_from_other_config(pool1, 'new_entry')
other_config = session.xenapi.cpu_pool.get_other_config(pool1)
if other_config.get('new_entry') != None:
       FAIL("cpu_pool.get_other_config() returns wrong value")

session.xenapi.cpu_pool.set_sched_policy(pool1, 'credit')
if 'credit' != session.xenapi.cpu_pool.get_sched_policy(pool1):
       FAIL("cpu_pool.get_sched_policy() returns wrong value")

session.xenapi.cpu_pool.destroy(pool1)
if pool1 in  session.xenapi.cpu_pool.get_all():
       FAIL("cpu_pool.destroy() has not removed pool")