We are thrilled to announce the release of: python-watcher 1.11.0: OpenStack Watcher provides a flexible and scalable resource optimization service for multi-tenant OpenStack- based clouds. This release is part of the rocky release series. The source is available from: https://github.com/openstack/watcher Download the package from: https://tarballs.openstack.org/watcher/ Please report issues through launchpad: https://bugs.launchpad.net/watcher For more details, please see below. 1.11.0 ^^^^^^ New Features * Watcher services can be launched in HA mode. From now on Watcher Decision Engine and Watcher Applier services may be deployed on different nodes to run in active-active or active-passive mode. Any ONGOING Audits or Action Plans will be CANCELLED if service they are executed on is restarted. Changes in python-watcher 1.10.0..1.11.0 ---------------------------------------- 20ffb59 Rescheduling continuous audits from FAILED nodes e426a01 Add HA support b54647e Fix service task interval 6a31f2c Add noisy neighbor description ea5252d remove LOG definitions that have not been used e76b27c trivial: fix strategy name 8377603 update Ubuntu version from 14.04 to 16.04 9630e2c Update host_maintenance doc 4022714 Check job before removing it 6fcdb5e update monascaclient version d62c496 Sync CDM among Decision Engines by using notification pool 486d08b Add actionplan list detail api ref b3e84fa Remove help message about ZeroMQ driver dc3531f Switch to stestr c9e8886 Remove non-voting jobs from gate queue 7373588 Remove undefined job c783a29 Triggers the api-ref-jobs to publish wather api reference 393d68f Fix unit test error 0540cd2 Use jsonschema to validate efficacy indicators 281a5e6 fix the rule name 5f93e96 Correcting url in action_plan policy 88ff5e1 fix tox python3 overrides ae09184 replace windows line endings with unix line endings b683d2c Switch to oslo_messaging.ConfFixture.transport_url 533c0a4 Add API Reference for Watcher a8079ba Amend the spelling error of a word Diffstat (except docs and test files) ------------------------------------- .gitignore | 2 - .stestr.conf | 2 +- .testr.conf | 7 - .zuul.yaml | 23 +- api-ref/source/conf.py | 90 +++ api-ref/source/index.rst | 16 + api-ref/source/parameters.yaml | 433 ++++++++++++++ .../actionplan-cancel-request-cancelling.json | 7 + .../samples/actionplan-cancel-request-pending.json | 7 + .../samples/actionplan-list-detailed-response.json | 26 + .../source/samples/actionplan-list-response.json | 24 + .../source/samples/actionplan-show-response.json | 20 + .../source/samples/actionplan-start-response.json | 22 + .../samples/actions-list-detailed-response.json | 30 + api-ref/source/samples/actions-list-response.json | 23 + api-ref/source/samples/actions-show-response.json | 26 + api-ref/source/samples/audit-cancel-request.json | 7 + api-ref/source/samples/audit-cancel-response.json | 51 ++ .../samples/audit-create-request-continuous.json | 12 + .../samples/audit-create-request-oneshot.json | 5 + api-ref/source/samples/audit-create-response.json | 51 ++ .../samples/audit-list-detailed-response.json | 55 ++ api-ref/source/samples/audit-list-response.json | 28 + api-ref/source/samples/audit-show-response.json | 51 ++ api-ref/source/samples/audit-update-request.json | 12 + api-ref/source/samples/audit-update-response.json | 51 ++ .../samples/audittemplate-create-request-full.json | 7 + .../audittemplate-create-request-minimal.json | 4 + .../samples/audittemplate-create-response.json | 23 + .../audittemplate-list-detailed-response.json | 23 + .../samples/audittemplate-list-response.json | 22 + .../samples/audittemplate-show-response.json | 23 + .../samples/audittemplate-update-request.json | 7 + .../samples/audittemplate-update-response.json | 23 + api-ref/source/samples/goal-list-response.json | 55 ++ api-ref/source/samples/goal-show-response.json | 19 + .../scoring_engine-list-detailed-response.json | 20 + .../samples/scoring_engine-list-response.json | 19 + .../samples/scoring_engine-show-response.json | 16 + .../samples/service-list-detailed-response.json | 24 + api-ref/source/samples/service-list-response.json | 36 ++ api-ref/source/samples/service-show-response.json | 20 + .../samples/strategy-list-detailed-response.json | 35 ++ api-ref/source/samples/strategy-list-response.json | 21 + api-ref/source/samples/strategy-show-response.json | 33 + .../source/samples/strategy-state-response.json | 49 ++ api-ref/source/watcher-api-v1-actionplans.inc | 254 ++++++++ api-ref/source/watcher-api-v1-actions.inc | 155 +++++ api-ref/source/watcher-api-v1-audits.inc | 349 +++++++++++ api-ref/source/watcher-api-v1-audittemplates.inc | 257 ++++++++ api-ref/source/watcher-api-v1-goals.inc | 126 ++++ api-ref/source/watcher-api-v1-scoring_engines.inc | 120 ++++ api-ref/source/watcher-api-v1-services.inc | 116 ++++ api-ref/source/watcher-api-v1-strategies.inc | 164 +++++ lower-constraints.txt | 3 +- .../notes/add-ha-support-b9042255e5b76e42.yaml | 6 + requirements.txt | 2 +- test-requirements.txt | 28 +- tox.ini | 25 +- watcher/api/controllers/v1/action_plan.py | 3 + watcher/api/controllers/v1/audit.py | 5 + watcher/api/controllers/v1/audit_template.py | 4 - watcher/api/controllers/v1/scoring_engine.py | 2 +- watcher/api/controllers/v1/strategy.py | 2 +- watcher/api/scheduling.py | 32 +- watcher/applier/action_plan/default.py | 3 + watcher/applier/actions/base.py | 2 +- watcher/applier/sync.py | 31 + watcher/common/policies/action_plan.py | 2 +- watcher/common/service.py | 11 +- watcher/conf/decision_engine.py | 9 +- watcher/conf/service.py | 3 +- watcher/datasource/manager.py | 4 - .../alembic/versions/52804f2498c4_add_hostname.py | 26 + .../sqlalchemy/alembic/versions/a86240e89a29_.py | 21 +- watcher/db/sqlalchemy/api.py | 2 +- watcher/db/sqlalchemy/models.py | 2 + watcher/decision_engine/audit/base.py | 4 + watcher/decision_engine/audit/continuous.py | 32 +- watcher/decision_engine/goal/efficacy/base.py | 20 +- .../decision_engine/goal/efficacy/indicators.py | 83 ++- watcher/decision_engine/scheduling.py | 21 + watcher/decision_engine/scope/baremetal.py | 5 - watcher/decision_engine/scope/storage.py | 4 - .../strategy/strategies/dummy_with_scorer.py | 2 +- .../strategy/strategies/host_maintenance.py | 662 ++++++++++----------- .../strategy/strategies/noisy_neighbor.py | 29 +- watcher/objects/action_plan.py | 4 +- watcher/objects/audit.py | 4 +- .../decision_engine/audit/test_audit_handlers.py | 25 +- .../strategy/strategies/test_host_maintenance.py | 412 ++++++------- 109 files changed, 4190 insertions(+), 715 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index a9621df..1daba9d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -37 +37 @@ python-keystoneclient>=3.15.0 # Apache-2.0 -python-monascaclient>=1.10.0 # Apache-2.0 +python-monascaclient>=1.12.0 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index 8ef99de..3a5c09a 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -5,3 +5,3 @@ -coverage!=4.4 # Apache-2.0 -doc8 # Apache-2.0 -freezegun # Apache-2.0 +coverage>=4.5.1 # Apache-2.0 +doc8>=0.8.0 # Apache-2.0 +freezegun>=0.3.10 # Apache-2.0 @@ -9,6 +9,6 @@ hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 -mock # BSD -oslotest # Apache-2.0 -os-testr # Apache-2.0 -testrepository # Apache-2.0/BSD -testscenarios # Apache-2.0/BSD -testtools # MIT +mock>=2.0.0 # BSD +oslotest>=3.3.0 # Apache-2.0 +os-testr>=1.0.0 # Apache-2.0 +testscenarios>=0.5.0 # Apache-2.0/BSD +testtools>=2.3.0 # MIT +stestr>=2.0.0 # Apache-2.0 @@ -17,3 +17,3 @@ testtools # MIT -openstackdocstheme # Apache-2.0 -sphinx!=1.6.6,!=1.6.7 # BSD -sphinxcontrib-pecanwsme # Apache-2.0 +openstackdocstheme>=1.20.0 # Apache-2.0 +sphinx>=1.6.5,!=1.6.6,!=1.6.7 # BSD +sphinxcontrib-pecanwsme>=0.8.0 # Apache-2.0 @@ -22 +22 @@ sphinxcontrib-pecanwsme # Apache-2.0 -os-api-ref # Apache-2.0 +os-api-ref>=1.4.0 # Apache-2.0 @@ -25 +25 @@ os-api-ref # Apache-2.0 -reno # Apache-2.0 +reno>=2.7.0 # Apache-2.0