def describe_stack_resource(self):
        stack_name = self._get_param('StackName')
        stack = self.cloudformation_backend.get_stack(stack_name)
        logical_resource_id = self._get_param('LogicalResourceId')
        if not stack:
            msg = ('Unable to find CloudFormation stack "%s" in region %s' %
                   (stack_name, aws_stack.get_region()))
            if aws_stack.get_region() != self.region:
                msg = '%s/%s' % (msg, self.region)
            LOG.warning(msg)
            response = aws_responses.flask_error_response(
                msg, code=404, error_type='ResourceNotFoundException')
            return 404, response.headers, response.data

        for stack_resource in stack.stack_resources:
            # Note: Line below has been patched
            # if stack_resource.logical_resource_id == logical_resource_id:
            if stack_resource and stack_resource.logical_resource_id == logical_resource_id:
                resource = stack_resource
                break
        else:
            raise ValidationError(logical_resource_id)

        template = self.response_template(
            responses.DESCRIBE_STACK_RESOURCE_RESPONSE_TEMPLATE)
        return template.render(stack=stack, resource=resource)
 def cf_describe_stack_events(self):
     stack_name = self._get_param('StackName')
     stack = self.cloudformation_backend.get_stack(stack_name)
     if not stack:
         raise ValidationError(stack_name,
             message='Unable to find stack "%s" in region %s' % (stack_name, aws_stack.get_region()))
     return cf_describe_stack_events_orig(self)
Esempio n. 3
0
 def cf_describe_stack_events(self):
     stack_name = self._get_param('StackName')
     backend = self.cloudformation_backend
     stack = backend.get_stack(stack_name)
     if not stack:
         # Also return stack events for deleted stacks, specified by stack name
         stack = ([stk for id, stk in backend.deleted_stacks.items() if stk.name == stack_name] or [0])[0]
     if not stack:
         raise ValidationError(stack_name,
             message='Unable to find stack "%s" in region %s' % (stack_name, aws_stack.get_region()))
     template = self.response_template(responses.DESCRIBE_STACK_EVENTS_RESPONSE)
     return template.render(stack=stack)
    def describe_stack_resource(self):
        stack_name = self._get_param('StackName')
        stack = self.cloudformation_backend.get_stack(stack_name)
        logical_resource_id = self._get_param('LogicalResourceId')

        for stack_resource in stack.stack_resources:
            # Note: Line below has been patched
            # if stack_resource.logical_resource_id == logical_resource_id:
            if stack_resource and stack_resource.logical_resource_id == logical_resource_id:
                resource = stack_resource
                break
        else:
            raise ValidationError(logical_resource_id)

        template = self.response_template(
            responses.DESCRIBE_STACK_RESOURCE_RESPONSE_TEMPLATE)
        return template.render(stack=stack, resource=resource)