Merge "zvm inspector can not get instance data in shutdown stat"

This commit is contained in:
Jenkins 2016-01-22 10:42:32 +00:00 committed by Gerrit Code Review
commit 2f95254b70
4 changed files with 29 additions and 15 deletions

View File

@ -14,6 +14,7 @@
from ceilometer.compute.virt import inspector as virt_inspector
from ceilometer.i18n import _
from oslo_config import cfg
from oslo_log import log
from oslo_utils import timeutils
@ -138,9 +139,15 @@ class ZVMInspector(virt_inspector.Inspector):
self._update_cache(meter)
def _get_inst_stat(self, meter, instance):
inst_name = zvmutils.get_inst_name(instance)
# zvm inspector can not get instance info in shutdown stat
if zvmutils.get_inst_power_state(instance) == 0x04:
msg = _("Can not get vm info in shutdown state "
"for %s") % inst_name
raise virt_inspector.InstanceShutOffException(msg)
self._check_expiration_and_update_cache(meter)
inst_name = zvmutils.get_inst_name(instance)
inst_stat = self.cache.get(meter, inst_name)
if inst_stat is None:
@ -150,7 +157,8 @@ class ZVMInspector(virt_inspector.Inspector):
inst_stat = self.cache.get(meter, inst_name)
if inst_stat is None:
raise virt_inspector.InstanceNotFoundException()
msg = _("Can not get vm info for %s") % inst_name
raise virt_inspector.InstanceNotFoundException(msg)
else:
return inst_stat

View File

@ -235,11 +235,6 @@ def translate_xcat_resp(rawdata, dirt):
data[k] = ls[(ls.find(dirt[k]) + len(dirt[k])):].strip(' "')
break
if data == {}:
msg = _("No value matched with keywords. Raw Data: %(raw)s; "
"Keywords: %(kws)s") % {'raw': rawdata, 'kws': str(dirt)}
raise ZVMException(msg)
return data
@ -375,7 +370,8 @@ def image_performance_query(zhcp_node, inst_list):
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
if pi.get('userid') is not None:
pi_dict[pi['userid']] = pi
return pi_dict
@ -384,6 +380,10 @@ def get_inst_name(instance):
return getattr(instance, 'OS-EXT-SRV-ATTR:instance_name', None)
def get_inst_power_state(instance):
return getattr(instance, 'OS-EXT-STS:power_state', None)
def virutal_network_vswitch_query_iuo_stats(zhcp_node):
cmd = ('smcli Virtual_Network_Vswitch_Query_IUO_Stats -T "%s" '
'-k "switch_name=*"' % zhcp_node)

View File

@ -131,6 +131,19 @@ class TestZVMInspector(base.BaseTestCase):
check_update.assert_called_once_with('cpumem')
update.assert_called_once_with('cpumem', {'inst1': 'INST1'})
@mock.patch.object(zvmutils, 'get_inst_power_state')
@mock.patch.object(zvmutils, 'get_inst_name')
def test_get_inst_stat_shutoff(self, get_name, get_power_stat):
get_name.return_value = 'inst1'
get_power_stat.return_value = 0x04
self.inspector.instances = {'inst1': 'INST1'}
self.assertRaises(virt_inspertor.InstanceShutOffException,
self.inspector._get_inst_stat, 'cpumem',
{'inst1': 'INST1'})
get_name.assert_called_once_with({'inst1': 'INST1'})
get_power_stat.assert_called_once_with({'inst1': 'INST1'})
@mock.patch("ceilometer_zvm.compute.virt.zvm.inspector.ZVMInspector."
"_update_cache")
@mock.patch.object(zvmutils, 'get_userid')

View File

@ -189,13 +189,6 @@ class TestZVMUtils(base.BaseTestCase):
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)
@mock.patch.object(zvmutils, 'xdsh')
def test_virutal_network_vswitch_query_iuo_stats(self, dsh):
vsw_data = ['zhcp11: vswitch count: 2\n'