1515package k8s
1616
1717import (
18+ "context"
1819 "fmt"
1920 "reflect"
2021 "sort"
2122 "sync"
2223 "time"
2324
25+ "github.com/google/uuid"
2426 corev1 "k8s.io/api/core/v1"
2527 discovery "k8s.io/api/discovery/v1"
2628 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -50,6 +52,19 @@ type GatewayController struct {
5052 DisableSync bool
5153}
5254
55+ type keyData struct {
56+ key string
57+ ctx context.Context
58+ }
59+
60+ func InitKeyData (key string ) keyData {
61+ keyCtx := keyData {}
62+ keyCtx .key = key
63+ keyCtx .ctx = context .Background ()
64+ // infralog.GetInfraLogger(infralog.WithInitService())
65+ return keyCtx
66+ }
67+
5368func SharedGatewayController () * GatewayController {
5469 ctrlonce .Do (func () {
5570 controllerInstance = & GatewayController {
@@ -126,7 +141,8 @@ func (c *GatewayController) SetupEventHandlers(k8sinfo k8s.K8sinformers) {
126141 utils .AviLog .Debugf ("Endpointslice Add event: Endpointslice does not have backing svc" )
127142 return
128143 }
129- key := utils .Endpointslices + "/" + namespace + "/" + svcName
144+ UUID := uuid .New ()
145+ key := utils .Endpointslices + "/" + namespace + "/" + svcName + "-" + UUID .String ()
130146 bkt := utils .Bkt (namespace , numWorkers )
131147 c .workqueue [bkt ].AddRateLimited (key )
132148 utils .AviLog .Debugf ("key: %s, msg: ADD" , key )
@@ -155,7 +171,8 @@ func (c *GatewayController) SetupEventHandlers(k8sinfo k8s.K8sinformers) {
155171 utils .AviLog .Debugf ("Endpointslice Delete event: Endpointslice does not have backing svc" )
156172 return
157173 }
158- key := utils .Endpointslices + "/" + namespace + "/" + svcName
174+ UUID := uuid .New ()
175+ key := utils .Endpointslices + "/" + namespace + "/" + svcName + "-" + UUID .String ()
159176 bkt := utils .Bkt (namespace , numWorkers )
160177 c .workqueue [bkt ].AddRateLimited (key )
161178 utils .AviLog .Debugf ("key: %s, msg: DELETE" , key )
@@ -177,7 +194,8 @@ func (c *GatewayController) SetupEventHandlers(k8sinfo k8s.K8sinformers) {
177194 }
178195 svcName = svcNameOld
179196 }
180- key := utils .Endpointslices + "/" + namespace + "/" + svcName
197+ UUID := uuid .New ()
198+ key := utils .Endpointslices + "/" + namespace + "/" + svcName + "-" + UUID .String ()
181199 bkt := utils .Bkt (namespace , numWorkers )
182200 c .workqueue [bkt ].AddRateLimited (key )
183201 utils .AviLog .Debugf ("key: %s, msg: UPDATE" , key )
@@ -513,7 +531,8 @@ func (c *GatewayController) SetupGatewayApiEventHandlers(numWorkers uint32) {
513531 return
514532 }
515533 gw := obj .(* gatewayv1.Gateway )
516- key := lib .Gateway + "/" + utils .ObjKey (gw )
534+ UUID := uuid .New ()
535+ key := lib .Gateway + "/" + utils .ObjKey (gw ) + "-" + UUID .String ()
517536 ok , resVer := objects .SharedResourceVerInstanceLister ().Get (key )
518537 if ok && resVer .(string ) == gw .ResourceVersion {
519538 utils .AviLog .Debugf ("key: %s, msg: same resource version returning" , key )
@@ -555,7 +574,8 @@ func (c *GatewayController) SetupGatewayApiEventHandlers(numWorkers uint32) {
555574 return
556575 }
557576 }
558- key := lib .Gateway + "/" + utils .ObjKey (gw )
577+ UUID := uuid .New ()
578+ key := lib .Gateway + "/" + utils .ObjKey (gw ) + "-" + UUID .String ()
559579 objects .SharedResourceVerInstanceLister ().Delete (key )
560580 namespace , _ , _ := cache .SplitMetaNamespaceKey (utils .ObjKey (gw ))
561581 bkt := utils .Bkt (namespace , numWorkers )
@@ -570,7 +590,9 @@ func (c *GatewayController) SetupGatewayApiEventHandlers(numWorkers uint32) {
570590 oldGw := old .(* gatewayv1.Gateway )
571591 gw := obj .(* gatewayv1.Gateway )
572592 if IsGatewayUpdated (oldGw , gw ) {
573- key := lib .Gateway + "/" + utils .ObjKey (gw )
593+ UUID := uuid .New ()
594+ key := lib .Gateway + "/" + utils .ObjKey (gw ) + "-" + UUID .String ()
595+
574596 valid , allowedRoutesAll := IsValidGateway (key , gw )
575597 if ! valid {
576598 return
@@ -599,7 +621,8 @@ func (c *GatewayController) SetupGatewayApiEventHandlers(numWorkers uint32) {
599621 return
600622 }
601623 gwClass := obj .(* gatewayv1.GatewayClass )
602- key := lib .GatewayClass + "/" + utils .ObjKey (gwClass )
624+ UUID := uuid .New ()
625+ key := lib .GatewayClass + "/" + utils .ObjKey (gwClass ) + "-" + UUID .String ()
603626 ok , resVer := objects .SharedResourceVerInstanceLister ().Get (key )
604627 if ok && resVer .(string ) == gwClass .ResourceVersion {
605628 utils .AviLog .Debugf ("key: %s, msg: same resource version returning" , key )
@@ -635,7 +658,8 @@ func (c *GatewayController) SetupGatewayApiEventHandlers(numWorkers uint32) {
635658 if ! akogatewayapilib .CheckGatewayClassController (controllerName ) {
636659 return
637660 }
638- key := lib .GatewayClass + "/" + utils .ObjKey (gwClass )
661+ UUID := uuid .New ()
662+ key := lib .GatewayClass + "/" + utils .ObjKey (gwClass ) + "-" + UUID .String ()
639663 objects .SharedResourceVerInstanceLister ().Delete (key )
640664 namespace , _ , _ := cache .SplitMetaNamespaceKey (utils .ObjKey (gwClass ))
641665 bkt := utils .Bkt (namespace , numWorkers )
@@ -649,7 +673,8 @@ func (c *GatewayController) SetupGatewayApiEventHandlers(numWorkers uint32) {
649673 oldGwClass := old .(* gatewayv1.GatewayClass )
650674 gwClass := obj .(* gatewayv1.GatewayClass )
651675 if ! reflect .DeepEqual (oldGwClass .Spec , gwClass .Spec ) || gwClass .GetDeletionTimestamp () != nil {
652- key := lib .GatewayClass + "/" + utils .ObjKey (gwClass )
676+ UUID := uuid .New ()
677+ key := lib .GatewayClass + "/" + utils .ObjKey (gwClass ) + "-" + UUID .String ()
653678 if ! IsGatewayClassValid (key , gwClass ) {
654679 return
655680 }
@@ -668,7 +693,8 @@ func (c *GatewayController) SetupGatewayApiEventHandlers(numWorkers uint32) {
668693 return
669694 }
670695 httpRoute := obj .(* gatewayv1.HTTPRoute )
671- key := lib .HTTPRoute + "/" + utils .ObjKey (httpRoute )
696+ UUID := uuid .New ()
697+ key := lib .HTTPRoute + "/" + utils .ObjKey (httpRoute ) + UUID .String ()
672698 ok , resVer := objects .SharedResourceVerInstanceLister ().Get (key )
673699 if ok && resVer .(string ) == httpRoute .ResourceVersion {
674700 utils .AviLog .Debugf ("key: %s, msg: same resource version returning" , key )
@@ -700,7 +726,8 @@ func (c *GatewayController) SetupGatewayApiEventHandlers(numWorkers uint32) {
700726 return
701727 }
702728 }
703- key := lib .HTTPRoute + "/" + utils .ObjKey (httpRoute )
729+ UUID := uuid .New ()
730+ key := lib .HTTPRoute + "/" + utils .ObjKey (httpRoute ) + UUID .String ()
704731 objects .SharedResourceVerInstanceLister ().Delete (key )
705732 namespace , _ , _ := cache .SplitMetaNamespaceKey (utils .ObjKey (httpRoute ))
706733 bkt := utils .Bkt (namespace , numWorkers )
@@ -715,7 +742,8 @@ func (c *GatewayController) SetupGatewayApiEventHandlers(numWorkers uint32) {
715742 oldHTTPRoute := old .(* gatewayv1.HTTPRoute )
716743 newHTTPRoute := obj .(* gatewayv1.HTTPRoute )
717744 if IsHTTPRouteUpdated (oldHTTPRoute , newHTTPRoute ) {
718- key := lib .HTTPRoute + "/" + utils .ObjKey (newHTTPRoute )
745+ UUID := uuid .New ()
746+ key := lib .HTTPRoute + "/" + utils .ObjKey (newHTTPRoute ) + UUID .String ()
719747 if ! IsHTTPRouteConfigValid (key , newHTTPRoute ) {
720748 return
721749 }
0 commit comments