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

stacklok / toolhive / 24207493571
66%

Build:
DEFAULT BRANCH: main
Ran 09 Apr 2026 06:53PM UTC
Jobs 1
Files 616
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

09 Apr 2026 06:47PM UTC coverage: 65.072% (+0.02%) from 65.052%
24207493571

push

github

web-flow
Add vMCP MCPServerEntry dynamic mode reconciler (#4710)

* Add vMCP MCPServerEntry dynamic mode reconciler

Enable vMCP dynamic mode to watch MCPServerEntry resources at runtime,
automatically adding/removing them as backends without restart.

- Add CABundleData []byte to Backend and BackendTarget for dynamic mode
  CA bundle support (fetched from K8s ConfigMaps, not volume-mounted)
- Extend newBackendTransport to accept CA cert bytes alongside file path,
  with data taking precedence over path
- Set Backend.Type = BackendTypeEntry in mcpServerEntryToBackend()
- Add fetchCABundleData() to read CA PEM from ConfigMap via CABundleRef
- Extend fetchBackendResource() to try MCPServerEntry as third type
- Add MCPServerEntry watch with groupRef filtering in SetupWithManager()
- Add MCPServerEntry to ExternalAuthConfig change handler
- Add ConfigMap watch for CA bundle changes affecting entry backends

Closes #4659

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Address review feedback on dynamic mode reconciler

- F1: Make CA bundle fetch failure fatal — return nil to exclude backend
  when explicitly configured caBundleRef can't be loaded (matches auth
  config failure pattern, prevents silent TLS trust degradation)
- F2: Add field index for ConfigMap→MCPServerEntry lookup via
  SetupIndexes() — replaces full List+filter with indexed cache query
- F3: Restore source context in CA parse error messages (file path or
  "inline data") for operator debuggability
- F4: Add table-driven tests for fetchCABundleData covering all 5 code
  paths (nil ref, not found, key missing, default key, explicit key)
- F5: Extract MapAuthConfigToEntries() as exported method with 4 test
  cases covering group/auth config matching and filtering
- F6: Update architecture docs (09-operator, 10-virtual-mcp) to document
  MCPServerEntry discovery, ConfigMap watching, and field-indexed lookup

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
... (continued)

78 of 136 new or added lines in 4 files covered. (57.35%)

13 existing lines in 4 files now uncovered.

56546 of 86898 relevant lines covered (65.07%)

61.5 hits per line

Uncovered Changes

Lines Coverage ∆ File
58
46.26
-4.79% pkg/vmcp/k8s/backend_reconciler.go

Coverage Regressions

Lines Coverage ∆ File
6
76.15
-5.5% pkg/secrets/keyring/keyctl_linux.go
3
79.38
-0.77% pkg/transport/proxy/httpsse/http_proxy.go
3
82.81
0.21% pkg/vmcp/composer/workflow_engine.go
1
46.26
-4.79% pkg/vmcp/k8s/backend_reconciler.go
Jobs
ID Job ID Ran Files Coverage
1 24207493571.1 09 Apr 2026 06:53PM UTC 616
65.07
GitHub Action Run
Source Files on build 24207493571
  • Tree
  • List 616
  • Changed 13
  • Source Changed 5
  • Coverage Changed 13
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #24207493571
  • 67bfd98a on github
  • Prev Build on main (#24207149021)
  • Next Build on main (#24207554936)
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