We are psyched to announce the release of: python-watcher 5.0.0: OpenStack Watcher provides a flexible and scalable resource optimization service for multi-tenant OpenStack- based clouds. This release is part of the victoria release series. The source is available from: https://opendev.org/openstack/python-watcher Download the package from: https://tarballs.openstack.org/watcher/ For more details, please see below. Changes in python-watcher 4.0.0.0rc1..5.0.0 ------------------------------------------- 583c9460 Use importlib to take place of im module ed591453 Native Zuul v3 watcher-grenade job + some cleanup 19adfda3 option to rollback action_plan when it fails 1667046f resize action don't support revert 3f7a508a Watcher API supports strategy name when creating audit template 57f55190 Revert "Don't revert Migrate action" ae678dfa remove mox3 dbd86be3 voting watcher-grenade 9f0138e1 Check if scope is None 097ac06f Use uwsgi binary from path and mark grenade non-voting 0869b1c7 Use unittest.mock instead of mock b0c411b2 Cap jsonschema 3.2.0 as the minimal version 4a1915be Compatible with old scope format 75102785 Use unittest.mock instead of third party mock 1ff94059 Switch to newer openstackdocstheme and reno versions 9d495618 Fix requirements check c6d2690a Remove translation sections from setup.cfg 5c34b6bc hacking: force explicit import of python's mock 8a36ad5f Use unittest.mock instead of third party mock 6ff95efa Fix hacking min version to 3.0.1 0b4c4f1d Monkey patch original current_thread _active 96525714 Add py38 package metadata f0f15f89 Remove future imports 075e374b Remove Babel requirement a30dbdd7 Imported Translations from Zanata 60a829e9 Add Python3 victoria unit tests 74cfa0fc Update master for stable/ussuri 5071c8f8 Remove six[8] remove requirement&low-requirement 0ef0f165 Remove six[7] Diffstat (except docs and test files) ------------------------------------- .zuul.yaml | 27 +++------ api-ref/source/conf.py | 25 ++------ babel.cfg | 2 - devstack/lib/watcher | 2 +- lower-constraints.txt | 13 +---- .../legacy/grenade-devstack-watcher/post.yaml | 15 ----- playbooks/legacy/grenade-devstack-watcher/run.yaml | 60 ------------------- releasenotes/source/conf.py | 7 ++- releasenotes/source/index.rst | 1 + releasenotes/source/ussuri.rst | 6 ++ requirements.txt | 5 +- setup.cfg | 16 +---- test-requirements.txt | 3 +- tox.ini | 3 +- watcher/api/config.py | 2 - watcher/api/controllers/v1/audit_template.py | 20 +++++-- watcher/api/hooks.py | 2 +- watcher/api/middleware/parsable_error.py | 7 +-- watcher/api/scheduling.py | 3 +- watcher/applier/action_plan/base.py | 4 +- watcher/applier/actions/base.py | 4 +- watcher/applier/actions/factory.py | 2 - watcher/applier/actions/migration.py | 2 +- watcher/applier/actions/resize.py | 2 +- watcher/applier/base.py | 4 +- watcher/applier/loading/default.py | 3 - watcher/applier/workflow_engine/base.py | 4 +- watcher/applier/workflow_engine/default.py | 17 +++++- watcher/cmd/__init__.py | 7 +++ watcher/common/context.py | 3 +- watcher/common/loader/base.py | 6 +- watcher/common/loader/default.py | 2 - watcher/common/loader/loadable.py | 8 +-- watcher/common/service_manager.py | 4 +- watcher/common/utils.py | 5 +- watcher/conf/applier.py | 11 +++- watcher/db/api.py | 4 +- watcher/db/purge.py | 3 - watcher/decision_engine/audit/base.py | 12 ++-- watcher/decision_engine/datasources/grafana.py | 3 +- watcher/decision_engine/goal/base.py | 4 +- watcher/decision_engine/goal/efficacy/base.py | 5 +- .../decision_engine/goal/efficacy/indicators.py | 4 +- watcher/decision_engine/loading/default.py | 3 - watcher/decision_engine/model/base.py | 4 +- watcher/decision_engine/model/collector/base.py | 5 +- watcher/decision_engine/model/collector/cinder.py | 7 ++- watcher/decision_engine/model/collector/ironic.py | 3 + watcher/decision_engine/model/collector/nova.py | 3 + .../model/element/baremetal_resource.py | 4 +- watcher/decision_engine/model/element/base.py | 4 +- .../model/element/compute_resource.py | 4 +- .../model/element/storage_resource.py | 4 +- watcher/decision_engine/model/model_root.py | 25 ++++---- watcher/decision_engine/model/notification/base.py | 4 +- .../decision_engine/model/notification/cinder.py | 4 +- .../model/notification/filtering.py | 3 +- watcher/decision_engine/planner/base.py | 4 +- watcher/decision_engine/scope/base.py | 4 +- watcher/decision_engine/scoring/base.py | 7 +-- watcher/decision_engine/solution/base.py | 4 +- .../solution/solution_comparator.py | 4 +- .../decision_engine/solution/solution_evaluator.py | 4 +- watcher/decision_engine/strategy/context/base.py | 4 +- watcher/decision_engine/strategy/selection/base.py | 4 +- .../decision_engine/strategy/strategies/base.py | 31 ++++------ .../strategies/vm_workload_consolidation.py | 5 +- .../strategy/strategies/workload_balance.py | 2 - .../strategy/strategies/zone_migration.py | 7 +-- watcher/decision_engine/threading.py | 4 +- watcher/hacking/checks.py | 28 +++++++++ watcher/locale/de/LC_MESSAGES/watcher.po | 68 ++++++++++------------ watcher/locale/en_GB/LC_MESSAGES/watcher.po | 39 +------------ watcher/objects/fields.py | 7 +-- .../action_plan/test_default_action_handler.py | 2 +- .../actions/loading/test_default_actions_loader.py | 1 - .../actions/test_change_node_power_state.py | 3 +- .../actions/test_change_nova_service_state.py | 3 +- .../messaging/test_trigger_action_plan_endpoint.py | 2 +- .../loading/test_default_engine_loader.py | 1 - .../test_default_workflow_engine.py | 7 +-- .../test_taskflow_action_container.py | 53 ++++++++++++++++- .../decision_engine/audit/test_audit_handlers.py | 2 +- .../decision_engine/cluster/test_cinder_cdmc.py | 2 +- .../cluster/test_cluster_data_model_collector.py | 38 +++++++++++- .../decision_engine/cluster/test_nova_cdmc.py | 2 +- .../datasources/grafana_translators/test_base.py | 2 +- .../grafana_translators/test_influxdb.py | 2 +- .../datasources/test_ceilometer_helper.py | 5 +- .../datasources/test_gnocchi_helper.py | 3 +- .../datasources/test_grafana_helper.py | 2 +- .../decision_engine/datasources/test_manager.py | 4 +- .../datasources/test_monasca_helper.py | 3 +- .../loading/test_collector_loader.py | 2 +- .../loading/test_default_strategy_loader.py | 2 +- .../decision_engine/loading/test_goal_loader.py | 2 +- .../messaging/test_audit_endpoint.py | 2 +- .../messaging/test_data_model_endpoint.py | 2 +- .../model/faker_cluster_and_metrics.py | 2 +- .../decision_engine/model/faker_cluster_state.py | 2 +- .../notification/test_cinder_notifications.py | 2 +- .../model/notification/test_notifications.py | 2 +- .../model/notification/test_nova_notifications.py | 2 +- .../planner/test_node_resource_consolidation.py | 2 +- .../decision_engine/planner/test_weight_planner.py | 2 +- .../planner/test_workload_stabilization_planner.py | 2 +- .../solution/test_default_solution.py | 2 +- .../strategy/context/test_strategy_context.py | 2 +- .../strategy/selector/test_strategy_selector.py | 2 +- .../strategy/strategies/test_actuator.py | 2 +- .../strategy/strategies/test_base.py | 2 +- .../strategies/test_basic_consolidation.py | 2 +- .../strategy/strategies/test_dummy_strategy.py | 2 +- .../strategy/strategies/test_dummy_with_scorer.py | 2 +- .../strategy/strategies/test_host_maintenance.py | 2 +- .../strategies/test_node_resource_consolidation.py | 2 +- .../strategy/strategies/test_noisy_neighbor.py | 2 +- .../strategies/test_outlet_temp_control.py | 2 +- .../strategy/strategies/test_saving_energy.py | 2 +- .../strategies/test_storage_capacity_balance.py | 2 +- .../strategy/strategies/test_strategy_endpoint.py | 2 +- .../strategy/strategies/test_uniform_airflow.py | 2 +- .../strategies/test_vm_workload_consolidation.py | 2 +- .../strategy/strategies/test_workload_balance.py | 2 +- .../strategies/test_workload_stabilization.py | 2 +- .../strategy/strategies/test_zone_migration.py | 2 +- .../notifications/test_action_notification.py | 3 +- .../notifications/test_action_plan_notification.py | 3 +- .../notifications/test_service_notifications.py | 2 +- 192 files changed, 531 insertions(+), 592 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index c5bf3b3e..14d78ac5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8 +8 @@ keystoneauth1>=3.4.0 # Apache-2.0 -jsonschema>=2.6.0 # MIT +jsonschema>=3.2.0 # MIT @@ -42 +41,0 @@ python-ironicclient>=2.5.0 # Apache-2.0 -six>=1.11.0 # MIT @@ -48 +47 @@ WSME>=0.9.2 # MIT -networkx>=2.2;python_version>='3.4' # BSD +networkx>=2.2 # BSD diff --git a/test-requirements.txt b/test-requirements.txt index 69ba46a6..1eda92b7 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -8,2 +8 @@ freezegun>=0.3.10 # Apache-2.0 -hacking>=3.0,<3.1.0 # Apache-2.0 -mock>=2.0.0 # BSD +hacking>=3.0.1,<3.1.0 # Apache-2.0