2022-11-30 12:13:57 +01:00
|
|
|
package internal
|
2022-10-03 09:55:59 +02:00
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
|
2022-10-06 12:38:35 +02:00
|
|
|
"github.com/go-logr/logr"
|
2022-10-03 09:55:59 +02:00
|
|
|
"github.com/kyverno/kyverno/pkg/controllers"
|
2025-01-28 00:25:33 +01:00
|
|
|
"k8s.io/apimachinery/pkg/util/wait"
|
2022-10-03 09:55:59 +02:00
|
|
|
)
|
|
|
|
|
2022-11-30 12:13:57 +01:00
|
|
|
type Controller interface {
|
2025-01-28 00:25:33 +01:00
|
|
|
Run(context.Context, logr.Logger, *wait.Group)
|
2022-11-30 12:13:57 +01:00
|
|
|
}
|
|
|
|
|
2022-10-03 09:55:59 +02:00
|
|
|
type controller struct {
|
2022-10-06 12:38:35 +02:00
|
|
|
name string
|
2022-10-03 09:55:59 +02:00
|
|
|
controller controllers.Controller
|
|
|
|
workers int
|
|
|
|
}
|
|
|
|
|
2022-11-30 12:13:57 +01:00
|
|
|
func NewController(name string, c controllers.Controller, w int) Controller {
|
2022-10-06 12:38:35 +02:00
|
|
|
return controller{
|
|
|
|
name: name,
|
|
|
|
controller: c,
|
|
|
|
workers: w,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-01-28 00:25:33 +01:00
|
|
|
func (c controller) Run(ctx context.Context, logger logr.Logger, wg *wait.Group) {
|
|
|
|
logger = logger.WithValues("name", c.name)
|
|
|
|
wg.Start(func() {
|
2025-02-13 20:32:02 +05:30
|
|
|
logger.V(2).Info("starting controller", "workers", c.workers)
|
|
|
|
defer logger.V(2).Info("controller stopped")
|
2022-10-18 12:55:33 +02:00
|
|
|
c.controller.Run(ctx, c.workers)
|
2025-01-28 00:25:33 +01:00
|
|
|
})
|
2022-10-03 09:55:59 +02:00
|
|
|
}
|