add inspector method - _update_inst_cpu_mem_stat

_update_inst_cpu_mem_stat will call zvm utils.image_performance_
query to get instance performance data and deal with the data,
then update it in inspector cache.

Change-Id: I448dcee055b52a5a4e7194fd94eae7670ec5a525
This commit is contained in:
Huang Rui 2015-09-17 09:30:46 +08:00
parent 0501a089f7
commit 647e053f8e
2 changed files with 53 additions and 0 deletions

View File

@ -17,6 +17,7 @@ from ceilometer.compute.virt import inspector as virt_inspector
from oslo_config import cfg
from oslo_log import log
from oslo_utils import timeutils
from oslo_utils import units
from ceilometer_zvm.compute.virt.zvm import utils as zvmutils
@ -67,6 +68,30 @@ class ZVMInspector(virt_inspector.Inspector):
'userid': zvmutils.get_userid(CONF.zvm.xcat_zhcp_nodename)
}
def _update_inst_cpu_mem_stat(self, instances):
inst_pis = zvmutils.image_performance_query(
self.zhcp_info['nodename'], instances.values())
for inst_name, userid in instances.items():
if userid not in inst_pis.keys():
# Not performance data returned for this virtual machine
continue
with zvmutils.expect_invalid_xcat_resp_data():
guest_cpus = int(inst_pis[userid]['guest_cpus'])
used_cpu_time = inst_pis[userid]['used_cpu_time']
used_cpu_time = int(used_cpu_time.partition(' ')[0]) * units.k
used_memory = inst_pis[userid]['used_memory']
used_memory = int(used_memory.partition(' ')[0]) / units.Ki
inst_stat = {'nodename': inst_name,
'userid': userid,
'guest_cpus': guest_cpus,
'used_cpu_time': used_cpu_time,
'used_memory': used_memory}
self.cache.set(inst_stat)
def inspect_cpus(self, instance):
pass

View File

@ -40,3 +40,31 @@ class TestZVMInspector(base.BaseTestCase):
self.assertEqual('zhcp', self.inspector.zhcp_info['nodename'])
self.assertEqual('zhcp.com', self.inspector.zhcp_info['hostname'])
self.assertEqual('zhcp', self.inspector.zhcp_info['userid'])
@mock.patch.object(zvmutils, 'image_performance_query')
def test_update_inst_cpu_mem_stat(self, ipq):
ipq.return_value = {'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'}}
inst_list = {'inst1': 'INST1', 'inst2': 'INST2'}
self.inspector._update_inst_cpu_mem_stat(inst_list)
exp1 = {'guest_cpus': 2,
'nodename': 'inst1',
'used_cpu_time': 1710205201000,
'used_memory': 4091,
'userid': 'INST1'}
self.assertEqual(exp1, self.inspector.cache.get('inst1'))
self.assertEqual(4, self.inspector.cache.get('inst2')['guest_cpus'])
@mock.patch.object(zvmutils, 'image_performance_query')
def test_update_inst_cpu_mem_stat_invalid_data(self, ipq):
ipq.return_value = {'INST1': {'userid': 'INST1', 'guest_cpus': 's'}}
self.assertRaises(zvmutils.ZVMException,
self.inspector._update_inst_cpu_mem_stat,
{'inst1': 'INST1'})