@@ -5,39 +5,44 @@ import (
5
5
"time"
6
6
7
7
"github.com/openshift/origin/pkg/cmd/server/bootstrappolicy"
8
- quotacontroller "github.com/openshift/origin/pkg/quota/controller"
9
8
"github.com/openshift/origin/pkg/quota/controller/clusterquotamapping"
10
9
"github.com/openshift/origin/pkg/quota/controller/clusterquotareconciliation"
10
+ "github.com/openshift/origin/pkg/quota/image"
11
11
"k8s.io/kubernetes/pkg/controller"
12
12
kresourcequota "k8s.io/kubernetes/pkg/controller/resourcequota"
13
-
14
- "github.com/openshift/origin/ pkg/quota"
13
+ "k8s.io/kubernetes/pkg/quota/generic"
14
+ quotainstall "k8s.io/kubernetes/ pkg/quota/install "
15
15
)
16
16
17
17
func RunResourceQuotaManager (ctx ControllerContext ) (bool , error ) {
18
18
concurrentResourceQuotaSyncs := int (ctx .OpenshiftControllerOptions .ResourceQuotaOptions .ConcurrentSyncs )
19
19
resourceQuotaSyncPeriod := ctx .OpenshiftControllerOptions .ResourceQuotaOptions .SyncPeriod .Duration
20
20
replenishmentSyncPeriodFunc := calculateResyncPeriod (ctx .OpenshiftControllerOptions .ResourceQuotaOptions .MinResyncPeriod .Duration )
21
21
saName := "resourcequota-controller"
22
+ listerFuncForResource := generic .ListerFuncForResourceFunc (ctx .GenericInformerFunc )
23
+ quotaConfiguration := quotainstall .NewQuotaConfigurationForControllers (listerFuncForResource )
22
24
23
- resourceQuotaRegistry := quota .NewOriginQuotaRegistry (
25
+ imageEvaluators := image .NewReplenishmentEvaluators (
26
+ listerFuncForResource ,
24
27
ctx .ImageInformers .Image ().InternalVersion ().ImageStreams (),
25
- ctx .ClientBuilder .OpenshiftInternalImageClientOrDie (saName ).Image (),
26
- )
28
+ ctx .ClientBuilder .OpenshiftInternalImageClientOrDie (saName ).Image ())
29
+ resourceQuotaRegistry := generic . NewRegistry ( imageEvaluators )
27
30
28
31
resourceQuotaControllerOptions := & kresourcequota.ResourceQuotaControllerOptions {
29
- QuotaClient : ctx .ClientBuilder .ClientOrDie (saName ).Core (),
30
- ResourceQuotaInformer : ctx .ExternalKubeInformers .Core ().V1 ().ResourceQuotas (),
31
- ResyncPeriod : controller .StaticResyncPeriodFunc (resourceQuotaSyncPeriod ),
32
- Registry : resourceQuotaRegistry ,
33
- GroupKindsToReplenish : quota .AllEvaluatedGroupKinds ,
34
- ControllerFactory : quotacontroller .NewAllResourceReplenishmentControllerFactory (
35
- ctx .ExternalKubeInformers ,
36
- ctx .ImageInformers .Image ().InternalVersion ().ImageStreams (),
37
- ),
32
+ QuotaClient : ctx .ClientBuilder .ClientOrDie (saName ).Core (),
33
+ ResourceQuotaInformer : ctx .ExternalKubeInformers .Core ().V1 ().ResourceQuotas (),
34
+ ResyncPeriod : controller .StaticResyncPeriodFunc (resourceQuotaSyncPeriod ),
35
+ Registry : resourceQuotaRegistry ,
38
36
ReplenishmentResyncPeriod : replenishmentSyncPeriodFunc ,
37
+ IgnoredResourcesFunc : quotaConfiguration .IgnoredResources ,
38
+ InformersStarted : ctx .InformersStarted ,
39
+ InformerFactory : ctx .ExternalKubeInformers ,
40
+ }
41
+ controller , err := kresourcequota .NewResourceQuotaController (resourceQuotaControllerOptions )
42
+ if err != nil {
43
+ return true , err
39
44
}
40
- go kresourcequota . NewResourceQuotaController ( resourceQuotaControllerOptions ) .Run (concurrentResourceQuotaSyncs , ctx .Stop )
45
+ go controller .Run (concurrentResourceQuotaSyncs , ctx .Stop )
41
46
42
47
return true , nil
43
48
}
@@ -49,32 +54,42 @@ type ClusterQuotaReconciliationControllerConfig struct {
49
54
50
55
func (c * ClusterQuotaReconciliationControllerConfig ) RunController (ctx ControllerContext ) (bool , error ) {
51
56
saName := bootstrappolicy .InfraClusterQuotaReconciliationControllerServiceAccountName
52
- resourceQuotaRegistry := quota .NewAllResourceQuotaRegistry (
53
- ctx .ExternalKubeInformers ,
54
- ctx .ImageInformers .Image ().InternalVersion ().ImageStreams (),
55
- ctx .ClientBuilder .OpenshiftInternalImageClientOrDie (saName ).Image (),
56
- ctx .ClientBuilder .ClientOrDie (saName ),
57
- )
58
- groupKindsToReplenish := quota .AllEvaluatedGroupKinds
59
57
60
58
clusterQuotaMappingController := clusterquotamapping .NewClusterQuotaMappingController (
61
59
ctx .ExternalKubeInformers .Core ().V1 ().Namespaces (),
62
60
ctx .QuotaInformers .Quota ().InternalVersion ().ClusterResourceQuotas ())
61
+ resourceQuotaControllerClient := ctx .ClientBuilder .ClientOrDie ("resourcequota-controller" )
62
+ discoveryFunc := resourceQuotaControllerClient .Discovery ().ServerPreferredNamespacedResources
63
+ listerFuncForResource := generic .ListerFuncForResourceFunc (ctx .GenericInformerFunc )
64
+ quotaConfiguration := quotainstall .NewQuotaConfigurationForControllers (listerFuncForResource )
65
+
66
+ // TODO make a union registry
67
+ resourceQuotaRegistry := generic .NewRegistry (quotaConfiguration .Evaluators ())
68
+ imageEvaluators := image .NewReplenishmentEvaluators (
69
+ listerFuncForResource ,
70
+ ctx .ImageInformers .Image ().InternalVersion ().ImageStreams (),
71
+ ctx .ClientBuilder .OpenshiftInternalImageClientOrDie (saName ).Image ())
72
+ for i := range imageEvaluators {
73
+ resourceQuotaRegistry .Add (imageEvaluators [i ])
74
+ }
75
+
63
76
options := clusterquotareconciliation.ClusterQuotaReconcilationControllerOptions {
64
77
ClusterQuotaInformer : ctx .QuotaInformers .Quota ().InternalVersion ().ClusterResourceQuotas (),
65
78
ClusterQuotaMapper : clusterQuotaMappingController .GetClusterQuotaMapper (),
66
79
ClusterQuotaClient : ctx .ClientBuilder .OpenshiftInternalQuotaClientOrDie (saName ).Quota ().ClusterResourceQuotas (),
67
80
68
- Registry : resourceQuotaRegistry ,
69
- ResyncPeriod : c .DefaultResyncPeriod ,
70
- ControllerFactory : quotacontroller .NewAllResourceReplenishmentControllerFactory (
71
- ctx .ExternalKubeInformers ,
72
- ctx .ImageInformers .Image ().InternalVersion ().ImageStreams (),
73
- ),
81
+ Registry : resourceQuotaRegistry ,
82
+ ResyncPeriod : c .DefaultResyncPeriod ,
74
83
ReplenishmentResyncPeriod : controller .StaticResyncPeriodFunc (c .DefaultReplenishmentSyncPeriod ),
75
- GroupKindsToReplenish : groupKindsToReplenish ,
84
+ DiscoveryFunc : discoveryFunc ,
85
+ IgnoredResourcesFunc : quotaConfiguration .IgnoredResources ,
86
+ InformersStarted : ctx .InformersStarted ,
87
+ InformerFactory : ctx .ExternalKubeInformers ,
88
+ }
89
+ clusterQuotaReconciliationController , err := clusterquotareconciliation .NewClusterQuotaReconcilationController (options )
90
+ if err != nil {
91
+ return true , err
76
92
}
77
- clusterQuotaReconciliationController := clusterquotareconciliation .NewClusterQuotaReconcilationController (options )
78
93
clusterQuotaMappingController .GetClusterQuotaMapper ().AddListener (clusterQuotaReconciliationController )
79
94
80
95
go clusterQuotaMappingController .Run (5 , ctx .Stop )
0 commit comments