Refactor all plugin loaders in watcher/applier into
watcher/applier/loading/default.py.
Change-Id: I0f0a87d4f72ead45d34aca1b14219fd2ede42a6f
Closes-Bug: #1591095
In this changeset, I decoupled the notion of Goal from the Strategy
by making it a distinct object. Goals are plugins that can be loaded
just like for the strategies.
Partially Implements: blueprint efficacy-indicator
Change-Id: I4378dccd508170b305aa968843228bbc8af78895
In this changeset, I added the list of all the available plugins
for the current instance of any given Watcher service.
Partially Implements: blueprint plugins-parameters
Change-Id: I58c9724a229712b0322a578f0f89a61b38dfd80a
In this changeset, I added the possibility for all plugins to define
configuration parameters for themselves.
Partially Implements: blueprint plugins-parameters
Change-Id: I676b2583b3b4841c64c862b2b0c234b4eb5fd0fd
In this changeset, I remove the now unused [watcher_goals] section.
Partially Implements: blueprint get-goal-from-strategy
Change-Id: I91e4e1ac3a58bb6f3e30b11449cf1a6eb18cd0ca
The OpenStackClients class provides a convenient way to create and
cache client instances. The idea behind this code comes from Magnum
[0].
The OpenStackClients class will act as the manager of other project's
clients, providing an easy way to fetch instances of said clients. This
will allow the clients to be cached.
An instance of OpenStackClients is created for every call that comes
into the decision engine and the applier, using the request context to
pass needed (domain id) parameters to get a Keystone session. This
instance should be shared as much as possible to avoid additional
unneccessary connections to the other services.
This class will also allow for the version of each client to be
configurable via the watcher.conf file.
The method by which a Keystone session is also changed to use the
keystoneauth1.loading library. In order to avoid DuplicateOptErrors
with the keystone_authtoken group used for the keystonemiddleware in the
API code, a new conf group named "watcher_clients_auth" is created. A
typical configuration using a password authentication scheme will look
like:
[watcher_clients_auth]
auth_type = password
auth_url = http://<server-ip>:<port>
username = <username>
password = <password>
project_domain_id = default
user_domain_id = default
[0]: https://github.com/openstack/magnum/blob/master/magnum/common/clients.py
DocImpact
Change-Id: Iab9d0b304099686da2e9e2b19e8b1de4332ff378
Implements: blueprint external-api-versioning
Closes-Bug: #1530790
Closes-Bug: #1539670
Closes-Bug: #1522774
In watcher, an audit generates a set of actions which
aims at achieving a given goal (lower energy consumption, ...).
It is possible to configure different strategies in order to achieve
each goal. Each strategy is written as a Python class which produces
a set of actions. Today, the set of possible actions is fixed for a
given version of Watcher and enables optimization algorithms to
include actions such as instance migration, changing hypervisor state,
changing power state (ACPI level, ...).
The objective of this patchset is to give the ability to extend the
default set of planner algorithms currently available in Watcher
using Stevedore.
The doc need to explain how create a new planner.
DocImpact
Partially implements: blueprint watcher-add-actions-via-conf
Change-Id: I2fd73f8c4a457ee391d764a7a3f494deecd2634f
Although the refactoring of the applier got merged we have an issue
to generate the config. This pathset fix that
Change-Id: Iafce7d0136b2ad813102c3e3caeebafa215363c8
Closes-Bug: 1526851
Some Python class and packages need to be renamed
for a better compliance with the shared terminology
which provides a better understanding of Watcher
objects and components by every contributor.
This patchset is there to change the code structure by adding the folder
"strategies" and "loading".
Partially implements: blueprint glossary-related-refactoring
Change-Id: I56fb24ee6762b3186eccde5983233e17bb227cc1
This patchset is there to change the code structure.
The objective is to flatten the project file tree by merging
'api/' and 'framework/' into a single package. This also contains
some tidy ups in package naming (like using only singular nouns).
This should only affect file/folder names and their subsequent
import paths wherever they were used.
Change-Id: Id7b37667c613086d8ef3cd1f367c4219bf026fc7
The old 'watcher_messaging' section of the Watcher configuration file
has now been replaced by the more standard oslo.configuration one.
DocImpact
Change-Id: Ie027df023e6133f3188e57b42846083f28c282bd
Following the update of the project requirements, we should now
use the oslo.config namespace of oslo.log when generating ou
Watcher config sample file.
Change-Id: I7a1f3d555534b40c041b7f042f19fae231b7e80c
Closes-Bug: #1518297
This patchset is there to change the code structure.
The objective is to flatten the project file tree by merging
'api/' and 'framework/' into a single package. This also contains
some tidy ups in package naming (like using only singular nouns).
This should only affect file/folder names and their subsequent
import paths wherever they were used.
Change-Id: Ie903ba20ca5cf03b0b42efa60131d1b919b0c2c9
The objective for this is to give the ability to extend the default
set of placement algorithms (i.e. strategies) currently available
in Watcher using Stevedore.
Now, you can add your new strategy as an entry point under the
'[watcher_strategies]' section.
Change-Id: I4aecf629015e41b0389d07e47220333e50bbbe1a
In current implementation is not easy to use ceilometer.
Watcher must query metrics from the Telemetry v2 API to allow an easiest integration with OpenStack components (especially devstack).
blueprint telemetry-integration
Change-Id: Ide515472f1d160925d9f4aabf48c96dea4f6bc05
As the openstack/common is deprecated, Watcher should use oslo lib
directly to run in the openstack env. So there is much work to do
with oslo. This patch fixed the log part.
Change-Id: I3145a842fe3a22b3d08fec60d180329073edd50f