Commit 88d0ac4a authored by k8s-merge-robot's avatar k8s-merge-robot

Merge pull request #22628 from wojtek-t/efficient_resource_quota_controller

Auto commit by PR queue bot
parents e84fee21 e2ebc506
...@@ -243,8 +243,9 @@ func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig ...@@ -243,8 +243,9 @@ func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig
KubeClient: resourceQuotaControllerClient, KubeClient: resourceQuotaControllerClient,
ResyncPeriod: controller.StaticResyncPeriodFunc(s.ResourceQuotaSyncPeriod.Duration), ResyncPeriod: controller.StaticResyncPeriodFunc(s.ResourceQuotaSyncPeriod.Duration),
Registry: resourceQuotaRegistry, Registry: resourceQuotaRegistry,
GroupKindsToReplenish: groupKindsToReplenish,
ControllerFactory: resourcequotacontroller.NewReplenishmentControllerFactory(resourceQuotaControllerClient), ControllerFactory: resourcequotacontroller.NewReplenishmentControllerFactory(resourceQuotaControllerClient),
ReplenishmentResyncPeriod: ResyncPeriod(s),
GroupKindsToReplenish: groupKindsToReplenish,
} }
go resourcequotacontroller.NewResourceQuotaController(resourceQuotaControllerOptions).Run(s.ConcurrentResourceQuotaSyncs, wait.NeverStop) go resourcequotacontroller.NewResourceQuotaController(resourceQuotaControllerOptions).Run(s.ConcurrentResourceQuotaSyncs, wait.NeverStop)
......
...@@ -45,6 +45,8 @@ type ResourceQuotaControllerOptions struct { ...@@ -45,6 +45,8 @@ type ResourceQuotaControllerOptions struct {
Registry quota.Registry Registry quota.Registry
// Knows how to build controllers that notify replenishment events // Knows how to build controllers that notify replenishment events
ControllerFactory ReplenishmentControllerFactory ControllerFactory ReplenishmentControllerFactory
// Controls full resync of objects monitored for replenihsment.
ReplenishmentResyncPeriod controller.ResyncPeriodFunc
// List of GroupKind objects that should be monitored for replenishment at // List of GroupKind objects that should be monitored for replenishment at
// a faster frequency than the quota controller recalculation interval // a faster frequency than the quota controller recalculation interval
GroupKindsToReplenish []unversioned.GroupKind GroupKindsToReplenish []unversioned.GroupKind
...@@ -124,7 +126,7 @@ func NewResourceQuotaController(options *ResourceQuotaControllerOptions) *Resour ...@@ -124,7 +126,7 @@ func NewResourceQuotaController(options *ResourceQuotaControllerOptions) *Resour
for _, groupKindToReplenish := range options.GroupKindsToReplenish { for _, groupKindToReplenish := range options.GroupKindsToReplenish {
controllerOptions := &ReplenishmentControllerOptions{ controllerOptions := &ReplenishmentControllerOptions{
GroupKind: groupKindToReplenish, GroupKind: groupKindToReplenish,
ResyncPeriod: options.ResyncPeriod, ResyncPeriod: options.ReplenishmentResyncPeriod,
ReplenishmentFunc: rq.replenishQuota, ReplenishmentFunc: rq.replenishQuota,
} }
replenishmentController, err := options.ControllerFactory.NewController(controllerOptions) replenishmentController, err := options.ControllerFactory.NewController(controllerOptions)
......
...@@ -114,6 +114,7 @@ func TestSyncResourceQuota(t *testing.T) { ...@@ -114,6 +114,7 @@ func TestSyncResourceQuota(t *testing.T) {
api.Kind("PersistentVolumeClaim"), api.Kind("PersistentVolumeClaim"),
}, },
ControllerFactory: NewReplenishmentControllerFactory(kubeClient), ControllerFactory: NewReplenishmentControllerFactory(kubeClient),
ReplenishmentResyncPeriod: controller.NoResyncPeriodFunc,
} }
quotaController := NewResourceQuotaController(resourceQuotaControllerOptions) quotaController := NewResourceQuotaController(resourceQuotaControllerOptions)
err := quotaController.syncResourceQuota(resourceQuota) err := quotaController.syncResourceQuota(resourceQuota)
...@@ -199,6 +200,7 @@ func TestSyncResourceQuotaSpecChange(t *testing.T) { ...@@ -199,6 +200,7 @@ func TestSyncResourceQuotaSpecChange(t *testing.T) {
api.Kind("PersistentVolumeClaim"), api.Kind("PersistentVolumeClaim"),
}, },
ControllerFactory: NewReplenishmentControllerFactory(kubeClient), ControllerFactory: NewReplenishmentControllerFactory(kubeClient),
ReplenishmentResyncPeriod: controller.NoResyncPeriodFunc,
} }
quotaController := NewResourceQuotaController(resourceQuotaControllerOptions) quotaController := NewResourceQuotaController(resourceQuotaControllerOptions)
err := quotaController.syncResourceQuota(resourceQuota) err := quotaController.syncResourceQuota(resourceQuota)
...@@ -275,6 +277,7 @@ func TestSyncResourceQuotaNoChange(t *testing.T) { ...@@ -275,6 +277,7 @@ func TestSyncResourceQuotaNoChange(t *testing.T) {
api.Kind("PersistentVolumeClaim"), api.Kind("PersistentVolumeClaim"),
}, },
ControllerFactory: NewReplenishmentControllerFactory(kubeClient), ControllerFactory: NewReplenishmentControllerFactory(kubeClient),
ReplenishmentResyncPeriod: controller.NoResyncPeriodFunc,
} }
quotaController := NewResourceQuotaController(resourceQuotaControllerOptions) quotaController := NewResourceQuotaController(resourceQuotaControllerOptions)
err := quotaController.syncResourceQuota(resourceQuota) err := quotaController.syncResourceQuota(resourceQuota)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment