diff --git a/resource_customizations/ocs.openshift.io/StorageCluster/health.lua b/resource_customizations/ocs.openshift.io/StorageCluster/health.lua index 55c2e60160..3b500cc160 100644 --- a/resource_customizations/ocs.openshift.io/StorageCluster/health.lua +++ b/resource_customizations/ocs.openshift.io/StorageCluster/health.lua @@ -1,28 +1,31 @@ -local hs = {} -if obj.status ~= nil then - if obj.status.conditions ~= nil then - for _, condition in pairs(obj.status.conditions) do - if condition.type == "Degraded" and condition.status == "True" then - hs.status = "Degraded" - hs.message = condition.message - return hs - elseif condition.type == "Progressing" and condition.status == "False" then - hs.status = "Progressing" - hs.message = condition.message - return hs - elseif condition.type == "Upgradeable" and condition.status == "True" then - hs.status = "Healthy" - hs.message = condition.message - return hs - elseif condition.type == "Available" and condition.status == "True" then - hs.status = "Healthy" - hs.message = condition.message - return hs - end +local hs_degraded = {} +local hs_progressing = {} +local hs_healthy = {} +local is_degraded = false +local is_progressing = false +local is_healthy = false +if obj ~= nil and obj.status ~= nil and obj.status.conditions ~= nil then + for _, condition in pairs(obj.status.conditions) do + if condition.type == "Degraded" and condition.status == "True" then + is_degraded = true + hs_degraded.status = "Degraded" + hs_degraded.message = condition.message + elseif condition.type == "Progressing" and condition.status == "True" then + is_progressing = true + hs_progressing.status = "Progressing" + hs_progressing.message = condition.message + elseif condition.type == "Available" and condition.status == "True" then + is_healthy = true + hs_healthy.status = "Healthy" + hs_healthy.message = condition.message end end end - -hs.status = "Progressing" -hs.message = "StorageCluster is still being initialized or is in an unknown state." -return hs \ No newline at end of file +if is_degraded then + return hs_degraded +elseif is_progressing then + return hs_progressing +elseif is_healthy then + return hs_healthy +end +return { status = "Unknown", message = "StorageCluster is in an unknown state." } diff --git a/resource_customizations/ocs.openshift.io/StorageCluster/health_test.yaml b/resource_customizations/ocs.openshift.io/StorageCluster/health_test.yaml index beff551492..ddcd5605be 100644 --- a/resource_customizations/ocs.openshift.io/StorageCluster/health_test.yaml +++ b/resource_customizations/ocs.openshift.io/StorageCluster/health_test.yaml @@ -1,17 +1,13 @@ tests: - healthStatus: status: Degraded - message: "StorageCluster is degraded" + message: "CephCluster error: Failed to configure ceph cluster" inputPath: testdata/degraded.yaml - healthStatus: status: Progressing - message: "StorageCluster is progressing" + message: "Initializing StorageCluster" inputPath: testdata/progressing.yaml - healthStatus: status: Healthy message: "Reconcile completed successfully" - inputPath: testdata/healthy_available.yaml -- healthStatus: - status: Healthy - message: "StorageCluster is healthy and upgradeable" - inputPath: testdata/healthy_upgradeable.yaml \ No newline at end of file + inputPath: testdata/available.yaml diff --git a/resource_customizations/ocs.openshift.io/StorageCluster/testdata/available.yaml b/resource_customizations/ocs.openshift.io/StorageCluster/testdata/available.yaml new file mode 100644 index 0000000000..0fbb3396a5 --- /dev/null +++ b/resource_customizations/ocs.openshift.io/StorageCluster/testdata/available.yaml @@ -0,0 +1,65 @@ +apiVersion: ocs.openshift.io/v1 +kind: StorageCluster +metadata: + name: test-storagecluster + namespace: argocd +spec: + manageNodes: false + monDataDirHostPath: /var/lib/rook + storageDeviceSets: + - name: test-storagecluster-device-set + count: 1 + resources: + limits: + cpu: "1" + memory: 2Gi + requests: + cpu: "1" + memory: 2Gi + portable: true + dataPVCTemplate: + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + placement: {} +status: + conditions: + - lastHeartBeatTime: "2023-10-01T12:00:00Z" + lastTransitionTime: "2023-10-01T12:00:00Z" + message: Version check successful + reason: VersionMatched + status: "False" + type: VersionMismatch + - lastHeartBeatTime: "2023-10-01T12:00:00Z" + lastTransitionTime: "2023-10-01T12:00:00Z" + message: "Reconcile completed successfully" + reason: ReconcileCompleted + status: "True" + type: ReconcileComplete + - lastHeartBeatTime: "2023-10-01T12:00:00Z" + lastTransitionTime: "2023-10-01T12:00:00Z" + message: "Reconcile completed successfully" + reason: ReconcileCompleted + status: "True" + type: Available + - lastHeartBeatTime: "2023-10-01T12:00:00Z" + lastTransitionTime: "2023-10-01T12:00:00Z" + message: "Reconcile completed successfully" + reason: ReconcileCompleted + status: "False" + type: Progressing + - lastHeartBeatTime: "2023-10-01T12:00:00Z" + lastTransitionTime: "2023-10-01T12:00:00Z" + message: Reconcile completed successfully + reason: ReconcileCompleted + status: "False" + type: Degraded + - lastHeartBeatTime: "2023-10-01T12:00:00Z" + lastTransitionTime: "2023-10-01T12:00:00Z" + message: Reconcile completed successfully + reason: ReconcileCompleted + status: "True" + type: Upgradeable diff --git a/resource_customizations/ocs.openshift.io/StorageCluster/testdata/degraded.yaml b/resource_customizations/ocs.openshift.io/StorageCluster/testdata/degraded.yaml index fc79e93940..162b89325b 100644 --- a/resource_customizations/ocs.openshift.io/StorageCluster/testdata/degraded.yaml +++ b/resource_customizations/ocs.openshift.io/StorageCluster/testdata/degraded.yaml @@ -29,6 +29,37 @@ status: conditions: - lastHeartBeatTime: "2023-10-01T12:00:00Z" lastTransitionTime: "2023-10-01T12:00:00Z" - message: "StorageCluster is degraded" + message: Version check successful + reason: VersionMatched + status: "False" + type: VersionMismatch + - lastHeartBeatTime: "2023-10-01T12:00:00Z" + lastTransitionTime: "2023-10-01T12:00:00Z" + message: "Reconcile completed successfully" + reason: ReconcileCompleted + status: "True" + type: ReconcileComplete + - lastHeartBeatTime: "2023-10-01T12:00:00Z" + lastTransitionTime: "2023-10-01T12:00:00Z" + message: 'CephCluster error: Failed to configure ceph cluster' + reason: ClusterStateError + status: "False" + type: Available + - lastHeartBeatTime: "2023-10-01T12:00:00Z" + lastTransitionTime: "2023-10-01T12:00:00Z" + message: "Reconcile completed successfully" + reason: ReconcileCompleted + status: "False" + type: Progressing + - lastHeartBeatTime: "2023-10-01T12:00:00Z" + lastTransitionTime: "2023-10-01T12:00:00Z" + message: "CephCluster error: Failed to configure ceph cluster" + reason: ClusterStateError status: "True" type: Degraded + - lastHeartBeatTime: "2023-10-01T12:00:00Z" + lastTransitionTime: "2023-10-01T12:00:00Z" + message: Reconcile completed successfully + reason: ReconcileCompleted + status: "True" + type: Upgradeable diff --git a/resource_customizations/ocs.openshift.io/StorageCluster/testdata/healthy_available.yaml b/resource_customizations/ocs.openshift.io/StorageCluster/testdata/healthy_available.yaml deleted file mode 100644 index b2f6e36272..0000000000 --- a/resource_customizations/ocs.openshift.io/StorageCluster/testdata/healthy_available.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: ocs.openshift.io/v1 -kind: StorageCluster -metadata: - name: test-storagecluster - namespace: argocd -spec: - manageNodes: false - monDataDirHostPath: /var/lib/rook - storageDeviceSets: - - name: test-storagecluster-device-set - count: 1 - resources: - limits: - cpu: "1" - memory: 2Gi - requests: - cpu: "1" - memory: 2Gi - portable: true - dataPVCTemplate: - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - placement: {} -status: - conditions: - - lastHeartBeatTime: "2023-10-01T12:00:00Z" - lastTransitionTime: "2023-10-01T12:00:00Z" - message: Reconcile completed successfully - reason: ReconcileCompleted - status: "True" - type: Available diff --git a/resource_customizations/ocs.openshift.io/StorageCluster/testdata/healthy_upgradeable.yaml b/resource_customizations/ocs.openshift.io/StorageCluster/testdata/healthy_upgradeable.yaml deleted file mode 100644 index f0953082cb..0000000000 --- a/resource_customizations/ocs.openshift.io/StorageCluster/testdata/healthy_upgradeable.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: ocs.openshift.io/v1 -kind: StorageCluster -metadata: - name: test-storagecluster - namespace: argocd -spec: - manageNodes: false - monDataDirHostPath: /var/lib/rook - storageDeviceSets: - - name: test-storagecluster-device-set - count: 1 - resources: - limits: - cpu: "1" - memory: 2Gi - requests: - cpu: "1" - memory: 2Gi - portable: true - dataPVCTemplate: - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Gi - placement: {} -status: - conditions: - - lastHeartBeatTime: "2023-10-01T12:00:00Z" - lastTransitionTime: "2023-10-01T12:00:00Z" - message: "StorageCluster is healthy and upgradeable" - status: "True" - type: Upgradeable diff --git a/resource_customizations/ocs.openshift.io/StorageCluster/testdata/progressing.yaml b/resource_customizations/ocs.openshift.io/StorageCluster/testdata/progressing.yaml index d212d9cf4e..c34b4e38d6 100644 --- a/resource_customizations/ocs.openshift.io/StorageCluster/testdata/progressing.yaml +++ b/resource_customizations/ocs.openshift.io/StorageCluster/testdata/progressing.yaml @@ -29,6 +29,31 @@ status: conditions: - lastHeartBeatTime: "2023-10-01T12:00:00Z" lastTransitionTime: "2023-10-01T12:00:00Z" - message: "StorageCluster is progressing" + message: Version check successful + reason: VersionMatched status: "False" + type: VersionMismatch + - lastHeartBeatTime: "2023-10-01T12:00:00Z" + lastTransitionTime: "2023-10-01T12:00:00Z" + message: Initializing StorageCluster + reason: Init + status: "False" + type: Available + - lastHeartBeatTime: "2023-10-01T12:00:00Z" + lastTransitionTime: "2023-10-01T12:00:00Z" + message: Initializing StorageCluster + reason: Init + status: "True" type: Progressing + - lastHeartBeatTime: "2023-10-01T12:00:00Z" + lastTransitionTime: "2023-10-01T12:00:00Z" + message: Initializing StorageCluster + reason: Init + status: "False" + type: Degraded + - lastHeartBeatTime: "2023-10-01T12:00:00Z" + lastTransitionTime: "2023-10-01T12:00:00Z" + message: Initializing StorageCluster + reason: Init + status: Unknown + type: Upgradeable