Heat/AWSAutoScaling

This page describes the AWS-style autoscaling in Heat.

The AWS AS is broken into a number of logical objects
 * AS group (heat/engine/resources/autoscaling.py)
 * AS policy (heat/engine/resources/autoscaling.py)
 * AS Launch Config (heat/engine/resources/autoscaling.py)
 * Cloud Watch Alarms (heat/engine/resources/cloud_watch.py, heat/engine/watchrule.py)

Dependencies
Note the in template resource dependencies are:


 * Alarm
 * Group
 * Policy
 * Group
 * Launch Config
 * [Load Balancer] - optional

This mean the creation order should be [LB, LC, Group, Policy, Alarm].



When a stack is created with these resources the following happens:

 * 1) Alarm: the alarm rule is written into the DB
 * 2) Policy: nothing interesting
 * 3) LaunchConfig: it is just storage
 * 4) Group: the Launch config is used to create the initial number of servers.
 * 5) the new server starts posting samples back to the cloud watch API

When an alarm is triggered in watchrule.py the following happens:

 * 1) the periodic task runs the watch rule
 * 2) when an alarm is triggered it calls (python call) the policy resource (policy.alarm)
 * 3) the policy figures out if it needs to adjust the group size, if it does it calls (via python again) group.adjust