Difference between revisions of "Heat/Blueprints/FlexibleResourceGroup"
Line 1: | Line 1: | ||
< Heat | < Heat | ||
− | Launchpad Entry: HeatSpec: | + | Launchpad Entry: HeatSpec:ScalableResourceGroup<br /> |
Created: 26 July 2015<br /> | Created: 26 July 2015<br /> | ||
Contributors: Ahmed El-Khouly<br /> | Contributors: Ahmed El-Khouly<br /> | ||
Line 7: | Line 7: | ||
OS::Heat::ResourceGroup provides a way to create several instances of identically configured nested resource; resources within the group are identifiable with with their index. | OS::Heat::ResourceGroup provides a way to create several instances of identically configured nested resource; resources within the group are identifiable with with their index. | ||
OS::Heat::ResourceGroup can only change number of resources in the group by changing the count property in the Heat template and perform a stack update of on the root stack. | OS::Heat::ResourceGroup can only change number of resources in the group by changing the count property in the Heat template and perform a stack update of on the root stack. | ||
− | OS::Heat::AutoScalingGroup/Policy provides for a resource group that can change in size(scale) | + | OS::Heat::AutoScalingGroup/Policy provides for a resource group that can change in size(scale) by receiving signals controlling the size change. |
− | There are some cloud applications that need to specify the exact | + | There are some cloud applications that need a scalable resource group with the added ability to specify the exact resources to be add or removed from the group |
+ | |||
== Release Note == | == Release Note == | ||
+ | TBD | ||
+ | |||
== Rationale == | == Rationale == | ||
+ | Some cloud applications need a new resource group with the following characteristics: | ||
+ | 1) Create an initial number of identically configured nested resources. | ||
+ | 2) Identify resources 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) Grow/shrink the group size (with a certain increment) when user defined triggers are met. | ||
+ | |||
== User Stories == | == User Stories == | ||
+ | 1) Recreate a (failed) resource by adding/deleting the corresponding nested resource in the group. | ||
+ | 2) Create new resources in increments when certain triggers are met. | ||
+ | 3) Remove a number resources according to a predefined criteria(increasing or decreasing order of age or index). | ||
+ | 4) Specify which resources to remove due to low load periods. | ||
+ | |||
== Assumptions == | == Assumptions == | ||
+ | None. | ||
+ | |||
== Design == | == 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%”. | ||
+ | |||
+ | '''MAX_SIZE''': Integer | ||
+ | Maximum number of resources in the group. | ||
+ | Optional Property | ||
+ | Updates can cause creation/deletion of some resources according to de-grow policy | ||
+ | '''INIT_SIZE''': Integer | ||
+ | Initial number of resources in the group at creation time. | ||
+ | Optional property. | ||
+ | Default value is 1. | ||
+ | |||
+ | '''MIN_SIZE''': Integer | ||
+ | Min number of resources in the group. | ||
+ | Optional property. | ||
+ | Updates can cause creation/deletion of some resources according to de-grow policy | ||
+ | |||
+ | '''DEGROW_Policy''':String | ||
+ | Controls which resources to remove when during de-grow. | ||
+ | Optional property. | ||
+ | Possible Values: "Index" or "Age" | ||
+ | Default: "Index" | ||
+ | |||
+ | '''DEGROW_Order''':String | ||
+ | Optional property. | ||
+ | Possible Values: "Increasing" or "Decreasing" | ||
+ | Default: "Decreasing" | ||
+ | |||
+ | 2. ScalableResourceGroup class inherits from ResourceGroup: | ||
+ | - Provide handle_signal implementation to receive signals to add/delete and grow/degrow signals. | ||
+ | - Override create/validate/update/delete handlers. |
Revision as of 15:39, 24 July 2015
< Heat
Launchpad Entry: HeatSpec:ScalableResourceGroup
Created: 26 July 2015
Contributors: Ahmed El-Khouly
Summary
OS::Heat::ResourceGroup provides a way to create several instances of identically configured nested resource; resources within the group are identifiable with with their index. OS::Heat::ResourceGroup can only change number of resources in the group by changing the count property in the Heat template and perform a stack update of on the root stack. OS::Heat::AutoScalingGroup/Policy provides for a resource group that can change in size(scale) by receiving signals controlling the size change. There are some cloud applications that need a scalable resource group with the added ability to specify the exact resources to be add or removed from the group
Release Note
TBD
Rationale
Some cloud applications need a new resource group with the following characteristics: 1) Create an initial number of identically configured nested resources. 2) Identify resources 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) Grow/shrink 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) Create new resources in increments when certain triggers are met. 3) Remove a number resources according to a predefined criteria(increasing or decreasing order of age or index). 4) Specify which resources to remove due to low load periods.
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%”.
MAX_SIZE: Integer Maximum number of resources in the group. Optional Property Updates can cause creation/deletion of some resources according to de-grow policy INIT_SIZE: Integer Initial number of resources in the group at creation time. Optional property. Default value is 1.
MIN_SIZE: Integer Min number of resources in the group. Optional property. Updates can cause creation/deletion of some resources according to de-grow policy
DEGROW_Policy:String Controls which resources to remove when during de-grow. Optional property. Possible Values: "Index" or "Age" Default: "Index"
DEGROW_Order:String Optional property. Possible Values: "Increasing" or "Decreasing" Default: "Decreasing"
2. ScalableResourceGroup class inherits from ResourceGroup:
- Provide handle_signal implementation to receive signals to add/delete and grow/degrow signals. - Override create/validate/update/delete handlers.