Implement a common library for scaling groups
There are four types of scaling group in Heat: ResourceGroup, InstanceGroup, AWS AutoscalingGroup and Heat AutoscalingGroup. In each case, the implemenation of scaling is tightly bound into the resource. The latter three resource types share an unholy inheritance arrangement whereby the actual resource classes inherit from each other. They share no code at all with ResourceGroup, which is an entirely independent implementation.
The goal of this blueprint is to unify as much as possible of the generic scaling group code in a common library that can be called from these various resources, and to remove as much logic as possible from the Resource classes themselves.
Blueprint information
- Status:
- Started
- Approver:
- Steve Baker
- Priority:
- High
- Drafter:
- Zane Bitter
- Direction:
- Approved
- Assignee:
- Zane Bitter
- Definition:
- Approved
- Series goal:
- Accepted for future
- Implementation:
- Good progress
- Milestone target:
- next
- Started by
- Zane Bitter
- Completed by
Related branches
Related bugs
Sprints
Whiteboard
Heat has migrated to StoryBoard, please add BPs to [1]
If you like to keep using exists BPs, please add it to [1]
You can find more detail in [2].
[1] https:/
[2] https:/
Gerrit topic: https:/
Addressed by: https:/
Calculate ResourceGroup batch sizes using scaling library
Addressed by: https:/
Split out calculation of the next batch into a separate function
Addressed by: https:/
Respect rolling update params on the initial batch
Addressed by: https:/
Refactor InstanceGroup batch sizing logic
Addressed by: https:/
Invert logic of counting in InstanceGroup _get_batches()
Addressed by: https:/
Refactor ResourceGroup batched updates and add tests
Addressed by: https:/
Return the correct size for the ResourceGroup from _get_batches()
Addressed by: https:/
Don't do unnecessary updates in ResourceGroup rolling updates
Addressed by: https:/
Don't repeatedly overwrite definitions in RG rolling update
Addressed by: https:/
Clarify name of scaling resource_
Addressed by: https:/
Allow a custom new ID function for member_
Addressed by: https:/
Allow member_
Addressed by: https:/
Use the member_definition library func in ResourceGroup rolling updates
Addressed by: https:/
Start scaling down in an InstanceGroup rolling update ASAP
Addressed by: https:/
Return max_upd from ResourceGroup.
Addressed by: https:/
Add unit tests for ResourceGroup.
Addressed by: https:/
Refactor ResourceGroup.
Addressed by: https:/
Don't return resource names from ResourceGroup.
Addressed by: https:/
Handle scaling up in scaling library next_batch() function
Addressed by: https:/
Allow ResourceGroup rolling update to scale up
Addressed by: https:/
Allow ResourceGroup rolling update to scale down
The patches above landed for liberty-rc1, but mostly comprise refactoring and better testing. They should be considered a prerequisite for https:/