Difference between revisions of "Heat/Blueprints/ScalableResourceGroup"
Line 8: | Line 8: | ||
Heat provides for two types of resource groups:<br /> | Heat provides for two types of resource groups:<br /> | ||
(1) OS::Heat::ResourceGroup: <br /> | (1) OS::Heat::ResourceGroup: <br /> | ||
− | + | - Provides the ability to access a single resource attributes with the resource index. <br /> | |
− | + | - Provides an index_var variable that resources use to be replaced with resource index. <br /> | |
− | + | - Possible change of group size by changing count property and update the parent stack. <br /> | |
(2) OS::Heat::AutoScalingGroup/Policy:<br /> | (2) OS::Heat::AutoScalingGroup/Policy:<br /> | ||
− | - Dynamic change of group size triggered by signals. | + | - Dynamic change of group size triggered by signals. <br /> |
− | - Policy defining characteristics of scale operation (size of adjustment, size of adjustment, cool down period). | + | - Policy defining characteristics of scale operation (size of adjustment, size of adjustment, cool down period). <br /> |
− | - Group changes size by performing nested stack update. | + | - Group changes size by performing nested stack update. <br /> |
Some cloud applications need a resource group type with the following features:<br /> | Some cloud applications need a resource group type with the following features:<br /> |
Revision as of 16:31, 10 August 2015
< Heat
Launchpad Entry: HeatSpec:ScalableResourceGroup
Created: 26 July 2015
Contributors: Ahmed El-Khouly
Summary
Heat Resource Group types provide a convenient way to create several instances of identically configured nested resource maintain the size and readability of heat templates.
Heat provides for two types of resource groups:
(1) OS::Heat::ResourceGroup:
- Provides the ability to access a single resource attributes with the resource index.
- Provides an index_var variable that resources use to be replaced with resource index.
- Possible change of group size by changing count property and update the parent stack.
(2) OS::Heat::AutoScalingGroup/Policy:
- Dynamic change of group size triggered by signals.
- Policy defining characteristics of scale operation (size of adjustment, size of adjustment, cool down period).
- Group changes size by performing nested stack update.
Some cloud applications need a resource group type with the following features:
- Scale changing group size. This needed to respond to change in workload.
- Added ability of removal or addition of specific resources. This is needed for healing a specific resource by removal followed by addition
of the same resource (same resource index). It also allows for vnf controlled deloading sequence during scale-in ooperation.
Release Note
TBD
Rationale
Some cloud applications need a new resource group with the following features:
1) Create an initial number of identically configured nested resources.
2) Address single resource within the group using the index with the ability to specify a variable to be replaced by the index.
3) Add(Remove) specific resource within the group by specifying the indices of involved resources.
4) Scale out(in) by adjusting the group size (with a certain increment) when user defined triggers are met.
User Stories
1) Recreate a (failed) resource by adding/deleting the corresponding nested resource in the group.
2) Add new resources to group when certain criteria met(ex. increase in workload).
3) Remove a number of resources according to a predefined criteria(increasing or decreasing order of age or index).
4) Specify certain resources for removal.
Assumptions
None.
Design
(1) Define a new heat resource type: OS::HEAT::ScalableResourceGroup with the following properties:
resource_def : Map Resource definition for the resources in the group. Required property. Can be updated without replacement.
index_var : String A variable that this resource will use to replace with the current index of a given resource in the group. Updates cause replacement. Optional property, defaults to “%index%”.
initial_size: Integer Initial number of resources in the group at creation time. Optional property, defaults to 1. The value must be at least 0.
max_size: Integer Maximum number of resources in the group. Optional Property, defaults to 1. Updates can cause creation/deletion of some resources according to scale_in_criteria/scale_in_order. The value must be at least 0.
min_size: Integer Minimum number of resources in the group. Optional property, defaults to 1. Updates can cause addition/removal of resources according to scale_in_criteria/scale_in_order. The value must be at least 0, less than or equal to max_size.
scale_in_criteria:String Removal criteria of resources in the group. Optional property, defaults to "Index". Possible Values: "Index" or "Age"
scale_in_order:String Removal order of resources in the group according to the specified criteria. Optional property, defaults to "Decreasing". Possible Values: "Increasing" or "Decreasing"
scale_batch_size:Integer Number of resources to be added/removed simultaneously. Optional property, defaults to 1. Possible Values: "Increasing" or "Decreasing"
scale_batch_pause:Integer Number of seconds between batches. Optional property, defaults to 0.
(2) Introduce ScalableResourceGroup class inherits from ResourceGroup. The new class adds a signal handler for signals with the following specification:
command: String Actions to perform on the group. Possible Values: "ADD", "REMOVE", RECREATE, "SCALE_OUT", "SCALE_OUT"
parameters: depends on the command - ADD/REMOVE/RECREATE parameters: resources: List of Integers list of resource indices to add, remove or recreate - SCALE_OUT/SCALE_IN parameters: scale_size: Integer Size adjustment. Value Must be positive.