diff --git a/docs/architecture.md b/docs/architecture.md index c4030e0..8bcf78f 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -406,12 +406,6 @@ Responsibilities: - compute `status.placed` from Bound NodeClaims per provider; - watch NodeClaims so placement counts update as instances come and go. -The default `kubectl get nodepools` table exposes the `Ready` condition's value -as `STATUS`, followed by strategy, providers, and age. The CRD printer column -reads the condition directly, so `status.conditions` remains the source of truth. -See the [printer-column design](design/nodepool-status-column.md) for the empty -condition and compatibility behavior. - Static spec rules are admission-time CEL validations. Examples: `Weighted` requires a weight on every provider entry, and AWS provider entries require at least one region. diff --git a/docs/design/nodepool-status-column.md b/docs/design/nodepool-status-column.md deleted file mode 100644 index 85501de..0000000 --- a/docs/design/nodepool-status-column.md +++ /dev/null @@ -1,46 +0,0 @@ -# NodePool status printer column - -## Context - -`NodePool.status.conditions` already reports whether a pool can be used. The -controller owns a standard `Ready` condition and sets it to `True` for a valid -pool or `False` when an environment-dependent validation, such as provider -registration, fails. However, the default `kubectl get nodepools` table does not -show that signal, so operators must request the full object or write a JSONPath. - -## Decision - -Add a `Status` CRD printer column whose JSONPath selects the status of the -`Ready` condition: - -```text -.status.conditions[?(@.type=="Ready")].status -``` - -The column is derived directly by the Kubernetes API server when it renders the -table. No duplicate status field or controller change is introduced. This keeps -the condition as the single source of truth and uses the standard condition -values `True`, `False`, and `Unknown`. - -The column appears before policy details so pool health is visible immediately: - -```text -NAME STATUS STRATEGY PROVIDERS AGE -gpu-pool True Ordered modal,runpod 2m -``` - -Before the controller has written the `Ready` condition, the table cell has no -value. This is preferable to manufacturing a fourth status value because absence -already means the controller has not observed the object. - -## Compatibility and rollout - -This is an additive change to `additionalPrinterColumns`; the stored and served -resource schema is unchanged. Existing clients that read `NodePool` objects are -unaffected. Installing the regenerated CRD is sufficient to enable the column -for existing pools, and the next `kubectl get` uses their existing conditions. - -## Verification - -Generation is checked into `config/crd/bases`. Regenerating the manifests keeps -the CRD printer column aligned with the marker in `nodepool_types.go`.