pkg/controllers/eventhandlers/serviceimport.go (39 lines of code) (raw):

package eventhandlers import ( "context" anv1alpha1 "github.com/aws/aws-application-networking-k8s/pkg/apis/applicationnetworking/v1alpha1" "github.com/aws/aws-application-networking-k8s/pkg/model/core" "github.com/aws/aws-application-networking-k8s/pkg/utils/gwlog" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/handler" "sigs.k8s.io/controller-runtime/pkg/reconcile" "github.com/aws/aws-application-networking-k8s/pkg/k8s" ) type serviceImportEventHandler struct { log gwlog.Logger client client.Client mapper *resourceMapper } func NewServiceImportEventHandler(log gwlog.Logger, client client.Client) *serviceImportEventHandler { return &serviceImportEventHandler{ log: log, client: client, mapper: &resourceMapper{log: log, client: client}, } } func (h *serviceImportEventHandler) MapToRoute(routeType core.RouteType) handler.EventHandler { return handler.EnqueueRequestsFromMapFunc(func(ctx context.Context, obj client.Object) []reconcile.Request { return h.mapToRoute(ctx, obj, routeType) }) } func (h *serviceImportEventHandler) mapToRoute(ctx context.Context, obj client.Object, routeType core.RouteType) []reconcile.Request { routes := h.mapper.ServiceImportToRoutes(ctx, obj.(*anv1alpha1.ServiceImport), routeType) var requests []reconcile.Request for _, route := range routes { routeName := k8s.NamespacedName(route.K8sObject()) requests = append(requests, reconcile.Request{NamespacedName: routeName}) h.log.Infow(ctx, "ServiceImport resource change triggered Route update", "serviceName", obj.GetNamespace()+"/"+obj.GetName(), "routeName", routeName, "routeType", routeType) } return requests }