Jump to: navigation, search

Heat/StackUpdate

< Heat
Revision as of 23:30, 17 February 2013 by Ryan Lane (talk | contribs) (Text replace - "__NOTOC__" to "")

UpdateStack

UpdateStack Overview

AWS Cloudformation provides an API action which allows an updated template (and/or parameters) to be processed, such that the definition of an existing, running stack can be modified.

There are three strategies for updating resources in the stack, which approach is used varies depending on the resource, and the property of the resource which is being modified.

- Update with no interruption
- Update with some interruption
- Update requires replacement

The per-resource behavior is defined in the [AWS CFN user guide](http://docs.amazonwebservices.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html). We are aiming to implement resource updates such that we respond in the same way as AWS where possible.

UpdateStack Design

The UpdateStack action works in a similar way to CreateStack, it takes a template and parameters, which are parsed in the engine to define the required resources. The code implementing UpdateStack then compares each resource with the resource in the currently running stack (by comparing the parsed JSON snippet which represents the resource). If the resource snippets differ, then the resources are deemed to be different and update is performed for that resource - if the resource has not been modified, it will *not* be updated.

There is a default update behaviour, which is to simply remove the existing resource, and create a new resource with the new template definition. Additionally each resource has a "handle_update" method which can implement more complex logic to allow non-interrupting or semi-interrupting updates. Note that the capability to update existing resources is still TODO at this point.

UpdateStack Status

Initial support for UpdateStack has been added for heat v5. Currently we only implement the "Update requires replacement" strategy, as the default strategy for all resources/properties.

It is planned to review update capability on a per-resource basis and where possible implement non-interrupting and semi-interrupting updates to existing resources. Note however that in many cases AWS simply replaces resources anyway, so the current scheme should remain a sensible default.

The status of each resource/property wrt UpdateStack aligment with AWS behaviour will be tracked on the AWS Template Support Parity page.