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:
parent
0501a089f7
commit
647e053f8e
|
@ -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
|
||||
|
||||
|
|
|
@ -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'})
|
||||
|
|
Loading…
Reference in New Issue