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"
|
dclient "github.com/kyverno/kyverno/pkg/dclient"
|
||||||
event "github.com/kyverno/kyverno/pkg/event"
|
event "github.com/kyverno/kyverno/pkg/event"
|
||||||
"github.com/kyverno/kyverno/pkg/generate"
|
"github.com/kyverno/kyverno/pkg/generate"
|
||||||
|
backwardcompatibility "github.com/kyverno/kyverno/pkg/generate/backwardCompatibility"
|
||||||
generatecleanup "github.com/kyverno/kyverno/pkg/generate/cleanup"
|
generatecleanup "github.com/kyverno/kyverno/pkg/generate/cleanup"
|
||||||
"github.com/kyverno/kyverno/pkg/openapi"
|
"github.com/kyverno/kyverno/pkg/openapi"
|
||||||
"github.com/kyverno/kyverno/pkg/policy"
|
"github.com/kyverno/kyverno/pkg/policy"
|
||||||
|
@ -356,6 +357,9 @@ func main() {
|
||||||
|
|
||||||
// verifies if the admission control is enabled and active
|
// verifies if the admission control is enabled and active
|
||||||
server.RunAsync(stopCh)
|
server.RunAsync(stopCh)
|
||||||
|
|
||||||
|
go backwardcompatibility.AddLabels(pclient, pInformer.Kyverno().V1().GenerateRequests())
|
||||||
|
|
||||||
<-stopCh
|
<-stopCh
|
||||||
|
|
||||||
// by default http.Server waits indefinitely for connections to return to idle and then shuts down
|
// 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()
|
resLabels := resource.GetLabels()
|
||||||
if resLabels["app.kubernetes.io/managed-by"] == "kyverno" && resLabels["generate.kyverno.io/synchronize"] == "enable" && request.Operation == v1beta1.Delete {
|
if resLabels["app.kubernetes.io/managed-by"] == "kyverno" && resLabels["policy.kyverno.io/synchronize"] == "enable" && request.Operation == v1beta1.Delete {
|
||||||
grName := resLabels["generate.kyverno.io/gr-name"]
|
grName := resLabels["policy.kyverno.io/gr-name"]
|
||||||
gr, err := ws.grLister.Get(grName)
|
gr, err := ws.grLister.Get(grName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(err, "failed to get generate request", "name", grName)
|
logger.Error(err, "failed to get generate request", "name", grName)
|
||||||
|
|
Loading…
Add table
Reference in a new issue