We are stoked to announce the release of: python-watcher 0.28.0: Watcher takes advantage of CEP and ML algorithms/metaheuristics to improve physical resources usage through better VM placement. Watcher can improve your cloud optimization by reducing energy footprint and increasing profits. This release is part of the newton release series. With source available at: https://github.com/openstack/watcher Please report issues through launchpad: http://bugs.launchpad.net/watcher For more details, please see below. Changes in python-watcher 0.27.0..0.28.0 ---------------------------------------- a68eb0d Update unitaty tests to verify strategy and goal name 517f1d0 Bad goal and strategy name for Airflow Optimization 76a61e2 Fix unittest in test_api.py dcf5207 Optimize local.conf.controller file to enable watche-dashboard 1de0008 Add continuously optimization 533a4c7 Add Desktop Service Store to .gitignore file 1d3891e Documentation for strategy parameters f13d6dd Updated from global requirements e7bbf1d Add new documentation section for Watcher policies rules bc06a7d Add policies for API access control to watcher project. 1a1d9d0 Fix watcher doc build error 47ff9bb Fix field type to audit_type ca5b849 Remove duplicate unittest 2272b51 Fix link error in base-setup.rst f6b1b51 Fix failing Tempest tests 0b29a83 Enable strategy parameters 117079f Update Docs links to docs.openstack.org d03e1d5 add dependency for 3rd-party plugins b4c5e2b Make default Planner generic to handle new action 369428c Modify IRC weekly meeting time 2381a67 Uniform Airflow migration strategy implementation da8b24f Updated from global requirements 37595e9 Centralize plugin loaders in watcher/applier cb693e4 Add importing modules instead of classes 9918f59 Centralize plugin loaders in decision engine 07c7ba9 Add goal_name field in strategy 73cf5a9 Updated from global requirements 80abcd6 Use disabled/enabled to change service state b3c2d3a Check if nova-service is already disabled 4fc3307 Add bandit in tox -e pep8 77c07a4 Added filter operators 7b403c0 Fix StrategyContext to use the strategy_id in the Audit Template e8fc4a1 Use proper theme for release notes 921e531 Fix releasenotes generation 45801cf Documentation on goal and efficacy 442512c Added efficacy indicators to /action_plans 2b95a4c Added pre/post execution methods to strategies 84b12f8 Added EfficacyIndicator object f665d83 Added efficacy specification to /goals 5e16e03 Add reno for release notes management eab47bf Added EfficacyIndicator model in DB 2544327 Decoupled Goal from Strategy 2412df4 Fix broken link in doc cb342b4 Added missing config section for autogeneration 1a4d5a3 Updated from global requirements 8b8d2f0 Added audit_template filter to /audits/detail ca37358 Add fix for hardware.cpu.util meter in sd-strategy 5d66f66 Add fix for __init__() error d9a2b88 Updated tempest test creds retrieval mechanism 164a802 Replace assertEqual(None, *) with assertIsNone in tests dbdf690 Remove direct access to dbapi Diffstat (except docs and test files) ------------------------------------- .gitignore | 7 + README.rst | 2 +- devstack/local.conf.controller | 3 + ...from_audit_execution_to_actionplan_creation.txt | 44 ++ .../sequence_trigger_audit_in_decision_engine.txt | 71 +- .../image_src/plantuml/watcher_class_diagram.txt | 87 --- .../plantuml/watcher_db_schema_diagram.txt | 123 ++++ ...from_audit_execution_to_actionplan_creation.png | Bin 0 -> 47585 bytes .../sequence_trigger_audit_in_decision_engine.png | Bin 56776 -> 83923 bytes etc/watcher/policy.json | 34 +- etc/watcher/watcher-config-generator.conf | 9 +- releasenotes/notes/.placeholder | 0 releasenotes/source/_static/.placeholder | 0 releasenotes/source/conf.py | 244 +++++++ releasenotes/source/index.rst | 10 + releasenotes/source/unreleased.rst | 5 + requirements.txt | 15 +- setup.cfg | 11 +- test-requirements.txt | 10 +- tox.ini | 10 +- watcher/api/app.py | 2 +- watcher/api/config.py | 2 +- watcher/api/controllers/v1/__init__.py | 3 +- watcher/api/controllers/v1/action.py | 16 +- watcher/api/controllers/v1/action_plan.py | 126 +++- watcher/api/controllers/v1/audit.py | 126 +++- watcher/api/controllers/v1/audit_template.py | 47 +- watcher/api/controllers/v1/efficacy_indicator.py | 72 ++ watcher/api/controllers/v1/goal.py | 52 +- watcher/api/controllers/v1/strategy.py | 42 +- watcher/api/controllers/v1/utils.py | 19 + watcher/api/hooks.py | 5 +- watcher/applier/actions/factory.py | 2 +- watcher/applier/actions/loading/__init__.py | 0 watcher/applier/actions/loading/default.py | 25 - watcher/applier/default.py | 10 +- watcher/applier/loading/__init__.py | 0 watcher/applier/loading/default.py | 29 + .../applier/workflow_engine/loading/__init__.py | 0 watcher/applier/workflow_engine/loading/default.py | 26 - watcher/cmd/api.py | 4 +- watcher/common/ceilometer_helper.py | 4 +- watcher/common/context.py | 8 +- watcher/common/exception.py | 35 + watcher/common/loader/default.py | 1 - watcher/common/policy.py | 101 +-- watcher/common/utils.py | 23 + watcher/db/api.py | 108 ++- watcher/db/sqlalchemy/api.py | 425 ++++++------ watcher/db/sqlalchemy/models.py | 29 +- watcher/decision_engine/audit/base.py | 84 +++ watcher/decision_engine/audit/continuous.py | 126 ++++ watcher/decision_engine/audit/default.py | 87 --- watcher/decision_engine/audit/oneshot.py | 26 + watcher/decision_engine/goal/__init__.py | 26 + watcher/decision_engine/goal/base.py | 68 ++ watcher/decision_engine/goal/efficacy/__init__.py | 0 watcher/decision_engine/goal/efficacy/base.py | 84 +++ .../decision_engine/goal/efficacy/indicators.py | 132 ++++ watcher/decision_engine/goal/efficacy/specs.py | 52 ++ watcher/decision_engine/goal/goals.py | 164 +++++ watcher/decision_engine/loading/__init__.py | 0 watcher/decision_engine/loading/default.py | 41 ++ .../decision_engine/messaging/audit_endpoint.py | 12 +- watcher/decision_engine/messaging/events.py | 4 +- watcher/decision_engine/model/hypervisor.py | 14 +- watcher/decision_engine/model/hypervisor_state.py | 4 +- watcher/decision_engine/model/mapping.py | 4 +- watcher/decision_engine/model/power_state.py | 4 +- watcher/decision_engine/model/resource.py | 4 +- watcher/decision_engine/model/vm.py | 8 +- watcher/decision_engine/model/vm_state.py | 4 +- watcher/decision_engine/planner/default.py | 62 +- .../decision_engine/planner/loading/__init__.py | 0 watcher/decision_engine/planner/loading/default.py | 26 - watcher/decision_engine/planner/manager.py | 2 +- watcher/decision_engine/solution/base.py | 90 +-- watcher/decision_engine/solution/default.py | 14 +- watcher/decision_engine/solution/efficacy.py | 105 +++ .../decision_engine/strategy/context/default.py | 39 +- .../decision_engine/strategy/loading/__init__.py | 0 .../decision_engine/strategy/loading/default.py | 29 - .../decision_engine/strategy/selection/default.py | 2 +- .../strategy/strategies/__init__.py | 10 +- .../decision_engine/strategy/strategies/base.py | 166 +++-- .../strategy/strategies/basic_consolidation.py | 199 +++--- .../strategy/strategies/dummy_strategy.py | 43 +- .../strategy/strategies/outlet_temp_control.py | 95 +-- .../strategy/strategies/uniform_airflow.py | 326 +++++++++ .../strategies/vm_workload_consolidation.py | 88 +-- .../strategy/strategies/workload_balance.py | 131 ++-- .../strategy/strategies/workload_stabilization.py | 113 ++-- watcher/decision_engine/sync.py | 67 +- watcher/doc.py | 2 +- watcher/locale/watcher.pot | 331 ++++++--- .../cluster_model_collector/manager.py | 1 + watcher/objects/__init__.py | 6 +- watcher/objects/action_plan.py | 20 +- watcher/objects/audit.py | 4 +- watcher/objects/efficacy_indicator.py | 197 ++++++ watcher/objects/goal.py | 1 + watcher/objects/strategy.py | 1 + watcher/objects/utils.py | 9 + watcher/opts.py | 15 +- .../actions/loading/test_default_actions_loader.py | 2 +- .../loading/test_default_engine_loader.py | 2 +- .../messaging/event/test_event_dispatcher.py | 46 +- .../common/messaging/test_notification_handler.py | 9 +- .../decision_engine/audit/test_audit_handlers.py | 139 ++++ .../audit/test_default_audit_handler.py | 69 -- .../messaging/test_audit_endpoint.py | 54 +- .../decision_engine/model/test_named_element.py | 6 +- .../planner/test_default_planner.py | 79 ++- .../planner/test_default_planner_loader.py | 2 +- .../solution/test_default_solution.py | 5 +- .../strategy/context/test_strategy_context.py | 95 ++- .../loading/test_default_strategy_loader.py | 44 +- .../strategy/selector/test_strategy_selector.py | 11 +- .../strategies/faker_cluster_and_metrics.py | 2 +- .../strategy/strategies/faker_cluster_state.py | 70 ++ .../strategy/strategies/faker_metrics_collector.py | 44 +- .../strategies/test_basic_consolidation.py | 188 +++--- .../strategy/strategies/test_dummy_strategy.py | 41 +- .../strategies/test_outlet_temp_control.py | 106 +-- .../strategy/strategies/test_uniform_airflow.py | 174 +++++ .../strategies/test_vm_workload_consolidation.py | 226 +++---- .../strategy/strategies/test_workload_balance.py | 120 ++-- .../strategies/test_workload_stabilization.py | 188 +++--- watcher_tempest_plugin/infra_optim_clients.py | 2 +- .../services/infra_optim/v1/json/client.py | 2 +- 193 files changed, 7884 insertions(+), 2418 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 13ce8ab..74cb8d3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,0 +5 @@ +apscheduler # MIT License @@ -7 +8 @@ jsonpatch>=1.1 # BSD -keystoneauth1>=2.1.0 # Apache-2.0 +keystoneauth1>=2.7.0 # Apache-2.0 @@ -11,2 +12,2 @@ oslo.cache>=1.5.0 # Apache-2.0 -oslo.config>=3.9.0 # Apache-2.0 -oslo.context>=2.2.0 # Apache-2.0 +oslo.config>=3.10.0 # Apache-2.0 +oslo.context>=2.4.0 # Apache-2.0 @@ -16,2 +17,2 @@ oslo.log>=1.14.0 # Apache-2.0 -oslo.messaging>=4.5.0 # Apache-2.0 -oslo.policy>=0.5.0 # Apache-2.0 +oslo.messaging>=5.2.0 # Apache-2.0 +oslo.policy>=1.9.0 # Apache-2.0 @@ -20 +21 @@ oslo.service>=1.10.0 # Apache-2.0 -oslo.utils>=3.5.0 # Apache-2.0 +oslo.utils>=3.14.0 # Apache-2.0 @@ -27 +28 @@ python-ceilometerclient>=2.2.1 # Apache-2.0 -python-cinderclient!=1.7.0,>=1.6.0 # Apache-2.0 +python-cinderclient!=1.7.0,!=1.7.1,>=1.6.0 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index 0cc0331..27e4a7f 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -12 +12 @@ oslotest>=1.10.0 # Apache-2.0 -os-testr>=0.4.1 # Apache-2.0 +os-testr>=0.7.0 # Apache-2.0 @@ -20 +20 @@ oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0 -sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2 # BSD +sphinx!=1.3b1,<1.3,>=1.2.1 # BSD @@ -21,0 +22,6 @@ sphinxcontrib-pecanwsme>=0.8 # Apache-2.0 + +# releasenotes +reno>=1.8.0 # Apache2 + +# bandit +bandit>=1.0.1 # Apache-2.0