From: Steve Baker Date: Wed, 14 Aug 2013 03:31:01 +0000 (+1200) Subject: Extract failure reason before deleting nova server X-Git-Tag: 2014.1~204^2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=800c43221e2ee98464c0621a3cbf17c5f0a93ec0;p=openstack-build%2Fheat-build.git Extract failure reason before deleting nova server If a nova server create fails, the server is deleted leaving no indication of the source of the failure. This change extracts the failure reason from the nova server fault attribute and includes that in the raised error. Change-Id: I7a4618d9e3fded3cde1c15d5322b52eaf63a68f5 --- diff --git a/heat/engine/resources/instance.py b/heat/engine/resources/instance.py index 2b2376a0..11d99de8 100644 --- a/heat/engine/resources/instance.py +++ b/heat/engine/resources/instance.py @@ -323,10 +323,13 @@ class Instance(resource.Resource): volume_attach.start() return volume_attach.done() elif server.status == 'ERROR': + fault = server.fault or {} + message = fault.get('message', 'Unknown') + code = fault.get('code', 500) delete = scheduler.TaskRunner(self._delete_server, server) delete(wait_time=0.2) - exc = exception.Error("Build of server %s failed." % - server.name) + exc = exception.Error("Build of server %s failed: %s (%s)" % + (server.name, message, code)) raise exc else: exc = exception.Error('%s instance[%s] status[%s]' % diff --git a/heat/tests/test_instance.py b/heat/tests/test_instance.py index bb8f0312..8a07c346 100644 --- a/heat/tests/test_instance.py +++ b/heat/tests/test_instance.py @@ -225,6 +225,11 @@ class InstancesTest(HeatTestCase): instance = self._create_test_instance(return_server, 'test_instance_create') return_server.status = 'ERROR' + return_server.fault = { + 'message': 'NoValidHost', + 'code': 500, + 'created': '2013-08-14T03:12:10Z' + } self.m.StubOutWithMock(return_server, 'get') return_server.get() return_server.get().AndRaise(