From f47a2f73d8301cb93785357a4b1e2de88572dcc0 Mon Sep 17 00:00:00 2001 From: Huang Rui Date: Mon, 11 Sep 2017 16:23:00 +0800 Subject: [PATCH] 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 --- nova_zvm/tests/unit/virt/zvm/test_driver.py | 42 +++------------------ nova_zvm/virt/zvm/driver.py | 30 ++------------- 2 files changed, 9 insertions(+), 63 deletions(-) diff --git a/nova_zvm/tests/unit/virt/zvm/test_driver.py b/nova_zvm/tests/unit/virt/zvm/test_driver.py index 44fd7e1..befe895 100644 --- a/nova_zvm/tests/unit/virt/zvm/test_driver.py +++ b/nova_zvm/tests/unit/virt/zvm/test_driver.py @@ -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): diff --git a/nova_zvm/virt/zvm/driver.py b/nova_zvm/virt/zvm/driver.py index c2f1b98..e9a7680 100644 --- a/nova_zvm/virt/zvm/driver.py +++ b/nova_zvm/virt/zvm/driver.py @@ -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: