From cee7536ef70c5ae492b99098959ca0da6d21ff2a Mon Sep 17 00:00:00 2001 From: sanposhiho Date: Mon, 11 Jan 2021 17:30:02 +0900 Subject: [PATCH] Create determinePersistentVolumeHealth --- .../piped/cloudprovider/kubernetes/state.go | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/pkg/app/piped/cloudprovider/kubernetes/state.go b/pkg/app/piped/cloudprovider/kubernetes/state.go index 831ea31eb0..f5690d88e3 100644 --- a/pkg/app/piped/cloudprovider/kubernetes/state.go +++ b/pkg/app/piped/cloudprovider/kubernetes/state.go @@ -430,10 +430,25 @@ func determineSecretHealth(obj *unstructured.Unstructured) (status model.Kuberne return } -// TODO: Check health state of PersistentVolume resource func determinePersistentVolumeHealth(obj *unstructured.Unstructured) (status model.KubernetesResourceState_HealthStatus, desc string) { - desc = "Unimplemented yet" - return + pv := &corev1.PersistentVolume{} + err := scheme.Scheme.Convert(obj, pv, nil) + if err != nil { + status = model.KubernetesResourceState_OTHER + desc = fmt.Sprintf("Unexpected error while calculating: unable to convert %T to %T: %v", obj, pv, err) + return + } + + switch pv.Status.Phase { + case corev1.VolumeBound, corev1.VolumeAvailable: + status = model.KubernetesResourceState_HEALTHY + desc = pv.Status.Message + return + default: + status = model.KubernetesResourceState_OTHER + desc = pv.Status.Message + return + } } func determinePVCHealth(obj *unstructured.Unstructured) (status model.KubernetesResourceState_HealthStatus, desc string) {