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 }