-
Notifications
You must be signed in to change notification settings - Fork 0
/
controller.go
52 lines (41 loc) · 1.45 KB
/
controller.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
49
50
51
52
package transformation
import (
"context"
"github.com/kelseyhightower/envconfig"
"knative.dev/eventing/pkg/reconciler/source"
"knative.dev/pkg/configmap"
"knative.dev/pkg/controller"
"github.com/zeiss/typhoon/pkg/apis/flow/v1alpha1"
informerv1alpha1 "github.com/zeiss/typhoon/pkg/client/generated/injection/informers/flow/v1alpha1/transformation"
reconcilerv1alpha1 "github.com/zeiss/typhoon/pkg/client/generated/injection/reconciler/flow/v1alpha1/transformation"
common "github.com/zeiss/typhoon/pkg/reconciler"
)
// NewController initializes the controller and is called by the generated code
// Registers event handlers to enqueue events
func NewController(
ctx context.Context,
cmw configmap.Watcher,
) *controller.Impl {
typ := (*v1alpha1.Transformation)(nil)
app := common.ComponentName(typ)
// Calling envconfig.Process() with a prefix appends that prefix
// (uppercased) to the Go field name, e.g. MYTARGET_IMAGE.
adapterCfg := &adapterConfig{
obsConfig: source.WatchConfigurations(ctx, app, cmw),
}
envconfig.MustProcess(app, adapterCfg)
informer := informerv1alpha1.Get(ctx)
r := &Reconciler{
adapterCfg: adapterCfg,
}
impl := reconcilerv1alpha1.NewImpl(ctx, r)
r.base = common.NewGenericServiceReconciler[*v1alpha1.Transformation](
ctx,
typ.GetGroupVersionKind(),
impl.Tracker,
impl.EnqueueControllerOf,
informer.Lister().Transformations,
)
informer.Informer().AddEventHandler(controller.HandleAll(impl.Enqueue))
return impl
}