Merge "Add Watcher Continuosly Optimization spec"
This commit is contained in:
commit
c6d83646fb
154
specs/newton/approved/continuously-optimization.rst
Normal file
154
specs/newton/approved/continuously-optimization.rst
Normal file
@ -0,0 +1,154 @@
|
|||||||
|
=============================================
|
||||||
|
Watcher Continuous Optimization
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/watcher/+spec/continuously-optimization
|
||||||
|
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
`Cluster`_ can be optimized by different `Strategies`_ only when they have
|
||||||
|
been triggered by `Administrator`_. Launching a recommended `Action Plan`_
|
||||||
|
manually is not always suitable since state of cluster is constantly changing.
|
||||||
|
It would be better to have two ways of launching audit: either by triggering
|
||||||
|
it manually or by launching it periodically.
|
||||||
|
We propose to include continuous optimization as continuous type of
|
||||||
|
audit object in Watcher Project.
|
||||||
|
|
||||||
|
The main purpose of this change is to design and implement active mode of
|
||||||
|
Watcher's audit.
|
||||||
|
|
||||||
|
This specification relates to blueprint:
|
||||||
|
https://blueprints.launchpad.net/watcher/+spec/continuously-optimization
|
||||||
|
|
||||||
|
Use Cases
|
||||||
|
---------
|
||||||
|
|
||||||
|
As the Administrator I want to create `Audit`_ with CONTINUOUS type.
|
||||||
|
I specify periodic time with --period parameter (in seconds) to run audit
|
||||||
|
every 600 seconds. Running audit will create action plan every 600 seconds.
|
||||||
|
|
||||||
|
Project Priority
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Not relevant because Watcher is not in the big tent so far.
|
||||||
|
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
To perform audits with continuous type we can use periodic_task decorator
|
||||||
|
from oslo_service module on 'launch_audits_periodically' method. This method
|
||||||
|
gets continuous type audits with (PENDING, ONGOING) states. If some
|
||||||
|
of them are not in audits_to_launch list we add them to that list and to the
|
||||||
|
ThreadPoolExecutor. Once audit is added to thread, this thread is going to
|
||||||
|
sleep for PERIOD seconds. After this audit will be executed and UUID of audit
|
||||||
|
will be removed from audits_to_launch list.
|
||||||
|
To keep track of the triggered audit, notification has to be pushed on
|
||||||
|
the message bus every time the audit is re-triggered.
|
||||||
|
When a new action plan is proposed, Watcher should cancel all the previously
|
||||||
|
generated action plans (and actions) with same Audit Template become obsolete
|
||||||
|
and therefore their state should be changed to CANCELLED.
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
* To use Congress to automatically trigger audits when some conditions are met.
|
||||||
|
* To use a cronjob which triggers new audit regularly via python-watcherclient.
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
There must be new field in Audit model: integer 'period'. 'period' field has
|
||||||
|
3600 by default.
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
period's field has to be added as Audit attribute.
|
||||||
|
|
||||||
|
Security impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None expected.
|
||||||
|
|
||||||
|
Notifications impact
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
None expected.
|
||||||
|
|
||||||
|
Other end user impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Support for 'period' field must be added to the python-watcherclient and
|
||||||
|
to the watcher-dashboard.
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
No specific performance impact is expected.
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
No specific deployer impact is envisaged.
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
This will not impact other developers working on OpenStack.
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
Alexander Chadin <alexchadin>
|
||||||
|
Other contributors:
|
||||||
|
Vladimir Ostroverkhov <Ostroverkhov>
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
* Add support for periodic_task decorator.
|
||||||
|
* Implement PeriodicAuditHandler that manages DefaultAuditHandler.
|
||||||
|
* Implement method 'execute' that runs audits periodically.
|
||||||
|
* Adapt API to support period field.
|
||||||
|
* Make some changes to python-watcherclient to add support for period argument.
|
||||||
|
* Add changes to watcher-dashboard to support CONTINUOUS type.
|
||||||
|
* Implement appropriate unit tests to test various scenarios.
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
There are no dependencies.
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
Appropriate unit tests will be adapted to new changes.
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
It will be necessary to add new content relating to this change.
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
No references.
|
||||||
|
|
||||||
|
History
|
||||||
|
=======
|
||||||
|
|
||||||
|
No history.
|
||||||
|
|
||||||
|
|
||||||
|
.. _Strategies: https://factory.b-com.com/www/watcher/doc/watcher/glossary.html#strategy
|
||||||
|
.. _Administrator: https://factory.b-com.com/www/watcher/doc/watcher/glossary.html#administrator
|
||||||
|
.. _Audit: https://factory.b-com.com/www/watcher/doc/watcher/glossary.html#audit
|
||||||
|
.. _Action Plan: https://factory.b-com.com/www/watcher/doc/watcher/glossary.html#action-plan
|
||||||
|
.. _Cluster: https://factory.b-com.com/www/watcher/doc/watcher/glossary.html#cluster
|
Loading…
Reference in New Issue
Block a user