github.com/cilium/cilium@v1.16.2/operator/pkg/gateway-api/gatewayclass_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  const (
    14  	gatewayClassAcceptedMessage    = "Valid GatewayClass"
    15  	gatewayClassNotAcceptedMessage = "Invalid GatewayClass"
    16  )
    17  
    18  // setGatewayClassAccepted inserts or updates the Accepted condition
    19  // for the provided GatewayClass.
    20  func setGatewayClassAccepted(gwc *gatewayv1.GatewayClass, accepted bool) *gatewayv1.GatewayClass {
    21  	gwc.Status.Conditions = merge(gwc.Status.Conditions, gatewayClassAcceptedCondition(gwc, accepted))
    22  	return gwc
    23  }
    24  
    25  // gatewayClassAcceptedCondition returns the GatewayClass with Accepted status condition.
    26  // TODO(tam): Update GatewayClassReasonInvalidParameters message when parameter support is added.
    27  func gatewayClassAcceptedCondition(gwc *gatewayv1.GatewayClass, accepted bool) metav1.Condition {
    28  	switch accepted {
    29  	case true:
    30  		return metav1.Condition{
    31  			Type:               string(gatewayv1.GatewayClassConditionStatusAccepted),
    32  			Status:             metav1.ConditionTrue,
    33  			Reason:             string(gatewayv1.GatewayClassReasonAccepted),
    34  			Message:            gatewayClassAcceptedMessage,
    35  			ObservedGeneration: gwc.Generation,
    36  			LastTransitionTime: metav1.NewTime(time.Now()),
    37  		}
    38  	default:
    39  		return metav1.Condition{
    40  			Type:               string(gatewayv1.GatewayClassConditionStatusAccepted),
    41  			Status:             metav1.ConditionFalse,
    42  			Reason:             string(gatewayv1.GatewayClassReasonInvalidParameters),
    43  			Message:            gatewayClassNotAcceptedMessage,
    44  			ObservedGeneration: gwc.Generation,
    45  			LastTransitionTime: metav1.NewTime(time.Now()),
    46  		}
    47  	}
    48  }