@@ -145,9 +145,6 @@ type gatewayReconciler struct {
145145func (r * gatewayReconciler ) Reconcile (ctx context.Context , req reconcile.Request ) (ctrl.Result , error ) {
146146 r .reconcileTracker (req .NamespacedName )
147147 err := r .reconcileHelper (ctx , req )
148- if err != nil {
149- r .logger .Error (err , "Got this error!" )
150- }
151148 return runtime .HandleReconcileError (err , r .logger )
152149}
153150
@@ -196,7 +193,7 @@ func (r *gatewayReconciler) reconcileHelper(ctx context.Context, req reconcile.R
196193 }
197194
198195 if lb == nil {
199- err = r .reconcileDelete (ctx , gw , allRoutes )
196+ err = r .reconcileDelete (ctx , gw , stack , allRoutes )
200197 if err != nil {
201198 r .logger .Error (err , "Failed to process gateway delete" )
202199 }
@@ -206,39 +203,36 @@ func (r *gatewayReconciler) reconcileHelper(ctx context.Context, req reconcile.R
206203 return r .reconcileUpdate (ctx , gw , stack , lb , backendSGRequired )
207204}
208205
209- func (r * gatewayReconciler ) resolveLoadBalancerConfig (ctx context.Context , k8sClient client.Client , reference * gwv1.ParametersReference ) (* elbv2gw.LoadBalancerConfiguration , error ) {
210- var lbConf * elbv2gw.LoadBalancerConfiguration
211- var err error
212- if reference != nil {
213- lbConf = & elbv2gw.LoadBalancerConfiguration {}
214- if reference .Namespace != nil {
215- err = k8sClient .Get (ctx , types.NamespacedName {
216- Namespace : string (* reference .Namespace ),
217- Name : reference .Name ,
218- }, lbConf )
219- } else {
220- err = errors .New ("Namespace must be specified in ParametersRef" )
221- }
222- }
223- return lbConf , err
224- }
225-
226- func (r * gatewayReconciler ) reconcileDelete (ctx context.Context , gw * gwv1.Gateway , routes map [int32 ][]routeutils.RouteDescriptor ) error {
206+ func (r * gatewayReconciler ) reconcileDelete (ctx context.Context , gw * gwv1.Gateway , stack core.Stack , routes map [int32 ][]routeutils.RouteDescriptor ) error {
227207 for _ , routeList := range routes {
228208 if len (routeList ) != 0 {
229- // TODO - Better error messaging (e.g. tell user the routes that are still attached)
230- return errors .New ("Gateway still has routes attached" )
209+ err := errors .Errorf ("Gateway deletion invoked with routes attached [%s]" , generateRouteList (routes ))
210+ r .eventRecorder .Event (gw , corev1 .EventTypeWarning , k8s .GatewayEventReasonFailedDeleteWithRoutesAttached , err .Error ())
211+ return err
231212 }
232213 }
233214
234- return r .finalizerManager .RemoveFinalizers (ctx , gw , r .finalizer )
215+ if k8s .HasFinalizer (gw , r .finalizer ) {
216+ err := r .deployModel (ctx , gw , stack )
217+ if err != nil {
218+ return err
219+ }
220+ if err := r .backendSGProvider .Release (ctx , networking .ResourceTypeGateway , []types.NamespacedName {k8s .NamespacedName (gw )}); err != nil {
221+ return err
222+ }
223+ if err := r .finalizerManager .RemoveFinalizers (ctx , gw , r .finalizer ); err != nil {
224+ r .eventRecorder .Event (gw , corev1 .EventTypeWarning , k8s .GatewayEventReasonFailedAddFinalizer , fmt .Sprintf ("Failed remove finalizer due to %v" , err ))
225+ return err
226+ }
227+ }
228+ return nil
235229}
236230
237231func (r * gatewayReconciler ) reconcileUpdate (ctx context.Context , gw * gwv1.Gateway , stack core.Stack ,
238232 lb * elbv2model.LoadBalancer , backendSGRequired bool ) error {
239233
240234 if err := r .finalizerManager .AddFinalizers (ctx , gw , r .finalizer ); err != nil {
241- r .eventRecorder .Event (gw , corev1 .EventTypeWarning , k8s .ServiceEventReasonFailedAddFinalizer , fmt .Sprintf ("Failed add finalizer due to %v" , err ))
235+ r .eventRecorder .Event (gw , corev1 .EventTypeWarning , k8s .GatewayEventReasonFailedAddFinalizer , fmt .Sprintf ("Failed add finalizer due to %v" , err ))
242236 return err
243237 }
244238 err := r .deployModel (ctx , gw , stack )
@@ -251,16 +245,16 @@ func (r *gatewayReconciler) reconcileUpdate(ctx context.Context, gw *gwv1.Gatewa
251245 }
252246
253247 if ! backendSGRequired {
254- if err := r .backendSGProvider .Release (ctx , networking .ResourceTypeService , []types.NamespacedName {k8s .NamespacedName (gw )}); err != nil {
248+ if err := r .backendSGProvider .Release (ctx , networking .ResourceTypeGateway , []types.NamespacedName {k8s .NamespacedName (gw )}); err != nil {
255249 return err
256250 }
257251 }
258252
259253 if err = r .updateGatewayStatus (ctx , lbDNS , gw ); err != nil {
260- r .eventRecorder .Event (gw , corev1 .EventTypeWarning , k8s .ServiceEventReasonFailedUpdateStatus , fmt .Sprintf ("Failed update status due to %v" , err ))
254+ r .eventRecorder .Event (gw , corev1 .EventTypeWarning , k8s .GatewayEventReasonFailedUpdateStatus , fmt .Sprintf ("Failed update status due to %v" , err ))
261255 return err
262256 }
263- r .eventRecorder .Event (gw , corev1 .EventTypeNormal , k8s .ServiceEventReasonSuccessfullyReconciled , "Successfully reconciled" )
257+ r .eventRecorder .Event (gw , corev1 .EventTypeNormal , k8s .GatewayEventReasonSuccessfullyReconciled , "Successfully reconciled" )
264258 return nil
265259}
266260
@@ -270,7 +264,7 @@ func (r *gatewayReconciler) deployModel(ctx context.Context, gw *gwv1.Gateway, s
270264 if errors .As (err , & requeueNeededAfter ) {
271265 return err
272266 }
273- r .eventRecorder .Event (gw , corev1 .EventTypeWarning , k8s .ServiceEventReasonFailedDeployModel , fmt .Sprintf ("Failed deploy model due to %v" , err ))
267+ r .eventRecorder .Event (gw , corev1 .EventTypeWarning , k8s .GatewayEventReasonFailedDeployModel , fmt .Sprintf ("Failed deploy model due to %v" , err ))
274268 return err
275269 }
276270 r .logger .Info ("successfully deployed model" , "gateway" , k8s .NamespacedName (gw ))
@@ -280,12 +274,12 @@ func (r *gatewayReconciler) deployModel(ctx context.Context, gw *gwv1.Gateway, s
280274func (r * gatewayReconciler ) buildModel (ctx context.Context , gw * gwv1.Gateway , cfg elbv2gw.LoadBalancerConfiguration , listenerToRoute map [int32 ][]routeutils.RouteDescriptor ) (core.Stack , * elbv2model.LoadBalancer , bool , error ) {
281275 stack , lb , backendSGRequired , err := r .modelBuilder .Build (ctx , gw , cfg , listenerToRoute )
282276 if err != nil {
283- r .eventRecorder .Event (gw , corev1 .EventTypeWarning , k8s .ServiceEventReasonFailedBuildModel , fmt .Sprintf ("Failed build model due to %v" , err ))
277+ r .eventRecorder .Event (gw , corev1 .EventTypeWarning , k8s .GatewayEventReasonFailedBuildModel , fmt .Sprintf ("Failed build model due to %v" , err ))
284278 return nil , nil , false , err
285279 }
286280 stackJSON , err := r .stackMarshaller .Marshal (stack )
287281 if err != nil {
288- r .eventRecorder .Event (gw , corev1 .EventTypeWarning , k8s .ServiceEventReasonFailedBuildModel , fmt .Sprintf ("Failed build model due to %v" , err ))
282+ r .eventRecorder .Event (gw , corev1 .EventTypeWarning , k8s .GatewayEventReasonFailedBuildModel , fmt .Sprintf ("Failed build model due to %v" , err ))
289283 return nil , nil , false , err
290284 }
291285 r .logger .Info ("successfully built model" , "model" , stackJSON )
0 commit comments