Documentation
¶
Index ¶
Constants ¶
View Source
const ( // ConditionSynced indicates the binding has resolved its pinned // ProjectRelease, the inlined (Cluster)ProjectType passes the // cell-namespace mandate, and a RenderedRelease has been emitted for // the inlined resources. ConditionSynced controller.ConditionType = "Synced" // ConditionNamespaceReady indicates the project's data-plane namespace // (status.namespace) has been observed as healthy on the owned // RenderedRelease. Located by Group="" + Kind="Namespace" + Name // matching binding.Status.Namespace; additional Namespace objects // the PE chooses to render flow through ResourcesReady instead. ConditionNamespaceReady controller.ConditionType = "NamespaceReady" // ConditionResourcesReady indicates every non-namespace entry on the // owned RenderedRelease's status.resources passes its per-Kind health // check. ConditionResourcesReady controller.ConditionType = "ResourcesReady" // ConditionReady aggregates Synced, NamespaceReady, and ResourcesReady. ConditionReady controller.ConditionType = "Ready" // ConditionFinalizing indicates the binding is being finalized (deleted). ConditionFinalizing controller.ConditionType = "Finalizing" )
View Source
const ( // ReasonProjectReleaseNotSet indicates the binding has no // spec.projectRelease pin yet. The pin is advanced externally via a // promote workflow or kubectl edit. ReasonProjectReleaseNotSet controller.ConditionReason = "ProjectReleaseNotSet" // ReasonProjectReleaseNotFound indicates the referenced ProjectRelease // does not exist in the binding's namespace. ReasonProjectReleaseNotFound controller.ConditionReason = "ProjectReleaseNotFound" // ReasonInvalidReleaseConfiguration indicates the ProjectRelease snapshot // disagrees with the binding's owner. ReasonInvalidReleaseConfiguration controller.ConditionReason = "InvalidReleaseConfiguration" // ReasonNamespaceMissing indicates the rendered // (Cluster)ProjectType resources contain no v1/Namespace whose // metadata.name resolves to the project's data-plane namespace // (${metadata.namespace}). Checked on the rendered output, so an // includeWhen that suppresses the namespace entry also surfaces here. ReasonNamespaceMissing controller.ConditionReason = "NamespaceMissing" // ReasonEnvironmentNotFound indicates the referenced Environment does not // exist. ReasonEnvironmentNotFound controller.ConditionReason = "EnvironmentNotFound" // ReasonDataPlaneNotFound indicates the Environment's dataPlaneRef does // not resolve to an existing DataPlane or ClusterDataPlane. ReasonDataPlaneNotFound controller.ConditionReason = "DataPlaneNotFound" // ReasonProjectNotFound indicates the owning Project named by // spec.owner.projectName does not exist in the binding's namespace. ReasonProjectNotFound controller.ConditionReason = "ProjectNotFound" // ReasonRenderingFailed indicates the project pipeline failed to render // the inlined (Cluster)ProjectType resources (CEL evaluation error, // malformed template). ReasonRenderingFailed controller.ConditionReason = "RenderingFailed" // ReasonReleaseCreated indicates the underlying RenderedRelease was // created or updated by this reconcile. ReasonReleaseCreated controller.ConditionReason = "ReleaseCreated" // ReasonReleaseSynced indicates the underlying RenderedRelease is up to // date. ReasonReleaseSynced controller.ConditionReason = "ReleaseSynced" // ReasonReleaseUpdateFailed indicates a transient failure creating or // updating the underlying RenderedRelease. ReasonReleaseUpdateFailed controller.ConditionReason = "ReleaseUpdateFailed" // ReasonReleaseOwnershipConflict indicates a RenderedRelease already // exists at the target name but is owned by a different controller. ReasonReleaseOwnershipConflict controller.ConditionReason = "ReleaseOwnershipConflict" // ReasonNamespaceReady indicates the cell namespace is observed // healthy on the owned RenderedRelease. ReasonNamespaceReady controller.ConditionReason = "NamespaceReady" // ReasonNamespaceProgressing indicates the cell namespace is still // being created or has no observed status yet. ReasonNamespaceProgressing controller.ConditionReason = "NamespaceProgressing" // ReasonNamespaceDegraded indicates the cell namespace reported // HealthStatus=Degraded on the data plane. ReasonNamespaceDegraded controller.ConditionReason = "NamespaceDegraded" // ReasonResourcesReady indicates every non-namespace entry on the // owned RenderedRelease is healthy. ReasonResourcesReady controller.ConditionReason = "ResourcesReady" // ReasonResourcesProgressing indicates one or more non-namespace // entries are still being created/updated or have no observed status // yet. ReasonResourcesProgressing controller.ConditionReason = "ResourcesProgressing" // ReasonResourcesDegraded indicates one or more non-namespace entries // reported HealthStatus=Degraded on the data plane. ReasonResourcesDegraded controller.ConditionReason = "ResourcesDegraded" // ReasonResourceApplyFailed indicates the underlying RenderedRelease // reported ResourcesApplied=False for the current generation. Surfaces // on both NamespaceReady and ResourcesReady since the apply failure is // at the RR level. ReasonResourceApplyFailed controller.ConditionReason = "ResourceApplyFailed" // ReasonReady indicates the binding's aggregate Ready condition is True. ReasonReady controller.ConditionReason = "Ready" // ReasonSyncedNotReady is set on Ready, NamespaceReady, and // ResourcesReady while Synced is False; per-axis sub-conditions written // by a previous successful reconcile would otherwise stay True after // upstream validation breaks (snapshot deleted, environment removed, // render now failing), giving a misleading status. ReasonSyncedNotReady controller.ConditionReason = "SyncedNotReady" // ReasonFinalizing indicates the binding is being finalized. ReasonFinalizing controller.ConditionReason = "Finalizing" )
View Source
const ( // ProjectReleaseBindingFinalizer gates deletion of the binding on cleanup // of its owned RenderedRelease. The binding must outlive its RenderedRelease // so the RenderedRelease finalizer can resolve the data-plane client through // the (still-present) Environment during its own teardown. ProjectReleaseBindingFinalizer = "openchoreo.dev/projectreleasebinding-cleanup" )
Variables ¶
This section is empty.
Functions ¶
func NewFinalizingCondition ¶
NewFinalizingCondition returns a Finalizing=True condition observed at the given generation, used while the binding is being torn down.
Types ¶
type Reconciler ¶
type Reconciler struct {
client.Client
Scheme *runtime.Scheme
// Pipeline renders the inlined (Cluster)ProjectType resources for a
// single ProjectReleaseBinding. The instance holds CEL env and program
// caches; reuse it across reconciles to keep them warm.
Pipeline *projectpipeline.Pipeline
}
Reconciler reconciles a ProjectReleaseBinding object.
func (*Reconciler) SetupWithManager ¶
func (r *Reconciler) SetupWithManager(mgr ctrl.Manager) error
SetupWithManager sets up the controller with the Manager. The binding owns its emitted RenderedRelease so DP-side status updates re-enqueue the binding for readiness aggregation. Watches on DataPlane / ClusterDataPlane / Environment / Project recover the bootstrap-ordering case where a binding settles into a "*NotFound" Synced=False state because one of those upstream resources lands after the binding is created.
Click to show internal directories.
Click to hide internal directories.