Deleted Stack Fix and ValidationError for DescribeStacks.
* stop backed from trying to iterate over empty list of deleted stacks. * Update DescribeStacks to throw ValidationError if stack name or id doesn't exist.
This commit is contained in:
parent
e67ef8f038
commit
90191675a2
@ -1,6 +1,26 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
from boto.exception import BotoServerError
|
||||||
|
from jinja2 import Template
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class UnformattedGetAttTemplateException(Exception):
|
class UnformattedGetAttTemplateException(Exception):
|
||||||
description = 'Template error: resource {0} does not support attribute type {1} in Fn::GetAtt'
|
description = 'Template error: resource {0} does not support attribute type {1} in Fn::GetAtt'
|
||||||
status_code = 400
|
status_code = 400
|
||||||
|
|
||||||
|
|
||||||
|
class ValidationError(BotoServerError):
|
||||||
|
def __init__(self, name_or_id):
|
||||||
|
template = Template(STACK_DOES_NOT_EXIST_RESPONSE)
|
||||||
|
super(ValidationError, self).__init__(status=400, reason='Bad Request',
|
||||||
|
body=template.render(name_or_id=name_or_id))
|
||||||
|
|
||||||
|
STACK_DOES_NOT_EXIST_RESPONSE = """<ErrorResponse xmlns="http://cloudformation.amazonaws.com/doc/2010-05-15/">
|
||||||
|
<Error>
|
||||||
|
<Type>Sender</Type>
|
||||||
|
<Code>ValidationError</Code>
|
||||||
|
<Message>Stack:{{ name_or_id }} does not exist</Message>
|
||||||
|
</Error>
|
||||||
|
<RequestId>cf4c737e-5ae2-11e4-a7c9-ad44eEXAMPLE</RequestId>
|
||||||
|
</ErrorResponse>
|
||||||
|
"""
|
||||||
|
@ -5,6 +5,7 @@ from moto.core import BaseBackend
|
|||||||
|
|
||||||
from .parsing import ResourceMap, OutputMap
|
from .parsing import ResourceMap, OutputMap
|
||||||
from .utils import generate_stack_id
|
from .utils import generate_stack_id
|
||||||
|
from .exceptions import ValidationError
|
||||||
|
|
||||||
|
|
||||||
class FakeStack(object):
|
class FakeStack(object):
|
||||||
@ -50,10 +51,12 @@ class CloudFormationBackend(BaseBackend):
|
|||||||
for stack in stacks:
|
for stack in stacks:
|
||||||
if stack.name == name_or_stack_id or stack.stack_id == name_or_stack_id:
|
if stack.name == name_or_stack_id or stack.stack_id == name_or_stack_id:
|
||||||
return [stack]
|
return [stack]
|
||||||
deleted_stacks = self.deleted_stacks.values()
|
if self.deleted_stacks:
|
||||||
for stack in deleted_stacks:
|
deleted_stacks = self.deleted_stacks.values()
|
||||||
if stack.stack_id == name_or_stack_id:
|
for stack in deleted_stacks:
|
||||||
return [stack]
|
if stack.stack_id == name_or_stack_id:
|
||||||
|
return [stack]
|
||||||
|
raise ValidationError(name_or_stack_id)
|
||||||
else:
|
else:
|
||||||
return stacks
|
return stacks
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user