mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-11 18:37:16 +00:00
# Conflicts: # main.go # pkg/annotations/annotations.go # pkg/annotations/controller.go # pkg/controller/controller.go # pkg/controller/controller_test.go # pkg/engine/engine.go # pkg/engine/generation.go # pkg/engine/mutation.go # pkg/engine/validation.go # pkg/event/controller.go # pkg/webhooks/mutation.go # pkg/webhooks/policyvalidation.go # pkg/webhooks/report.go # pkg/webhooks/server.go # pkg/webhooks/validation.go
49 lines
1.2 KiB
Go
49 lines
1.2 KiB
Go
package webhooks
|
|
|
|
import (
|
|
"github.com/golang/glog"
|
|
kyverno "github.com/nirmata/kyverno/pkg/api/kyverno/v1alpha1"
|
|
v1beta1 "k8s.io/api/admission/v1beta1"
|
|
"k8s.io/apimachinery/pkg/labels"
|
|
)
|
|
|
|
type policyType int
|
|
|
|
const (
|
|
none policyType = iota
|
|
mutate
|
|
validate
|
|
all
|
|
)
|
|
|
|
func (ws *WebhookServer) manageWebhookConfigurations(policy kyverno.Policy, op v1beta1.Operation) {
|
|
switch op {
|
|
case v1beta1.Create:
|
|
ws.registerWebhookConfigurations(policy)
|
|
case v1beta1.Delete:
|
|
ws.deregisterWebhookConfigurations(policy)
|
|
}
|
|
}
|
|
|
|
func (ws *WebhookServer) registerWebhookConfigurations(policy kyverno.Policy) error {
|
|
if !ws.webhookRegistrationClient.MutationRegistered.IsSet() {
|
|
if err := ws.webhookRegistrationClient.RegisterMutatingWebhook(); err != nil {
|
|
return err
|
|
}
|
|
glog.Infof("Mutating webhook registered")
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (ws *WebhookServer) deregisterWebhookConfigurations(policy kyverno.Policy) error {
|
|
policies, _ := ws.pLister.List(labels.NewSelector())
|
|
|
|
// deregister webhook if no policy found in cluster
|
|
if len(policies) == 1 {
|
|
ws.webhookRegistrationClient.deregisterMutatingWebhook()
|
|
glog.Infoln("Mutating webhook deregistered")
|
|
}
|
|
|
|
return nil
|
|
}
|