Conform stack resource error so it gives a 4xx
This exception was added and landed while the change to use RequestLimitExceeded was still in progress. Giving a 5xx error when the user has caused the problem directly is not what we want. We leave the exception in place to allow the shared error message. I also have hopes that we will be o-k with extra exceptions and just extend RequestLimitExceeded when we have a similar situation. Change-Id: Ic9b176625e6ad2b8c42c420dab79984d134304e5 Partial-Bug: #1230191
This commit is contained in:
parent
6e7fa3266a
commit
9233d44f95
|
@ -259,7 +259,8 @@ class EngineService(service.Service):
|
|||
tmpl = parser.Template(template, files=files)
|
||||
|
||||
if len(tmpl[tpl.RESOURCES]) > cfg.CONF.max_resources_per_stack:
|
||||
raise exception.StackResourceLimitExceeded()
|
||||
raise exception.RequestLimitExceeded(
|
||||
message=exception.StackResourceLimitExceeded.message)
|
||||
|
||||
# Extract the common query parameters
|
||||
common_params = api.extract_args(args)
|
||||
|
@ -307,7 +308,8 @@ class EngineService(service.Service):
|
|||
# stack definition.
|
||||
tmpl = parser.Template(template, files=files)
|
||||
if len(tmpl[tpl.RESOURCES]) > cfg.CONF.max_resources_per_stack:
|
||||
raise exception.StackResourceLimitExceeded()
|
||||
raise exception.RequestLimitExceeded(
|
||||
message=exception.StackResourceLimitExceeded.message)
|
||||
stack_name = current_stack.name
|
||||
common_params = api.extract_args(args)
|
||||
env = environment.Environment(params)
|
||||
|
|
|
@ -84,7 +84,8 @@ class StackResource(resource.Resource):
|
|||
if ((len(template[tmpl.RESOURCES]) +
|
||||
self.stack.root_stack.total_resources() >
|
||||
cfg.CONF.max_resources_per_stack)):
|
||||
raise exception.StackResourceLimitExceeded()
|
||||
raise exception.RequestLimitExceeded(
|
||||
message=exception.StackResourceLimitExceeded.message)
|
||||
self._outputs_to_attribs(child_template)
|
||||
|
||||
# Note we disable rollback for nested stacks, since they
|
||||
|
@ -131,7 +132,8 @@ class StackResource(resource.Resource):
|
|||
len(template[tmpl.RESOURCES]) - len(nested_stack.resources))
|
||||
new_size = nested_stack.root_stack.total_resources() + res_diff
|
||||
if new_size > cfg.CONF.max_resources_per_stack:
|
||||
raise exception.StackResourceLimitExceeded()
|
||||
raise exception.RequestLimitExceeded(
|
||||
message=exception.StackResourceLimitExceeded.message)
|
||||
|
||||
# Note we disable rollback for nested stacks, since they
|
||||
# should be rolled back by the parent stack on failure
|
||||
|
|
|
@ -486,9 +486,11 @@ class StackServiceCreateUpdateDeleteTest(HeatTestCase):
|
|||
'C': {'Type': 'GenericResourceType'}}}
|
||||
template = parser.Template(tpl)
|
||||
cfg.CONF.set_override('max_resources_per_stack', 2)
|
||||
self.assertRaises(exception.StackResourceLimitExceeded,
|
||||
self.man.create_stack, self.ctx, stack_name,
|
||||
template, params, None, {})
|
||||
ex = self.assertRaises(exception.RequestLimitExceeded,
|
||||
self.man.create_stack, self.ctx, stack_name,
|
||||
template, params, None, {})
|
||||
self.assertIn(exception.StackResourceLimitExceeded.message,
|
||||
str(ex))
|
||||
|
||||
def test_stack_validate(self):
|
||||
stack_name = 'service_create_test_validate'
|
||||
|
@ -661,9 +663,12 @@ class StackServiceCreateUpdateDeleteTest(HeatTestCase):
|
|||
|
||||
cfg.CONF.set_override('max_resources_per_stack', 2)
|
||||
|
||||
self.assertRaises(exception.StackResourceLimitExceeded,
|
||||
self.man.update_stack, self.ctx,
|
||||
old_stack.identifier(), template, params, None, {})
|
||||
ex = self.assertRaises(exception.RequestLimitExceeded,
|
||||
self.man.update_stack, self.ctx,
|
||||
old_stack.identifier(), template, params, None,
|
||||
{})
|
||||
self.assertIn(exception.StackResourceLimitExceeded.message,
|
||||
str(ex))
|
||||
|
||||
def test_stack_update_verify_err(self):
|
||||
stack_name = 'service_update_verify_err_test_stack'
|
||||
|
|
|
@ -280,8 +280,10 @@ Outputs:
|
|||
new_res['Properties']['TemplateURL'] = (
|
||||
'https://server.test/new.template')
|
||||
prop_diff = {'TemplateURL': 'https://server.test/new.template'}
|
||||
self.assertRaises(exception.StackResourceLimitExceeded,
|
||||
rsrc.handle_update, new_res, {}, prop_diff)
|
||||
ex = self.assertRaises(exception.RequestLimitExceeded,
|
||||
rsrc.handle_update, new_res, {}, prop_diff)
|
||||
self.assertIn(exception.StackResourceLimitExceeded.message,
|
||||
str(ex))
|
||||
rsrc.delete()
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
|
Loading…
Reference in New Issue