add zvm utils function image_performance_query
The function image_performance_query call zvm SMAPI to get instance performance data, includes cpu number, cpu times and memory usage. The function will be used to inspect instance cpu and memory usage. Change-Id: Iba99caf845498f5f794736a003c5f8cff6bb0730
This commit is contained in:
parent
d313c5341a
commit
0501a089f7
@ -340,3 +340,28 @@ def list_instances(hcp_info):
|
||||
instances[node] = userid.upper()
|
||||
|
||||
return instances
|
||||
|
||||
|
||||
def image_performance_query(zhcp_node, inst_list):
|
||||
cmd = ('smcli Image_Performance_Query -T "%(inst_list)s" -c %(num)s' %
|
||||
{'inst_list': " ".join(inst_list), 'num': len(inst_list)})
|
||||
|
||||
with expect_invalid_xcat_resp_data():
|
||||
resp = xdsh(zhcp_node, cmd)
|
||||
raw_data = resp["data"][0][0]
|
||||
|
||||
ipq_kws = {
|
||||
'userid': "Guest name:",
|
||||
'guest_cpus': "Guest CPUs:",
|
||||
'used_cpu_time': "Used CPU time:",
|
||||
'used_memory': "Used memory:",
|
||||
}
|
||||
|
||||
pi_dict = {}
|
||||
with expect_invalid_xcat_resp_data():
|
||||
rpi_list = raw_data.split("".join((zhcp_node, ": \n")))
|
||||
for rpi in rpi_list:
|
||||
pi = translate_xcat_resp(rpi, ipq_kws)
|
||||
pi_dict[pi['userid']] = pi
|
||||
|
||||
return pi_dict
|
||||
|
@ -161,6 +161,41 @@ class TestZVMUtils(base.BaseTestCase):
|
||||
self.assertRaises(zvmutils.ZVMException, zvmutils.list_instances,
|
||||
hcp_info)
|
||||
|
||||
@mock.patch.object(zvmutils, 'xdsh')
|
||||
def test_image_performance_query(self, dsh):
|
||||
res_data = ["zhcp: Number of virtual server IDs: 2 \n"
|
||||
"zhcp: Guest name: INST1\n"
|
||||
"zhcp: Used CPU time: \"1710205201 uS\"\n"
|
||||
"zhcp: Elapsed time: \"6659572798 uS\"\n"
|
||||
"zhcp: Used memory: \"4189268 KB\"\n"
|
||||
"zhcp: Guest CPUs: \"2\"\n"
|
||||
"zhcp: \n"
|
||||
"zhcp: Guest name: INST2\n"
|
||||
"zhcp: Used CPU time: \"1710205201 uS\"\n"
|
||||
"zhcp: Elapsed time: \"6659572798 uS\"\n"
|
||||
"zhcp: Used memory: \"4189268 KB\"\n"
|
||||
"zhcp: Guest CPUs: \"4\"\n"]
|
||||
dsh.return_value = {'data': [res_data]}
|
||||
inst_list = {'inst1': 'INST1', 'inst2': 'INST2'}
|
||||
|
||||
exp_data = {'INST1': {'userid': 'INST1',
|
||||
'guest_cpus': '2',
|
||||
'used_cpu_time': '1710205201 uS',
|
||||
'used_memory': '4189268 KB'},
|
||||
'INST2': {'userid': 'INST2',
|
||||
'guest_cpus': '4',
|
||||
'used_cpu_time': '1710205201 uS',
|
||||
'used_memory': '4189268 KB'}}
|
||||
self.assertEqual(exp_data,
|
||||
zvmutils.image_performance_query('zhcp', inst_list))
|
||||
|
||||
@mock.patch.object(zvmutils, 'xdsh')
|
||||
def test_image_performance_query_invalid_xdsh_resp(self, dsh):
|
||||
dsh.return_value = {'data': 'invalid data'}
|
||||
inst_list = {'inst1': 'INST1', 'inst2': 'INST2'}
|
||||
self.assertRaises(zvmutils.ZVMException,
|
||||
zvmutils.image_performance_query, 'zhcp', inst_list)
|
||||
|
||||
|
||||
class TestCacheData(base.BaseTestCase):
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user