watcher-specs/specs/newton/implemented/optimization-threshold.rst
Antoine Cabot eb0bde14ad Move implemented specs in implemented folder
I also removed useless templates for a better
HTML rendering.

Change-Id: I1220319a1388f74bcdccff271ce25647227d74c5
2016-08-29 15:20:05 +02:00

219 lines
6.0 KiB
ReStructuredText

..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
======================
Optimization Threshold
======================
https://blueprints.launchpad.net/watcher/+spec/optimization-threshold
Allow decision engine to pass strategy parameters, like optimization threshold,
to selected strategy, also strategy to provide parameters info to end user.
Problem description
===================
Currently all parameters used in strategy are hard coded, end users can't
modify them unless they change the source code. E.g. THRESHOLD of strategy
outlet_temp_control is critical and fixed as 35.0, so we can't tune it for
specific usage case without changing source code.
Use Cases
----------
As an administrator.
I can choose a goal to optimize my cluster and Watcher will show me a list of
custom parameters for the selected strategy.
As an operator.
I want to tune the strategy parameter in an easy way for my cloud. I wish I can
change it via watcher command line to achieve the best solution.
Project Priority
-----------------
Not relevant because Watcher is not in the big tent so far.
Proposed change
===============
Need following to enable strategy parameter:
* Add more info into audit-template, so that 'watcher audit-template-show'
tells end user selected strategy and its parameters. Also append these info
to the 'watcher audit-template-create' output.
* Add new cmd option '-p' to 'watcher audit-create' for strategy parameter
configuration. End user can specify all strategy parameters, like
"-p threshold=45.0 -p repeat=10".
* When 'watcher audit-create', decison engine would configure selected strategy
with these parameters before executing it.
Alternatives
------------
None
Data model impact
-----------------
For audit template, need add info of selected strategy and its parameters. For
audit, need store user specified strategy parameters by hashmap.
The audit template structure is as follows::
+----------------+-------------------------------------------+
| Property | Value |
+----------------+-------------------------------------------+
| goal | DUMMY |
| strategy | outlet_temp_control |
| parameter_info | {'threshold': (float, 'Temperature ...')} |
| description | None |
| name | 1th_template |
| host_aggregate | None |
| uuid | 0c49a52c-4a0f-4dea-9e19-471360823aef |
+----------------+-------------------------------------------+
The audit structure is as follows::
+---------------------+--------------------------------------+
| Property | Value |
+---------------------+--------------------------------------+
| uuid | b564665b-e77b-444c-a43f-3ae654b9a551 |
| audit_template_name | 1st_template |
| parameters | {'threshold': 35.0} |
| created_at | 2016-01-31T08:51:03+00:00 |
| updated_at | 2016-01-31T08:51:58+00:00 |
| audit_template_uuid | 06cdba2a-069b-4618-8948-540854d8d911 |
| state | SUCCEEDED |
| deadline | None |
| deleted_at | None |
| type | ONESHOT |
+---------------------+--------------------------------------+
REST API impact
---------------
Audit creation API: POST /v1/audit
is changed, so that extra strategy parameters hashmap is accepted in request
body.
E.g. to create one audit based on outlet_temperature template with required
parameters, we can just POST following::
{
"type": "ONESHOT",
"audit_template_uuid": "outlet_temperature_template",
"parameters": {
"threshold": 35.0,
"repeat": 10
}
}
Security impact
---------------
Strategy parameter controls the executing process, and odd parameter probably
leads unexpected behavior. This BP enables easy changing of parameter, thus
need check against input parameter to make sure it is in reasonable range.
Notifications impact
--------------------
None
Other end user impact
---------------------
python-watcherclient need add extra command line for parameter input. End user
needs to be aware of this for strategy parameter tuning.
Performance Impact
------------------
None
Other deployer impact
---------------------
None
Developer impact
----------------
None
Implementation
==============
Assignee(s)
-----------
Primary assignee:
edwin-zhai
Work Items
----------
* Refactor the code to move strategy selection from audit creation to
audit-template creation. As we have no strategy parameter info until
instantiate it.
* Extend the audit-template to show the info of selected strategy and related
parameters
* Add extra command line in python-watcherclient, so that strategy parameter
can be specified with 'watcher audit-create -p xxx=XXX -p yyy=YYY ...'
* When 'watcher audit-create', parameter should be used to configure the
selected strategy after validation, where voluptuous can be used just like
action parameter checking.
* Update Horizon plugin for watcher to make sure it still works with these
changes.
* Each strategy class with parameter need define a new function,
'input_parameters', to set all parameters, e.g. threshold.
* Each strategy calss with parameter need define a new function,
'parameters_info', to return parameter info, like 'name', 'type' and
'description'.
Dependencies
============
None
Testing
=======
Adds unit and functional test for strategy parameter.
Documentation Impact
====================
Need update the watcher API doc and user guide. In dev doc about strategy
implementation, need explain how to add input parameters for strategy.
References
==========
None
History
=======
None