mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-31 03:45:17 +00:00
adding GR for older GR's
This commit is contained in:
parent
eef15dff89
commit
9913af0253
3 changed files with 45 additions and 2 deletions
|
@ -15,6 +15,7 @@ import (
|
|||
dclient "github.com/kyverno/kyverno/pkg/dclient"
|
||||
event "github.com/kyverno/kyverno/pkg/event"
|
||||
"github.com/kyverno/kyverno/pkg/generate"
|
||||
backwardcompatibility "github.com/kyverno/kyverno/pkg/generate/backwardCompatibility"
|
||||
generatecleanup "github.com/kyverno/kyverno/pkg/generate/cleanup"
|
||||
"github.com/kyverno/kyverno/pkg/openapi"
|
||||
"github.com/kyverno/kyverno/pkg/policy"
|
||||
|
@ -356,6 +357,9 @@ func main() {
|
|||
|
||||
// verifies if the admission control is enabled and active
|
||||
server.RunAsync(stopCh)
|
||||
|
||||
go backwardcompatibility.AddLabels(pclient, pInformer.Kyverno().V1().GenerateRequests())
|
||||
|
||||
<-stopCh
|
||||
|
||||
// by default http.Server waits indefinitely for connections to return to idle and then shuts down
|
||||
|
|
39
pkg/generate/backward_compatibility/add_labels.go
Normal file
39
pkg/generate/backward_compatibility/add_labels.go
Normal file
|
@ -0,0 +1,39 @@
|
|||
package backwardcompatibility
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
kyvernoclient "github.com/kyverno/kyverno/pkg/client/clientset/versioned"
|
||||
kyvernoinformer "github.com/kyverno/kyverno/pkg/client/informers/externalversions/kyverno/v1"
|
||||
"github.com/kyverno/kyverno/pkg/config"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
)
|
||||
|
||||
// AddLabels - adds labels to all the existing generate requests
|
||||
func AddLabels(client *kyvernoclient.Clientset, grInformer kyvernoinformer.GenerateRequestInformer) {
|
||||
// Get all the GR's that are existing
|
||||
// Extract and Update all of them with the with the labels
|
||||
grList, err := grInformer.Lister().List(labels.NewSelector())
|
||||
if err != nil {
|
||||
// throw some error!
|
||||
fmt.Println("error occurred while getting gr list")
|
||||
fmt.Println(err)
|
||||
}
|
||||
|
||||
for _, gr := range grList {
|
||||
gr.SetLabels(map[string]string{
|
||||
"generate.kyverno.io/policy-name": gr.Spec.Policy,
|
||||
"generate.kyverno.io/resource-name": gr.Spec.Resource.Name,
|
||||
"generate.kyverno.io/resource-kind": gr.Spec.Resource.Kind,
|
||||
"generate.kyverno.io/resource-namespace": gr.Spec.Resource.Namespace,
|
||||
})
|
||||
|
||||
_, err = client.KyvernoV1().GenerateRequests(config.KyvernoNamespace).Update(context.TODO(), gr, metav1.UpdateOptions{})
|
||||
if err != nil {
|
||||
fmt.Println("error occured while updating gr", gr.Name)
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -94,8 +94,8 @@ func (ws *WebhookServer) handleDeleteAndUpdate(request *v1beta1.AdmissionRequest
|
|||
}
|
||||
|
||||
resLabels := resource.GetLabels()
|
||||
if resLabels["app.kubernetes.io/managed-by"] == "kyverno" && resLabels["generate.kyverno.io/synchronize"] == "enable" && request.Operation == v1beta1.Delete {
|
||||
grName := resLabels["generate.kyverno.io/gr-name"]
|
||||
if resLabels["app.kubernetes.io/managed-by"] == "kyverno" && resLabels["policy.kyverno.io/synchronize"] == "enable" && request.Operation == v1beta1.Delete {
|
||||
grName := resLabels["policy.kyverno.io/gr-name"]
|
||||
gr, err := ws.grLister.Get(grName)
|
||||
if err != nil {
|
||||
logger.Error(err, "failed to get generate request", "name", grName)
|
||||
|
|
Loading…
Add table
Reference in a new issue