From 2e76bfa2aa6206e03b1bec1412a713e3dbd7227b Mon Sep 17 00:00:00 2001 From: preethipy Date: Tue, 7 Feb 2017 20:38:00 +0530 Subject: [PATCH] Destroy flow fixed for partition none case Destroy flow currenly fails as the partition object is None and logging is trying to reference. The fix uses instance variables when partition is None Closes bug: 1662485 Change-Id: I8edfbebb3e986f42b57b799f72d505ede4adc385 --- nova_dpm/tests/unit/virt/dpm/test_vm.py | 12 ++++++++++++ nova_dpm/virt/dpm/vm.py | 7 +++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/nova_dpm/tests/unit/virt/dpm/test_vm.py b/nova_dpm/tests/unit/virt/dpm/test_vm.py index 0ba8713..98073b9 100644 --- a/nova_dpm/tests/unit/virt/dpm/test_vm.py +++ b/nova_dpm/tests/unit/virt/dpm/test_vm.py @@ -15,6 +15,7 @@ import mock from nova.compute import manager as compute_manager +from nova import exception from nova.test import TestCase from nova_dpm.tests.unit.virt.dpm import fakeutils from nova_dpm.tests.unit.virt.dpm import fakezhmcclient @@ -57,6 +58,17 @@ class VmFunctionTestCase(TestCase): self.assertEqual(list[i].get_property('name'), partition_list[i].get_property('name')) + @mock.patch.object(vm.PartitionInstance, 'get_partition', + return_value=None) + def test_partition_destroy_partition_none(self, mock_get_part): + mock_nova_inst = mock.Mock() + mock_nova_inst.hostname = 'foo' + mock_nova_inst.uuid = 'foo-id' + inst = vm.PartitionInstance( + mock_nova_inst, mock.Mock(), mock.Mock()) + self.assertRaises(exception.InstanceNotFound, + inst.destroy) + class InstancePropertiesTestCase(TestCase): def setUp(self): diff --git a/nova_dpm/virt/dpm/vm.py b/nova_dpm/virt/dpm/vm.py index ff93f5a..d01306a 100644 --- a/nova_dpm/virt/dpm/vm.py +++ b/nova_dpm/virt/dpm/vm.py @@ -299,8 +299,11 @@ class PartitionInstance(object): 'status': self.partition.properties['status']}) raise exception.InstanceInvalidState(errormsg) else: - errormsg = (_("Partition - %(partition)s does not exist") % - {'partition': self.partition.properties['name']}) + errormsg = (_("Partition corresponding to the instance " + "%(instance)s and instance uuid %(uuid)s " + "does not exist") % + {'instance': self.instance.hostname, + 'uuid': self.instance.uuid}) raise exception.InstanceNotFound(errormsg) def power_on_vm(self):