-
Notifications
You must be signed in to change notification settings - Fork 48
/
serviceimport.go
48 lines (39 loc) · 1.65 KB
/
serviceimport.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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("ServiceImport resource change triggered Route update",
"serviceName", obj.GetNamespace()+"/"+obj.GetName(), "routeName", routeName, "routeType", routeType)
}
return requests
}