/
unidling.go
46 lines (37 loc) · 1.35 KB
/
unidling.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
package controller
import (
"time"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/scale"
appsclient "github.com/openshift/client-go/apps/clientset/versioned"
"github.com/openshift/origin/pkg/cmd/server/bootstrappolicy"
unidlingcontroller "github.com/openshift/origin/pkg/unidling/controller"
)
func RunUnidlingController(ctx *ControllerContext) (bool, error) {
// TODO this should be configurable
resyncPeriod := 2 * time.Hour
clientConfig := ctx.ClientBuilder.ConfigOrDie(bootstrappolicy.InfraUnidlingControllerServiceAccountName)
appsClient, err := appsclient.NewForConfig(clientConfig)
if err != nil {
return false, err
}
// we don't use cached discovery because DiscoveryScaleKindResolver does its own caching,
// so we want to re-fetch every time when we actually ask for it
scaleKindResolver := scale.NewDiscoveryScaleKindResolver(appsClient.Discovery())
scaleClient, err := scale.NewForConfig(clientConfig, ctx.RestMapper, dynamic.LegacyAPIPathResolverFunc, scaleKindResolver)
if err != nil {
return false, err
}
coreClient := ctx.ClientBuilder.ClientOrDie(bootstrappolicy.InfraUnidlingControllerServiceAccountName).CoreV1()
controller := unidlingcontroller.NewUnidlingController(
scaleClient,
ctx.RestMapper,
coreClient,
coreClient,
appsClient.AppsV1(),
coreClient,
resyncPeriod,
)
go controller.Run(ctx.Stop)
return true, nil
}