-
Notifications
You must be signed in to change notification settings - Fork 168
/
exucution_cluster.go
61 lines (55 loc) · 1.45 KB
/
exucution_cluster.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
53
54
55
56
57
58
59
60
61
package controllers
import (
"reflect"
"time"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/workqueue"
"github.com/caicloud/cyclone/pkg/k8s/informers"
"github.com/caicloud/cyclone/pkg/util/k8s"
"github.com/caicloud/cyclone/pkg/workflow/controller"
"github.com/caicloud/cyclone/pkg/workflow/controller/handlers/executioncluster"
)
// NewExecutionClusterController ...
func NewExecutionClusterController(client k8s.Interface) *Controller {
queue := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter())
factory := informers.NewSharedInformerFactoryWithOptions(
client,
controller.Config.ResyncPeriodSeconds*time.Second,
)
informer := factory.Cyclone().V1alpha1().ExecutionClusters().Informer()
informer.AddEventHandler(cache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) {
key, err := cache.MetaNamespaceKeyFunc(obj)
if err != nil {
return
}
queue.Add(key)
},
UpdateFunc: func(old, new interface{}) {
if reflect.DeepEqual(old, new) {
return
}
key, err := cache.MetaNamespaceKeyFunc(new)
if err != nil {
return
}
queue.Add(key)
},
DeleteFunc: func(obj interface{}) {
key, err := cache.MetaNamespaceKeyFunc(obj)
if err != nil {
return
}
queue.Add(key)
},
})
return &Controller{
name: "Execution Cluster Controller",
clientSet: client,
informer: informer,
queue: queue,
eventHandler: &executioncluster.Handler{
Client: client,
},
}
}