Merge "Not all exceptions from remote stacks are internal exceptions"

This commit is contained in:
Jenkins 2015-06-22 02:41:03 +00:00 committed by Gerrit Code Review
commit 33e28b2399
2 changed files with 28 additions and 5 deletions

View File

@ -306,6 +306,8 @@ class StackResource(resource.Resource):
full_message = six.text_type(ex)
if full_message.find('\n') > -1 and is_remote:
message, msg_trace = full_message.split('\n', 1)
elif isinstance(ex, exception.HeatException):
message = ex.message
else:
message = full_message
@ -316,11 +318,12 @@ class StackResource(resource.Resource):
# finish
return
if isinstance(ex, exception.HeatException):
message = ex.message
local_ex = copy.copy(getattr(exception, ex_type))
local_ex.msg_fmt = "%(message)s"
raise local_ex(message=message)
if hasattr(exception, ex_type):
local_ex = copy.copy(getattr(exception, ex_type))
local_ex.msg_fmt = "%(message)s"
raise local_ex(message=message)
else:
raise exception.ResourceFailure(ex, self, 'remote')
def check_create_complete(self, cookie=None):
return self._check_status_complete(resource.Resource.CREATE)

View File

@ -16,6 +16,7 @@ import uuid
import mock
from oslo_config import cfg
from oslo_messaging import exceptions as msg_exceptions
import six
from heat.common import exception
@ -848,3 +849,22 @@ class WithTemplateTest(StackResourceBaseTest):
rpcc.return_value.update_stack.assert_called_once_with(
self.ctx, 'stack_identifier', self.empty_temp.t,
child_env, {}, {'timeout_mins': self.timeout_mins})
class RaiseLocalException(StackResourceBaseTest):
def test_heat_exception(self):
local = exception.InvalidResourceType(message='test')
self.assertRaises(exception.InvalidResourceType,
self.parent_resource.raise_local_exception, local)
def test_messaging_timeout(self):
local = msg_exceptions.MessagingTimeout('took too long')
self.assertRaises(exception.ResourceFailure,
self.parent_resource.raise_local_exception, local)
def test_remote_heat_ex(self):
InvalidResourceType_Remote = exception.InvalidResourceType
local = InvalidResourceType_Remote(message='test')
self.assertRaises(exception.InvalidResourceType,
self.parent_resource.raise_local_exception, local)