github.com/cilium/cilium@v1.16.2/operator/pkg/gateway-api/routechecks/conditions.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright Authors of Cilium
     3  
     4  package routechecks
     5  
     6  import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     7  
     8  func merge(existingConditions []metav1.Condition, updates ...metav1.Condition) []metav1.Condition {
     9  	var additions []metav1.Condition
    10  	for i, update := range updates {
    11  		found := false
    12  		for j, cond := range existingConditions {
    13  			if cond.Type == update.Type {
    14  				found = true
    15  				if conditionChanged(cond, update) {
    16  					existingConditions[j].Status = update.Status
    17  					existingConditions[j].Reason = update.Reason
    18  					existingConditions[j].Message = update.Message
    19  					existingConditions[j].ObservedGeneration = update.ObservedGeneration
    20  					existingConditions[j].LastTransitionTime = update.LastTransitionTime
    21  				}
    22  				break
    23  			}
    24  		}
    25  		if !found {
    26  			additions = append(additions, updates[i])
    27  		}
    28  	}
    29  	existingConditions = append(existingConditions, additions...)
    30  	return existingConditions
    31  }
    32  
    33  func conditionChanged(a, b metav1.Condition) bool {
    34  	return a.Status != b.Status ||
    35  		a.Reason != b.Reason ||
    36  		a.Message != b.Message ||
    37  		a.ObservedGeneration != b.ObservedGeneration
    38  }