We joyfully announce the release of: neutron 27.0.0 This release is part of the flamingo release series. The source is available from: https://opendev.org/openstack/neutron Download the package from: https://tarballs.openstack.org/neutron/ Please report issues through: https://bugs.launchpad.net/neutron/+bugs For more details, please see below. Changes in neutron 26.0.0.0rc1..27.0.0 -------------------------------------- 7a1a8038f9 [FT] Capture and dismiss the ``DBReferenceError`` exceptions d3fb3f8e21 [logapi] Wrap inside a DB context the method ``_check_port_bound_sg`` fad3b6f8bc pre-commit: Use local neutron hacking checks 7ad5a47ad3 [SR-IOV] Remove "firewall_driver" from configuration b5e625fa3a [SR-IOV] Document the trusted virtual functions feature 40692e922a [OVN][FT] Check the subport Port_Binding is created before deletion 4b74594a29 pep8: Return ability to run pylint only on given patches ca323d9052 Unify ``MetadataProxyHandlerBaseSocketServer`` class (2) 09ed4df066 [FT] Randomize the network segment init method starting time 660b9f80bd [FT] Add wait event for Port_Binding in Metadata tests c031b59ec1 Decode the metadata response before sending it to the VM e51a6bdbff Fix AttributeError accessing local compute port b211df9101 [FT] Mock the DB lock methods in ``TestOvnNbSync`` tests 84f606a9bc [FT] Add all ``TestOvnNbSync|TestOvnSbSync`` classes to the regex 5ffd9ae3a5 [FT] Check the OVN agent cache before the asserts dbda958b06 Migrate neutron-ovs-tempest-dvr-ha-multinode-full to Noble da078c79b6 Revert "Add extra logs to the ip_monitor class" 0a044ce384 Set haproxy nbthread[1] to 2 1baf3b462d Revert "tox: Remove basepython and ineffective ignore_basepython_conflict" e5fe4cc41c [hacking check] Ignore N535 check_no_eventlet_imports e533560ff0 [SR-IOV] Remove the security group RPC updates 9001ddcb1c Delete tunnel endpoints if endpoint agent is deleted f7e0561984 Re Reduce number of routers created in test_gateway_chassis_rebalance 23994f6ee0 [OVN] The OVS IDL connection is global for all tests fc2a53ccce [OVN] Check LSP is subport before removing it from the trunk 1e6381cbd2 [OVN] Remove the datapath UUID from the metadata namespaces 3056fa0877 [OVN] Handle creation of Port_Binding with chassis set (2) 20ee1e368c [OVN] Spread OVN metadata agent heartbeat response in time 61aefa25f5 [OVN] Provide the extension name to ``OVNExtensionEvent`` classes 0117eb0c08 Re-enable optional hacking checks a7c350d070 [OVN] The OVN agent should be able to re-register c4fdba2582 [OVN] The OVN agent should handle its own tags and status 227da23f7a [OVN] Remove the check of presence of "Chassis_Private" 6e70cd450c [SGL] Use admin context to retrieve log objs b615560926 tox: Remove basepython and ineffective ignore_basepython_conflict 9119c75703 Remove url tags from README c68aa4cab3 [OVN] OVN agents should clean up "Chassis_Private" tags 89b4b88846 [OVN] Fix OVN agent register process 162a4dd1c5 Add default value for the "context_with_global_access" policy 7eb0f0b337 Use ALLOWED_ADDRESS_PAIR resources constant from neutron_lib 79e9b02c65 [ML2/OVN] Validate allowed address pairs and distributed ports f1de2e4ea1 [OVN]: fix ovn-db-sync to include gateway chassis 4a069c3ff6 [eventlet-removal] Remove usage in ``WorkerService`` class 99365991a3 [eventlet-removal] Remove usage in OVS firewall 02334094d5 [eventlet-removal] Use kernel ``subprocess`` module 1b4f464efe [eventlet-removal] Remove ``UnixDomainHttpProtocol`` class ce4e97313b [OVN] Remove OVN agent workaround to start the process 2983babbac Use NetworkMTUSubnetConflict from neutron-lib 2d6325bd2d refactor: Remove OvnIdlDistributedLock._last_touch attribute cc705812fd [FT] Increate the bridge creation event timeout 0295a1918e Use placement constant ``ALLOCATION`` d8697facb0 [FT] Add a retry method when reading the ``Chassis_Private`` register 1ba9f7fd75 [doc] Document the L3 QoS support in Neutron 6c729befc1 [tox] Re add option to override py3 version with TOX_PYTHON b1310309dd [doc] Include the ML2/OVN minimum bandwidth support added in Zed b8144b8d7a Imported Translations from Zanata 08b1fb682d Add a temporary grenade job using the OVN Metadata agent 39220d9ebc [doc] How to debug the WSGI Neutron API 9873303dc2 Add deprecation warning for the OVN Metadata agent 34225a61f6 OVS firewall: only remove security group when truly unused 4c2e64536f Fix NetworkMTUSubnetConflict usage for subnet association 1e01e6a713 [OVN] Fix remote-managed binding profile validation 5454e76ff0 [FT] Mark test_fip_connection_for_address_scope unstable 3ad1b0b806 Add non-repair mode to the existing method in OVN sync class 2145901d6f [OVN] Use stateless NAT rules for FIPs 4ebd69f2c5 Use the OVN policer for max-bw only QoS policies 6aeffee5de Fix mocks in the test_l3 unit tests module a8999d0c03 trivial: Autofix low-hanging linter failures c934deb0e7 Mock ``sync_state`` method in DHCP agent unit tests cb913a8c44 docs: Remove crud from conf.py files d72adaa8d6 tox: Fix indentation be77ed3a81 pre-commit: Migrate to ruff, enable autopep8 8cd0c79479 DHCP Agent: Log resource update events e5606b776e Change "tag" table collation to "utf8mb4_bin" 2f2bc8b784 sqlalchemy: Use built-in declarative 4c50416d6a OVS Trunk: Improve code documentation for trunk wiring 33cf8dcd51 Replace the OVN Metadata agent with the OVN agent ad927935ab [eventlet-removal] ovs: remove the usage of eventlet in the OVS agent de72132d51 [eventlet-removal] ovs: reimplement signals handling 378453e93d [eventlet-removal] Remove the eventlet WSGI Neutron server code 1c93c84d1c Correction of a typo in the 'sub_ports' field 9c079e57d0 [doc] Change OVN agent "extension" section to "agent" 1db896060b Fix missing [service_providers] service_provider 6b1744eb8a [eventlet-removal] remove eventlet references from dhcp_agent 5034b07cb3 [FT] Wait for the FIP Port_Binding event before checking MAC removal 6107d9d990 [eventlet-removal] Remove the usage of eventlet from the periodic worker 421016017b Remove the fullstack job from the CI fbdd642df6 Drop unused method addd8da5c4 Remove compat logic for neutron-lib < 3.9.0 8990dd598f Make resource "tag" case sensitive d84cdbb68e Change FixedIntervalLoopingCall to use keyword argument d2f64e5f6a [UT] FIx no_dhcp_release6 test 5c6a10003e [FT] Isolate randomly failing address scope tests e69505d293 Limit trunk ACTIVE state hack to OVN d731ee659b ovs: remove usage of loopingcall.FixedIntervalLoopingCall 4296638456 ofswitch: remove usage of eventlet timeout 3135b35f26 Make ``tunnel_ranges`` and ``network_vlan_ranges`` private members 32760ae88e [eventlet-removal] Remove the usage of eventlet in the MacVTAP agent f315b9a807 [FT] Randomize OVS test bridges and pre-delete them 67ad781821 Bandit: add B311 to skiplist d6f6abb8b9 [eventlet-removal] Remove the usage of eventlet from the RPC worker 8f219d89f5 Replace deprecated ByteString 5e31a6b356 [eventlet-removal] Remove the usage of eventlet from neutron-metering-agent 3ff9cfd026 Add state reporting back to metadata agents dae69e4ce6 Fix bad i18n and fstrings interaction with flake8 5cccd2112f Allow empty gateway IP in subnets from subnet pools 4b2625adb9 Move the ``ProcessMonitor`` initialization to the ``Service.start`` phase 1cf5b6de7c Consider logging options when using OVNdbsync 397f48d310 Update report state rpc API 614353e8f9 Fix a random segment unit test failure c637375522 [eventlet-removal] Patch unit tests for keepalived not. server 7b2d968c27 [FT] Improve ``test_assert_pings_during_br_phys_setup_not_lost*`` tests baf1378a20 [eventlet-removal] Remove the usage of eventlet from neutron-usage-audit 94f6d69d4e Execute ``test_initialize_network...`` with concurrency 1 7d0d0c2eb0 Drop explicit dependency on python-subunit 20faede200 Do not create the min-bw request if the network segment is deleted e8c2872ce7 Actually require python >= 3.10 d17e39e528 [eventlet-removal] Remove the usage of eventlet from the OVN maintenance worker 5292b13bbd [eventlet-removal] Remove the usage of eventlet in the L3 agent 5cfc1d5414 [OVN] Set OVN bridge in Chassis_Private in OVN agent 81e1976ec6 Reduce metadata port lookup log message to warning ffc1509325 Fix nova notification on port unplug e4a0d153f6 [eventlet-removal] Remove "logger" mechanism from config examples 092412cb61 osdb: remove usage of eventlet in dbhandler 3bf7f8ec80 Update OVN_AGENT_NEUTRON_SB_CFG_KEY when Neutron OVN Agent starts 11ff4f2f98 Deprecate `vlan_qinq` and `vlan_transparent` config options 4fef58514d [eventlet-removal] DHCP: move RPC init to service.start phase 8dea545739 [FT] Match the correct event in ``test_subport_delete`` cd3957a0f9 Move grenade skip level jobs to wsgi c6f5c05778 Update OVN_AGENT_METADATA_SB_CFG_KEY when OVN metadata agent starts 19774fde2f Extend port resource request only when using qos minimum rules 9ae15feb1d Add provider network resources filter for "network" c091080fae pre-commit: Bump versions f4dafbeef6 Move mypy configuration to pyproject.toml 27a98b5c62 pyupgrade changes for Python3.10+ e191ee0a71 Fix some pylint warnings in the test tree ad065fdcfe [UT] Removal of eventlet from the unit tests c405d6b355 [FT] Remove of eventlet from the functional tests 99bd0c9331 Move the RPC initialization to the ``Service.start`` phase 76acde9919 Remove code for suse from post-devstack installation 6af3801ac8 Require alembic db migration scripts to be idempotent e4c58a3417 Delete the metadata agent file from the eventlet directory 26739f7c76 [OVN] OVN agent retrieval filter matching improvement 44d3763831 [FT] Check the SB Port_Binding is created before test execution 993ada3ecc Remove installation guide for openSUSE/SLES a37c2d2a1e Fix ovn_db_sync for user defined flavor routers 39d95a14e2 Initialize the network segment ranges only in first WSGI worker 7109294ea0 [OVN] Do not supply gateway_port if it's not bound to chassis 75c0895f39 Switch centos 9-stream jobs to run with python 3.12 012327bb4d [OVN] Change the OVN QoS rule priority for floating IPs 2ff5b4a18b Fix DHCP extension if subnet has no gateway_ip 344baa4d4b add pyproject.toml to support pip 23.1 65b9dc622f Allow service role more RBAC access for Octavia 2c35dd53f2 [OVN] Only update the MTU of the router GW LRPs b352816943 Increase test_simple_execution timeout value f2b1eb3a94 Workaround oslo master periodic job failures 7a490c855b Subnet filter by "router:external" needs to be changed to "external" a548177567 [OVN] Handle HA_Chassis_Group field in LRP creation and update 6a6426770d [OVN] Method to retrieve the LRP chassis list c2a5b99567 Update ``filter_existing_chassis`` signature and make it static fd20c884cd [OVN] Add a Logical_Router_Port HA_Chassis retrieval method 7cc07aa3be HA_Chassis_Group create command with HA_Chassis assignation 408800a46f [UT] Keep metadata disabled in no_dhcp_release6 check test 5145aa6a55 [ovn]Allow multiple IPv6 ports on router from same network af3cab0737 Unify ``MetadataProxyHandlerBaseSocketServer`` class b95db62773 Remove the unused OVN metadata agent code, update UTs b993f3c9a2 Return a HTTP404 message when the Metadata instance is not present 9872e76e41 [eventlet-removal] Replace ``eventlet.GreenPool`` in the DHCP agent 557d57e165 Increase threshold in TestHAL3Agent fullstack test d6baf954f3 [eventlet-removal] Replace ``eventlet.GreenPool`` in the L3 agent 8d8ce27414 Add the utility class ``ThreadPoolExecutorWithBlock`` f33e810470 [DHCP] Remove the thread pool resizable mechanism 6699134f3e [L3] Remove the thread pool resizable mechanism cee489ef0e Consume DHCP constants from neutron-lib d1c835f666 Consume DuplicatedHANetwork constant from neutron-lib 19fc1122a2 Remove policy unit test enforce_scope override 41168f5cb0 Remove terminology compatibility code f3f85fa2c4 Remove deprecated plugin argument from policy calls 32e45ca91c Remove stale DVR FIP check introduced in Pike e72266bf41 Create a common method to encode a HTTP response c981cfd658 Allow service role to create/update port device_id 750ff49f6b [OVN] Isolate test_ovn_client* Functional Tests f5a30c2072 Add persist_uuid upgrade scenario test 1920c2fdbd Fix use of pyroute2 Stats tuple import e700853c0a [OVN][QoS] Update the Logical_Swith_Port options with the QoS values 52098e1c36 [UT] Delete the OVN AgentCache instance in the cleanup 13f274093e Update jobs based on testing runtime for 2025.2 2996f9ff53 Fix LRP.external_ids router name prefix 99a9470da5 [Doc] Add NOTE for external dns requirement for Floating IPs be3f8a41c1 Revert "Mark TestVirtualPorts tests as unstable" 9c46b51c3b [OVN] Create a HA_Chassis_Group without raising an exception 2fd51371ec Duplicated table lookup in extending port resource request db03074927 Revert the network IDs filter in ``_gen_router_port_options`` 6351f9012c Implement check_vlan_qinq to return True in SR-IOV mech driver 1cc4a79416 Create random named resources in ``TestOvnSbSync`` 75d630f3a8 Fix for broken link in README.rst a5243334cb Revert "[DHCP] Reduce to one single thread the event processing" 1c953a0bcc [OVN] Make the Logical_Switch_Port UP event more robust 5841cacecb [OVN][Placement] Placement init config with Chassis create event 90736b3517 Update provider name when migrating to OVN b5c912d090 If OVS Manager creation failes retry to set values 2071dbe6eb [doc] Update the release doc to create a new database branch 06252b3471 Add database migration tests 71ff8ee881 Avoid race condition by using persist_uuid 6c6759c3b4 Remove the duplicated YOGA database milestone bcbde77444 Remove flaky batch notifier unit test bc250bd89a Spawn IPv6 metadata proxy only when required 0c345dce5b [OVN][FT] Use MySQL backend for ``TestNBDbMonitor*`` classes e86951ef49 [OVN] Isolate ``test_ovsdb_monitor.TestNBDbMonitor*`` FTs de237bc92f [OVN] Delete a resource provider removed from the agent config 0b7c808185 Revert "[eventlet-removal] Remove eventlet from DHCP agent" e18735f403 Revert "[eventlet-removal] Remove the usage of eventlet in the DHCP agent" 8dac3b7cf6 Imported Translations from Zanata 4f82eded11 Disable skip-level jobs in check queue 125c8b8147 Open the 2025.2 (Flamingo) DB branch 7131761a04 Add missing Neutron milestones dd7c7f4b2b [OVN] Add ``AgentCache`` deletion test a3cb7e8e14 Update master for stable/2025.1 7910d46313 The ovn_db_revision_check is not required anymore 26ad367c28 fullstack: use shorter agent_down_time and report_interval c33b6f8534 [FT] Refactor the ``TestNeutronServer._check_active`` method. 98b006b7e0 Fast exit if "segments" plugin is not loaded 979385d8f9 [OVN][Placement] Reduce log level to error when Placement exception 1e560ecd8a Allow to delete singleton instances d56a1d2b7a Update CIDR notation for loopback and multicast address 16ad980ad9 Remove workaround for old python versions 9b0f62b81a Update OVN installation guide with tunings for VLAN + DVR Diffstat (except docs and test files) ------------------------------------- .pre-commit-config.yaml | 82 +++-- .pylintrc | 5 + README.rst | 3 +- TESTING.rst | 2 +- devstack/ovn-compute-local.conf.sample | 6 +- devstack/ovn-db-local.conf.sample | 7 +- devstack/ovn-local.conf.sample | 6 +- .../contributor/internals/ovn/metadata_api.rst | 4 +- .../contributor/internals/sriov_nic_agent.rst | 31 +- .../contributor/policies/release-checklist.rst | 20 +- .../testing/neutron_wsgi_api_server.rst | 116 +++++++ .../install/controller-install-option1-obs.rst | 311 ------------------ .../install/controller-install-option2-obs.rst | 347 --------------------- .../install/environment-networking-compute-obs.rst | 48 --- .../environment-networking-controller-obs.rst | 44 --- .../install/environment-networking-verify-obs.rst | 89 ------ mypy.ini | 20 -- neutron/agent/common/ovs_lib.py | 2 +- neutron/agent/common/placement_report.py | 29 +- neutron/agent/common/utils.py | 2 +- neutron/agent/dhcp/agent.py | 53 ++-- neutron/agent/l2/extensions/dhcp/extension.py | 8 +- neutron/agent/l2/extensions/dhcp/ipv4.py | 23 +- neutron/agent/l2/extensions/dhcp/ipv6.py | 8 +- .../l2/extensions/metadata/host_metadata_proxy.py | 2 +- .../extensions/metadata/metadata_flows_process.py | 2 +- .../agent/l2/extensions/metadata/metadata_path.py | 4 +- neutron/agent/l3/agent.py | 105 +++---- neutron/agent/l3/dvr_fip_ns.py | 16 - neutron/agent/l3/extensions/conntrack_helper.py | 2 +- neutron/agent/l3/ha.py | 57 ++-- neutron/agent/l3/ha_router.py | 7 +- neutron/agent/l3/item_allocator.py | 4 +- neutron/agent/l3/l3_agent_extensions_manager.py | 2 +- neutron/agent/l3/link_local_allocator.py | 4 +- neutron/agent/l3/router_info.py | 4 +- neutron/agent/linux/daemon.py | 2 +- neutron/agent/linux/dhcp.py | 19 +- neutron/agent/linux/external_process.py | 2 +- neutron/agent/linux/ip_lib.py | 6 - neutron/agent/linux/ipset_manager.py | 2 +- neutron/agent/linux/iptables_firewall.py | 2 +- neutron/agent/linux/iptables_manager.py | 18 +- neutron/agent/linux/keepalived.py | 10 +- neutron/agent/linux/l3_tc_lib.py | 2 +- .../agent/linux/openvswitch_firewall/firewall.py | 8 +- neutron/agent/linux/utils.py | 89 ++---- neutron/agent/metadata/agent.py | 147 +-------- neutron/agent/metadata/proxy_base.py | 9 +- neutron/agent/ovn/agent/ovn_neutron_agent.py | 102 +++++- neutron/agent/ovn/extensions/extension_manager.py | 39 +++ neutron/agent/ovn/extensions/metadata.py | 33 +- neutron/agent/ovn/metadata/agent.py | 90 +++--- neutron/agent/ovn/metadata/server.py | 117 ------- neutron/agent/ovn/metadata/server_socket.py | 146 +-------- neutron/agent/ovn/ovn_neutron_agent.py | 9 +- neutron/agent/ovsdb/native/helpers.py | 2 +- neutron/agent/resource_cache.py | 2 +- neutron/agent/rpc.py | 12 +- neutron/api/extensions.py | 4 +- neutron/api/v2/base.py | 6 +- neutron/api/wsgi.py | 152 +-------- neutron/cmd/agents/dhcp.py | 10 +- neutron/cmd/{eventlet => }/agents/l3.py | 11 +- neutron/cmd/agents/metadata.py | 11 +- neutron/cmd/agents/ovn_metadata.py | 11 +- neutron/cmd/agents/ovn_neutron_agent.py | 9 +- .../plugins => agents}/ovs_neutron_agent.py | 19 +- neutron/cmd/eventlet/agents/metadata.py | 24 -- neutron/cmd/eventlet/server/__init__.py | 33 -- neutron/cmd/ovn/ml2ovn_trace.py | 2 +- .../plugins/macvtap_neutron_agent.py | 11 +- neutron/cmd/sanity/checks.py | 4 +- neutron/cmd/server/__init__.py | 24 +- neutron/cmd/{eventlet => }/services/__init__.py | 0 .../cmd/{eventlet => }/services/metering_agent.py | 11 +- neutron/cmd/upgrade_checks/checks.py | 33 -- neutron/cmd/{eventlet => }/usage_audit.py | 0 neutron/common/_deprecate.py | 6 +- neutron/common/ipv6_utils.py | 4 +- neutron/common/metadata.py | 171 ++++++++++ neutron/common/ovn/acl.py | 11 +- neutron/common/ovn/constants.py | 7 +- neutron/common/ovn/utils.py | 62 +++- neutron/common/utils.py | 43 ++- neutron/common/wsgi_utils.py | 7 +- neutron/conf/common.py | 18 +- neutron/conf/db/migration_cli.py | 15 +- neutron/conf/plugins/ml2/drivers/ovn/ovn_conf.py | 10 + neutron/conf/policies/base.py | 4 + neutron/conf/policies/network_ip_availability.py | 2 +- neutron/conf/policies/port.py | 46 ++- neutron/conf/policies/subnet.py | 1 + neutron/db/address_group_db.py | 2 +- neutron/db/agents_db.py | 38 ++- neutron/db/agentschedulers_db.py | 3 + neutron/db/allowedaddresspairs_db.py | 15 + neutron/db/db_base_plugin_v2.py | 43 ++- neutron/db/external_net_db.py | 11 +- neutron/db/l3_db.py | 4 + neutron/db/l3_hamode_db.py | 7 +- neutron/db/migration/__init__.py | 20 ++ ...19773d7_create_l3harouternetwork_project_id_.py | 2 +- ...791_add_port_hardware_offload_extension_type.py | 24 +- .../5bcb7b31ec7d_add_port_trusted_attribute.py | 7 +- ...9f07c5c_add_vlan_qinq_column_to_the_network_.py | 8 +- .../expand/d553edeb540f_tag_case_sensitive.py | 47 +++ .../alembic_migrations/versions/EXPAND_HEAD | 2 +- .../c181bb1d89e4_qos_minimum_packet_rate_rules.py | 5 - neutron/db/migration/cli.py | 5 +- neutron/db/models_v2.py | 2 +- neutron/db/ovn_hash_ring_db.py | 2 +- neutron/db/rbac_db_models.py | 5 +- neutron/db/securitygroups_rpc_base.py | 2 +- neutron/exceptions/mtu.py | 28 -- neutron/extensions/qinq.py | 2 +- neutron/extensions/quotasv2.py | 3 +- neutron/extensions/securitygroup.py | 3 +- neutron/extensions/tagging.py | 8 +- neutron/extensions/vlantransparent.py | 2 +- neutron/ipam/drivers/neutrondb_ipam/db_models.py | 2 +- neutron/ipam/requests.py | 39 ++- neutron/ipam/subnet_alloc.py | 18 +- neutron/locale/de/LC_MESSAGES/neutron.po | 72 +---- neutron/locale/es/LC_MESSAGES/neutron.po | 56 +--- neutron/locale/fr/LC_MESSAGES/neutron.po | 52 +-- neutron/locale/it/LC_MESSAGES/neutron.po | 56 +--- neutron/locale/ja/LC_MESSAGES/neutron.po | 48 +-- neutron/locale/ko_KR/LC_MESSAGES/neutron.po | 48 +-- neutron/locale/pt_BR/LC_MESSAGES/neutron.po | 52 +-- neutron/locale/ru/LC_MESSAGES/neutron.po | 58 +--- neutron/locale/zh_CN/LC_MESSAGES/neutron.po | 45 +-- neutron/locale/zh_TW/LC_MESSAGES/neutron.po | 45 +-- neutron/manager.py | 10 - neutron/objects/base.py | 7 +- neutron/objects/db/api.py | 4 +- neutron/objects/subnet.py | 16 - neutron/opts.py | 5 +- neutron/pecan_wsgi/controllers/utils.py | 4 +- neutron/pecan_wsgi/hooks/notifier.py | 4 +- neutron/pecan_wsgi/hooks/policy_enforcement.py | 4 +- neutron/plugins/ml2/drivers/agent/_common_agent.py | 2 +- neutron/plugins/ml2/drivers/helpers.py | 12 +- .../plugins/ml2/drivers/macvtap/macvtap_common.py | 2 +- .../drivers/macvtap/mech_driver/mech_macvtap.py | 15 +- neutron/plugins/ml2/drivers/mech_agent.py | 7 + .../drivers/mech_sriov/agent/sriov_nic_agent.py | 27 +- .../drivers/mech_sriov/mech_driver/mech_driver.py | 14 +- .../openvswitch/agent/openflow/native/br_int.py | 22 +- .../openvswitch/agent/openflow/native/ofswitch.py | 67 ++-- .../agent/openflow/native/ovs_oskenapp.py | 47 ++- .../openvswitch/agent/ovs_dvr_neutron_agent.py | 2 +- .../drivers/openvswitch/agent/ovs_neutron_agent.py | 55 +++- .../openvswitch/mech_driver/mech_openvswitch.py | 15 +- .../plugins/ml2/drivers/ovn/agent/neutron_agent.py | 23 +- neutron/plugins/ml2/drivers/ovn/db_migration.py | 15 + .../ml2/drivers/ovn/mech_driver/mech_driver.py | 80 ++++- .../ml2/drivers/ovn/mech_driver/ovsdb/commands.py | 133 +++++++- .../ovn/mech_driver/ovsdb/extensions/placement.py | 62 +++- .../ovn/mech_driver/ovsdb/extensions/qos.py | 51 ++- .../drivers/ovn/mech_driver/ovsdb/impl_idl_ovn.py | 57 +++- .../drivers/ovn/mech_driver/ovsdb/maintenance.py | 66 ++++ .../drivers/ovn/mech_driver/ovsdb/ovn_client.py | 78 +++-- .../drivers/ovn/mech_driver/ovsdb/ovn_db_sync.py | 176 +++++++++-- .../ml2/drivers/ovn/mech_driver/ovsdb/ovs_fixes.py | 37 +++ .../drivers/ovn/mech_driver/ovsdb/ovsdb_monitor.py | 76 +++-- neutron/plugins/ml2/drivers/type_tunnel.py | 50 +-- neutron/plugins/ml2/drivers/type_vlan.py | 53 ++-- neutron/plugins/ml2/extensions/dns_integration.py | 4 +- neutron/plugins/ml2/managers.py | 20 +- neutron/plugins/ml2/plugin.py | 37 ++- neutron/policy.py | 21 +- neutron/privileged/agent/linux/ip_lib.py | 2 +- neutron/privileged/agent/linux/utils.py | 15 +- neutron/privileged/agent/ovsdb/native/helpers.py | 37 ++- neutron/profiling/profiled_decorator.py | 2 +- neutron/scheduler/l3_ovn_scheduler.py | 4 +- neutron/server/ovn_maintenance.py | 4 +- .../server/{periodic_eventlet.py => periodic.py} | 4 +- neutron/server/{rpc_eventlet.py => rpc.py} | 4 +- neutron/server/wsgi_eventlet.py | 46 --- neutron/service.py | 77 +---- .../externaldns/drivers/designate/driver.py | 2 +- neutron/services/logapi/common/sg_callback.py | 5 +- neutron/services/logapi/common/sg_validate.py | 6 +- neutron/services/logapi/drivers/ovn/driver.py | 74 +++++ neutron/services/metering/agents/metering_agent.py | 32 +- .../metering/drivers/iptables/iptables_driver.py | 8 +- neutron/services/qos/qos_plugin.py | 36 ++- .../drivers/openvswitch/agent/ovsdb_handler.py | 46 ++- .../drivers/openvswitch/agent/trunk_manager.py | 4 +- neutron/services/trunk/drivers/ovn/trunk_driver.py | 48 +++ neutron/services/trunk/plugin.py | 35 +-- .../l3/extensions/qos/test_fip_qos_extension.py | 1 + .../extensions/test_conntrack_helper_extension.py | 1 + .../l3/extensions/test_gateway_ip_qos_extension.py | 1 + .../l3/extensions/test_ndp_proxy_extension.py | 1 + .../extensions/test_port_forwarding_extension.py | 3 +- .../agent/l3/test_keepalived_state_change.py | 18 +- .../functional/agent/l3/test_legacy_router.py | 43 --- .../functional/agent/l3/test_metadata_proxy.py | 16 +- .../functional/agent/linux/bin/ipt_binname.py | 41 --- .../functional/agent/linux/test_conntrackd.py | 2 +- .../agent/ovn/agent/test_ovn_neutron_agent.py | 101 +++++- .../agent/ovn/metadata/test_metadata_agent.py | 56 ++-- .../agent/ovsdb/native/test_connection.py | 15 +- .../functional/agent/ovsdb/native/test_helpers.py | 26 ++ .../functional/cmd/test_destroy_patch_ports.py | 2 +- .../functional/pecan_wsgi/test_controllers.py | 4 +- .../mech_driver/ovsdb/extensions/test_placement.py | 42 ++- .../ovn/mech_driver/ovsdb/extensions/test_qos.py | 72 ++++- .../drivers/ovn/mech_driver/ovsdb/test_impl_idl.py | 243 ++++++++++++++- .../ovn/mech_driver/ovsdb/test_maintenance.py | 50 ++- .../ovn/mech_driver/ovsdb/test_ovn_client.py | 149 ++++++++- .../ovn/mech_driver/ovsdb/test_ovn_db_sync.py | 202 +++++++++--- .../ovn/mech_driver/ovsdb/test_ovsdb_monitor.py | 90 +++++- .../drivers/ovn/mech_driver/test_mech_driver.py | 121 ++++++- .../plugins/ml2/drivers/test_type_tunnel.py | 93 ++++++ .../privileged/agent/linux/test_ip_lib.py | 2 +- .../scheduler/test_dhcp_agent_scheduler.py | 2 +- .../scheduler/test_l3_agent_scheduler.py | 2 +- .../functional/services/logapi/test_logging.py | 2 +- .../functional/services/ovn_l3/test_plugin.py | 9 +- .../trunk/drivers/ovn/test_trunk_driver.py | 54 +++- .../unit/agent/l2/extensions/dhcp/test_base.py | 101 ++++-- .../unit/agent/l2/extensions/dhcp/test_ipv4.py | 97 ++++-- .../unit/agent/l2/extensions/dhcp/test_ipv6.py | 48 ++- .../metadata/test_host_metadata_proxy.py | 3 +- .../metadata/test_metadata_flows_process.py | 2 +- .../l2/extensions/metadata/test_metadata_path.py | 10 +- .../unit/agent/l3/extensions/test_ndp_proxy.py | 7 + .../agent/l3/extensions/test_port_forwarding.py | 1 + .../linux/openvswitch_firewall/test_firewall.py | 43 +++ .../unit/agent/linux/test_iptables_firewall.py | 3 +- .../agent/ovn/extensions/test_extension_manager.py | 30 ++ .../unit/agent/ovn/metadata/test_server_socket.py | 137 ++++++++ .../api/rpc/callbacks/consumer/test_registry.py | 6 +- .../api/rpc/callbacks/test_resource_manager.py | 30 +- .../conf/policies/test_network_ip_availability.py | 8 +- .../port/extensions/test_data_plane_status.py | 3 +- .../plugins/ml2/drivers/agent/test_capabilities.py | 8 +- .../unit/plugins/ml2/drivers/base_type_tunnel.py | 26 +- .../mech_sriov/agent/test_eswitch_manager.py | 2 +- .../mech_sriov/agent/test_sriov_nic_agent.py | 7 +- .../ml2/drivers/openvswitch/agent/fake_oflib.py | 8 +- .../agent/openflow/native/ovs_bridge_test_base.py | 22 +- .../agent/openflow/native/test_ofswitch.py | 43 +++ .../agent/openflow/native/test_ovs_oskenapp.py | 70 +++++ .../openvswitch/agent/test_ovs_capabilities.py | 8 +- .../openvswitch/agent/test_ovs_neutron_agent.py | 65 ++-- .../ml2/drivers/ovn/agent/test_neutron_agent.py | 131 +++++++- .../mech_driver/ovsdb/extensions/test_placement.py | 56 ++++ .../ovn/mech_driver/ovsdb/extensions/test_qos.py | 14 +- .../ovn/mech_driver/ovsdb/test_impl_idl_ovn.py | 24 +- .../ovn/mech_driver/ovsdb/test_maintenance.py | 27 ++ .../ovn/mech_driver/ovsdb/test_ovn_db_sync.py | 53 +++- .../ovn/mech_driver/ovsdb/test_ovsdb_monitor.py | 128 ++++++-- .../drivers/ovn/mech_driver/test_mech_driver.py | 90 ++++-- .../plugins/ml2/drivers/ovn/test_db_migration.py | 16 + .../unit/plugins/ml2/drivers/test_type_vlan.py | 24 +- .../plugins/ml2/extensions/test_dns_integration.py | 2 +- .../unit/plugins/ml2/test_tracked_resources.py | 16 +- .../service_providers/test_driver_controller.py | 2 +- .../services/logapi/drivers/ovn/test_driver.py | 52 ++- .../unit/services/logapi/drivers/test_manager.py | 38 +-- .../portforwarding/drivers/ovn/test_driver.py | 5 +- .../openvswitch/agent/test_ovsdb_handler.py | 40 ++- .../trunk/drivers/ovn/test_trunk_driver.py | 69 ++++ neutron/worker.py | 3 +- pyproject.toml | 35 +++ rally-jobs/plugins/README.rst | 2 +- ...-virtual-ip-by-ovn-driver-0d46fed7652fea7a.yaml | 8 + .../bump-report-state-rpc-d392d7d616ced8a0.yaml | 12 + ...-vlan_qinq-config-options-ed2384c02e2dab53.yaml | 9 + .../notes/haproxy-nbthread-a658040c98639b47.yaml | 8 + .../octavia-service-role-b8ee74e5cb52ea30.yaml | 33 ++ .../ovn-db-sync-gw-agent-cd049668511ac730.yaml | 7 + .../ovn-fip-stateless-nat-403d2dec7a480aae.yaml | 9 + ...etadata-agent-deprecation-33d5e5acba902391.yaml | 15 + ...-delete-resource-provider-72c09b7df7238984.yaml | 7 + ...ovn-placement-init-config-6198f572e1dadcba.yaml | 8 + ...ovn-qos-fip-rule-priority-16ad3908790dfa7d.yaml | 8 + ...-max-bw-physical-networks-843dfce4a60fc38f.yaml | 7 + ...rvice-role-port-device-id-61eb7b781b3b01ca.yaml | 6 + .../sr-iov-remove-sg-rpc-22f5dc1a515b6dbb.yaml | 5 + .../notes/tag-case-sensitive-f94700cd349a65a2.yaml | 8 + releasenotes/source/2025.1.rst | 6 + releasenotes/source/conf.py | 202 +----------- releasenotes/source/index.rst | 1 + .../locale/en_GB/LC_MESSAGES/releasenotes.po | 10 +- requirements.txt | 8 +- setup.cfg | 20 +- test-requirements.txt | 1 - tools/coding-checks.sh | 6 +- tools/configure_for_func_testing.sh | 7 - tox.ini | 255 ++++++--------- zuul.d/base.yaml | 86 +---- zuul.d/grenade.yaml | 53 ++-- zuul.d/job-templates.yaml | 43 +-- zuul.d/project.yaml | 3 +- zuul.d/rally.yaml | 6 +- zuul.d/tempest-multinode.yaml | 20 +- zuul.d/tempest-singlenode.yaml | 35 ++- 428 files changed, 7553 insertions(+), 6370 deletions(-) Requirements updates -------------------- diff --git a/requirements.txt b/requirements.txt index 161c7b6983..515a682a27 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4 +4 @@ -pbr>=4.0.0 # Apache-2.0 +pbr>=6.0.0 # Apache-2.0 @@ -18 +18 @@ netaddr>=0.7.18 # BSD -neutron-lib>=3.17.0 # Apache-2.0 +neutron-lib>=3.21.1 # Apache-2.0 @@ -40 +40 @@ oslo.serialization>=5.5.0 # Apache-2.0 -oslo.service>=3.5.0 # Apache-2.0 +oslo.service[threading]>=4.2.1 # Apache-2.0 @@ -47 +47 @@ os-resource-classes>=1.1.0 # Apache-2.0 -ovs>=2.12.0 # Apache-2.0 +ovs>3.3.0 # Apache-2.0 diff --git a/test-requirements.txt b/test-requirements.txt index 4bb436e6cf..30a00a456b 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -4 +3,0 @@ fixtures>=3.0.0 # Apache-2.0/BSD -python-subunit>=1.0.0 # Apache-2.0/BSD