mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-06 07:57:07 +00:00
* - Add "handler" to "ur.status" - Mark / Unmark handler upon UR reconciliation Signed-off-by: ShutingZhao <shuting@nirmata.com> * Add field onPolicyUpdate Signed-off-by: ShutingZhao <shuting@nirmata.com> * Update API docs Signed-off-by: ShutingZhao <shuting@nirmata.com> * Add delay in generate e2e tests Signed-off-by: ShutingZhao <shuting@nirmata.com> * Remove duplicate logic for cleaning up the cloned resource Signed-off-by: ShutingZhao <shuting@nirmata.com>
53 lines
1.6 KiB
Go
53 lines
1.6 KiB
Go
package background
|
|
|
|
import (
|
|
"context"
|
|
|
|
urkyverno "github.com/kyverno/kyverno/api/kyverno/v1beta1"
|
|
"github.com/kyverno/kyverno/pkg/background/generate"
|
|
"github.com/kyverno/kyverno/pkg/background/mutate"
|
|
"github.com/kyverno/kyverno/pkg/config"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
)
|
|
|
|
func (c *Controller) ProcessUR(ur *urkyverno.UpdateRequest) error {
|
|
switch ur.Spec.Type {
|
|
case urkyverno.Mutate:
|
|
ctrl, _ := mutate.NewMutateExistingController(c.kyvernoClient, c.client,
|
|
c.policyLister, c.npolicyLister, c.urLister, c.eventGen, c.log, c.Config)
|
|
return ctrl.ProcessUR(ur)
|
|
|
|
case urkyverno.Generate:
|
|
ctrl, _ := generate.NewGenerateController(c.kyvernoClient, c.client,
|
|
c.policyLister, c.npolicyLister, c.urLister, c.eventGen, c.nsLister, c.log, c.Config,
|
|
)
|
|
return ctrl.ProcessUR(ur)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (c *Controller) MarkUR(ur *urkyverno.UpdateRequest) (*urkyverno.UpdateRequest, bool, error) {
|
|
handler := ur.Status.Handler
|
|
if handler != "" {
|
|
if handler != config.KyvernoPodName {
|
|
return nil, false, nil
|
|
}
|
|
return ur, true, nil
|
|
}
|
|
|
|
handler = config.KyvernoPodName
|
|
ur.Status.Handler = handler
|
|
new, err := c.kyvernoClient.KyvernoV1beta1().UpdateRequests(config.KyvernoNamespace).UpdateStatus(context.TODO(), ur, metav1.UpdateOptions{})
|
|
return new, true, err
|
|
}
|
|
|
|
func (c *Controller) UnmarkUR(ur *urkyverno.UpdateRequest) error {
|
|
newUR, err := c.urLister.Get(ur.Name)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
newUR.Status.Handler = ""
|
|
_, err = c.kyvernoClient.KyvernoV1beta1().UpdateRequests(config.KyvernoNamespace).UpdateStatus(context.TODO(), newUR, metav1.UpdateOptions{})
|
|
return err
|
|
}
|