-
Notifications
You must be signed in to change notification settings - Fork 25
/
controller_manager_setup.go
38 lines (32 loc) · 1.35 KB
/
controller_manager_setup.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
package controllers
import (
"context"
"fmt"
addonapiv1 "github.com/keikoproj/addon-manager/api/addon"
"github.com/keikoproj/addon-manager/pkg/addon"
"github.com/keikoproj/addon-manager/pkg/common"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/dynamic/dynamicinformer"
"sigs.k8s.io/controller-runtime/pkg/manager"
)
func New(mgr manager.Manager) error {
versionCache := addon.NewAddonVersionCacheClient()
dynClient := dynamic.NewForConfigOrDie(mgr.GetConfig())
nsInformers := dynamicinformer.NewFilteredDynamicSharedInformerFactory(dynClient, addonapiv1.AddonResyncPeriod, addonapiv1.ManagedNameSpace, nil)
wfInf := nsInformers.ForResource(common.WorkflowGVR()).Informer()
addonUpdater := addon.NewAddonUpdater(mgr.GetEventRecorderFor("addons"), mgr.GetClient(), versionCache, mgr.GetLogger())
if err := mgr.Add(manager.RunnableFunc(func(ctx context.Context) error {
nsInformers.Start(ctx.Done())
nsInformers.WaitForCacheSync(ctx.Done())
return nil
})); err != nil {
return fmt.Errorf("failed to run informer sync: %w", err)
}
if _, err := NewAddonController(mgr, dynClient, wfInf, versionCache, addonUpdater); err != nil {
return fmt.Errorf("failed to create addon controller: %w", err)
}
if err := NewWFController(mgr, dynClient, addonUpdater); err != nil {
return fmt.Errorf("failed to create addon wf controller: %w", err)
}
return nil
}