diff --git a/pkg/monitoring/metrics.go b/pkg/monitoring/metrics.go index ced1260a..8fb29960 100644 --- a/pkg/monitoring/metrics.go +++ b/pkg/monitoring/metrics.go @@ -19,6 +19,7 @@ const ( PodStatusPending PodStatus = "Pending" PodStatusError PodStatus = "Error" PodStatusDecommissioning PodStatus = "Decommissioning" + PodStatusTerminating PodStatus = "Terminating" ) func getPodStatus(pod *corev1.Pod) PodStatus { @@ -35,6 +36,9 @@ func getPodStatus(pod *corev1.Pod) PodStatus { return PodStatusError case corev1.PodRunning: default: + if pod.GetDeletionTimestamp() != nil { + return PodStatusTerminating + } } allContainersReady := true diff --git a/pkg/monitoring/metrics_test.go b/pkg/monitoring/metrics_test.go index 5d85dff3..c9d12ad5 100644 --- a/pkg/monitoring/metrics_test.go +++ b/pkg/monitoring/metrics_test.go @@ -73,6 +73,20 @@ func TestMetricAdder(t *testing.T) { require.NoError(err) require.Equal("ready", status) + now := metav1.Now() + pods[1].SetDeletionTimestamp(&now) + UpdatePodStatusMetric(pods[1]) + status, err = getCurrentPodStatus("pod1") + require.NoError(err) + require.Equal("terminating", status) + + // Decommissioning should be prefered to Terminating if we are decommissioning the pod + pods[5].SetDeletionTimestamp(&now) + UpdatePodStatusMetric(pods[1]) + status, err = getCurrentPodStatus("pod5") + require.NoError(err) + require.Equal("decommissioning", status) + RemoveDatacenterPods("ns", "cluster1", "datacenter1") _, err = getCurrentPodStatus("pod4") require.Error(err)