![Antoine Cabot](/assets/img/avatar_default.png)
I also removed useless templates for a better HTML rendering. Change-Id: I1220319a1388f74bcdccff271ce25647227d74c5
219 lines
6.0 KiB
ReStructuredText
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
|