We exuberantly announce the release of: python-watcher 1.5.0: OpenStack Watcher provides a flexible and scalable resource optimization service for multi-tenant OpenStack- based clouds. This release is part of the queens 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.5.0 ^^^^^ New Features * Existing workload_balance strategy based on the VM workloads of CPU. This feature improves the strategy. By the input parameter "metrics", it makes decision to migrate a VM base on CPU or memory utilization. Changes in python-watcher 1.4.0..1.5.0 -------------------------------------- 84fb742 Update the nova api_version default value to 2.53 ee5b01d Correct the instance migration link e5031ef Updated from global requirements 4c0d2ab Add saving energy strategy description cf8d7bb Add documentation about saving energy strategy be69ebd Invoke version_string in watcher/version.py directly 7d33bf8 Fix _build_instance_node for building Compute CDM b3fa8a0 writing convention: do not use “-y” for package install 9d3cc28 Update OpenStack Installation Tutorial to pike eed2e12 Remove explicitly enable neutron 7091fe4 Fix the telemetry-measurements hyperlink for strategies 7f9b562 optimize update_audit_state f445fc4 Optimize the import format by pep8 f461b8c Remove the unnecessary word c717be1 Fix TypeError in function chunkify 5814914 Fix action plan state change when action failed fb3c235 Remove installation guide for openSUSE and SLES d4e6e82 Notification Cancel Action Plan 8167653 Fix migrate action failure 35e502f Add exception log when migrate action failed f516a9c [Doc] Fix host option 8e89d54 Use Property setters 2467780 Update the description for controller node 25854aa Updated from global requirements e4f4588 cleanup test-requirements 1465aa0 Update the "IAAS" to "IaaS" e6e0b3d Correct the link for watcher cli 28b9766 Update the documentation link for doc migration 998e86f Updated from global requirements a5e7fd9 Fix Watcher DB schema creation 6e6e590 Fix Action 'change_node_power_state' FAILED 1df395d Updated from global requirements a25be64 Fix incorrect config section name of configure doc 7bc984b Fix Gate Failure eeee32a Remove redundant right parenthesis 3a7fc7a Utils: fix usage of strtime 63697d5 Update the documentation link for doc migration 887fa74 iso8601.is8601.Utc No Longer Exists 65c7cd0 Remove the unused rootwrap config 5df54ea Remove unused efficacy indicators 51dba60 Replace DbMigrationError with DBMigrationError 154aca3 Replace default gnocchi endpoint type a2fa13c Fix gnocchiclient creation 4c3c84d Fix DEFAULT_SCHEMA to validate host_aggreates 8f585c3 Updated from global requirements bbfd671 Modify display_name in strategy documentation 162aaa7 [Trivialfix]Fix typos in watcher 4cb2b45 Restrict existing strategies to their default scope cf92ece Update default Nova API version to 2.53(Pike) b7c4a04 Fix to use . to source script files 0329daf Fix to use "." to source script files e73ead4 Update the documentation link for doc migration 62822fa Updated from global requirements 1c5e254 Updated from global requirements 39e200e Remove unnecessary dict.keys() method calls (api) d5bcd37 Update the documention for doc migration 0c4b439 Remove watcher_tempest_plugin 0e43504 Updated from global requirements 322843b Fix KeyError exception f76a628 Remove pbr warnerrors 965af1b Adjust the action state judgment logic ab64dab Update reno for stable/pike 5c86a54 workload balance base on cpu or ram util 5cc4716 Fix gnocchi repository URL in local.conf.controller b532355 Removed unnecessary setUp calls in tests Diffstat (except docs and test files) ------------------------------------- devstack/local.conf.controller | 10 +- devstack/plugin.sh | 2 +- .../action_plan-cancel-end.json | 55 ++++ .../action_plan-cancel-error.json | 65 ++++ .../action_plan-cancel-start.json | 55 ++++ .../contributor/plugin/scoring-engine-plugin.rst | 2 +- .../strategies/basic-server-consolidation.rst | 4 +- .../strategies/vm_workload_consolidation.rst | 4 +- rally-jobs/README.rst | 2 +- ...e-base-on-cpu-or-ram-util-3ff4ee968c32b2ed.yaml | 7 + releasenotes/source/conf.py | 5 +- releasenotes/source/index.rst | 1 + releasenotes/source/pike.rst | 6 + requirements.txt | 52 ++-- setup.cfg | 6 - test-requirements.txt | 13 +- watcher/api/controllers/v1/audit_template.py | 2 +- watcher/api/controllers/v1/goal.py | 2 +- watcher/api/controllers/v1/service.py | 4 +- watcher/api/controllers/v1/strategy.py | 4 +- watcher/api/controllers/v1/utils.py | 2 +- watcher/api/scheduling.py | 2 +- watcher/applier/action_plan/default.py | 32 +- watcher/applier/actions/change_node_power_state.py | 25 +- watcher/applier/actions/migration.py | 3 +- watcher/applier/workflow_engine/base.py | 61 +++- watcher/applier/workflow_engine/default.py | 17 +- watcher/common/clients.py | 6 +- watcher/common/context.py | 4 +- watcher/common/exception.py | 4 + watcher/common/nova_helper.py | 10 +- watcher/common/policy.py | 2 +- watcher/common/utils.py | 2 - watcher/conf/__init__.py | 2 - watcher/conf/_opts.py | 4 +- watcher/conf/gnocchi_client.py | 6 +- watcher/conf/nova_client.py | 2 +- watcher/conf/utils.py | 36 --- .../d09a5945e4a0_add_action_description_table.py | 30 +- watcher/db/sqlalchemy/migration.py | 2 +- watcher/decision_engine/audit/base.py | 7 +- .../decision_engine/goal/efficacy/indicators.py | 32 -- watcher/decision_engine/model/collector/base.py | 2 +- watcher/decision_engine/model/collector/nova.py | 12 +- watcher/decision_engine/model/element/node.py | 2 +- watcher/decision_engine/model/notification/nova.py | 4 +- watcher/decision_engine/planner/weight.py | 1 + watcher/decision_engine/scope/default.py | 50 ++- .../strategy/strategies/basic_consolidation.py | 18 +- .../strategy/strategies/noisy_neighbor.py | 2 +- .../strategy/strategies/outlet_temp_control.py | 13 +- .../strategy/strategies/saving_energy.py | 36 +++ .../strategy/strategies/uniform_airflow.py | 13 +- .../strategies/vm_workload_consolidation.py | 24 +- .../strategy/strategies/workload_balance.py | 97 ++++-- .../strategy/strategies/workload_stabilization.py | 6 +- watcher/decision_engine/sync.py | 8 + watcher/notifications/action.py | 58 ++++ watcher/notifications/action_plan.py | 60 ++++ watcher/objects/fields.py | 5 +- watcher/objects/utils.py | 2 +- .../actions/test_change_node_power_state.py | 23 +- .../messaging/test_trigger_action_plan_endpoint.py | 3 - .../test_default_workflow_engine.py | 5 +- .../test_taskflow_action_container.py | 31 ++ .../decision_engine/audit/test_audit_handlers.py | 2 - .../decision_engine/cluster/test_nova_cdmc.py | 4 - .../decision_engine/model/ceilometer_metrics.py | 16 + .../model/data/scenario_1_with_metrics.xml | 4 +- .../model/data/scenario_6_with_2_nodes.xml | 8 +- .../decision_engine/scoring/test_dummy_scorer.py | 3 - .../scoring/test_dummy_scoring_container.py | 3 - .../scoring/test_scoring_factory.py | 3 - .../strategy/selector/test_strategy_selector.py | 3 - .../strategy/strategies/test_workload_balance.py | 26 +- .../notifications/test_action_notification.py | 130 ++++++++ .../notifications/test_action_plan_notification.py | 161 ++++++++++ watcher/version.py | 2 +- watcher_tempest_plugin/README.rst | 158 ---------- watcher_tempest_plugin/__init__.py | 0 watcher_tempest_plugin/config.py | 23 -- watcher_tempest_plugin/infra_optim_clients.py | 42 --- watcher_tempest_plugin/plugin.py | 34 --- watcher_tempest_plugin/services/__init__.py | 0 .../services/infra_optim/__init__.py | 0 .../services/infra_optim/base.py | 211 ------------- .../services/infra_optim/v1/__init__.py | 0 .../services/infra_optim/v1/json/__init__.py | 0 .../services/infra_optim/v1/json/client.py | 331 -------------------- .../scenario/test_execute_workload_balancing.py | 198 ------------ 158 files changed, 1555 insertions(+), 3780 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 0a62ff1..ba9a638 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,7 @@ -apscheduler # MIT License -enum34;python_version=='2.7' or python_version=='2.6' or python_version=='3.3' # BSD -jsonpatch>=1.1 # BSD -keystoneauth1>=3.1.0 # Apache-2.0 -jsonschema!=2.5.0,<3.0.0,>=2.0.0 # MIT -keystonemiddleware>=4.12.0 # Apache-2.0 -lxml!=3.7.0,>=2.3 # BSD +apscheduler>=3.0.5 # MIT License +enum34>=1.0.4;python_version=='2.7' or python_version=='2.6' or python_version=='3.3' # BSD +jsonpatch>=1.16 # BSD +keystoneauth1>=3.2.0 # Apache-2.0 +jsonschema<3.0.0,>=2.6.0 # MIT +keystonemiddleware>=4.17.0 # Apache-2.0 +lxml!=3.7.0,>=3.4.1 # BSD @@ -13,8 +13,8 @@ croniter>=0.3.4 # MIT License -oslo.concurrency>=3.8.0 # Apache-2.0 -oslo.cache>=1.5.0 # Apache-2.0 -oslo.config!=4.3.0,!=4.4.0,>=4.0.0 # Apache-2.0 -oslo.context>=2.14.0 # Apache-2.0 -oslo.db>=4.24.0 # Apache-2.0 -oslo.i18n!=3.15.2,>=2.1.0 # Apache-2.0 -oslo.log>=3.22.0 # Apache-2.0 -oslo.messaging!=5.25.0,>=5.24.2 # Apache-2.0 +oslo.concurrency>=3.20.0 # Apache-2.0 +oslo.cache>=1.26.0 # Apache-2.0 +oslo.config>=4.6.0 # Apache-2.0 +oslo.context!=2.19.1,>=2.14.0 # Apache-2.0 +oslo.db>=4.27.0 # Apache-2.0 +oslo.i18n>=3.15.3 # Apache-2.0 +oslo.log>=3.30.0 # Apache-2.0 +oslo.messaging>=5.29.0 # Apache-2.0 @@ -22,5 +22,5 @@ oslo.policy>=1.23.0 # Apache-2.0 -oslo.reports>=0.6.0 # Apache-2.0 -oslo.serialization!=2.19.1,>=1.10.0 # Apache-2.0 -oslo.service>=1.10.0 # Apache-2.0 -oslo.utils>=3.20.0 # Apache-2.0 -oslo.versionedobjects>=1.17.0 # Apache-2.0 +oslo.reports>=1.18.0 # Apache-2.0 +oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0 +oslo.service>=1.24.0 # Apache-2.0 +oslo.utils>=3.28.0 # Apache-2.0 +oslo.versionedobjects>=1.28.0 # Apache-2.0 @@ -32 +32 @@ voluptuous>=0.8.9 # BSD License -gnocchiclient>=2.7.0 # Apache-2.0 +gnocchiclient>=3.3.1 # Apache-2.0 @@ -34 +34 @@ python-ceilometerclient>=2.5.0 # Apache-2.0 -python-cinderclient>=3.1.0 # Apache-2.0 +python-cinderclient>=3.2.0 # Apache-2.0 @@ -39,2 +39,2 @@ python-neutronclient>=6.3.0 # Apache-2.0 -python-novaclient>=9.0.0 # Apache-2.0 -python-openstackclient!=3.10.0,>=3.3.0 # Apache-2.0 +python-novaclient>=9.1.0 # Apache-2.0 +python-openstackclient>=3.12.0 # Apache-2.0 @@ -47,2 +47,2 @@ WebOb>=1.7.1 # MIT -WSME>=0.8 # MIT -networkx>=1.10 # BSD +WSME>=0.8.0 # MIT +networkx<2.0,>=1.10 # BSD diff --git a/test-requirements.txt b/test-requirements.txt index 9283979..c2aae07 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -6 +6 @@ coverage!=4.4,>=4.0 # Apache-2.0 -doc8 # Apache-2.0 +doc8>=0.6.0 # Apache-2.0 @@ -9 +9 @@ hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 -mock>=2.0 # BSD +mock>=2.0.0 # BSD @@ -11,2 +11 @@ oslotest>=1.10.0 # Apache-2.0 -os-testr>=0.8.0 # Apache-2.0 -python-subunit>=0.0.18 # Apache-2.0/BSD +os-testr>=1.0.0 # Apache-2.0 @@ -18 +17 @@ testtools>=1.4.0 # MIT -openstackdocstheme>=1.16.0 # Apache-2.0 +openstackdocstheme>=1.17.0 # Apache-2.0 @@ -20 +19 @@ sphinx>=1.6.2 # BSD -sphinxcontrib-pecanwsme>=0.8 # Apache-2.0 +sphinxcontrib-pecanwsme>=0.8.0 # Apache-2.0 @@ -24 +23 @@ sphinxcontrib-pecanwsme>=0.8 # Apache-2.0 -reno!=2.3.1,>=1.8.0 # Apache-2.0 +reno>=2.5.0 # Apache-2.0