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

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright Authors of Cilium
     3  
     4  package gateway_api
     5  
     6  import (
     7  	"time"
     8  
     9  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    10  	gatewayv1 "sigs.k8s.io/gateway-api/apis/v1"
    11  )
    12  
    13  // setGatewayAccepted inserts or updates the Accepted condition for the provided Gateway resource.
    14  func setGatewayAccepted(gw *gatewayv1.Gateway, accepted bool, msg string) *gatewayv1.Gateway {
    15  	gw.Status.Conditions = merge(gw.Status.Conditions, gatewayStatusAcceptedCondition(gw, accepted, msg))
    16  	return gw
    17  }
    18  
    19  // setGatewayProgrammed inserts or updates the Programmed condition for the provided Gateway resource.
    20  func setGatewayProgrammed(gw *gatewayv1.Gateway, ready bool, msg string) *gatewayv1.Gateway {
    21  	gw.Status.Conditions = merge(gw.Status.Conditions, gatewayStatusProgrammedCondition(gw, ready, msg))
    22  	return gw
    23  }
    24  
    25  func gatewayStatusAcceptedCondition(gw *gatewayv1.Gateway, accepted bool, msg string) metav1.Condition {
    26  	switch accepted {
    27  	case true:
    28  		return metav1.Condition{
    29  			Type:               string(gatewayv1.GatewayConditionAccepted),
    30  			Status:             metav1.ConditionTrue,
    31  			Reason:             string(gatewayv1.GatewayConditionAccepted),
    32  			Message:            msg,
    33  			ObservedGeneration: gw.GetGeneration(),
    34  			LastTransitionTime: metav1.NewTime(time.Now()),
    35  		}
    36  	default:
    37  		return metav1.Condition{
    38  			Type:               string(gatewayv1.GatewayConditionAccepted),
    39  			Status:             metav1.ConditionFalse,
    40  			Reason:             string(gatewayv1.GatewayReasonNoResources),
    41  			Message:            msg,
    42  			ObservedGeneration: gw.GetGeneration(),
    43  			LastTransitionTime: metav1.NewTime(time.Now()),
    44  		}
    45  	}
    46  }
    47  
    48  func gatewayStatusProgrammedCondition(gw *gatewayv1.Gateway, scheduled bool, msg string) metav1.Condition {
    49  	switch scheduled {
    50  	case true:
    51  		return metav1.Condition{
    52  			Type:               string(gatewayv1.GatewayConditionProgrammed),
    53  			Status:             metav1.ConditionTrue,
    54  			Reason:             string(gatewayv1.GatewayReasonProgrammed),
    55  			Message:            msg,
    56  			ObservedGeneration: gw.GetGeneration(),
    57  			LastTransitionTime: metav1.NewTime(time.Now()),
    58  		}
    59  	default:
    60  		return metav1.Condition{
    61  			Type:               string(gatewayv1.GatewayConditionProgrammed),
    62  			Status:             metav1.ConditionFalse,
    63  			Reason:             string(gatewayv1.GatewayReasonListenersNotReady),
    64  			Message:            msg,
    65  			ObservedGeneration: gw.GetGeneration(),
    66  			LastTransitionTime: metav1.NewTime(time.Now()),
    67  		}
    68  	}
    69  }
    70  
    71  func gatewayStatusReadyCondition(gw *gatewayv1.Gateway, scheduled bool, msg string) metav1.Condition {
    72  	switch scheduled {
    73  	case true:
    74  		return metav1.Condition{
    75  			Type:               string(gatewayv1.GatewayConditionReady),
    76  			Status:             metav1.ConditionTrue,
    77  			Reason:             string(gatewayv1.GatewayReasonReady),
    78  			Message:            msg,
    79  			ObservedGeneration: gw.GetGeneration(),
    80  			LastTransitionTime: metav1.NewTime(time.Now()),
    81  		}
    82  	default:
    83  		return metav1.Condition{
    84  			Type:               string(gatewayv1.GatewayConditionReady),
    85  			Status:             metav1.ConditionFalse,
    86  			Reason:             string(gatewayv1.GatewayReasonListenersNotReady),
    87  			Message:            msg,
    88  			ObservedGeneration: gw.GetGeneration(),
    89  			LastTransitionTime: metav1.NewTime(time.Now()),
    90  		}
    91  	}
    92  }
    93  
    94  func gatewayListenerProgrammedCondition(gw *gatewayv1.Gateway, ready bool, msg string) metav1.Condition {
    95  	switch ready {
    96  	case true:
    97  		return metav1.Condition{
    98  			Type:               string(gatewayv1.ListenerConditionProgrammed),
    99  			Status:             metav1.ConditionTrue,
   100  			ObservedGeneration: gw.GetGeneration(),
   101  			LastTransitionTime: metav1.NewTime(time.Now()),
   102  			Reason:             string(gatewayv1.ListenerConditionProgrammed),
   103  			Message:            msg,
   104  		}
   105  	default:
   106  		return metav1.Condition{
   107  			Type:               string(gatewayv1.ListenerConditionProgrammed),
   108  			Status:             metav1.ConditionFalse,
   109  			Reason:             string(gatewayv1.ListenerReasonPending),
   110  			Message:            msg,
   111  			ObservedGeneration: gw.GetGeneration(),
   112  			LastTransitionTime: metav1.NewTime(time.Now()),
   113  		}
   114  	}
   115  }
   116  
   117  func gatewayListenerAcceptedCondition(gw *gatewayv1.Gateway, ready bool, msg string) metav1.Condition {
   118  	switch ready {
   119  	case true:
   120  		return metav1.Condition{
   121  			Type:               string(gatewayv1.ListenerConditionAccepted),
   122  			Status:             metav1.ConditionTrue,
   123  			ObservedGeneration: gw.GetGeneration(),
   124  			LastTransitionTime: metav1.NewTime(time.Now()),
   125  			Reason:             string(gatewayv1.ListenerConditionAccepted),
   126  			Message:            msg,
   127  		}
   128  	default:
   129  		return metav1.Condition{
   130  			Type:               string(gatewayv1.ListenerConditionAccepted),
   131  			Status:             metav1.ConditionFalse,
   132  			Reason:             string(gatewayv1.ListenerReasonPending),
   133  			Message:            msg,
   134  			ObservedGeneration: gw.GetGeneration(),
   135  			LastTransitionTime: metav1.NewTime(time.Now()),
   136  		}
   137  	}
   138  }
   139  
   140  func gatewayListenerInvalidRouteKinds(gw *gatewayv1.Gateway, msg string) metav1.Condition {
   141  	return metav1.Condition{
   142  		Type:               string(gatewayv1.ListenerConditionResolvedRefs),
   143  		Status:             metav1.ConditionFalse,
   144  		Reason:             string(gatewayv1.ListenerReasonInvalidRouteKinds),
   145  		Message:            msg,
   146  		ObservedGeneration: gw.GetGeneration(),
   147  		LastTransitionTime: metav1.NewTime(time.Now()),
   148  	}
   149  }