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

opendefensecloud / solution-arsenal / 30349590883 / 1
83%
main: 83%

Build:
DEFAULT BRANCH: main
Ran 28 Jul 2026 10:30AM UTC
Files 71
Run time 2s
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 Jul 2026 10:08AM UTC coverage: 82.538% (+0.1%) from 82.429%
30349590883.1

push

github

web-flow
refactor(api): consolidate cross-namespace references into ObjectReference (#613) (#711)

## What
Consolidate the cross-namespace references in the Solar API from the
two-field `Ref` (`corev1.LocalObjectReference`) + sibling `…Namespace`
string into one small `ObjectReference{name, namespace}` type. Closes
#613.

Applies to the 5 refs that already resolve cross-namespace today, in
both api versions:

- `Target`: `renderRegistryRef` + `renderRegistryNamespace` ->
`renderRegistryRef.{name,namespace}`
- `RegistryBinding`: `targetRef` + `targetNamespace` ->
`targetRef.{name,namespace}`
- `ReleaseBinding`: `targetRef` + `targetNamespace` ->
`targetRef.{name,namespace}`
- `Release`: `componentVersionRef` + `componentVersionNamespace` ->
`componentVersionRef.{name,namespace}`
- `RenderArtifact`: `pushSecretRef` + `pushSecretNamespace` ->
`pushSecretRef.{name,namespace}` (stays optional)

## Why
Right now every cross-namespace ref is two separate fields that can
drift apart, both in the manifest and in the code -> one field is easier
to read and harder to get wrong.

I went with an own type instead of `corev1.ObjectReference` (afaik too
many extra fields) or the Gateway API ones (they carry `group`/`kind` we
don't need here, the kind is already implied by the field name).

I only touched the 5 refs that actually resolve cross-namespace. The
other refs are same-namespace-only and stay `LocalObjectReference` on
purpose. Let me explain what I mean, because the distinction is the
whole point of the scoping:

The 5 refs I migrated already have controller logic behind them that (a)
reads the namespace and (b) checks a `ReferenceGrant` in the target
namespace before following the ref. So a `namespace` on them is real ->
it does something.

The same-namespace-only refs (`registryRef`, `releaseRef`,
`componentRef`, `solarSecretRef`, ...) do not. Their reconcilers always
look up the target in the referencing object's own namespace, full stop.
Example -> `RegistryBindin... (continued)

5204 of 6305 relevant lines covered (82.54%)

31.21 hits per line

Source Files on job 30349590883.1
  • Tree
  • List 71
  • Changed 12
  • Source Changed 10
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 30349590883
  • f6f9b51c on github
  • Prev Job for on main (#30340014167.1)
  • Next Job for on main (#30432191949.1)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc