We joyfully announce the release of: python-watcher 1.1.0: OpenStack Watcher provides a flexible and scalable resource optimization service for multi-tenant OpenStack- based clouds. This release is part of the pike 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.1.0 ^^^^^ New Features * Check the creation time of the action plan, and set its state to SUPERSEDED if it has expired. * Added SUSPENDED audit state Changes in python-watcher 1.0.0..1.1.0 -------------------------------------- dbff432 Updated from global requirements c6845c0 Added suspended audit state b02cf3b Add gnocchi support in uniform_airflow strategy 4eeaa0a Add Apache License Content in index.rst 442e569 Optimize the link address 5d948e8 correct syntax error f83a92f Updated from global requirements 1d05444 Optimize the link address 6de94cc Add gnocchi support in outlet_temp_control strategy e9f8341 fixed syntax error in json a139cca Replace py34 with py35 e549e43 Add gnocchi support in workload_balance strategy 8663c3a Add gnocchi plugin support for devstack 19d9b83 Updated from global requirements af22899 Run Watcher-API behind mod-wsgi fc33e18 oslo messaging notifications driver update a3ee163 Use tox to generate a sample configuration file 4642a92 Add gnocchi support in VM-Workload-Consolidation strategy 69c53da Updated from global requirements d53abb7 Fix for remove verbose option 4d3727e Use HostAddressOpt for opts that accept IP and hostnames 0750b93 Add gnocchi support in workload_stabilization strategy a2cb02a Prevent the migration of VM with 'optimize' False in VM metadata 3778898 Add period input parameter to vm workload consolidation and outlet temp control strategy. cde60d2 Add endpoint_type option for openstack clients. e75dbfd Updated from global requirements 18aa50c Add gnocchi support in basic_consolidation strategy 54ce5f7 Imported Translations from Zanata f605888 Remove log translations 0b213a8 Add Gnocchi datasource 38a3cbc exception when running 'watcher service list' 1386ce6 Remove old oslo.messaging transport aliases 38e4b48 stale the action plan 56ca542 Local copy of scenario test base class 6044b04 set eager=True for actionplan.list 6d81ac1 Use https instead of http db077e8 Updated from global requirements 51bf7fe Updated from global requirements bf0fd48 Updated from global requirements 77b4067 Updated from global requirements e2d2fc6 Adding instance metadata into cluster data model 3c564ee Add Apache License content in conf.py file f9ce21a [Fix gate]Update test requirement 5afcf7a Remove unused PNG files in image_src directory 8f85169 Updated from global requirements 68e4bc4 Fix no endpoints of ceilometer in devstack environment setup. 9e7f7f5 Fix some typos in vm_workload_consolidation.py. fceab52 Optimize audit process 24ab046 Reactivate watcher dashboard plugin in devstack/local.conf.controller fd374d1 Add SUPERSEDED description 25789c9 Add Action Notification a9b3534 Switch to use test_utils.call_until_true f80c0c7 Adding additional details to notification logs 0d83354 Add checking audit state 67d44eb Fix the mapping between the instance and the node 8c1757f Remove support for py34 e55c73b Fix that remove 'strategy' attribute does not work. 04c9e03 Fix spelling error in NotificationEndpoint classes. 58711aa Fix log level error to warning 3ad5261 Fix incorrect auto trigger flag 5b2cdb5 Using items() instead of six.iteritems() b6a96e0 Update reno for stable/ocata 65f9646 Use RPC cast() to be asynchronous Diffstat (except docs and test files) ------------------------------------- CONTRIBUTING.rst | 4 +- HACKING.rst | 2 +- README.rst | 10 +- devstack/files/apache-watcher-api.template | 42 ++ devstack/lib/watcher | 69 ++- devstack/local.conf.controller | 11 +- .../action-execution-error.json | 51 ++ .../action-execution-start.json | 41 ++ .../plantuml/action_plan_state_machine.png | Bin 59207 -> 0 bytes .../image_src/plantuml/audit_state_machine.txt | 3 + .../plantuml/watcher_db_schema_diagram.png | Bin 73517 -> 0 bytes .../strategies/vm_workload_consolidation.rst | 14 + etc/apache2/watcher | 33 ++ .../notes/stale-action-plan-b6a6b08df873c128.yaml | 4 +- .../suspended-audit-state-07f998c94e9d9a47.yaml | 4 + releasenotes/source/conf.py | 13 + releasenotes/source/index.rst | 15 + .../source/locale/fr/LC_MESSAGES/releasenotes.po | 33 ++ releasenotes/source/ocata.rst | 6 + requirements.txt | 25 +- setup.cfg | 1 - setup.py | 2 +- test-requirements.txt | 4 +- tox.ini | 4 +- watcher/api/app.wsgi | 40 ++ watcher/api/controllers/v1/audit.py | 25 +- watcher/api/controllers/v1/audit_template.py | 1 + watcher/api/controllers/v1/service.py | 13 +- watcher/api/controllers/v1/utils.py | 15 + watcher/api/middleware/parsable_error.py | 4 +- watcher/applier/actions/migration.py | 14 +- watcher/applier/actions/resize.py | 6 +- watcher/applier/rpcapi.py | 2 +- watcher/applier/workflow_engine/base.py | 95 ++- watcher/applier/workflow_engine/default.py | 65 +-- watcher/cmd/api.py | 7 +- watcher/cmd/applier.py | 3 +- watcher/cmd/decisionengine.py | 3 +- watcher/cmd/sync.py | 5 +- watcher/common/clients.py | 41 +- watcher/common/context.py | 3 +- watcher/common/exception.py | 20 +- watcher/common/rpc.py | 20 +- watcher/common/utils.py | 5 +- watcher/conf/__init__.py | 2 + watcher/conf/api.py | 7 +- watcher/conf/ceilometer_client.py | 7 +- watcher/conf/cinder_client.py | 7 +- watcher/conf/decision_engine.py | 9 + watcher/conf/glance_client.py | 7 +- watcher/conf/gnocchi_client.py | 47 ++ watcher/conf/monasca_client.py | 7 +- watcher/conf/neutron_client.py | 7 +- watcher/conf/nova_client.py | 7 +- watcher/conf/service.py | 15 +- watcher/datasource/gnocchi.py | 92 +++ watcher/db/purge.py | 24 +- watcher/decision_engine/audit/base.py | 23 +- watcher/decision_engine/audit/continuous.py | 6 +- watcher/decision_engine/model/collector/nova.py | 6 +- watcher/decision_engine/model/element/instance.py | 1 + watcher/decision_engine/model/model_root.py | 7 + watcher/decision_engine/model/notification/nova.py | 81 +-- watcher/decision_engine/planner/weight.py | 19 +- .../planner/workload_stabilization.py | 3 +- watcher/decision_engine/rpcapi.py | 2 +- watcher/decision_engine/scheduling.py | 16 + watcher/decision_engine/scope/default.py | 7 +- .../decision_engine/strategy/strategies/base.py | 18 + .../strategy/strategies/basic_consolidation.py | 90 ++- .../strategy/strategies/outlet_temp_control.py | 84 ++- .../strategy/strategies/uniform_airflow.py | 152 +++-- .../strategies/vm_workload_consolidation.py | 225 ++++++-- .../strategy/strategies/workload_balance.py | 79 ++- .../strategy/strategies/workload_stabilization.py | 101 +++- watcher/decision_engine/sync.py | 53 +- watcher/hacking/checks.py | 3 +- watcher/locale/fr/LC_MESSAGES/watcher.po | 640 --------------------- watcher/notifications/__init__.py | 1 + watcher/notifications/action.py | 302 ++++++++++ watcher/notifications/action_plan.py | 46 +- watcher/notifications/base.py | 2 +- watcher/objects/action.py | 6 + watcher/objects/action_plan.py | 25 +- watcher/objects/audit.py | 26 + watcher/objects/fields.py | 23 + .../test_default_workflow_engine.py | 76 ++- .../decision_engine/audit/test_audit_handlers.py | 39 +- .../decision_engine/cluster/test_nova_cdmc.py | 1 + .../decision_engine/model/ceilometer_metrics.py | 2 +- .../decision_engine/model/data/scenario_1.xml | 70 +-- .../model/data/scenario_1_with_metrics.xml | 4 +- .../model/data/scenario_2_with_metrics.xml | 12 +- .../model/data/scenario_3_with_2_nodes.xml | 4 +- .../model/data/scenario_3_with_metrics.xml | 8 +- .../model/data/scenario_5_with_instance_disk_0.xml | 2 +- .../model/data/scenario_6_with_2_nodes.xml | 8 +- .../model/data/scenario_7_with_2_nodes.xml | 8 +- .../model/data/scenario_8_with_4_nodes.xml | 12 +- ...nario_9_with_3_active_plus_1_disabled_nodes.xml | 12 +- .../model/faker_cluster_and_metrics.py | 83 +++ .../decision_engine/model/faker_cluster_state.py | 2 + .../model/notification/test_nova_notifications.py | 1 - .../decision_engine/planner/test_weight_planner.py | 18 +- .../strategies/test_basic_consolidation.py | 34 ++ .../strategies/test_outlet_temp_control.py | 68 ++- .../strategy/strategies/test_uniform_airflow.py | 62 +- .../strategies/test_vm_workload_consolidation.py | 69 ++- .../strategy/strategies/test_workload_balance.py | 67 ++- .../strategies/test_workload_stabilization.py | 79 ++- .../notifications/test_action_notification.py | 355 ++++++++++++ 147 files changed, 4027 insertions(+), 1363 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 08bb48e..c2221da 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,3 +13,3 @@ oslo.cache>=1.5.0 # Apache-2.0 -oslo.config!=3.18.0,>=3.14.0 # Apache-2.0 -oslo.context>=2.9.0 # Apache-2.0 -oslo.db>=4.15.0 # Apache-2.0 +oslo.config>=3.22.0 # Apache-2.0 +oslo.context>=2.12.0 # Apache-2.0 +oslo.db>=4.19.0 # Apache-2.0 @@ -17,2 +17,2 @@ oslo.i18n>=2.1.0 # Apache-2.0 -oslo.log>=3.11.0 # Apache-2.0 -oslo.messaging>=5.14.0 # Apache-2.0 +oslo.log>=3.22.0 # Apache-2.0 +oslo.messaging>=5.19.0 # Apache-2.0 @@ -23 +23 @@ oslo.service>=1.10.0 # Apache-2.0 -oslo.utils>=3.18.0 # Apache-2.0 +oslo.utils>=3.20.0 # Apache-2.0 @@ -26 +26 @@ PasteDeploy>=1.5.0 # MIT -pbr>=1.8 # Apache-2.0 +pbr!=2.1.0,>=2.0.0 # Apache-2.0 @@ -29,0 +30 @@ voluptuous>=0.8.9 # BSD License +gnocchiclient>=2.7.0 # Apache-2.0 @@ -31 +32 @@ python-ceilometerclient>=2.5.0 # Apache-2.0 -python-cinderclient!=1.7.0,!=1.7.1,>=1.6.0 # Apache-2.0 +python-cinderclient>=2.0.1 # Apache-2.0 @@ -36 +37 @@ python-neutronclient>=5.1.0 # Apache-2.0 -python-novaclient!=7.0.0,>=6.0.0 # Apache-2.0 +python-novaclient>=7.1.0 # Apache-2.0 @@ -39,2 +40,2 @@ six>=1.9.0 # MIT -SQLAlchemy<1.1.0,>=1.0.10 # MIT -stevedore>=1.17.1 # Apache-2.0 +SQLAlchemy!=1.1.5,!=1.1.6,!=1.1.7,!=1.1.8,>=1.0.10 # MIT +stevedore>=1.20.0 # Apache-2.0 @@ -42 +43 @@ taskflow>=2.7.0 # Apache-2.0 -WebOb>=1.6.0 # MIT +WebOb>=1.7.1 # MIT diff --git a/test-requirements.txt b/test-requirements.txt index cf035ca..705a075 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -8 +8 @@ freezegun>=0.3.6 # Apache-2.0 -hacking<0.11,>=0.10.2 +hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 @@ -19 +19 @@ oslosphinx>=4.7.0 # Apache-2.0 -sphinx!=1.3b1,<1.4,>=1.2.1 # BSD +sphinx>=1.5.1 # BSD