def create_stack(self, stack): assert isinstance(stack, CloudFormationStack) try: self.logger.info( "Creating stack {0} from template {1} with parameters:\n{2}".format(stack.name, stack.template.name, get_pretty_parameters_string( stack.parameters))) self.conn.create_stack(stack.name, template_body=stack.template.get_template_json(), parameters=stack.get_parameters_list(), capabilities=['CAPABILITY_IAM']) self.wait_for_stack_action_to_complete(stack.name, "create", stack.timeout) self.logger.info("Create completed for {0}".format(stack.name)) except BotoServerError as e: message = get_message_from_boto_server_error(e) raise CfnStackActionFailedException( "Could not create stack {0}. Cfn API responded with: {1}".format(stack.name, message))
def update_stack(self, stack): assert isinstance(stack, CloudFormationStack) try: self.logger.info( "Updating stack {0} from template {1} with parameters:\n{2}".format(stack.name, stack.template.name, get_pretty_parameters_string( stack.parameters))) self.conn.update_stack(stack.name, template_body=stack.template.get_template_json(), parameters=stack.get_parameters_list(), capabilities=['CAPABILITY_IAM']) self.wait_for_stack_action_to_complete(stack.name, "update", stack.timeout) self.logger.info("Update completed for {0}".format(stack.name)) except BotoServerError as e: message = get_message_from_boto_server_error(e) if message == "No updates are to be performed.": self.logger.info("Nothing to do: {0}.".format(message)) else: raise CfnStackActionFailedException("{0}.".format(message))