fix zvm driver.get_info

zvm driver.get_info was affected by the change:
https://review.openstack.org/#/c/471146/

In nova master, nova.virt.hardware.InstanceInfo should pass power
state when init the object.

Change-Id: I1adec39c943518f3f1bd791ad877e8abdf1f8c11
This commit is contained in:
Huang Rui 2017-09-11 16:23:00 +08:00
parent 5132925953
commit f47a2f73d8
2 changed files with 9 additions and 63 deletions

View File

@ -214,50 +214,22 @@ class ZVMDriverTestCases(test.NoDBTestCase):
self.driver.list_instances()
guest_list.assert_called_once_with()
@mock.patch.object(sdkapi.SDKAPI, 'guest_get_info')
@mock.patch.object(sdkapi.SDKAPI, 'guest_get_power_state')
@mock.patch.object(zvmutils, 'mapping_power_stat')
def test_get_instance_info_paused(self, mapping_power_stat,
guest_get_info):
guest_get_info.return_value = {'power_state': 'on',
'max_mem_kb': 2097152,
'mem_kb': 44,
'num_cpu': 2,
'cpu_time_us': 796000,
}
mapping_power_stat.return_value = power_state.RUNNING
fake_inst = fake_instance.fake_instance_obj(self._context,
name='fake', power_state=power_state.PAUSED,
memory_mb='1024',
vcpus='4')
inst_info = self.driver._get_instance_info(fake_inst)
mapping_power_stat.assert_called_once_with('on')
self.assertEqual(inst_info.state, power_state.PAUSED)
self.assertEqual(inst_info.mem_kb, 44)
@mock.patch.object(sdkapi.SDKAPI, 'guest_get_info')
@mock.patch.object(zvmutils, 'mapping_power_stat')
def test_get_instance_info_off(self, mapping_power_stat, guest_get_info):
guest_get_info.return_value = {'power_state': 'off',
'max_mem_kb': 2097152,
'mem_kb': 44,
'num_cpu': 2,
'cpu_time_us': 796000,
}
def test_get_instance_info_off(self, mapping_power_stat, get_power_state):
get_power_state.return_value = 'off'
mapping_power_stat.return_value = power_state.SHUTDOWN
fake_inst = fake_instance.fake_instance_obj(self._context,
name='fake', power_state=power_state.PAUSED,
name='fake', power_state=power_state.SHUTDOWN,
memory_mb='1024',
vcpus='4')
inst_info = self.driver._get_instance_info(fake_inst)
mapping_power_stat.assert_called_once_with('off')
self.assertEqual(inst_info.state, power_state.SHUTDOWN)
self.assertEqual(inst_info.mem_kb, 44)
@mock.patch.object(driver.ZVMDriver, '_get_instance_info')
def test_get_info(self, _get_instance_info):
_fake_inst_info = hardware.InstanceInfo(state=0x01, mem_kb=131072,
num_cpu=4, cpu_time_ns=330528353,
max_mem_kb=1048576)
_fake_inst_info = hardware.InstanceInfo(state=0x01)
_get_instance_info.return_value = _fake_inst_info
fake_inst = fake_instance.fake_instance_obj(self._context,
name='fake', power_state=power_state.RUNNING,
@ -265,10 +237,6 @@ class ZVMDriverTestCases(test.NoDBTestCase):
vcpus='4')
inst_info = self.driver.get_info(fake_inst)
self.assertEqual(0x01, inst_info.state)
self.assertEqual(131072, inst_info.mem_kb)
self.assertEqual(4, inst_info.num_cpu)
self.assertEqual(330528353, inst_info.cpu_time_ns)
self.assertEqual(1048576, inst_info.max_mem_kb)
@mock.patch.object(driver.ZVMDriver, '_get_instance_info')
def test_get_info_instance_not_exist_error(self, _get_instance_info):

View File

@ -18,7 +18,6 @@ import eventlet
import six
import time
from nova.compute import power_state
from nova import exception as nova_exception
from nova.i18n import _
from nova.image import api as image_api
@ -95,36 +94,15 @@ class ZVMDriver(driver.ComputeDriver):
pass
def _get_instance_info(self, instance):
inst_name = instance['name']
vm_info = self._sdk_api.guest_get_info(inst_name)
_instance_info = hardware.InstanceInfo()
power_stat = self._sdk_api.guest_get_power_state(instance['name'])
power_stat = zvmutils.mapping_power_stat(power_stat)
power_stat = zvmutils.mapping_power_stat(vm_info['power_state'])
if ((power_stat == power_state.RUNNING) and
(instance['power_state'] == power_state.PAUSED)):
# return paused state only previous power state is paused
_instance_info.state = power_state.PAUSED
else:
_instance_info.state = power_stat
_instance_info.max_mem_kb = vm_info['max_mem_kb']
_instance_info.mem_kb = vm_info['mem_kb']
_instance_info.num_cpu = vm_info['num_cpu']
_instance_info.cpu_time_ns = vm_info['cpu_time_us'] * 1000
_instance_info = hardware.InstanceInfo(power_stat)
return _instance_info
def get_info(self, instance):
"""Get the current status of an instance, by name (not ID!)
Returns a dict containing:
:state: the running state, one of the power_state codes
:max_mem: (int) the maximum memory in KBytes allowed
:mem: (int) the memory in KBytes used by the domain
:num_cpu: (int) the number of virtual CPUs for the domain
:cpu_time: (int) the CPU time used in nanoseconds
"""
"""Get the current status of an instance."""
inst_name = instance['name']
try: