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:
Huang Rui 2015-09-17 09:26:36 +08:00
parent d313c5341a
commit 0501a089f7
2 changed files with 60 additions and 0 deletions

View File

@ -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

View File

@ -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):