python-watcher 15.1.0__py3-none-any.whl → 16.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {python_watcher-15.1.0.data → python_watcher-16.0.0.data}/data/etc/watcher/oslo-config-generator/watcher.conf +2 -0
- {python_watcher-15.1.0.dist-info → python_watcher-16.0.0.dist-info}/METADATA +3 -7
- python_watcher-16.0.0.dist-info/RECORD +583 -0
- {python_watcher-15.1.0.dist-info → python_watcher-16.0.0.dist-info}/entry_points.txt +3 -0
- {python_watcher-15.1.0.dist-info → python_watcher-16.0.0.dist-info}/licenses/AUTHORS +3 -0
- python_watcher-16.0.0.dist-info/pbr.json +1 -0
- watcher/_i18n.py +0 -1
- watcher/api/acl.py +0 -1
- watcher/api/app.py +23 -4
- watcher/api/app.wsgi +0 -1
- watcher/api/config.py +0 -1
- watcher/api/controllers/base.py +7 -8
- watcher/api/controllers/link.py +0 -1
- watcher/api/controllers/root.py +5 -5
- watcher/api/controllers/v1/__init__.py +14 -14
- watcher/api/controllers/v1/action.py +2 -3
- watcher/api/controllers/v1/action_plan.py +2 -3
- watcher/api/controllers/v1/audit.py +7 -10
- watcher/api/controllers/v1/audit_template.py +4 -5
- watcher/api/controllers/v1/collection.py +3 -5
- watcher/api/controllers/v1/data_model.py +1 -2
- watcher/api/controllers/v1/efficacy_indicator.py +1 -2
- watcher/api/controllers/v1/goal.py +2 -3
- watcher/api/controllers/v1/scoring_engine.py +3 -4
- watcher/api/controllers/v1/service.py +3 -4
- watcher/api/controllers/v1/strategy.py +3 -4
- watcher/api/controllers/v1/types.py +1 -1
- watcher/api/controllers/v1/utils.py +2 -2
- watcher/api/controllers/v1/versions.py +2 -4
- watcher/api/controllers/v1/webhooks.py +1 -1
- watcher/api/hooks.py +0 -1
- watcher/api/middleware/auth_token.py +2 -3
- watcher/api/middleware/parsable_error.py +3 -4
- watcher/applier/action_plan/base.py +1 -2
- watcher/applier/action_plan/default.py +1 -3
- watcher/applier/actions/base.py +1 -2
- watcher/applier/actions/change_node_power_state.py +0 -1
- watcher/applier/actions/change_nova_service_state.py +16 -2
- watcher/applier/actions/factory.py +1 -2
- watcher/applier/actions/migration.py +78 -26
- watcher/applier/actions/nop.py +0 -1
- watcher/applier/actions/resize.py +39 -14
- watcher/applier/actions/sleep.py +0 -1
- watcher/applier/actions/stop.py +31 -28
- watcher/applier/actions/volume_migration.py +58 -3
- watcher/applier/base.py +1 -2
- watcher/applier/default.py +1 -2
- watcher/applier/loading/default.py +2 -2
- watcher/applier/manager.py +0 -1
- watcher/applier/messaging/trigger.py +11 -5
- watcher/applier/rpcapi.py +1 -2
- watcher/applier/service.py +55 -0
- watcher/applier/service_monitor.py +90 -0
- watcher/applier/sync.py +10 -4
- watcher/applier/workflow_engine/base.py +55 -87
- watcher/applier/workflow_engine/default.py +22 -10
- watcher/cmd/dbmanage.py +3 -4
- watcher/cmd/eventlet/api.py +0 -5
- watcher/cmd/eventlet/applier.py +3 -4
- watcher/cmd/eventlet/decisionengine.py +0 -1
- watcher/cmd/status.py +2 -2
- watcher/cmd/sync.py +0 -1
- watcher/common/cinder_helper.py +64 -23
- watcher/common/clients.py +73 -131
- watcher/common/config.py +22 -0
- watcher/common/context.py +1 -1
- watcher/common/exception.py +18 -2
- watcher/common/executor.py +44 -3
- watcher/common/ironic_helper.py +1 -2
- watcher/common/keystone_helper.py +1 -1
- watcher/common/loader/base.py +1 -2
- watcher/common/loader/default.py +1 -2
- watcher/common/loader/loadable.py +4 -5
- watcher/common/metal_helper/base.py +3 -2
- watcher/common/metal_helper/ironic.py +6 -2
- watcher/common/metal_helper/maas.py +5 -2
- watcher/common/nova_helper.py +826 -495
- watcher/common/oslo_service_helper.py +0 -1
- watcher/common/placement_helper.py +7 -7
- watcher/common/scheduling.py +5 -1
- watcher/common/service.py +105 -5
- watcher/common/service_manager.py +1 -2
- watcher/common/utils.py +5 -8
- watcher/conf/__init__.py +0 -7
- watcher/conf/api.py +0 -1
- watcher/conf/applier.py +5 -2
- watcher/conf/cinder_client.py +0 -1
- watcher/conf/clients_auth.py +0 -1
- watcher/conf/collector.py +9 -1
- watcher/conf/datasources.py +5 -5
- watcher/conf/db.py +1 -2
- watcher/conf/decision_engine.py +3 -5
- watcher/conf/exception.py +0 -1
- watcher/conf/gnocchi_client.py +0 -1
- watcher/conf/grafana_client.py +0 -1
- watcher/conf/grafana_translators.py +0 -1
- watcher/conf/ironic_client.py +0 -1
- watcher/conf/keystone_client.py +0 -1
- watcher/conf/nova.py +46 -1
- watcher/conf/nova_client.py +23 -4
- watcher/conf/opts.py +3 -3
- watcher/conf/paths.py +3 -7
- watcher/conf/planner.py +0 -1
- watcher/conf/plugins.py +0 -1
- watcher/conf/prometheus_client.py +90 -33
- watcher/conf/service.py +8 -2
- watcher/db/api.py +1 -1
- watcher/db/purge.py +4 -5
- watcher/db/sqlalchemy/alembic/script.py.mako +4 -4
- watcher/db/sqlalchemy/alembic/versions/15f7375ca737_change_efficiacy_indicator_decimals.py +3 -3
- watcher/db/sqlalchemy/alembic/versions/3cfc94cecf4e_add_name_for_audit.py +3 -3
- watcher/db/sqlalchemy/alembic/versions/4b16194c56bc_add_start_end_time.py +3 -3
- watcher/db/sqlalchemy/alembic/versions/52804f2498c4_add_hostname.py +3 -3
- watcher/db/sqlalchemy/alembic/versions/609bec748f2a_add_force_field.py +3 -3
- watcher/db/sqlalchemy/alembic/versions/7150a7d8f228_add_status_message_to_actionplan.py +4 -2
- watcher/db/sqlalchemy/alembic/versions/a86240e89a29_.py +4 -4
- watcher/db/sqlalchemy/api.py +11 -4
- watcher/db/sqlalchemy/job_store.py +2 -3
- watcher/db/sqlalchemy/models.py +4 -4
- watcher/decision_engine/audit/base.py +10 -3
- watcher/decision_engine/audit/continuous.py +2 -3
- watcher/decision_engine/audit/event.py +2 -3
- watcher/decision_engine/audit/oneshot.py +2 -3
- watcher/decision_engine/datasources/aetos.py +1 -1
- watcher/decision_engine/datasources/base.py +1 -2
- watcher/decision_engine/datasources/gnocchi.py +3 -4
- watcher/decision_engine/datasources/grafana.py +0 -2
- watcher/decision_engine/datasources/grafana_translator/base.py +1 -2
- watcher/decision_engine/datasources/grafana_translator/influxdb.py +1 -2
- watcher/decision_engine/datasources/manager.py +5 -19
- watcher/decision_engine/datasources/prometheus.py +15 -32
- watcher/decision_engine/datasources/prometheus_base.py +14 -19
- watcher/decision_engine/gmr.py +0 -1
- watcher/decision_engine/goal/__init__.py +0 -1
- watcher/decision_engine/goal/base.py +1 -2
- watcher/decision_engine/goal/efficacy/base.py +1 -2
- watcher/decision_engine/goal/efficacy/indicators.py +15 -16
- watcher/decision_engine/goal/efficacy/specs.py +0 -1
- watcher/decision_engine/goal/goals.py +0 -1
- watcher/decision_engine/loading/default.py +6 -7
- watcher/decision_engine/manager.py +0 -1
- watcher/decision_engine/messaging/audit_endpoint.py +2 -2
- watcher/decision_engine/messaging/data_model_endpoint.py +1 -2
- watcher/decision_engine/model/base.py +1 -2
- watcher/decision_engine/model/collector/base.py +7 -4
- watcher/decision_engine/model/collector/cinder.py +7 -3
- watcher/decision_engine/model/collector/ironic.py +8 -3
- watcher/decision_engine/model/collector/manager.py +1 -2
- watcher/decision_engine/model/collector/nova.py +52 -24
- watcher/decision_engine/model/element/__init__.py +0 -1
- watcher/decision_engine/model/element/baremetal_resource.py +0 -1
- watcher/decision_engine/model/element/base.py +5 -3
- watcher/decision_engine/model/element/compute_resource.py +0 -1
- watcher/decision_engine/model/element/instance.py +0 -1
- watcher/decision_engine/model/element/node.py +0 -1
- watcher/decision_engine/model/element/storage_resource.py +0 -1
- watcher/decision_engine/model/element/volume.py +0 -1
- watcher/decision_engine/model/model_root.py +32 -19
- watcher/decision_engine/model/notification/base.py +2 -3
- watcher/decision_engine/model/notification/cinder.py +3 -2
- watcher/decision_engine/model/notification/filtering.py +0 -1
- watcher/decision_engine/model/notification/nova.py +11 -10
- watcher/decision_engine/planner/base.py +0 -1
- watcher/decision_engine/planner/manager.py +1 -2
- watcher/decision_engine/planner/node_resource_consolidation.py +0 -1
- watcher/decision_engine/planner/weight.py +1 -2
- watcher/decision_engine/planner/workload_stabilization.py +4 -5
- watcher/decision_engine/rpcapi.py +1 -2
- watcher/decision_engine/scheduling.py +4 -34
- watcher/decision_engine/scope/baremetal.py +1 -2
- watcher/decision_engine/scope/base.py +1 -2
- watcher/decision_engine/scope/compute.py +1 -2
- watcher/decision_engine/scope/storage.py +1 -1
- watcher/decision_engine/scoring/base.py +0 -1
- watcher/decision_engine/scoring/dummy_scorer.py +0 -1
- watcher/decision_engine/scoring/dummy_scoring_container.py +1 -2
- watcher/decision_engine/scoring/scoring_factory.py +0 -1
- watcher/decision_engine/service.py +14 -2
- watcher/decision_engine/service_monitor.py +95 -0
- watcher/decision_engine/solution/base.py +1 -2
- watcher/decision_engine/solution/default.py +1 -2
- watcher/decision_engine/solution/efficacy.py +2 -3
- watcher/decision_engine/solution/solution_comparator.py +1 -2
- watcher/decision_engine/solution/solution_evaluator.py +1 -2
- watcher/decision_engine/strategy/common/level.py +0 -1
- watcher/decision_engine/strategy/context/base.py +1 -2
- watcher/decision_engine/strategy/context/default.py +1 -2
- watcher/decision_engine/strategy/selection/base.py +1 -2
- watcher/decision_engine/strategy/selection/default.py +1 -2
- watcher/decision_engine/strategy/strategies/__init__.py +0 -1
- watcher/decision_engine/strategy/strategies/actuation.py +0 -1
- watcher/decision_engine/strategy/strategies/base.py +5 -8
- watcher/decision_engine/strategy/strategies/basic_consolidation.py +3 -4
- watcher/decision_engine/strategy/strategies/dummy_strategy.py +0 -1
- watcher/decision_engine/strategy/strategies/dummy_with_resize.py +0 -1
- watcher/decision_engine/strategy/strategies/dummy_with_scorer.py +3 -4
- watcher/decision_engine/strategy/strategies/host_maintenance.py +2 -3
- watcher/decision_engine/strategy/strategies/node_resource_consolidation.py +1 -2
- watcher/decision_engine/strategy/strategies/noisy_neighbor.py +1 -2
- watcher/decision_engine/strategy/strategies/outlet_temp_control.py +1 -2
- watcher/decision_engine/strategy/strategies/saving_energy.py +1 -9
- watcher/decision_engine/strategy/strategies/storage_capacity_balance.py +2 -3
- watcher/decision_engine/strategy/strategies/uniform_airflow.py +1 -2
- watcher/decision_engine/strategy/strategies/vm_workload_consolidation.py +1 -2
- watcher/decision_engine/strategy/strategies/workload_balance.py +1 -2
- watcher/decision_engine/strategy/strategies/workload_stabilization.py +1 -2
- watcher/decision_engine/strategy/strategies/zone_migration.py +72 -39
- watcher/decision_engine/sync.py +1 -2
- watcher/decision_engine/threading.py +24 -9
- watcher/hacking/checks.py +13 -54
- watcher/notifications/__init__.py +0 -1
- watcher/notifications/action.py +6 -7
- watcher/notifications/action_plan.py +9 -10
- watcher/notifications/audit.py +6 -7
- watcher/notifications/base.py +5 -6
- watcher/notifications/goal.py +1 -2
- watcher/notifications/service.py +2 -3
- watcher/notifications/strategy.py +1 -2
- watcher/objects/action.py +1 -2
- watcher/objects/action_description.py +0 -1
- watcher/objects/action_plan.py +2 -3
- watcher/objects/audit.py +3 -4
- watcher/objects/audit_template.py +0 -1
- watcher/objects/base.py +1 -1
- watcher/objects/efficacy_indicator.py +0 -1
- watcher/objects/fields.py +3 -3
- watcher/objects/goal.py +0 -1
- watcher/objects/scoring_engine.py +0 -1
- watcher/objects/service.py +1 -2
- watcher/objects/strategy.py +0 -1
- watcher/tests/__init__.py +0 -36
- watcher/tests/{conf_fixture.py → fixtures/conf_fixture.py} +2 -2
- watcher/tests/fixtures/db_lock.py +81 -0
- watcher/tests/{fake_policy.py → fixtures/fake_policy.py} +1 -1
- watcher/tests/{fakes.py → fixtures/fakes.py} +12 -12
- watcher/tests/{policy_fixture.py → fixtures/policy_fixture.py} +1 -1
- watcher/tests/fixtures/watcher.py +2 -2
- watcher/tests/unit/__init__.py +36 -0
- watcher/tests/{api → unit/api}/base.py +6 -7
- watcher/tests/{api → unit/api}/test_base.py +1 -1
- watcher/tests/{api → unit/api}/test_config.py +1 -1
- watcher/tests/{api → unit/api}/test_hooks.py +6 -8
- watcher/tests/{api → unit/api}/test_root.py +7 -1
- watcher/tests/{api → unit/api}/test_utils.py +1 -2
- watcher/tests/{api → unit/api}/utils.py +7 -8
- watcher/tests/{api → unit/api}/v1/test_actions.py +49 -49
- watcher/tests/{api → unit/api}/v1/test_actions_plans.py +71 -68
- watcher/tests/{api → unit/api}/v1/test_audit_templates.py +69 -69
- watcher/tests/{api → unit/api}/v1/test_audits.py +99 -66
- watcher/tests/{api → unit/api}/v1/test_data_model.py +7 -7
- watcher/tests/{api → unit/api}/v1/test_goals.py +17 -17
- watcher/tests/{api → unit/api}/v1/test_microversions.py +2 -2
- watcher/tests/{api → unit/api}/v1/test_root.py +1 -1
- watcher/tests/{api → unit/api}/v1/test_scoring_engines.py +15 -15
- watcher/tests/{api → unit/api}/v1/test_services.py +18 -18
- watcher/tests/{api → unit/api}/v1/test_strategies.py +27 -27
- watcher/tests/{api → unit/api}/v1/test_types.py +3 -3
- watcher/tests/{api → unit/api}/v1/test_utils.py +1 -1
- watcher/tests/{api → unit/api}/v1/test_webhooks.py +6 -6
- watcher/tests/{applier → unit/applier}/action_plan/test_default_action_handler.py +3 -3
- watcher/tests/{applier → unit/applier}/actions/loading/test_default_actions_loader.py +7 -2
- watcher/tests/{applier → unit/applier}/actions/test_change_node_power_state.py +3 -3
- watcher/tests/{applier → unit/applier}/actions/test_change_nova_service_state.py +52 -8
- watcher/tests/{applier → unit/applier}/actions/test_migration.py +212 -10
- watcher/tests/{applier → unit/applier}/actions/test_resize.py +45 -3
- watcher/tests/{applier → unit/applier}/actions/test_sleep.py +2 -2
- watcher/tests/{applier → unit/applier}/actions/test_stop.py +27 -22
- watcher/tests/{applier → unit/applier}/actions/test_volume_migration.py +124 -2
- watcher/tests/{applier → unit/applier}/messaging/test_trigger_action_plan_endpoint.py +19 -4
- watcher/tests/{applier → unit/applier}/test_applier_manager.py +2 -2
- watcher/tests/{applier → unit/applier}/test_rpcapi.py +1 -2
- watcher/tests/unit/applier/test_service.py +70 -0
- watcher/tests/unit/applier/test_service_monitor.py +581 -0
- watcher/tests/{applier → unit/applier}/test_sync.py +14 -4
- watcher/tests/{applier → unit/applier}/workflow_engine/loading/test_default_engine_loader.py +2 -3
- watcher/tests/{applier → unit/applier}/workflow_engine/test_default_workflow_engine.py +22 -23
- watcher/tests/{applier → unit/applier}/workflow_engine/test_taskflow_action_container.py +173 -24
- watcher/tests/{base.py → unit/base.py} +4 -4
- watcher/tests/{cmd → unit/cmd}/test_api.py +3 -4
- watcher/tests/{cmd → unit/cmd}/test_applier.py +3 -4
- watcher/tests/{cmd → unit/cmd}/test_db_manage.py +1 -2
- watcher/tests/{cmd → unit/cmd}/test_decision_engine.py +3 -4
- watcher/tests/{cmd → unit/cmd}/test_status.py +4 -4
- watcher/tests/{common → unit/common}/loader/test_loader.py +6 -7
- watcher/tests/{common → unit/common}/metal_helper/test_base.py +3 -3
- watcher/tests/{common → unit/common}/metal_helper/test_factory.py +1 -1
- watcher/tests/{common → unit/common}/metal_helper/test_ironic.py +13 -6
- watcher/tests/{common → unit/common}/metal_helper/test_maas.py +8 -4
- watcher/tests/{common → unit/common}/test_cinder_helper.py +207 -17
- watcher/tests/{common → unit/common}/test_clients.py +97 -185
- watcher/tests/unit/common/test_executor.py +77 -0
- watcher/tests/{common → unit/common}/test_ironic_helper.py +2 -3
- watcher/tests/{common → unit/common}/test_keystone_helper.py +2 -2
- watcher/tests/unit/common/test_nova_helper.py +2274 -0
- watcher/tests/{common → unit/common}/test_oslo_service_helper.py +1 -1
- watcher/tests/{common → unit/common}/test_placement_helper.py +10 -10
- watcher/tests/{common → unit/common}/test_scheduling.py +1 -1
- watcher/tests/unit/common/test_service.py +374 -0
- watcher/tests/{common → unit/common}/test_utils.py +2 -2
- watcher/tests/unit/common/utils.py +147 -0
- watcher/tests/{conf → unit/conf}/test_list_opts.py +17 -18
- watcher/tests/unit/db/base.py +127 -0
- watcher/tests/{db → unit/db}/test_action.py +3 -3
- watcher/tests/{db → unit/db}/test_action_description.py +26 -27
- watcher/tests/{db → unit/db}/test_action_plan.py +40 -4
- watcher/tests/{db → unit/db}/test_audit.py +9 -9
- watcher/tests/{db → unit/db}/test_audit_template.py +6 -6
- watcher/tests/unit/db/test_deadlock_decorator_validation.py +281 -0
- watcher/tests/{db → unit/db}/test_efficacy_indicator.py +4 -4
- watcher/tests/{db → unit/db}/test_goal.py +25 -25
- watcher/tests/{db → unit/db}/test_migrations.py +3 -3
- watcher/tests/{db → unit/db}/test_purge.py +6 -7
- watcher/tests/{db → unit/db}/test_scoring_engine.py +26 -27
- watcher/tests/{db → unit/db}/test_service.py +25 -26
- watcher/tests/{db → unit/db}/test_strategy.py +27 -28
- watcher/tests/{decision_engine → unit/decision_engine}/audit/test_audit_handlers.py +33 -8
- watcher/tests/{decision_engine → unit/decision_engine}/cluster/test_cinder_cdmc.py +4 -4
- watcher/tests/{decision_engine → unit/decision_engine}/cluster/test_cluster_data_model_collector.py +1 -2
- watcher/tests/{decision_engine → unit/decision_engine}/cluster/test_nova_cdmc.py +386 -132
- watcher/tests/{decision_engine → unit/decision_engine}/datasources/grafana_translators/test_base.py +3 -4
- watcher/tests/{decision_engine → unit/decision_engine}/datasources/grafana_translators/test_influxdb.py +3 -4
- watcher/tests/{decision_engine → unit/decision_engine}/datasources/test_aetos_helper.py +2 -2
- watcher/tests/{decision_engine → unit/decision_engine}/datasources/test_base.py +1 -2
- watcher/tests/{decision_engine → unit/decision_engine}/datasources/test_gnocchi_helper.py +3 -4
- watcher/tests/{decision_engine → unit/decision_engine}/datasources/test_grafana_helper.py +2 -5
- watcher/tests/{decision_engine → unit/decision_engine}/datasources/test_manager.py +8 -40
- watcher/tests/{decision_engine → unit/decision_engine}/datasources/test_prometheus_base.py +6 -6
- watcher/tests/{decision_engine → unit/decision_engine}/datasources/test_prometheus_helper.py +7 -60
- watcher/tests/{decision_engine → unit/decision_engine}/fake_goals.py +1 -2
- watcher/tests/{decision_engine → unit/decision_engine}/fake_strategies.py +0 -1
- watcher/tests/{decision_engine → unit/decision_engine}/loading/test_collector_loader.py +8 -9
- watcher/tests/{decision_engine → unit/decision_engine}/loading/test_default_planner_loader.py +2 -3
- watcher/tests/{decision_engine → unit/decision_engine}/loading/test_default_strategy_loader.py +5 -6
- watcher/tests/{decision_engine → unit/decision_engine}/loading/test_goal_loader.py +3 -6
- watcher/tests/{decision_engine → unit/decision_engine}/messaging/test_audit_endpoint.py +4 -5
- watcher/tests/{decision_engine → unit/decision_engine}/messaging/test_data_model_endpoint.py +0 -1
- watcher/tests/unit/decision_engine/model/data/scenario_1.xml +47 -0
- watcher/tests/{decision_engine → unit/decision_engine}/model/faker_cluster_and_metrics.py +2 -3
- watcher/tests/{decision_engine → unit/decision_engine}/model/faker_cluster_state.py +24 -24
- watcher/tests/{decision_engine → unit/decision_engine}/model/gnocchi_metrics.py +19 -14
- watcher/tests/{decision_engine → unit/decision_engine}/model/notification/fake_managers.py +1 -2
- watcher/tests/{decision_engine → unit/decision_engine}/model/notification/test_cinder_notifications.py +7 -8
- watcher/tests/{decision_engine → unit/decision_engine}/model/notification/test_notifications.py +3 -4
- watcher/tests/{decision_engine → unit/decision_engine}/model/notification/test_nova_notifications.py +53 -44
- watcher/tests/{decision_engine → unit/decision_engine}/model/test_element.py +1 -2
- watcher/tests/{decision_engine → unit/decision_engine}/model/test_model.py +70 -35
- watcher/tests/{decision_engine → unit/decision_engine}/planner/test_node_resource_consolidation.py +5 -6
- watcher/tests/{decision_engine → unit/decision_engine}/planner/test_planner_manager.py +1 -2
- watcher/tests/{decision_engine → unit/decision_engine}/planner/test_weight_planner.py +9 -10
- watcher/tests/{decision_engine → unit/decision_engine}/planner/test_workload_stabilization_planner.py +14 -11
- watcher/tests/{decision_engine → unit/decision_engine}/scope/fake_scopes.py +1 -2
- watcher/tests/{decision_engine → unit/decision_engine}/scope/test_baremetal.py +4 -5
- watcher/tests/{decision_engine → unit/decision_engine}/scope/test_compute.py +80 -56
- watcher/tests/{decision_engine → unit/decision_engine}/scope/test_storage.py +12 -13
- watcher/tests/{decision_engine → unit/decision_engine}/scoring/test_dummy_scorer.py +1 -2
- watcher/tests/{decision_engine → unit/decision_engine}/scoring/test_dummy_scoring_container.py +1 -2
- watcher/tests/{decision_engine → unit/decision_engine}/scoring/test_scoring_factory.py +1 -2
- watcher/tests/{decision_engine → unit/decision_engine}/solution/test_default_solution.py +1 -2
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/context/test_strategy_context.py +6 -7
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/selector/test_strategy_selector.py +1 -2
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_actuator.py +2 -3
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_base.py +7 -24
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_basic_consolidation.py +21 -14
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_dummy_strategy.py +2 -3
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_dummy_with_scorer.py +2 -3
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_host_maintenance.py +86 -40
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_node_resource_consolidation.py +3 -4
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_noisy_neighbor.py +3 -4
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_outlet_temp_control.py +3 -4
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_saving_energy.py +3 -10
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_storage_capacity_balance.py +3 -4
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_strategy_endpoint.py +1 -2
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_uniform_airflow.py +3 -4
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_vm_workload_consolidation.py +3 -4
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_workload_balance.py +3 -4
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_workload_stabilization.py +18 -11
- watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/test_zone_migration.py +615 -149
- watcher/tests/{decision_engine → unit/decision_engine}/test_gmr.py +1 -2
- watcher/tests/{decision_engine → unit/decision_engine}/test_rpcapi.py +1 -2
- watcher/tests/{decision_engine → unit/decision_engine}/test_scheduling.py +6 -38
- watcher/tests/{decision_engine → unit/decision_engine}/test_service.py +23 -6
- watcher/tests/unit/decision_engine/test_service_monitor.py +683 -0
- watcher/tests/{decision_engine → unit/decision_engine}/test_sync.py +24 -25
- watcher/tests/{notifications → unit/notifications}/test_action_notification.py +9 -9
- watcher/tests/{notifications → unit/notifications}/test_action_plan_notification.py +7 -5
- watcher/tests/{notifications → unit/notifications}/test_audit_notification.py +5 -4
- watcher/tests/{notifications → unit/notifications}/test_notification.py +5 -6
- watcher/tests/{notifications → unit/notifications}/test_service_notifications.py +3 -4
- watcher/tests/{objects → unit/objects}/test_action.py +4 -4
- watcher/tests/{objects → unit/objects}/test_action_description.py +3 -4
- watcher/tests/{objects → unit/objects}/test_action_plan.py +5 -5
- watcher/tests/{objects → unit/objects}/test_audit.py +6 -6
- watcher/tests/{objects → unit/objects}/test_audit_template.py +4 -4
- watcher/tests/{objects → unit/objects}/test_efficacy_indicator.py +3 -3
- watcher/tests/{objects → unit/objects}/test_goal.py +3 -3
- watcher/tests/{objects → unit/objects}/test_objects.py +19 -19
- watcher/tests/{objects → unit/objects}/test_scoring_engine.py +3 -3
- watcher/tests/{objects → unit/objects}/test_service.py +3 -3
- watcher/tests/{objects → unit/objects}/test_strategy.py +4 -4
- watcher/tests/{objects → unit/objects}/utils.py +1 -1
- watcher/tests/{test_threading.py → unit/test_threading.py} +26 -5
- python_watcher-15.1.0.dist-info/RECORD +0 -582
- python_watcher-15.1.0.dist-info/pbr.json +0 -1
- watcher/api/scheduling.py +0 -126
- watcher/common/paths.py +0 -37
- watcher/conf/glance_client.py +0 -44
- watcher/conf/monasca_client.py +0 -44
- watcher/conf/neutron_client.py +0 -44
- watcher/decision_engine/datasources/monasca.py +0 -205
- watcher/tests/api/test_scheduling.py +0 -115
- watcher/tests/common/test_executor.py +0 -38
- watcher/tests/common/test_nova_helper.py +0 -1467
- watcher/tests/common/test_service.py +0 -106
- watcher/tests/db/base.py +0 -104
- watcher/tests/decision_engine/datasources/test_monasca_helper.py +0 -163
- watcher/tests/decision_engine/model/data/scenario_1.xml +0 -47
- watcher/tests/decision_engine/model/monasca_metrics.py +0 -128
- {python_watcher-15.1.0.data → python_watcher-16.0.0.data}/data/etc/apache2/watcher +0 -0
- {python_watcher-15.1.0.data → python_watcher-16.0.0.data}/data/etc/watcher/README-watcher.conf.txt +0 -0
- {python_watcher-15.1.0.data → python_watcher-16.0.0.data}/data/etc/watcher/oslo-policy-generator/watcher-policy-generator.conf +0 -0
- {python_watcher-15.1.0.data → python_watcher-16.0.0.data}/scripts/watcher-api-wsgi +0 -0
- {python_watcher-15.1.0.dist-info → python_watcher-16.0.0.dist-info}/WHEEL +0 -0
- {python_watcher-15.1.0.dist-info → python_watcher-16.0.0.dist-info}/licenses/LICENSE +0 -0
- {python_watcher-15.1.0.dist-info → python_watcher-16.0.0.dist-info}/top_level.txt +0 -0
- /watcher/tests/{api → unit/api}/__init__.py +0 -0
- /watcher/tests/{api → unit/api}/v1/__init__.py +0 -0
- /watcher/tests/{applier → unit/applier}/__init__.py +0 -0
- /watcher/tests/{applier → unit/applier}/action_plan/__init__.py +0 -0
- /watcher/tests/{applier → unit/applier}/actions/__init__.py +0 -0
- /watcher/tests/{applier → unit/applier}/actions/loading/__init__.py +0 -0
- /watcher/tests/{applier → unit/applier}/messaging/__init__.py +0 -0
- /watcher/tests/{applier → unit/applier}/workflow_engine/__init__.py +0 -0
- /watcher/tests/{applier → unit/applier}/workflow_engine/loading/__init__.py +0 -0
- /watcher/tests/{cmd → unit/cmd}/__init__.py +0 -0
- /watcher/tests/{common → unit/common}/__init__.py +0 -0
- /watcher/tests/{common → unit/common}/loader/__init__.py +0 -0
- /watcher/tests/{common → unit/common}/metal_helper/__init__.py +0 -0
- /watcher/tests/{conf → unit/conf}/__init__.py +0 -0
- /watcher/tests/{config.py → unit/config.py} +0 -0
- /watcher/tests/{db → unit/db}/__init__.py +0 -0
- /watcher/tests/{db → unit/db}/utils.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/audit/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/cluster/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/datasources/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/datasources/grafana_translators/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/event_consumer/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/fake_metal_helper.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/loading/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/messaging/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/ironic_scenario_1.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_10.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_11_with_1_node_no_instance.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_11_with_2_nodes_2_instances.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_1_with_1_node_unavailable.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_1_with_all_instances_exclude.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_1_with_all_nodes_disable.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_1_with_metrics.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_2_with_metrics.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_3_with_2_nodes.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_3_with_metrics.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_4_with_1_node_no_instance.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_5_with_instance_disk_0.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_6_with_2_nodes.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_7_with_2_nodes.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_8_with_4_nodes.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/scenario_9_with_3_active_plus_1_disabled_nodes.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/data/storage_scenario_1.xml +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/capacity.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-create-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-delete-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-live_migration_force_complete-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-live_migration_post_dest-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-lock.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-pause-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-power_off-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-power_on-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-rebuild-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-rescue-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-resize_confirm-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-restore-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-resume-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-shelve-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-shutdown-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-soft_delete-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-suspend-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-unlock.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-unpause-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-unrescue-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-unshelve-end.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-update-2-1.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/instance-update.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario3_instance-update.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario3_notfound_instance-update.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario3_notfound_legacy_instance-update.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario3_service-update-disabled.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario3_service-update-enabled.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_bootable-volume-create.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_capacity.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_capacity_node_notfound.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_capacity_pool_notfound.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_error-volume-create.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_volume-attach.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_volume-create.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_volume-create_pool_notfound.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_volume-delete.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_volume-detach.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_volume-resize.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/scenario_1_volume-update.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/service-create.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/service-delete.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/model/notification/data/service-update.json +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/planner/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/scope/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/scoring/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/solution/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/strategy/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/strategy/context/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/strategy/selector/__init__.py +0 -0
- /watcher/tests/{decision_engine → unit/decision_engine}/strategy/strategies/__init__.py +0 -0
- /watcher/tests/{notifications → unit/notifications}/__init__.py +0 -0
- /watcher/tests/{objects → unit/objects}/__init__.py +0 -0
|
@@ -9,6 +9,8 @@ namespace = oslo.concurrency
|
|
|
9
9
|
namespace = oslo.db
|
|
10
10
|
namespace = oslo.log
|
|
11
11
|
namespace = oslo.messaging
|
|
12
|
+
namespace = oslo.middleware.cors
|
|
13
|
+
namespace = oslo.middleware.http_proxy_to_wsgi
|
|
12
14
|
namespace = oslo.policy
|
|
13
15
|
namespace = oslo.reports
|
|
14
16
|
namespace = oslo.service.periodic_task
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: python-watcher
|
|
3
|
-
Version:
|
|
3
|
+
Version: 16.0.0
|
|
4
4
|
Summary: OpenStack Watcher provides a flexible and scalable resource optimization service for multi-tenant OpenStack-based clouds.
|
|
5
5
|
Home-page: https://docs.openstack.org/watcher/latest/
|
|
6
6
|
Author: OpenStack
|
|
@@ -38,6 +38,7 @@ Requires-Dist: oslo.db>=4.44.0
|
|
|
38
38
|
Requires-Dist: oslo.i18n>=3.20.0
|
|
39
39
|
Requires-Dist: oslo.log>=3.37.0
|
|
40
40
|
Requires-Dist: oslo.messaging>=14.1.0
|
|
41
|
+
Requires-Dist: oslo.middleware>=3.31.0
|
|
41
42
|
Requires-Dist: oslo.policy>=4.5.0
|
|
42
43
|
Requires-Dist: oslo.reports>=1.27.0
|
|
43
44
|
Requires-Dist: oslo.serialization>=2.25.0
|
|
@@ -50,11 +51,9 @@ Requires-Dist: pbr>=3.1.1
|
|
|
50
51
|
Requires-Dist: pecan>=1.3.2
|
|
51
52
|
Requires-Dist: PrettyTable>=0.7.2
|
|
52
53
|
Requires-Dist: gnocchiclient>=7.0.1
|
|
54
|
+
Requires-Dist: openstacksdk>=4.4.0
|
|
53
55
|
Requires-Dist: python-cinderclient>=3.5.0
|
|
54
|
-
Requires-Dist: python-glanceclient>=2.9.1
|
|
55
56
|
Requires-Dist: python-keystoneclient>=3.15.0
|
|
56
|
-
Requires-Dist: python-neutronclient>=6.7.0
|
|
57
|
-
Requires-Dist: python-novaclient>=14.1.0
|
|
58
57
|
Requires-Dist: python-observabilityclient>=1.1.0
|
|
59
58
|
Requires-Dist: python-openstackclient>=3.14.0
|
|
60
59
|
Requires-Dist: python-ironicclient>=2.5.0
|
|
@@ -66,8 +65,6 @@ Requires-Dist: WSME>=0.9.2
|
|
|
66
65
|
Requires-Dist: networkx>=2.4
|
|
67
66
|
Requires-Dist: microversion-parse>=0.2.1
|
|
68
67
|
Requires-Dist: futurist>=1.8.0
|
|
69
|
-
Provides-Extra: monasca
|
|
70
|
-
Requires-Dist: python-monascaclient>=1.12.0; extra == "monasca"
|
|
71
68
|
Dynamic: author
|
|
72
69
|
Dynamic: author-email
|
|
73
70
|
Dynamic: classifier
|
|
@@ -83,7 +80,6 @@ Watcher
|
|
|
83
80
|
=======
|
|
84
81
|
|
|
85
82
|
.. image:: https://governance.openstack.org/tc/badges/watcher.svg
|
|
86
|
-
:target: https://governance.openstack.org/tc/reference/tags/index.html
|
|
87
83
|
|
|
88
84
|
.. Change things from this point on
|
|
89
85
|
|