1
0
Fork 0
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:
NoSkillGirl 2020-12-29 15:35:12 +05:30
parent eef15dff89
commit 9913af0253
3 changed files with 45 additions and 2 deletions

View file

@ -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

View 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)
}
}
}

View file

@ -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)