Jump to: navigation, search

Difference between revisions of "Heat/Blueprints/ScalableResourceGroup"

Line 5: Line 5:
  
 
== Summary ==
 
== 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 Resource Group types provide a convenient way to create several instances of identically configured nested resource maintain the size and readability of heat templates.<br />
AS of today Heat provides for two types of resource groups:
+
Heat provides for two types of resource groups:<br />
(1) OS::Heat::ResourceGroup:  
+
(1) OS::Heat::ResourceGroup: <br />
 
       - Provides the ability to access a single resource attributes with the resource index.<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 />
 
       - 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.
 
       - Possible change of group size by changing count property and update the parent stack.
 
    
 
    
(2) OS::Heat::AutoScalingGroup/Policy:
+
(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 that can scale and with the added ability of removal or addition of specific resources. <br />
 
Some cloud applications need a resource group type that can scale and with the added ability of removal or addition of specific resources. <br />
 +
The first feature is needed to respond to change in workload and the later can be used for healing or VNF specific deloading algorithms during scale-in.<br />
  
  

Revision as of 16:24, 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 that can scale and with the added ability of removal or addition of specific resources.
The first feature is needed to respond to change in workload and the later can be used for healing or VNF specific deloading algorithms during scale-in.


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.