Skip to main content

FLUX_GITREPOSITORY_API_VERSION

Constant FLUX_GITREPOSITORY_API_VERSION 

Source
pub const FLUX_GITREPOSITORY_API_VERSION: &str = "source.toolkit.fluxcd.io/v1";
Expand description

Canonical FluxCD GitRepository CRD apiVersion every caixa-flux gitrepository.yaml document emits. The Flux v2 source-controller watches resources at this exact group/version (source.toolkit.fluxcd.io/v1); drift to a stale v1beta1 / v1beta2 (the pre-GA Flux v2 source-controller betas every upstream Flux GA- migration doc names) silently routes the rendered GitRepository outside the controller’s Watches and breaks at apply time with a non-self-locating “no kind ‘GitRepository’ is registered for version ‘source.toolkit.fluxcd.io/v1beta2’” error far from the source caixa.lisp / the renderer’s format-string template.

The single source of truth the gitrepository.yaml apiVersion axis reaches for (caixa-flux/src/lib.rs:436 — the gitrepo format-string template). The Flux v2 source/helm/kustomize controller triple pairs each CRD-group/version against its sibling controller’s Watches registration: the rendered GitRepository is the chart-source the sibling HelmRelease document’s spec.chart.spec.sourceRef.kind: GitRepository references, and the parent Kustomization’s spec.sourceRef.kind: GitRepository also points at this same CRD group/version. A future Flux v3 promotion on this axis without a coordinated edit on the sibling FLUX_HELMRELEASE_API_VERSION / future-FLUX_KUSTOMIZATION_API_VERSION axes would silently land the rendered GitRepository outside the source-controller’s Watches (controller-side: never reconciled, the dependent HelmRelease’s chart: sourceRef dangles, every per-Servico apply silently comes up with the prior reconciled state).

Until this lift landed the axis carried an inline source.toolkit.fluxcd.io/v1 literal inside [cluster_bundle]’s gitrepository.yaml format-string template — one occurrence today, promoted to a typed substrate-side &'static str on the same trajectory the FLUX_HELMRELEASE_API_VERSION (55f0fd9) / DEFAULT_FLUX_SYSTEM_NAMESPACE (7197d38) lifts established on the sibling Flux-v2-load-bearing-string surface. The render-side consumer now threads the same &'static str through its format-string template so a future Flux v3 promotion lands in one place; every future renderer that reaches for the canonical Flux v2 GitRepository apiVersion (the future M4 mesh.pleme.io/v1alpha1/Aplicacao CR materializer’s per-Aplicacao GitRepository, a future per-edge GitRepository the operator emits for the CiliumClusterwideEnvoyConfig pipeline, a future caixa-otel collector-pipeline GitRepository) inherits the same value by construction with no opportunity for per-renderer drift.

Same “the typed constant lives in one place” discipline the DEFAULT_NAMESPACE (a085b26) / DEFAULT_LIBRARY_NAME (41438dc) / crate::DEFAULT_SERVICO_PORT (1e22add) / crate::DEFAULT_PUBLISH_TAG_PREFIX (0a6a602) / DEFAULT_FLUX_SYSTEM_NAMESPACE (7197d38) / FLUX_HELMRELEASE_API_VERSION (55f0fd9) lifts apply on the peer canonical-load-bearing-string surface.