This change enhances the Host Maintenance strategy by introducing two new input parameters: `disable_live_migration` and `disable_cold_migration`. These parameters allow cloud administrators to control whether live or cold migration should be considered during host maintenance operations. If `disable_live_migration` is set, active instances will be cold migrated if `disable_cold_migration` is not set, otherwise active instances will be stopped. If `disable_cold_migration` is set, inactive instances will not be cold migrated. If both are set, only stop actions will be performed on instances. The strategy logic and action plan generation have been updated to reflect these behaviors. A new "stop" action is introduced and registered, and the weight planner is updated to handle new action. Documentation for the Host Maintenance strategy is updated to describe the new parameters and their effects. Test Plan: - Unit tests for HostMaintenance strategy with new parameters - Integration tests for action plan generation with stop action This implements the specification: Spec: https://review.opendev.org/c/openstack/watcher-specs/+/943873 Change-Id: I201b8e5c52e1bc1a74f3886a0e301e3c0fa5d351 Signed-off-by: Quang Ngo <quang.ngo@canonical.com>
118 lines
5.7 KiB
INI
118 lines
5.7 KiB
INI
[metadata]
|
|
name = python-watcher
|
|
summary = OpenStack Watcher provides a flexible and scalable resource optimization service for multi-tenant OpenStack-based clouds.
|
|
description_file =
|
|
README.rst
|
|
author = OpenStack
|
|
author_email = openstack-discuss@lists.openstack.org
|
|
home_page = https://docs.openstack.org/watcher/latest/
|
|
# TODO(sean-k-mooney): bump to >= 3.10 before m3.
|
|
python_requires = >=3.9
|
|
classifier =
|
|
Environment :: OpenStack
|
|
Intended Audience :: Information Technology
|
|
Intended Audience :: System Administrators
|
|
License :: OSI Approved :: Apache Software License
|
|
Operating System :: POSIX :: Linux
|
|
Programming Language :: Python
|
|
Programming Language :: Python :: Implementation :: CPython
|
|
Programming Language :: Python :: 3 :: Only
|
|
Programming Language :: Python :: 3
|
|
Programming Language :: Python :: 3.10
|
|
Programming Language :: Python :: 3.11
|
|
Programming Language :: Python :: 3.12
|
|
|
|
[files]
|
|
packages =
|
|
watcher
|
|
data_files =
|
|
etc/ = etc/*
|
|
|
|
[entry_points]
|
|
oslo.config.opts =
|
|
watcher = watcher.conf.opts:list_opts
|
|
|
|
oslo.policy.policies =
|
|
watcher = watcher.common.policies:list_rules
|
|
|
|
oslo.policy.enforcer =
|
|
watcher = watcher.common.policy:get_enforcer
|
|
|
|
console_scripts =
|
|
watcher-api = watcher.cmd.api:main
|
|
watcher-db-manage = watcher.cmd.dbmanage:main
|
|
watcher-decision-engine = watcher.cmd.decisionengine:main
|
|
watcher-applier = watcher.cmd.applier:main
|
|
watcher-sync = watcher.cmd.sync:main
|
|
watcher-status = watcher.cmd.status:main
|
|
|
|
wsgi_scripts =
|
|
watcher-api-wsgi = watcher.api.wsgi:initialize_wsgi_app
|
|
|
|
watcher.database.migration_backend =
|
|
sqlalchemy = watcher.db.sqlalchemy.migration
|
|
|
|
watcher_goals =
|
|
unclassified = watcher.decision_engine.goal.goals:Unclassified
|
|
dummy = watcher.decision_engine.goal.goals:Dummy
|
|
server_consolidation = watcher.decision_engine.goal.goals:ServerConsolidation
|
|
thermal_optimization = watcher.decision_engine.goal.goals:ThermalOptimization
|
|
workload_balancing = watcher.decision_engine.goal.goals:WorkloadBalancing
|
|
airflow_optimization = watcher.decision_engine.goal.goals:AirflowOptimization
|
|
noisy_neighbor = watcher.decision_engine.goal.goals:NoisyNeighborOptimization
|
|
saving_energy = watcher.decision_engine.goal.goals:SavingEnergy
|
|
hardware_maintenance = watcher.decision_engine.goal.goals:HardwareMaintenance
|
|
cluster_maintaining = watcher.decision_engine.goal.goals:ClusterMaintaining
|
|
|
|
watcher_scoring_engines =
|
|
dummy_scorer = watcher.decision_engine.scoring.dummy_scorer:DummyScorer
|
|
|
|
watcher_scoring_engine_containers =
|
|
dummy_scoring_container = watcher.decision_engine.scoring.dummy_scoring_container:DummyScoringContainer
|
|
|
|
watcher_strategies =
|
|
dummy = watcher.decision_engine.strategy.strategies.dummy_strategy:DummyStrategy
|
|
dummy_with_scorer = watcher.decision_engine.strategy.strategies.dummy_with_scorer:DummyWithScorer
|
|
dummy_with_resize = watcher.decision_engine.strategy.strategies.dummy_with_resize:DummyWithResize
|
|
actuator = watcher.decision_engine.strategy.strategies.actuation:Actuator
|
|
basic = watcher.decision_engine.strategy.strategies.basic_consolidation:BasicConsolidation
|
|
outlet_temperature = watcher.decision_engine.strategy.strategies.outlet_temp_control:OutletTempControl
|
|
saving_energy = watcher.decision_engine.strategy.strategies.saving_energy:SavingEnergy
|
|
vm_workload_consolidation = watcher.decision_engine.strategy.strategies.vm_workload_consolidation:VMWorkloadConsolidation
|
|
workload_stabilization = watcher.decision_engine.strategy.strategies.workload_stabilization:WorkloadStabilization
|
|
workload_balance = watcher.decision_engine.strategy.strategies.workload_balance:WorkloadBalance
|
|
uniform_airflow = watcher.decision_engine.strategy.strategies.uniform_airflow:UniformAirflow
|
|
noisy_neighbor = watcher.decision_engine.strategy.strategies.noisy_neighbor:NoisyNeighbor
|
|
storage_capacity_balance = watcher.decision_engine.strategy.strategies.storage_capacity_balance:StorageCapacityBalance
|
|
zone_migration = watcher.decision_engine.strategy.strategies.zone_migration:ZoneMigration
|
|
host_maintenance = watcher.decision_engine.strategy.strategies.host_maintenance:HostMaintenance
|
|
node_resource_consolidation = watcher.decision_engine.strategy.strategies.node_resource_consolidation:NodeResourceConsolidation
|
|
|
|
watcher_actions =
|
|
migrate = watcher.applier.actions.migration:Migrate
|
|
nop = watcher.applier.actions.nop:Nop
|
|
sleep = watcher.applier.actions.sleep:Sleep
|
|
change_nova_service_state = watcher.applier.actions.change_nova_service_state:ChangeNovaServiceState
|
|
resize = watcher.applier.actions.resize:Resize
|
|
change_node_power_state = watcher.applier.actions.change_node_power_state:ChangeNodePowerState
|
|
volume_migrate = watcher.applier.actions.volume_migration:VolumeMigrate
|
|
stop = watcher.applier.actions.stop:Stop
|
|
|
|
watcher_workflow_engines =
|
|
taskflow = watcher.applier.workflow_engine.default:DefaultWorkFlowEngine
|
|
|
|
watcher_planners =
|
|
weight = watcher.decision_engine.planner.weight:WeightPlanner
|
|
workload_stabilization = watcher.decision_engine.planner.workload_stabilization:WorkloadStabilizationPlanner
|
|
node_resource_consolidation = watcher.decision_engine.planner.node_resource_consolidation:NodeResourceConsolidationPlanner
|
|
|
|
watcher_cluster_data_model_collectors =
|
|
compute = watcher.decision_engine.model.collector.nova:NovaClusterDataModelCollector
|
|
storage = watcher.decision_engine.model.collector.cinder:CinderClusterDataModelCollector
|
|
baremetal = watcher.decision_engine.model.collector.ironic:BaremetalClusterDataModelCollector
|
|
|
|
[codespell]
|
|
skip = *.po,*.js,*.css,*.html,*.svg,HACKING.py,*hacking*,*build*,*_static*,doc/dictionary.txt,*.pyc,*.inv,*.gz,*.jpg,*.png,*.vsd,*.graffle,*.json
|
|
count =
|
|
quiet-level = 4
|