3.4 KiB
Multiple global efficacy indicator
https://blueprints.launchpad.net/watcher/+spec/multiple-global-efficacy-indicator
Problem description
Watcher calculates global-efficacy as a single value with available efficacy indicators. It is useful for those strategies which optimizes only one openstack resource. For strategies that optimizes multiple resources, multiple global efficacy indicator is required, as each global efficacy indicator will represent one resource. e.g. There are two strategies which optimizes storage and compute both, cloud admin checks the value of global efficacy for both strategy and decides to choose which is higher. cloud admin actually wants to choose strategy which has better compute optimization, since global efficacy is single entity it will not be able to reflect only compute optimization. There is a possibility that user may choose higher global effiacy strategy but at reality its value is higher because of storage efficacy. so its better to have multiple global efficacy indicator one for each resource.
Use Cases
As a Watcher user, For better selection of strategies I want to have multiple global efficacy indicating each resource.
Proposed change
Initialize global efficacy as list in Efficacy class.
Return global efficacy in following format from EfficacySpecification. It will be a list of objects of efficacy.Indicator class:
[(efficacy.Indicator(name='', description='', unit='', value='')), (efficacy.Indicator(name='', description='', unit='', value='')), ]
Change the parsing of format_global_efficacy method in python-watcherclient
Change ActionPlan Data model, as global efficacy was a JSONEncodedDict before and now it will be JSONEncodedList .
Alternatives
We can keep global efficacy as single entity,let user calculate multiple values based on resource using efficacy indicators.
Data model impact
None
REST API impact
global efficacy JSON schema will change. It will affect follwing API's:
GET /v1/action_plans/(action_plan_uuid)
GET /v1/action_plans/detail
GET /v1/action_plans
Security impact
None
Notifications impact
None
Other end user impact
None
Performance Impact
None
Other deployer impact
None
Developer impact
None
Implementation
Assignee(s)
- Primary assignee:
-
<adi-sky>
- Other contributors:
-
<None>
Work Items
- Initialize global_efficacy as list in watcher.decision_engine.solution.efficacy.Efficacy
- Update ActionPlan data model.
- Update the method get_global_efficacy_indicator in watcher.decision_engine.goal.efficacy.specs.ServerConsolidation
- Update in python-watcherclient.
Dependencies
None
Testing
Unit test will be updated.
Documentation Impact
Update the contributor guide for goal plugin. https://docs.openstack.org/watcher/latest/contributor/plugin/goal-plugin.html#implementation