Allow VM users to drive scale up and scale down events

Registered by Steven Dake

Some instance applications desire a mechanism to scale their auto-scaling group independently of metrics collected by Heat's implementation of CloudWatch (or in the future, Ceilometer's alarms).

Add a new resource type OS::Heat::UserDrivenScaling with the following properties:
Description: Text field describing the policy
Actions: A list of policies to execute when Heat detects the UserDrivenScaling event has occurred
Dimensions: A dict containing a reference to the AutoScaling group to help Heat set limits on the scale policy - contains:
   Name: AutoScalingGroupName
   Value: The ARN of the autoscaling group

Example JSON:
"AutoScaleUserDrivenUp": {
  "Type": "OS::Heat::UserDrivenScaling"
  "Properties": {
     "Description": When the app requests UserDrivenUp, scale up the autoscaling group"
    "Actions": [ { "Ref": "ScaleUpPolicy" } ],
   "Dimensions": [ {
      "Name": "AutoScalingGroupName":,
     "Value": { "Ref": "MyAutoScalingGroup" }
 } ]

Add a new option to cfn-push-stats called "--user-driven" of the form of

cfn-push-stats --user-driven UserDrivenUp

Only downside of this approach is the VM must be aware of the name of AutoScaleUp. One possible solution to this is to place the identifier in a special type of parameter which could use a ref.

Blueprint information

Status:
Complete
Approver:
None
Priority:
Undefined
Drafter:
Steven Dake
Direction:
Needs approval
Assignee:
Steven Dake
Definition:
Obsolete
Series goal:
None
Implementation:
Unknown
Milestone target:
None
Completed by
Steven Hardy

Related branches

Sprints

Whiteboard

I think this can be done now:

Just change the Alarm rule:

from:
       "MetricName": "MemoryUtilization",
        "Statistic": "Average",
        "Threshold": "50",
to:
       "MetricName": "my_upper",
        "Statistic": "Sample",
        "Threshold": "1",

You might have to tweak cfn-push-stats or just use curl to send the message.
Sample just counts the number of samples that arrive, so if Threshold is "1"
it is basically a control message.

Do something similar with the scale down alarm.

--
(shardy) : +1, I think everything described in this BP is already possible via either cfn-push-stats (inside instance) or heat-watch (outside instance), I don't see any value in creating a new resource type for this

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.