Current Series Release Notes

28.0.0.0rc1-58

Deprecation Notes

  • The tenant_id key in API and plugin code has been deprecated. Users should start using the project_id key in all objects and calls, as support for tenant_id will be removed in a future release. For more information see this Neutron blueprint

Bug Fixes

  • Fixed an issue where NetworkContext excluded dynamic segments from its network_segments list, causing mechanism drivers to fail when accessing dynamically allocated segments during hierarchical binding operations. The NetworkContext now includes dynamic segments by passing filter_dynamic=None to get_network_segments(), allowing the _expand_segment() method to successfully find dynamic segments in the in-memory cache. This fixes hierarchical binding cleanup scenarios where later drivers need to access segment information that was dynamically allocated by earlier drivers. [bug 2144501]

  • Fixed a memory leak in ExclusiveResourceProcessor where the _resource_timestamps class-level dictionary was never cleaned up when the primary processor exited. Over time, this caused stale entries to accumulate for every resource ID that was ever processed.

  • The ML2/OVN mechanism driver now validates that virtual MAC addresses in allowed address pairs conform to the RFC 5798 VRRP ranges (00:00:5e:00:01:XX for IPv4 or 00:00:5e:00:02:XX for IPv6). Previously, non-conforming virtual MACs were silently accepted by the Neutron API but discarded by ovn-controller, leading to confusing behavior. For more information see bug 2144371.

Other Notes

  • ML2/OVN virtual ports no longer store the host information in the port binding host field. Instead, the host where the virtual port is active is now reported in the VIF details under the parent_hostname key.

  • All service plugins should inherit from neutron_lib.services.base.ServicePluginBase. A warning message will be printed if the plugin doesn’t match this condition with a recommendation to file a Launchpad bug.