Current Series Release Notes¶
17.0.0.0rc1-13¶
Prelude¶
The OpenStack 2026.2 (Watcher 17.0.0) release advances Watcher’s
modernization efforts, delivering a major milestone in the eventlet removal
initiative, broader adoption of openstacksdk, more accurate cluster
modelling, and stronger security defaults. This release focuses on making
Watcher deployments more maintainable, more correct in their optimization
decisions, and safer by default.
This release marks a turning point in the eventlet removal initiative:
all Watcher services (API, Decision Engine, and Applier) now run in
native threading mode by default. Eventlet, previously the default
concurrency library, is now deprecated and will be removed in a future
release.
The migration from legacy per-service clients to openstacksdk continues across the codebase. Building on the novaclient migration from the previous release, the Cinder, Keystone, and Placement integrations now use openstacksdk, removing the python-cinderclient and python-keystoneclient dependencies and aligning all integrations on OpenStack’s standard client library.
Optimization decisions are now more accurate and better aligned with Nova’s
placement constraints. The vm_workload_consolidation strategy enforces
allocation-based capacity checks in addition to utilization-based checks,
producing more conservative and correct migration plans. Local disk
accounting has been improved for boot-from-volume instances and flavors
with ephemeral or swap devices, preventing valid destination hosts from
being wrongly rejected. Compute scope availability_zones filtering now
correctly limits audits to the specified zones.
Reliability of the cluster data model has been significantly hardened. A reentrant deadlock affecting the compute, storage, and baremetal models was fixed and a race condition that could silently lose model updates during periodic synchronization has been resolved. A lazily-populated per-node allocation cache further improves performance by avoiding redundant iterations when computing node resource usage.
New feature capabilities include support for default_parameters on
audit templates (API microversion 1.7), allowing operators to pre-configure
strategy parameter values directly on a template so that audits inherit
them automatically. The action catalog also grows with two new actions:
delete, which permanently removes a server instance and its associated
resources, and shelve, which frees a host’s vCPU and RAM while
preserving the instance data.
Finally, this release strengthens security defaults. Policy enforcement was added to the webhook trigger endpoint, requiring appropriate privileges to trigger event-driven audits, and service debug logging was hardened so the messaging transport URL is no longer written to logs, avoiding accidental exposure of embedded credentials.
Upgrade Notes¶
Watcher now requires Python 3.11 or newer. The last release of Watcher to support Python 3.10 was 2026.1. Ensure Python 3.11 or newer is available before upgrading.
Eventlet has been removed from Watcher. All services now run exclusively in native threading mode. The
OS_WATCHER_DISABLE_EVENTLET_PATCHINGenvironment variable no longer has any effect and can be dropped from service environments. Deployments that were still opting back into the deprecated eventlet mode must validate their configuration under the threading model.
The MAAS (Metal as a Service) integration has been removed from Watcher. It was marked as experimental due to the lack of testing, maintenance and documentation, and deprecated in the 2026.1 release. The
[maas_client]configuration section and itsurl,api_keyandtimeoutoptions no longer exist and are ignored if still present inwatcher.conf. Thechange_node_power_stateaction now manages bare metal nodes through Ironic only. Deployments that relied on MAAS to power compute nodes on and off must enroll those nodes in Ironic. The optionalpython-libmaasdependency is no longer used by Watcher.
The standalone
watcher-apiserver has been removed, along with its console script and manual page. It was built onoslo_service.wsgi.Server, which is eventlet based and cannot run under the threading service backend. The Watcher API must now be deployed as a WSGI application behind a WSGI server such as uwsgi or Apachemod_wsgi, using thewatcher-api-wsgiscript or thewatcher.wsgi.api:applicationentry point. Deployments that already serve the API over uwsgi or mod_wsgi are unaffected.
The
[api] host,[api] port,[api] workersand[api] enable_ssl_apiconfiguration options have been removed. They were only consumed by the standalonewatcher-apiserver, which has been removed as well. The listen address, listen port, worker count and TLS termination are now configured in the WSGI server that serves the API. Any of these options left inwatcher.confare ignored and should be dropped.
Bug Fixes¶
The
host_maintenance,zone_migrationandnode_resource_consolidationstrategies now honor audit scope instance exclusions. Previously, instances excluded through the audit scope were still migrated or considered as migration candidates by these strategies, which prevented operators from protecting critical instances during optimization and maintenance operations. See Bug 2154805: https://bugs.launchpad.net/watcher/+bug/2154805, Bug 2154806: https://bugs.launchpad.net/watcher/+bug/2154806 and Bug 2154807: https://bugs.launchpad.net/watcher/+bug/2154807 for more info.
17.0.0.0rc1¶
New Features¶
Added two new actions:
deleteandshelve.The
deleteaction permanently removes a server instance and all its associated resources via the Nova API. It is automatically skipped when the target instance does not exist. Deletion cannot be reverted.The
shelveaction shelves a server instance via the Nova API, freeing compute resources (vCPU and RAM) on the host while preserving the instance data. It is automatically skipped when the target instance does not exist or is already inSHELVEDorSHELVED_OFFLOADEDstate. The action accepts both states as valid postconditions, since Nova may offload the instance immediately depending on the backend storage.