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

stacklok / toolhive / 24196409184
66%

Build:
DEFAULT BRANCH: main
Ran 09 Apr 2026 02:49PM UTC
Jobs 1
Files 616
Run time 2min
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 02:43PM UTC coverage: 64.983% (-0.08%) from 65.065%
24196409184

push

github

web-flow
Add decoupled configYAML path to MCPRegistry CRD (#4693)

* Add decoupled configYAML path to MCPRegistry CRD

The MCPRegistry CRD currently mirrors the registry server's config.yaml
structure field-by-field, coupling the operator to registry server config
changes. PR #4653 demonstrated this cost: 2,993+/2,458- lines to align
the CRD with a v2 config format.

Add a new decoupled config path alongside the existing typed fields:

- configYAML: raw YAML string passed through to the registry server as
  config.yaml, with no operator parsing or transformation
- volumes/volumeMounts: standard corev1 types for user-managed volume
  wiring (secrets, ConfigMaps, PVCs)
- pgpassSecretRef: operator-managed pgpass mount with init container
  for chmod 0600 (the one Kubernetes plumbing detail users cannot
  express through volumes alone)

The two paths are mutually exclusive (CEL + reconciler validation).
The existing typed fields are deprecated but fully functional, allowing
gradual migration. A future release will remove the legacy path.

Includes RFC document, validation with reserved name/mount path
collision detection, 27 new unit tests, and 6 example manifests.

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

* Use raw JSON for volumes/volumeMounts to reduce CRD schema size

Change Volumes and VolumeMounts fields from typed []corev1.Volume /
[]corev1.VolumeMount to []apiextensionsv1.JSON with
x-kubernetes-preserve-unknown-fields. This avoids expanding the full
Kubernetes volume OpenAPI schema into the CRD manifest, reducing the
CRD diff by ~3,900 lines.

Add ParseVolumes() and ParseVolumeMounts() helper methods on
MCPRegistrySpec that deserialize the raw JSON into typed objects at
reconciliation time. Validation of volume structure happens at pod
creation time rather than CRD admission time.

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

* Remove RFC document from tracked files

The RFC is a design document used to... (continued)

203 of 389 new or added lines in 9 files covered. (52.19%)

47 existing lines in 7 files now uncovered.

55863 of 85966 relevant lines covered (64.98%)

62.53 hits per line

Uncovered Changes

Lines Coverage ∆ File
88
61.45
-28.39% cmd/thv-operator/pkg/registryapi/deployment.go
61
31.58
-11.87% cmd/thv-operator/pkg/registryapi/manager.go
16
78.8
4.43% cmd/thv-operator/controllers/mcpregistry_controller.go
14
35.45
0.62% cmd/thv-operator/api/v1alpha1/zz_generated.deepcopy.go
7
61.7
0.0% cmd/thv-operator/pkg/registryapi/service.go

Coverage Regressions

Lines Coverage ∆ File
14
74.44
-5.19% pkg/client/config.go
11
68.83
-14.29% pkg/client/discovery.go
8
23.56
-4.6% pkg/client/manager.go
6
76.15
-5.5% pkg/secrets/keyring/keyctl_linux.go
5
82.81
-0.21% pkg/vmcp/composer/workflow_engine.go
2
95.68
-1.44% pkg/vmcp/composer/template_expander.go
1
35.45
0.62% cmd/thv-operator/api/v1alpha1/zz_generated.deepcopy.go
Jobs
ID Job ID Ran Files Coverage
1 24196409184.1 09 Apr 2026 02:49PM UTC 616
64.98
GitHub Action Run
Source Files on build 24196409184
  • Tree
  • List 616
  • Changed 19
  • Source Changed 9
  • Coverage Changed 18
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #24196409184
  • ed7e41b1 on github
  • Prev Build on main (#24193847747)
  • Next Build on main (#24198218643)
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