diff --git a/nova_zvm/tests/unit/virt/zvm/test_zvm.py b/nova_zvm/tests/unit/virt/zvm/test_zvm.py index 7629fcf..4d6e488 100644 --- a/nova_zvm/tests/unit/virt/zvm/test_zvm.py +++ b/nova_zvm/tests/unit/virt/zvm/test_zvm.py @@ -404,8 +404,10 @@ class ZVMDriverTestCases(ZVMTestCase): ("PUT", None, None, self._fake_reachable_data(': reachable')), ("DELETE", None, None, det_res)] self._set_fake_xcat_resp(fake_resp_list) - self.assertRaises(exception.ZVMXCATInternalError, - self.driver.destroy, {}, self.instance, {}, {}) + # Will not reraise xcat error anymore because it could interrupt the + # process of removing resources from the failed instance. Instead there + # will be a warning message in the log. + self.driver.destroy({}, self.instance, {}, {}) self.mox.VerifyAll() def test_destroy_non_exist(self): diff --git a/nova_zvm/virt/zvm/driver.py b/nova_zvm/virt/zvm/driver.py index 373fbc2..14eaf1c 100644 --- a/nova_zvm/virt/zvm/driver.py +++ b/nova_zvm/virt/zvm/driver.py @@ -649,7 +649,12 @@ class ZVMDriver(driver.ComputeDriver): "destroying z/VM instance %s"), inst_name, instance=instance) - zvm_inst.delete_userid(self._get_hcp_info()['nodename'], context) + try: + nodename = self._get_hcp_info()['nodename'] + zvm_inst.delete_userid(nodename, context) + except exception.ZVMBaseException as err: + LOG.warning(_LW("Failed to delete user node: %s"), + err.format_message(), instance=instance) else: LOG.warning(_LW('Instance %s does not exist'), inst_name, instance=instance)