[FLINK-30405] Add ResourceLifecycleStatus to CommonStatus and printer column (#524)
Co-authored-by: Marton Balassi <marton@apple.com>
diff --git a/docs/content/docs/custom-resource/reference.md b/docs/content/docs/custom-resource/reference.md
index 7c27192..cb0b839 100644
--- a/docs/content/docs/custom-resource/reference.md
+++ b/docs/content/docs/custom-resource/reference.md
@@ -198,6 +198,7 @@
| ----------| ---- | ---- |
| jobStatus | org.apache.flink.kubernetes.operator.api.status.JobStatus | Last observed status of the Flink job on Application/Session cluster. |
| error | java.lang.String | Error information about the FlinkDeployment/FlinkSessionJob. |
+| lifecycleState | org.apache.flink.kubernetes.operator.api.lifecycle.ResourceLifecycleState | Lifecycle state of the Flink resource (including being rolled back, failed etc.). |
| clusterInfo | java.util.Map<java.lang.String,java.lang.String> | Information from running clusters. |
| jobManagerDeploymentStatus | org.apache.flink.kubernetes.operator.api.status.JobManagerDeploymentStatus | Last observed status of the JobManager deployment. |
| reconciliationStatus | org.apache.flink.kubernetes.operator.api.status.FlinkDeploymentReconciliationStatus | Status of the last reconcile operation. |
@@ -224,6 +225,7 @@
| ----------| ---- | ---- |
| jobStatus | org.apache.flink.kubernetes.operator.api.status.JobStatus | Last observed status of the Flink job on Application/Session cluster. |
| error | java.lang.String | Error information about the FlinkDeployment/FlinkSessionJob. |
+| lifecycleState | org.apache.flink.kubernetes.operator.api.lifecycle.ResourceLifecycleState | Lifecycle state of the Flink resource (including being rolled back, failed etc.). |
| reconciliationStatus | org.apache.flink.kubernetes.operator.api.status.FlinkSessionJobReconciliationStatus | Status of the last reconcile operation. |
### JobManagerDeploymentStatus
diff --git a/flink-kubernetes-operator-api/src/main/java/org/apache/flink/kubernetes/operator/api/lifecycle/ResourceLifecycleState.java b/flink-kubernetes-operator-api/src/main/java/org/apache/flink/kubernetes/operator/api/lifecycle/ResourceLifecycleState.java
index 51d52a4..ca580c3 100644
--- a/flink-kubernetes-operator-api/src/main/java/org/apache/flink/kubernetes/operator/api/lifecycle/ResourceLifecycleState.java
+++ b/flink-kubernetes-operator-api/src/main/java/org/apache/flink/kubernetes/operator/api/lifecycle/ResourceLifecycleState.java
@@ -17,6 +17,7 @@
package org.apache.flink.kubernetes.operator.api.lifecycle;
+import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter;
import java.util.Collections;
@@ -36,8 +37,8 @@
ROLLED_BACK(true, "The resource is deployed with the last stable spec"),
FAILED(true, "The job terminally failed");
- private final boolean terminal;
- @Getter private final String description;
+ @JsonIgnore private final boolean terminal;
+ @JsonIgnore @Getter private final String description;
ResourceLifecycleState(boolean terminal, String description) {
this.terminal = terminal;
diff --git a/flink-kubernetes-operator-api/src/main/java/org/apache/flink/kubernetes/operator/api/status/CommonStatus.java b/flink-kubernetes-operator-api/src/main/java/org/apache/flink/kubernetes/operator/api/status/CommonStatus.java
index b90949a..1493ab8 100644
--- a/flink-kubernetes-operator-api/src/main/java/org/apache/flink/kubernetes/operator/api/status/CommonStatus.java
+++ b/flink-kubernetes-operator-api/src/main/java/org/apache/flink/kubernetes/operator/api/status/CommonStatus.java
@@ -22,7 +22,7 @@
import org.apache.flink.kubernetes.operator.api.spec.AbstractFlinkSpec;
import org.apache.flink.kubernetes.operator.api.spec.JobState;
-import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.fabric8.kubernetes.model.annotation.PrinterColumn;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -43,6 +43,12 @@
/** Error information about the FlinkDeployment/FlinkSessionJob. */
private String error;
+ /** Lifecycle state of the Flink resource (including being rolled back, failed etc.). */
+ @PrinterColumn(name = "Lifecycle State")
+ // Calculated from the status, requires no setter. The purpose of this is to expose as a printer
+ // column.
+ private ResourceLifecycleState lifecycleState;
+
/**
* Current reconciliation status of this resource.
*
@@ -50,7 +56,6 @@
*/
public abstract ReconciliationStatus<SPEC> getReconciliationStatus();
- @JsonIgnore
public ResourceLifecycleState getLifecycleState() {
var reconciliationStatus = getReconciliationStatus();
diff --git a/flink-kubernetes-operator-api/src/main/java/org/apache/flink/kubernetes/operator/api/status/ReconciliationStatus.java b/flink-kubernetes-operator-api/src/main/java/org/apache/flink/kubernetes/operator/api/status/ReconciliationStatus.java
index c37c7af..bc593a5 100644
--- a/flink-kubernetes-operator-api/src/main/java/org/apache/flink/kubernetes/operator/api/status/ReconciliationStatus.java
+++ b/flink-kubernetes-operator-api/src/main/java/org/apache/flink/kubernetes/operator/api/status/ReconciliationStatus.java
@@ -24,7 +24,6 @@
import org.apache.flink.kubernetes.operator.api.utils.SpecWithMeta;
import com.fasterxml.jackson.annotation.JsonIgnore;
-import io.fabric8.kubernetes.model.annotation.PrinterColumn;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -50,7 +49,6 @@
private String lastStableSpec;
/** Deployment state of the last reconciled spec. */
- @PrinterColumn(name = "Reconciliation Status")
private ReconciliationState state = ReconciliationState.UPGRADING;
@JsonIgnore
diff --git a/helm/flink-kubernetes-operator/crds/flinkdeployments.flink.apache.org-v1.yml b/helm/flink-kubernetes-operator/crds/flinkdeployments.flink.apache.org-v1.yml
index 5212526..c31d929 100644
--- a/helm/flink-kubernetes-operator/crds/flinkdeployments.flink.apache.org-v1.yml
+++ b/helm/flink-kubernetes-operator/crds/flinkdeployments.flink.apache.org-v1.yml
@@ -18,9 +18,10 @@
jsonPath: .status.jobStatus.state
name: Job Status
type: string
- - description: Deployment state of the last reconciled spec.
- jsonPath: .status.reconciliationStatus.state
- name: Reconciliation Status
+ - description: "Lifecycle state of the Flink resource (including being rolled\
+ \ back, failed etc.)."
+ jsonPath: .status.lifecycleState
+ name: Lifecycle State
type: string
name: v1beta1
schema:
@@ -9243,6 +9244,17 @@
type: object
error:
type: string
+ lifecycleState:
+ enum:
+ - CREATED
+ - SUSPENDED
+ - UPGRADING
+ - DEPLOYED
+ - STABLE
+ - ROLLING_BACK
+ - ROLLED_BACK
+ - FAILED
+ type: string
type: object
type: object
served: true
diff --git a/helm/flink-kubernetes-operator/crds/flinksessionjobs.flink.apache.org-v1.yml b/helm/flink-kubernetes-operator/crds/flinksessionjobs.flink.apache.org-v1.yml
index 1ab2203..4f5e430 100644
--- a/helm/flink-kubernetes-operator/crds/flinksessionjobs.flink.apache.org-v1.yml
+++ b/helm/flink-kubernetes-operator/crds/flinksessionjobs.flink.apache.org-v1.yml
@@ -18,9 +18,10 @@
jsonPath: .status.jobStatus.state
name: Job Status
type: string
- - description: Deployment state of the last reconciled spec.
- jsonPath: .status.reconciliationStatus.state
- name: Reconciliation Status
+ - description: "Lifecycle state of the Flink resource (including being rolled\
+ \ back, failed etc.)."
+ jsonPath: .status.lifecycleState
+ name: Lifecycle State
type: string
name: v1beta1
schema:
@@ -168,6 +169,17 @@
type: object
error:
type: string
+ lifecycleState:
+ enum:
+ - CREATED
+ - SUSPENDED
+ - UPGRADING
+ - DEPLOYED
+ - STABLE
+ - ROLLING_BACK
+ - ROLLED_BACK
+ - FAILED
+ type: string
type: object
type: object
served: true