• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ovn-kubernetes / ovn-kubernetes / 18893275766
55%

Build:
DEFAULT BRANCH: master
Ran 29 Oct 2025 01:04AM UTC
Jobs 1
Files 280
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

28 Oct 2025 09:10AM UTC coverage: 54.445% (+0.006%) from 54.439%
18893275766

push

github

jcaamano
EgressIP: fix failover and restart stale SNAT/LRP; ensure status sync

Scenario:
- Nodes: node-1, node-2, node-3
- Egress IPs: EIP-1
- Pods: pod1 on node-1, pod2 on node-3 (pods are created via deployment replicas)
- Egress-assignable nodes: node-1, node-2
- EIP-1 assigned to node-1

During a simultaneous reboot of node-1 and node-2, EIP-1 failed over to node-2 and
ovnkube-controller restarted at nearly the same time:

1) EIP-1 was reassigned to node-2 by the cluster manager.
2) The sync EIP happened for EIP1 with stale status, though it cleaned SNATs/LRPs
   referring to node-1 due to outdated pod IPs (this is because pods will be
   recreated due to node reboots).
3) pod1/pod2 Add events arrived while the informer cache still had the
   old EIP status, so new SNATs/LRPs were created pointing to node-1.
4) The EIP-1 Add event arrived with the new status; entries for node-2
   were added/updated.
5) Result: stale SNATs and LRPs with stale nexthops for node-1 remained.

Fix:
- Populate pod EIP status during EgressIP sync so podAssignment has
  accurate egressStatuses.
- Reconcile stale assignments using podAssignment (egressStatuses) when
  the informer cache is not up to date, ensuring SNAT/LRP for the
  previously assigned node are corrected.
- Remove stale EIP SNAT entries for remote-zone pods accordingly.
- Add coverage for simultaneous EIP failover and controller restart.

Signed-off-by: Periyasamy Palanisamy <pepalani@redhat.com>

42 of 44 new or added lines in 1 file covered. (95.45%)

36 existing lines in 5 files now uncovered.

39634 of 72796 relevant lines covered (54.45%)

442.25 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
2
67.47
0.4% go-controller/pkg/ovn/egressip.go

Uncovered Existing Lines

Lines Coverage ∆ File
2
60.78
-3.92% go-controller/pkg/ovn/controller/apbroute/external_controller_pod.go
7
65.77
-1.26% go-controller/pkg/ovn/controller/apbroute/external_controller.go
8
61.36
-0.6% go-controller/pkg/clustermanager/egressip_controller.go
9
61.07
-1.53% go-controller/pkg/ovn/controller/network_qos/network_qos_namespace.go
10
75.87
-0.87% go-controller/pkg/ovn/base_network_controller_policy.go
Jobs
ID Job ID Ran Files Coverage
1 18893275766.1 29 Oct 2025 01:04AM UTC 280
54.45
GitHub Action Run
Source Files on build 18893275766
  • Tree
  • List 280
  • Changed 8
  • Source Changed 0
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 1667a51d on github
  • Prev Build on master (#18826175228)
  • Next Build on master (#18907454616)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc