mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-29 02:45:06 +00:00
refactor: background controllers cleanup (#4001)
Signed-off-by: Charles-Edouard Brétéché <charled.breteche@gmail.com>
This commit is contained in:
parent
dac733755b
commit
e47176d695
3 changed files with 40 additions and 75 deletions
|
@ -37,62 +37,48 @@ import (
|
|||
)
|
||||
|
||||
type GenerateController struct {
|
||||
// GenerateController updaterequest.GenerateController
|
||||
client dclient.Interface
|
||||
|
||||
// typed client for Kyverno CRDs
|
||||
// clients
|
||||
client dclient.Interface
|
||||
kyvernoClient kyvernoclient.Interface
|
||||
|
||||
// urStatusControl is used to update UR status
|
||||
statusControl common.StatusControlInterface
|
||||
|
||||
// event generator interface
|
||||
eventGen event.Interface
|
||||
|
||||
log logr.Logger
|
||||
|
||||
// urLister can list/get update request from the shared informer's store
|
||||
urLister kyvernov1beta1listers.UpdateRequestNamespaceLister
|
||||
|
||||
// nsLister can list/get namespaces from the shared informer's store
|
||||
nsLister corev1listers.NamespaceLister
|
||||
|
||||
// policyLister can list/get cluster policy from the shared informer's store
|
||||
policyLister kyvernov1listers.ClusterPolicyLister
|
||||
|
||||
// policyLister can list/get Namespace policy from the shared informer's store
|
||||
// listers
|
||||
urLister kyvernov1beta1listers.UpdateRequestNamespaceLister
|
||||
nsLister corev1listers.NamespaceLister
|
||||
policyLister kyvernov1listers.ClusterPolicyLister
|
||||
npolicyLister kyvernov1listers.PolicyLister
|
||||
|
||||
Config config.Configuration
|
||||
configuration config.Configuration
|
||||
eventGen event.Interface
|
||||
log logr.Logger
|
||||
}
|
||||
|
||||
// NewGenerateController returns an instance of the Generate-Request Controller
|
||||
func NewGenerateController(
|
||||
kyvernoClient kyvernoclient.Interface,
|
||||
client dclient.Interface,
|
||||
kyvernoClient kyvernoclient.Interface,
|
||||
statusControl common.StatusControlInterface,
|
||||
policyLister kyvernov1listers.ClusterPolicyLister,
|
||||
npolicyLister kyvernov1listers.PolicyLister,
|
||||
urLister kyvernov1beta1listers.UpdateRequestNamespaceLister,
|
||||
eventGen event.Interface,
|
||||
nsLister corev1listers.NamespaceLister,
|
||||
log logr.Logger,
|
||||
dynamicConfig config.Configuration,
|
||||
) (*GenerateController, error) {
|
||||
eventGen event.Interface,
|
||||
log logr.Logger,
|
||||
) *GenerateController {
|
||||
c := GenerateController{
|
||||
client: client,
|
||||
kyvernoClient: kyvernoClient,
|
||||
eventGen: eventGen,
|
||||
log: log,
|
||||
Config: dynamicConfig,
|
||||
statusControl: statusControl,
|
||||
policyLister: policyLister,
|
||||
npolicyLister: npolicyLister,
|
||||
urLister: urLister,
|
||||
nsLister: nsLister,
|
||||
configuration: dynamicConfig,
|
||||
eventGen: eventGen,
|
||||
log: log,
|
||||
}
|
||||
|
||||
c.statusControl = common.NewStatusControl(kyvernoClient, urLister)
|
||||
c.nsLister = nsLister
|
||||
|
||||
return &c, nil
|
||||
return &c
|
||||
}
|
||||
|
||||
func (c *GenerateController) ProcessUR(ur *kyvernov1beta1.UpdateRequest) error {
|
||||
|
@ -200,7 +186,7 @@ func (c *GenerateController) applyGenerate(resource unstructured.Unstructured, u
|
|||
return nil, false, err
|
||||
}
|
||||
|
||||
policyContext, precreatedResource, err := common.NewBackgroundContext(c.client, &ur, &policy, &resource, c.Config, namespaceLabels, logger)
|
||||
policyContext, precreatedResource, err := common.NewBackgroundContext(c.client, &ur, &policy, &resource, c.configuration, namespaceLabels, logger)
|
||||
if err != nil {
|
||||
return nil, precreatedResource, err
|
||||
}
|
||||
|
|
|
@ -8,9 +8,7 @@ import (
|
|||
kyvernov1 "github.com/kyverno/kyverno/api/kyverno/v1"
|
||||
kyvernov1beta1 "github.com/kyverno/kyverno/api/kyverno/v1beta1"
|
||||
"github.com/kyverno/kyverno/pkg/background/common"
|
||||
kyvernoclient "github.com/kyverno/kyverno/pkg/client/clientset/versioned"
|
||||
kyvernov1listers "github.com/kyverno/kyverno/pkg/client/listers/kyverno/v1"
|
||||
kyvernov1beta1listers "github.com/kyverno/kyverno/pkg/client/listers/kyverno/v1beta1"
|
||||
"github.com/kyverno/kyverno/pkg/config"
|
||||
"github.com/kyverno/kyverno/pkg/dclient"
|
||||
"github.com/kyverno/kyverno/pkg/engine"
|
||||
|
@ -26,55 +24,39 @@ import (
|
|||
var ErrEmptyPatch error = fmt.Errorf("empty resource to patch")
|
||||
|
||||
type MutateExistingController struct {
|
||||
client dclient.Interface
|
||||
|
||||
// typed client for Kyverno CRDs
|
||||
kyvernoClient kyvernoclient.Interface
|
||||
|
||||
// urStatusControl is used to update UR status
|
||||
// clients
|
||||
client dclient.Interface
|
||||
statusControl common.StatusControlInterface
|
||||
|
||||
// event generator interface
|
||||
eventGen event.Interface
|
||||
|
||||
log logr.Logger
|
||||
|
||||
// urLister can list/get update request from the shared informer's store
|
||||
urLister kyvernov1beta1listers.UpdateRequestNamespaceLister
|
||||
|
||||
// policyLister can list/get cluster policy from the shared informer's store
|
||||
policyLister kyvernov1listers.ClusterPolicyLister
|
||||
|
||||
// policyLister can list/get Namespace policy from the shared informer's store
|
||||
// listers
|
||||
policyLister kyvernov1listers.ClusterPolicyLister
|
||||
npolicyLister kyvernov1listers.PolicyLister
|
||||
|
||||
Config config.Configuration
|
||||
configuration config.Configuration
|
||||
eventGen event.Interface
|
||||
log logr.Logger
|
||||
}
|
||||
|
||||
// NewMutateExistingController returns an instance of the MutateExistingController
|
||||
func NewMutateExistingController(
|
||||
kyvernoClient kyvernoclient.Interface,
|
||||
client dclient.Interface,
|
||||
statusControl common.StatusControlInterface,
|
||||
policyLister kyvernov1listers.ClusterPolicyLister,
|
||||
npolicyLister kyvernov1listers.PolicyLister,
|
||||
urLister kyvernov1beta1listers.UpdateRequestNamespaceLister,
|
||||
dynamicConfig config.Configuration,
|
||||
eventGen event.Interface,
|
||||
log logr.Logger,
|
||||
dynamicConfig config.Configuration,
|
||||
) (*MutateExistingController, error) {
|
||||
) *MutateExistingController {
|
||||
c := MutateExistingController{
|
||||
client: client,
|
||||
kyvernoClient: kyvernoClient,
|
||||
eventGen: eventGen,
|
||||
log: log,
|
||||
statusControl: statusControl,
|
||||
policyLister: policyLister,
|
||||
npolicyLister: npolicyLister,
|
||||
urLister: urLister,
|
||||
Config: dynamicConfig,
|
||||
configuration: dynamicConfig,
|
||||
eventGen: eventGen,
|
||||
log: log,
|
||||
}
|
||||
|
||||
c.statusControl = common.NewStatusControl(kyvernoClient, urLister)
|
||||
return &c, nil
|
||||
return &c
|
||||
}
|
||||
|
||||
func (c *MutateExistingController) ProcessUR(ur *kyvernov1beta1.UpdateRequest) error {
|
||||
|
@ -99,7 +81,7 @@ func (c *MutateExistingController) ProcessUR(ur *kyvernov1beta1.UpdateRequest) e
|
|||
continue
|
||||
}
|
||||
|
||||
policyContext, _, err := common.NewBackgroundContext(c.client, ur, policy, trigger, c.Config, nil, logger)
|
||||
policyContext, _, err := common.NewBackgroundContext(c.client, ur, policy, trigger, c.configuration, nil, logger)
|
||||
if err != nil {
|
||||
logger.WithName(rule.Name).Error(err, "failed to build policy context")
|
||||
errs = append(errs, err)
|
||||
|
|
|
@ -271,16 +271,13 @@ func (c *controller) deleteUR(obj interface{}) {
|
|||
}
|
||||
|
||||
func (c *controller) processUR(ur *kyvernov1beta1.UpdateRequest) error {
|
||||
statusControl := common.NewStatusControl(c.kyvernoClient, c.urLister)
|
||||
switch ur.Spec.Type {
|
||||
case kyvernov1beta1.Mutate:
|
||||
ctrl, _ := mutate.NewMutateExistingController(c.kyvernoClient, c.client,
|
||||
c.policyLister, c.npolicyLister, c.urLister, c.eventGen, logger, c.configuration)
|
||||
ctrl := mutate.NewMutateExistingController(c.client, statusControl, c.policyLister, c.npolicyLister, c.configuration, c.eventGen, logger)
|
||||
return ctrl.ProcessUR(ur)
|
||||
|
||||
case kyvernov1beta1.Generate:
|
||||
ctrl, _ := generate.NewGenerateController(c.kyvernoClient, c.client,
|
||||
c.policyLister, c.npolicyLister, c.urLister, c.eventGen, c.nsLister, logger, c.configuration,
|
||||
)
|
||||
ctrl := generate.NewGenerateController(c.client, c.kyvernoClient, statusControl, c.policyLister, c.npolicyLister, c.urLister, c.nsLister, c.configuration, c.eventGen, logger)
|
||||
return ctrl.ProcessUR(ur)
|
||||
}
|
||||
return nil
|
||||
|
|
Loading…
Add table
Reference in a new issue