add zvm inspector method _update_cache

if instances is {}, then update all instance cache data, else
update instance performance cache data.

Change-Id: I52cdc82878749bf08077aab3be8f5db6007903aa
This commit is contained in:
Huang Rui 2015-09-17 09:45:14 +08:00
parent 647e053f8e
commit 05efac6ac8
2 changed files with 31 additions and 0 deletions

View File

@ -45,6 +45,9 @@ zvm_ops = [
cfg.StrOpt('zvm_xcat_master',
default='xcat',
help='The xCAT MM node name'),
cfg.IntOpt('cache_update_interval',
default=600,
help="Cached data update interval"),
]
@ -92,6 +95,17 @@ class ZVMInspector(virt_inspector.Inspector):
self.cache.set(inst_stat)
def _update_cache(self, meter, instances={}):
if instances == {}:
self.cache.clear()
self.cache_expiration = (timeutils.utcnow_ts() +
CONF.zvm.cache_update_interval)
instances = self.instances = zvmutils.list_instances(
self.zhcp_info)
if meter in ('cpus', 'memory.usage'):
self._update_inst_cpu_mem_stat(instances)
def inspect_cpus(self, instance):
pass

View File

@ -68,3 +68,20 @@ class TestZVMInspector(base.BaseTestCase):
self.assertRaises(zvmutils.ZVMException,
self.inspector._update_inst_cpu_mem_stat,
{'inst1': 'INST1'})
@mock.patch("ceilometer_zvm.compute.virt.zvm.inspector.ZVMInspector."
"_update_inst_cpu_mem_stat")
@mock.patch.object(zvmutils, 'list_instances')
def test_update_cache_all(self, list_inst, upd):
inst_list = {'inst1': 'INST1', 'inst2': 'INST2'}
list_inst.return_value = inst_list
self.inspector._update_cache("cpus", {})
list_inst.assert_called_with(self.inspector.zhcp_info)
upd.assert_called_with(inst_list)
@mock.patch("ceilometer_zvm.compute.virt.zvm.inspector.ZVMInspector."
"_update_inst_cpu_mem_stat")
def test_update_cache_one_inst(self, upd):
inst = {'inst1': 'INST1'}
self.inspector._update_cache('memory.usage', inst)
upd.assert_called_with(inst)