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

kubeovn / kube-ovn / 27389982525
27%

Build:
DEFAULT BRANCH: master
Ran 12 Jun 2026 02:13AM UTC
Jobs 1
Files 213
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

12 Jun 2026 02:10AM UTC coverage: 26.342% (-0.002%) from 26.344%
27389982525

push

github

web-flow
fix: misc bug fixes from code audit (#6856)

* fix(controller): gc all stale reserved vips in one pass

gcVip returned nil right after releasing the first stale reserved VIP,
so the remaining stale VIPs in the list were never processed. Since gc
runs only once at controller startup, those VIPs kept their ip_reserved
label for the whole controller lifetime, blocking new pods from reusing
them via the ovn.kubernetes.io/vip annotation.

Signed-off-by: Mengxin Liu <liumengxinfly@gmail.com>

* fix(controller): use resolved IP CR name in update failure error

The update branch of createOrUpdateIPCR formatted the error with
ipCRName, which is empty for the node/u2o/mcast querier IP paths;
use the resolved ipName like the create branch does.

Signed-off-by: Mengxin Liu <liumengxinfly@gmail.com>

* fix(controller): avoid mutating conditions slice while iterating it

resyncProviderNetworkStatus called RemoveNodeConditions inside a range
over pn.Status.Conditions; slices.Delete shifts elements in the shared
backing array, so the condition adjacent to a removed one was skipped
and tail iterations read zeroed entries. Collect the stale node names
first, then remove them after the loop.

Signed-off-by: Mengxin Liu <liumengxinfly@gmail.com>

* fix(daemon): guard DefaultEncapIP access with node networks lock

loopEncapIPCheck wrote config.DefaultEncapIP without holding
nodeNetworksMutex while setEncapIPs reads it under RLock from the
updateNode worker goroutine, which is a data race. Add a locked setter
and use it there. Also move the networkName=="" early return in
GetEncapIPByNetwork under the RLock, which had the same unguarded read.

Signed-off-by: Mengxin Liu <liumengxinfly@gmail.com>

* fix(daemon): add missing path separator in ipsec CSR file path

ipsecReqPath was built without the separator, producing
/etc/ovs_ipsec_keysipsec-req.pem outside the keys directory, so
clearIPSecKeysDir could never clean the CSR up after rotation.

Signed-off-by: Mengxin Liu <liu... (continued)

3 of 27 new or added lines in 7 files covered. (11.11%)

2 existing lines in 2 files now uncovered.

15451 of 58655 relevant lines covered (26.34%)

0.31 hits per line

Uncovered Changes

Lines Coverage ∆ File
8
0.0
0.0% pkg/controller/provider_network.go
6
0.0
0.0% pkg/ovnmonitor/exporter.go
5
6.97
-0.09% pkg/daemon/config.go
2
8.43
0.0% pkg/daemon/controller_linux.go
1
4.65
0.0% pkg/controller/gc.go
1
6.04
0.0% pkg/controller/ip.go
1
0.0
0.0% pkg/daemon/metrics.go

Coverage Regressions

Lines Coverage ∆ File
1
0.0
0.0% pkg/controller/provider_network.go
1
0.0
0.0% pkg/ovnmonitor/exporter.go
Jobs
ID Job ID Ran Files Coverage
1 27389982525.1 12 Jun 2026 02:13AM UTC 213
26.34
GitHub Action Run
Source Files on build 27389982525
  • Tree
  • List 213
  • Changed 7
  • Source Changed 0
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 5bf7cd87 on github
  • Prev Build on master (#27389809800)
  • Next Build on master (#27390270577)
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