This is an automated email from the ASF dual-hosted git repository.

villebro pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/superset-kubernetes-operator.git


The following commit(s) were added to refs/heads/main by this push:
     new 18ad5c6  refactor(api)!: rename status version to tag 
(version-agnostic) (#174)
18ad5c6 is described below

commit 18ad5c6abfdc236aa6ce900b5eac3101d1366327
Author: Ville Brofeldt <[email protected]>
AuthorDate: Mon Jul 6 16:01:05 2026 -0700

    refactor(api)!: rename status version to tag (version-agnostic) (#174)
    
    * refactor(api)!: rename status version to tag (version-agnostic)
    
    * simplify changelog entry
    
    * update docs
---
 AGENTS.md                                          |  2 +-
 api/v1alpha1/superset_types.go                     | 13 ++++----
 .../crds/superset.apache.org_supersets.yaml        | 10 +++----
 .../crd/bases/superset.apache.org_supersets.yaml   | 10 +++----
 docs/architecture/internals.md                     |  4 +--
 docs/reference/api-reference.md                    |  8 ++---
 docs/reference/releases.md                         | 16 ++++++----
 docs/user-guide/lifecycle.md                       | 35 ++++++++++------------
 docs/user-guide/migration.md                       |  8 +++++
 internal/controller/lifecycle.go                   | 22 +++++++-------
 internal/controller/lifecycle_pipeline_test.go     |  6 ++--
 internal/controller/lifecycle_settle_test.go       |  6 ++--
 internal/controller/status.go                      |  4 +--
 test/e2e/superset_journey_test.go                  |  4 +--
 14 files changed, 80 insertions(+), 68 deletions(-)

diff --git a/AGENTS.md b/AGENTS.md
index d3a26a0..79e18c7 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -115,7 +115,7 @@ The operator uses a **single public CRD architecture** 
where the parent `Superse
 - **HPA**: When `autoscaling` is set, Deployment replicas is nil (HPA 
manages). Supports custom metrics via `autoscalingv2.MetricSpec`. Top-level 
`autoscaling`/`podDisruptionBudget` provide defaults inherited by all scalable 
components; per-component values override (not merge). CeleryBeat and lifecycle 
tasks are excluded (singleton/one-off Jobs).
 - **Beat singleton**: CeleryBeat always forces replicas=1 regardless of spec.
 - **Gateway API**: Uses `sigs.k8s.io/gateway-api` types. Graceful handling of 
missing CRDs via `meta.IsNoMatchError`.
-- **Lifecycle tasks**: `spec.lifecycle` on the parent CRD (type 
`LifecycleSpec`) defines up to four sequential tasks: "seed" (database snapshot 
from external source), "migrate" (`superset db upgrade`), "rotate" (`superset 
re-encrypt-secrets` for secret key rotation), and "init" (`superset init`). The 
parent controller sequences them (migrate waits for seed, rotate waits for 
migrate, init waits for rotate), gates component deployment, and triggers 
re-runs by deleting and recreating determ [...]
+- **Lifecycle tasks**: `spec.lifecycle` on the parent CRD (type 
`LifecycleSpec`) defines up to four sequential tasks: "seed" (database snapshot 
from external source), "migrate" (`superset db upgrade`), "rotate" (`superset 
re-encrypt-secrets` for secret key rotation), and "init" (`superset init`). The 
parent controller sequences them (migrate waits for seed, rotate waits for 
migrate, init waits for rotate), gates component deployment, and triggers 
re-runs by deleting and recreating determ [...]
 - **CRD validation**: All validation uses CEL (`x-kubernetes-validations`) on 
CRD types — no admission webhooks. Rules cover: environment mode restrictions, 
secret mutual exclusivity, metastore/valkey validation, networking constraints, 
monitoring constraints. Defaults (repository, pullPolicy, environment) use 
kubebuilder default markers.
 - **Metrics**: Operator exposes controller-runtime default metrics (reconcile 
counts, durations, leader election) on HTTPS :8443 with Kubernetes auth/authz. 
No custom metrics — controller-runtime defaults are sufficient. Superset 
instance monitoring via optional `spec.monitoring.serviceMonitor` (creates a 
Prometheus ServiceMonitor targeting the web-server component using unstructured 
objects; gracefully skips if CRD is absent).
 - **Config mount path**: `/app/pythonpath` for superset_config.py.
diff --git a/api/v1alpha1/superset_types.go b/api/v1alpha1/superset_types.go
index af71f83..6bff1fa 100644
--- a/api/v1alpha1/superset_types.go
+++ b/api/v1alpha1/superset_types.go
@@ -452,7 +452,7 @@ type LifecycleSpec struct {
 }
 
 // MigrateTaskSpec defines the database migration task.
-// Triggers on image (version) changes and upstream task re-execution.
+// Triggers on image tag changes and upstream task re-execution.
 type MigrateTaskSpec struct {
        BaseTaskSpec `json:",inline"`
 }
@@ -780,8 +780,9 @@ type SupersetStatus struct {
        // Used to detect image changes on subsequent reconciles.
        // +optional
        LastLifecycleImage string `json:"lastLifecycleImage,omitempty"`
+       // Tag is the resolved image tag currently reconciled.
        // +optional
-       Version string `json:"version,omitempty"`
+       Tag string `json:"tag,omitempty"`
        // +optional
        ConfigChecksum string `json:"configChecksum,omitempty"`
        // High-level phase.
@@ -863,10 +864,12 @@ type TaskRefStatus struct {
 
 // UpgradeContext tracks the current upgrade operation.
 type UpgradeContext struct {
+       // FromTag is the image tag previously reconciled.
        // +optional
-       FromVersion string `json:"fromVersion,omitempty"`
+       FromTag string `json:"fromTag,omitempty"`
+       // ToTag is the image tag being reconciled.
        // +optional
-       ToVersion string `json:"toVersion,omitempty"`
+       ToTag string `json:"toTag,omitempty"`
        // ApprovalToken is the annotation value required to approve this exact 
upgrade transition.
        // +optional
        ApprovalToken string `json:"approvalToken,omitempty"`
@@ -942,7 +945,7 @@ type ComponentResourceStatus struct {
 
 // +kubebuilder:object:root=true
 // +kubebuilder:subresource:status
-// 
+kubebuilder:printcolumn:name="Version",type=string,JSONPath=`.status.version`
+// +kubebuilder:printcolumn:name="Tag",type=string,JSONPath=`.status.tag`
 // +kubebuilder:printcolumn:name="Phase",type=string,JSONPath=`.status.phase`
 // 
+kubebuilder:printcolumn:name="Lifecycle",type=string,JSONPath=`.status.lifecycle.phase`
 // +kubebuilder:printcolumn:name="Ready",type=string,JSONPath=`.status.ready`
diff --git a/charts/superset-operator/crds/superset.apache.org_supersets.yaml 
b/charts/superset-operator/crds/superset.apache.org_supersets.yaml
index 78f67fc..3ddec9b 100644
--- a/charts/superset-operator/crds/superset.apache.org_supersets.yaml
+++ b/charts/superset-operator/crds/superset.apache.org_supersets.yaml
@@ -15,8 +15,8 @@ spec:
   scope: Namespaced
   versions:
   - additionalPrinterColumns:
-    - jsonPath: .status.version
-      name: Version
+    - jsonPath: .status.tag
+      name: Tag
       type: string
     - jsonPath: .status.phase
       name: Phase
@@ -40045,12 +40045,12 @@ spec:
                     properties:
                       approvalToken:
                         type: string
-                      fromVersion:
+                      fromTag:
                         type: string
                       startedAt:
                         format: date-time
                         type: string
-                      toVersion:
+                      toTag:
                         type: string
                     type: object
                 type: object
@@ -40069,7 +40069,7 @@ spec:
                 type: string
               ready:
                 type: string
-              version:
+              tag:
                 type: string
             type: object
         type: object
diff --git a/config/crd/bases/superset.apache.org_supersets.yaml 
b/config/crd/bases/superset.apache.org_supersets.yaml
index 78f67fc..3ddec9b 100644
--- a/config/crd/bases/superset.apache.org_supersets.yaml
+++ b/config/crd/bases/superset.apache.org_supersets.yaml
@@ -15,8 +15,8 @@ spec:
   scope: Namespaced
   versions:
   - additionalPrinterColumns:
-    - jsonPath: .status.version
-      name: Version
+    - jsonPath: .status.tag
+      name: Tag
       type: string
     - jsonPath: .status.phase
       name: Phase
@@ -40045,12 +40045,12 @@ spec:
                     properties:
                       approvalToken:
                         type: string
-                      fromVersion:
+                      fromTag:
                         type: string
                       startedAt:
                         format: date-time
                         type: string
-                      toVersion:
+                      toTag:
                         type: string
                     type: object
                 type: object
@@ -40069,7 +40069,7 @@ spec:
                 type: string
               ready:
                 type: string
-              version:
+              tag:
                 type: string
             type: object
         type: object
diff --git a/docs/architecture/internals.md b/docs/architecture/internals.md
index 7ca6715..d5abe24 100644
--- a/docs/architecture/internals.md
+++ b/docs/architecture/internals.md
@@ -391,7 +391,7 @@ The parent `Superset` CR reports aggregate status:
 status:
   phase: Running
   observedGeneration: 3
-  version: "latest"
+  tag: "latest"
   ready: "7/7"
   components:
     webServer:
@@ -442,7 +442,7 @@ The top-level `status.phase` reflects the overall instance 
state:
 | Phase | Meaning |
 |---|---|
 | `Initializing` | First deployment — lifecycle tasks running for the first 
time |
-| `Upgrading` | Image change detected — lifecycle tasks running against new 
version |
+| `Upgrading` | Image tag change detected — lifecycle tasks running against 
the new image |
 | `Running` | All enabled components are ready and lifecycle is complete |
 | `Degraded` | One or more components are not fully ready |
 | `Suspended` | `spec.suspend: true` — all reconciliation paused |
diff --git a/docs/reference/api-reference.md b/docs/reference/api-reference.md
index ed4379a..73914ab 100644
--- a/docs/reference/api-reference.md
+++ b/docs/reference/api-reference.md
@@ -682,7 +682,7 @@ _Appears in:_
 
 
 MigrateTaskSpec defines the database migration task.
-Triggers on image (version) changes and upstream task re-execution.
+Triggers on image tag changes and upstream task re-execution.
 
 
 
@@ -1111,7 +1111,7 @@ _Appears in:_
 | `components` _[ComponentStatusMap](#componentstatusmap)_ |  |  | Optional: 
\{\} <br /> |
 | `lifecycle` _[LifecycleStatus](#lifecyclestatus)_ | Lifecycle tracks the 
current lifecycle state. |  | Optional: \{\} <br /> |
 | `lastLifecycleImage` _string_ | Last image (repository:tag) that 
successfully completed the lifecycle.<br />Used to detect image changes on 
subsequent reconciles. |  | Optional: \{\} <br /> |
-| `version` _string_ |  |  | Optional: \{\} <br /> |
+| `tag` _string_ | Tag is the resolved image tag currently reconciled. |  | 
Optional: \{\} <br /> |
 | `configChecksum` _string_ |  |  | Optional: \{\} <br /> |
 | `phase` _string_ | High-level phase. |  | Enum: [Initializing Upgrading 
Running Degraded Suspended Blocked AwaitingApproval] <br />Optional: \{\} <br 
/> |
 
@@ -1157,8 +1157,8 @@ _Appears in:_
 
 | Field | Description | Default | Validation |
 | --- | --- | --- | --- |
-| `fromVersion` _string_ |  |  | Optional: \{\} <br /> |
-| `toVersion` _string_ |  |  | Optional: \{\} <br /> |
+| `fromTag` _string_ | FromTag is the image tag previously reconciled. |  | 
Optional: \{\} <br /> |
+| `toTag` _string_ | ToTag is the image tag being reconciled. |  | Optional: 
\{\} <br /> |
 | `approvalToken` _string_ | ApprovalToken is the annotation value required to 
approve this exact upgrade transition. |  | Optional: \{\} <br /> |
 | `startedAt` 
_[Time](https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Time)_ |  |  | 
Optional: \{\} <br /> |
 
diff --git a/docs/reference/releases.md b/docs/reference/releases.md
index 894bfe3..be94100 100644
--- a/docs/reference/releases.md
+++ b/docs/reference/releases.md
@@ -26,15 +26,19 @@ releases.
 
 ### Changed
 
+- **Breaking:** renamed the "version" status fields to "tag". `status.version`
+  → `status.tag` (the `kubectl get` column is renamed **Version** → **Tag**),
+  and `status.lifecycle.upgrade.fromVersion`/`toVersion` → `fromTag`/`toTag`.
+  No behavior change.
 - **Breaking:** downgrade blocking is removed. Any change to the lifecycle 
image
   tag now re-runs the migrate task (`superset db upgrade`) regardless of
   direction — the operator no longer performs semver comparison or sets
-  `status.phase: Blocked` on a version decrease, matching the official Superset
-  Helm chart. The migrate task only runs `superset db upgrade` (Superset's down
-  migrations are poorly tested and often break, so the operator never runs
-  them), so take a database backup before an upgrade if you may need to revert.
-  The `direction` field is removed from `status.lifecycle.upgrade`, and the
-  `VersionComparisonSkipped` warning event no longer fires.
+  `status.phase: Blocked` on a version decrease. The migrate task only runs
+  `superset db upgrade` (Superset's down migrations are poorly tested and often
+  break, so the operator never runs them), so take a database backup before an
+  upgrade if you may need to revert. The `direction` field is removed from
+  `status.lifecycle.upgrade`, and the `VersionComparisonSkipped` warning event
+  no longer fires.
 - **Breaking:** the lifecycle `clone` task is renamed to `seed`. Rename
   `spec.lifecycle.clone` to `spec.lifecycle.seed` (and its `postCloneSQL` field
   to `postSeedSQL`) in your Superset resources. The task Job name suffix 
changes
diff --git a/docs/user-guide/lifecycle.md b/docs/user-guide/lifecycle.md
index 6c17187..b9cd069 100644
--- a/docs/user-guide/lifecycle.md
+++ b/docs/user-guide/lifecycle.md
@@ -52,7 +52,7 @@ Each task has hardcoded trigger inputs — what it watches for 
changes:
 
 | Task | Watches | Re-runs when... |
 |------|---------|-----------------|
-| Seed | `trigger` field, `cronSchedule` tick, source config, excludes, target 
Superset image | Trigger value changes, schedule tick boundary crossed, source 
DB config changes, or target image changes (so a downgrade triggers a fresh 
seed before migrate sees the older schema) |
+| Seed | `trigger` field, `cronSchedule` tick, source config, excludes, target 
Superset image | Trigger value changes, schedule tick boundary crossed, source 
DB config changes, or the target image changes (so the data set is re-seeded 
before migrate runs against it) |
 | Migrate | Image (resolved lifecycle image), `metastore.createDatabase` flag 
| Image tag or repository changes, or `createDatabase` is toggled |
 | Rotate | `trigger` field, `secretKeyFrom` ref, `previousSecretKeyFrom` ref | 
Secret key references change or trigger value changes |
 | Init | Config checksum (rendered Python config) | Any config-affecting field 
changes |
@@ -174,23 +174,20 @@ You can monitor the upgrade status with:
 kubectl get superset my-superset -o jsonpath='{.status.lifecycle}'
 ```
 
-### Version changes and downgrades
+### Changing the image tag
 
-Any change to the lifecycle image tag re-runs the migrate task
-(`superset db upgrade`), regardless of whether the new version is higher or
-lower than the previous one. The operator does not compare versions or block
-downgrades. This matches the behavior of the official Superset Helm chart, 
which
-runs `superset db upgrade` on every upgrade.
+Any change to the resolved lifecycle image tag re-runs the migrate task
+(`superset db upgrade`), whether the new tag is a higher or lower version. The
+operator does not compare versions — it runs `superset db upgrade` on every
+image change.
 
-The migrate task only ever runs `superset db upgrade`. Superset does provide
-`superset db downgrade`, but its down migrations are poorly tested and often
-break, so the operator never runs them — pinning back to an older image re-runs
-the forward migration rather than reversing the schema. You are responsible for
-ensuring the database is compatible with the target version (for example, by
-restoring a backup taken before the upgrade). Allowing the change means a
-deployment that needs to revert after a failed upgrade is never stranded in a
-blocked state. Take a database backup before every migration so a known-good
-dump exists if you need to revert.
+Migrate only ever runs `superset db upgrade`; the operator never runs
+`superset db downgrade` (Superset's down migrations are poorly tested and often
+break). So pinning back to an older image re-runs the forward migration rather
+than reversing the schema — you are responsible for ensuring the database is
+compatible with the target image, for example by restoring a backup taken
+before the upgrade. Take a backup before every upgrade so you can revert if
+needed.
 
 ## Drain Behavior
 
@@ -694,8 +691,8 @@ Migrate is image/schema-version driven and intentionally 
ignores feature/config
 changes — a config tweak does not re-run migrations. Init is the
 config-sensitive task: rendered `superset_config.py` changes propagate here.
 Seed tracks both the source connection identity and the *target* Superset
-image, so a staging image change (including a downgrade) triggers a fresh seed
-before migrations re-run. Rotate fires on secret-key transitions.
+image, so a staging image change triggers a fresh seed before migrations
+re-run. Rotate fires on secret-key transitions.
 
 **What checksums do NOT cover:** checksums hash *task-semantic* inputs only.
 Pod-level fields like resource requests/limits, node selectors, tolerations,
@@ -773,7 +770,7 @@ Task Job names are deterministic: `{parentName}-{taskType}` 
(e.g. `my-superset-m
 | Phase | Meaning |
 |---|---|
 | `Initializing` | First deployment — lifecycle tasks running for the first 
time |
-| `Upgrading` | Image change detected — lifecycle tasks running against new 
version |
+| `Upgrading` | Image tag change detected — lifecycle tasks running against 
the new image |
 | `Blocked` | Configuration error (e.g. an invalid `seed.cronSchedule`) — 
lifecycle tasks will not run until corrected |
 | `AwaitingApproval` | Supervised upgrade mode — waiting for the target-bound 
approval annotation before proceeding |
 
diff --git a/docs/user-guide/migration.md b/docs/user-guide/migration.md
index d2909fe..42d93d4 100644
--- a/docs/user-guide/migration.md
+++ b/docs/user-guide/migration.md
@@ -219,6 +219,14 @@ drain running components first (scale to zero), then 
components are recreated
 once the pipeline completes; enable `spec.lifecycle.maintenancePage` to serve a
 holding page during the drain. See [Lifecycle](lifecycle.md) for the full 
model.
 
+**Execution differs too.** The chart's init hook (`helm.sh/hook:
+post-install,post-upgrade`) re-runs `superset db upgrade` and `superset init` 
on
+*every* `helm upgrade`, even a no-op re-apply. The operator instead runs each
+task only when its inputs change: migrate on an image tag change, init on a tag
+or rendered-config change, and the whole pipeline cascades when an upstream 
task
+re-runs. A re-apply that changes nothing runs nothing — so it never
+unnecessarily drains components or re-runs migrations.
+
 | Helm chart value | Operator equivalent | Notes |
 |---|---|---|
 | `init.enabled` | `spec.lifecycle.disabled`, or per-task `disabled` | 
Lifecycle is enabled by default (even when `spec.lifecycle` is unset). Set 
`lifecycle.disabled: true` to skip everything, or disable a single task with 
`<task>.disabled: true`. |
diff --git a/internal/controller/lifecycle.go b/internal/controller/lifecycle.go
index 64a5bc3..a965d54 100644
--- a/internal/controller/lifecycle.go
+++ b/internal/controller/lifecycle.go
@@ -438,15 +438,15 @@ func (r *SupersetReconciler) checkUpgradeGates(
        // migrations are poorly tested and frequently break, so the operator 
does
        // not attempt to run them — pinning back to an older image just 
re-runs the
        // forward migration. Blocking the change instead strands deployments 
that
-       // need to pin back after a failed upgrade. Matching the official 
Superset
-       // Helm chart, the operator runs the migration on every change and 
relies on
-       // the (optional) pre-upgrade backup as the safety net.
+       // need to pin back after a failed upgrade. The operator runs the 
migration
+       // on every change and relies on the (optional) pre-upgrade backup as 
the
+       // safety net.
        contextMatches := 
upgradeContextMatches(superset.Status.Lifecycle.Upgrade, oldTag, newTag, 
approvalToken)
 
        if !contextMatches {
                superset.Status.Lifecycle.Upgrade = 
&supersetv1alpha1.UpgradeContext{
-                       FromVersion:   oldTag,
-                       ToVersion:     newTag,
+                       FromTag:       oldTag,
+                       ToTag:         newTag,
                        ApprovalToken: approvalToken,
                        StartedAt:     nowPtr(),
                }
@@ -460,8 +460,8 @@ func (r *SupersetReconciler) checkUpgradeGates(
                        setCondition(&superset.Status.Conditions, 
supersetv1alpha1.ConditionTypeLifecycleComplete,
                                metav1.ConditionFalse, "AwaitingApproval",
                                fmt.Sprintf("Upgrade from %s to %s detected. 
Approve with: kubectl annotate superset %s %s=%s",
-                                       
superset.Status.Lifecycle.Upgrade.FromVersion,
-                                       
superset.Status.Lifecycle.Upgrade.ToVersion,
+                                       
superset.Status.Lifecycle.Upgrade.FromTag,
+                                       superset.Status.Lifecycle.Upgrade.ToTag,
                                        superset.Name, 
annotationApproveUpgrade, approvalToken),
                                superset.Generation)
                        superset.Status.Phase = phaseAwaitingApproval
@@ -475,13 +475,13 @@ func (r *SupersetReconciler) checkUpgradeGates(
 
 func upgradeContextMatches(
        upgrade *supersetv1alpha1.UpgradeContext,
-       fromVersion string,
-       toVersion string,
+       fromTag string,
+       toTag string,
        approvalToken string,
 ) bool {
        return upgrade != nil &&
-               upgrade.FromVersion == fromVersion &&
-               upgrade.ToVersion == toVersion &&
+               upgrade.FromTag == fromTag &&
+               upgrade.ToTag == toTag &&
                upgrade.ApprovalToken == approvalToken
 }
 
diff --git a/internal/controller/lifecycle_pipeline_test.go 
b/internal/controller/lifecycle_pipeline_test.go
index 9cececa..df2520d 100644
--- a/internal/controller/lifecycle_pipeline_test.go
+++ b/internal/controller/lifecycle_pipeline_test.go
@@ -272,7 +272,7 @@ func TestFinalizeLifecycle(t *testing.T) {
                superset := &supersetv1alpha1.Superset{
                        Spec: supersetv1alpha1.SupersetSpec{WebServer: 
&supersetv1alpha1.WebServerComponentSpec{}},
                        Status: supersetv1alpha1.SupersetStatus{Lifecycle: 
&supersetv1alpha1.LifecycleStatus{
-                               Upgrade: 
&supersetv1alpha1.UpgradeContext{FromVersion: "1", ToVersion: "2"},
+                               Upgrade: 
&supersetv1alpha1.UpgradeContext{FromTag: "1", ToTag: "2"},
                        }},
                }
                r := &SupersetReconciler{Recorder: events.NewFakeRecorder(10)}
@@ -333,7 +333,7 @@ func TestCheckUpgradeGates(t *testing.T) {
                assert.False(t, gated)
                // Upgrade context recorded for the in-flight upgrade.
                require.NotNil(t, s.Status.Lifecycle.Upgrade)
-               assert.Equal(t, "2.0.0", s.Status.Lifecycle.Upgrade.FromVersion)
-               assert.Equal(t, "3.0.0", s.Status.Lifecycle.Upgrade.ToVersion)
+               assert.Equal(t, "2.0.0", s.Status.Lifecycle.Upgrade.FromTag)
+               assert.Equal(t, "3.0.0", s.Status.Lifecycle.Upgrade.ToTag)
        })
 }
diff --git a/internal/controller/lifecycle_settle_test.go 
b/internal/controller/lifecycle_settle_test.go
index 90be6e0..11babfd 100644
--- a/internal/controller/lifecycle_settle_test.go
+++ b/internal/controller/lifecycle_settle_test.go
@@ -154,8 +154,8 @@ func 
TestCheckUpgradeGates_StaleApprovalDoesNotApproveChangedTarget(t *testing.T
                Status: supersetv1alpha1.SupersetStatus{
                        Lifecycle: &supersetv1alpha1.LifecycleStatus{
                                Upgrade: &supersetv1alpha1.UpgradeContext{
-                                       FromVersion:   "1.0.0",
-                                       ToVersion:     "1.1.0",
+                                       FromTag:       "1.0.0",
+                                       ToTag:         "1.1.0",
                                        ApprovalToken: oldToken,
                                },
                        },
@@ -167,7 +167,7 @@ func 
TestCheckUpgradeGates_StaleApprovalDoesNotApproveChangedTarget(t *testing.T
        if !gated {
                t.Fatal("expected stale approval token to keep the changed 
target gated")
        }
-       if got := superset.Status.Lifecycle.Upgrade.ToVersion; got != "1.2.0" {
+       if got := superset.Status.Lifecycle.Upgrade.ToTag; got != "1.2.0" {
                t.Fatalf("expected upgrade context to move to 1.2.0, got %q", 
got)
        }
        if got := superset.Status.Lifecycle.Upgrade.ApprovalToken; got != 
newToken {
diff --git a/internal/controller/status.go b/internal/controller/status.go
index 4022f9e..529bad7 100644
--- a/internal/controller/status.go
+++ b/internal/controller/status.go
@@ -109,7 +109,7 @@ func removeCondition(conditions *[]metav1.Condition, 
conditionType string) {
 
 func (r *SupersetReconciler) updateStatus(ctx context.Context, superset 
*supersetv1alpha1.Superset, origSuperset *supersetv1alpha1.Superset) error {
        superset.Status.ObservedGeneration = superset.Generation
-       superset.Status.Version = superset.Spec.Image.Tag
+       superset.Status.Tag = superset.Spec.Image.Tag
 
        if superset.Status.Components == nil {
                superset.Status.Components = 
&supersetv1alpha1.ComponentStatusMap{}
@@ -142,7 +142,7 @@ func (r *SupersetReconciler) updateStatus(ctx 
context.Context, superset *superse
 func (r *SupersetReconciler) updateLifecycleComponentStatus(ctx 
context.Context, superset *supersetv1alpha1.Superset, configChecksum string) {
        _ = ctx
        superset.Status.ObservedGeneration = superset.Generation
-       superset.Status.Version = superset.Spec.Image.Tag
+       superset.Status.Tag = superset.Spec.Image.Tag
        superset.Status.ConfigChecksum = configChecksum
 
        if superset.Status.Components == nil {
diff --git a/test/e2e/superset_journey_test.go 
b/test/e2e/superset_journey_test.go
index 045e142..4cc4a7a 100644
--- a/test/e2e/superset_journey_test.go
+++ b/test/e2e/superset_journey_test.go
@@ -268,8 +268,8 @@ spec:
 
                By("verifying the upgrade is awaiting approval")
                expectJSONPath("superset", crName, "{.status.lifecycle.phase}", 
"AwaitingApproval", time.Minute)
-               expectJSONPath("superset", crName, 
"{.status.lifecycle.upgrade.fromVersion}", "6.0.0", time.Minute)
-               expectJSONPath("superset", crName, 
"{.status.lifecycle.upgrade.toVersion}", "6.1.0", time.Minute)
+               expectJSONPath("superset", crName, 
"{.status.lifecycle.upgrade.fromTag}", "6.0.0", time.Minute)
+               expectJSONPath("superset", crName, 
"{.status.lifecycle.upgrade.toTag}", "6.1.0", time.Minute)
 
                By("approving the supervised upgrade with the recorded token")
                token, err := jsonPath("superset", crName, 
"{.status.lifecycle.upgrade.approvalToken}")

Reply via email to