Skip to content

Synchronise 2026.1 with upstream - #344

Open
github-actions[bot] wants to merge 7 commits into
stackhpc/2026.1from
upstream/2026.1-2026-09-14
Open

Synchronise 2026.1 with upstream#344
github-actions[bot] wants to merge 7 commits into
stackhpc/2026.1from
upstream/2026.1-2026-09-14

Conversation

@github-actions

Copy link
Copy Markdown

This PR contains a snapshot of 2026.1 from upstream stable/2026.1.

cubeek and others added 7 commits July 16, 2026 13:14
The bridge is an abstraction between the Neutron and the BGP worlds
(legacy provider bridge). The name is defined in local OVS with
neutron-bgp-interconnect-bridge key.

The bridge tracks its ofports to the br-int and keeps flows peer-to-peer
while changes the destination mac whenever the traffic goes from Neutron
towards the BGP. This is to make sure all packets coming from Neutron
get to the main BGP router.

Assisted-By: Claude Sonnet 4.6
Change-Id: I832c30a124ca32941ab8048b00a1e41b93ba67a6
Signed-off-by: Jakub Libosvar <libosvar@redhat.com>
(cherry picked from commit 77fcf36)
link_network_ha_chassis_group() unconditionally rebuilds a network's
unified HA_Chassis_Group from the router gateway port's
Gateway_Chassis registers, even when that list is empty -- always the
case for tunnelled (e.g. VXLAN) gateways, which are pinned to a
chassis via the Logical_Router "chassis" option instead. This wiped
the network's HA_Chassis_Group to zero members any time the gateway
port changed, even if it had already been correctly populated some
other way, breaking north/south routing and ARP for every
external/baremetal port on that network.

Leave the HA_Chassis_Group alone when Gateway_Chassis is empty,
instead of overwriting it with one.

stable/2026.1 only: master picked up an equivalent check as a side
effect of migrating Logical_Router_Port gateway-chassis tracking to
HA_Chassis_Group (commit 03d6a84 /
I8bfcc2b77acb89b78b13563aa4ca9fe3f19cb076), which can't be backported
here without the rest of that migration which is feature work, not so
not a backport candidate. This is the minimal, targeted equivalent for
the Gateway_Chassis column this branch still uses. The tests on the
other hand were not part of that original change and are a backport of
I1c1450c0be4d4cda732c339720a66c5af80542ad to verify the behavior.

Assisted-by: Claude Opus 4.8
Closes-Bug: #2162072
Related-Bug: #2125553
Change-Id: I3b3e41563a0de2e257a21bdfab2b6c667ca7e05b
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
The option [1] makes ovn-controller to create the blackhole
routes only for IPs that are local to the chassis.

Closes-Bug: #2148236

[1] https://github.com/ovn-org/ovn/blob/c9af703c618a20eb043537c7e991e32e1a3a1afe/ovn-nb.xml#L3544

Change-Id: I3de4141b3b2dc5f97d682ae976a4ff55a69941c7
Signed-off-by: Jakub Libosvar <libosvar@redhat.com>
(cherry picked from commit ea71266)
Two OVSDB monitor event classes (``PortBindingUpdateVirtualPortsEvent``
and ``LogicalSwitchPortUpdateLogicalRouterPortEvent``) create a single
Neutron admin_context in ``__init__`` and reuse it across all ``run()``
and ``match_fn()`` invocations. This is unsafe because:
1. The downstream plugin method update_virtual_port_parent_host is
   decorated with ``@transaction_guard``, which raises RuntimeError if
   the context session is still active from a previous call. Under
   eventlet, the shared session can retain residual active state
   between sequential calls on the ovsdbapp dispatch greenthread.
2. When the RuntimeError fires, ovsdbapp catches it silently in the
   dispatch thread (LOG.exception). The VIP NB revision and
   external_ids are never updated, causing ovn-northd re-processing
   delays that prevent LSP.up propagation for other ports, leading
   to 60-second port-status timeouts in functional tests.
3. For ``LogicalSwitchPortUpdateLogicalRouterPortEvent``, the shared
   context is also used in ``match_fn()``, which runs synchronously in
   the IDL connection thread. A stale session can break DB queries
   during event matching.

Fix by creating a fresh admin_context in each ``run()`` and
``match_fn()`` invocation, matching the pattern used everywhere else
in Neutron (e.g., ``OVNMechanismDriver.set_port_status_up``).

Conflicts:
      neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovsdb_monitor.py

NOTE(backport): this branch does not contain the
``LogicalSwitchPortEvent`` base class refactor, and
``PortBindingUpdateVirtualPortsEvent`` here does not use an
admin_context at all - its ``run()`` calls
``self.driver.update_virtual_port_host()``, which takes no context.
Only the ``LogicalSwitchPortUpdateLogicalRouterPortEvent`` part of the
original change is applicable and has been kept. The two unit tests
covering ``PortBindingUpdateVirtualPortsEvent.run()`` were dropped for
the same reason (they assert on
``_ovn_client.update_virtual_port_parent_host``, which does not exist
on this branch).

Closes-Bug: #2152169
Assisted-By: claude-4.6-opus-high
Signed-off-by: Rodolfo Alonso Hernandez <ralonsoh@redhat.com>
Change-Id: I294c7f229c5e871ad06fe754de9fb7f335ec9005
(cherry picked from commit c24a0f1)
@github-actions
github-actions Bot requested a review from a team as a code owner September 14, 2026 06:48
@github-actions github-actions Bot added automated Automated action performed by GitHub Actions synchronisation labels Sep 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automated Automated action performed by GitHub Actions synchronisation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants