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

astefanutti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit e3dacf9eb4ef747cb42fa005e308abd9b7aa6603
Author: Antonin Stefanutti <anto...@stefanutti.fr>
AuthorDate: Fri Nov 12 17:11:57 2021 +0100

    chore(health): Do not account for non-ready terminating Pods
---
 pkg/controller/integration/monitor.go | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/pkg/controller/integration/monitor.go 
b/pkg/controller/integration/monitor.go
index 66c7d59..2c59130 100644
--- a/pkg/controller/integration/monitor.go
+++ b/pkg/controller/integration/monitor.go
@@ -298,8 +298,12 @@ func (action *monitorAction) 
updateIntegrationPhaseAndReadyCondition(ctx context
                }
                switch ready.Status {
                case corev1.ConditionTrue:
+                       // We still account terminating Pods to handle rolling 
deployments
                        readyPods = append(readyPods, pod)
                case corev1.ConditionFalse:
+                       if pod.DeletionTimestamp != nil {
+                               continue
+                       }
                        unreadyPods = append(unreadyPods, pod)
                }
        }
@@ -319,7 +323,8 @@ func (action *monitorAction) 
updateIntegrationPhaseAndReadyCondition(ctx context
                        // reported to be ready is larger than or equal to the 
specified number
                        // of replicas. This avoids reporting a falsy readiness 
condition
                        // when the Integration is being down-scaled.
-                       setReadyCondition(integration, corev1.ConditionTrue, 
v1.IntegrationConditionDeploymentReadyReason, fmt.Sprintf("%d/%d ready 
replicas", c.Status.ReadyReplicas, replicas))
+                       setReadyCondition(integration, corev1.ConditionTrue, 
v1.IntegrationConditionDeploymentReadyReason, fmt.Sprintf("%d/%d ready 
replicas", readyReplicas, replicas))
+                       return nil
 
                case c.Status.UpdatedReplicas < replicas:
                        setReadyCondition(integration, corev1.ConditionFalse, 
v1.IntegrationConditionDeploymentProgressingReason, fmt.Sprintf("%d/%d updated 
replicas", c.Status.UpdatedReplicas, replicas))
@@ -332,24 +337,28 @@ func (action *monitorAction) 
updateIntegrationPhaseAndReadyCondition(ctx context
                ready := kubernetes.GetKnativeServiceCondition(*c, 
servingv1.ServiceConditionReady)
                if ready.IsTrue() {
                        setReadyCondition(integration, corev1.ConditionTrue, 
v1.IntegrationConditionKnativeServiceReadyReason, "")
-               } else {
-                       setReadyCondition(integration, corev1.ConditionFalse, 
ready.GetReason(), ready.GetMessage())
+                       return nil
                }
+               setReadyCondition(integration, corev1.ConditionFalse, 
ready.GetReason(), ready.GetMessage())
 
        case *batchv1beta1.CronJob:
                switch {
                case c.Status.LastScheduleTime == nil:
                        setReadyCondition(integration, corev1.ConditionTrue, 
v1.IntegrationConditionCronJobCreatedReason, "cronjob created")
+                       return nil
 
                case len(c.Status.Active) > 0:
                        setReadyCondition(integration, corev1.ConditionTrue, 
v1.IntegrationConditionCronJobActiveReason, "cronjob active")
+                       return nil
 
                case c.Spec.SuccessfulJobsHistoryLimit != nil && 
*c.Spec.SuccessfulJobsHistoryLimit == 0 && c.Spec.FailedJobsHistoryLimit != nil 
&& *c.Spec.FailedJobsHistoryLimit == 0:
                        setReadyCondition(integration, corev1.ConditionTrue, 
v1.IntegrationConditionCronJobCreatedReason, "no jobs history available")
+                       return nil
 
                case lastCompletedJob != nil:
                        if complete := 
kubernetes.GetJobCondition(*lastCompletedJob, batchv1.JobComplete); complete != 
nil && complete.Status == corev1.ConditionTrue {
                                setReadyCondition(integration, 
corev1.ConditionTrue, v1.IntegrationConditionLastJobSucceededReason, 
fmt.Sprintf("last job %s completed successfully", lastCompletedJob.Name))
+                               return nil
                        }
 
                default:

Reply via email to