mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-09 01:16:55 +00:00
35 lines
1,013 B
Go
35 lines
1,013 B
Go
|
package generate
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"encoding/json"
|
||
|
|
||
|
kyverno "github.com/kyverno/kyverno/api/kyverno/v1"
|
||
|
kyvernoclient "github.com/kyverno/kyverno/pkg/client/clientset/versioned"
|
||
|
"github.com/kyverno/kyverno/pkg/config"
|
||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||
|
"k8s.io/apimachinery/pkg/types"
|
||
|
)
|
||
|
|
||
|
// PatchOp represents a json patch operation
|
||
|
type PatchOp struct {
|
||
|
Op string `json:"op"`
|
||
|
Path string `json:"path"`
|
||
|
Value interface{} `json:"value,omitempty"`
|
||
|
}
|
||
|
|
||
|
// PatchGenerateRequest patches a generate request object
|
||
|
func PatchGenerateRequest(gr *kyverno.GenerateRequest, patch []PatchOp, client kyvernoclient.Interface, subresources ...string) (*kyverno.GenerateRequest, error) {
|
||
|
data, err := json.Marshal(patch)
|
||
|
if nil != err {
|
||
|
return gr, err
|
||
|
}
|
||
|
|
||
|
newGR, err := client.KyvernoV1().GenerateRequests(config.KyvernoNamespace).Patch(context.TODO(), gr.Name, types.JSONPatchType, data, metav1.PatchOptions{}, subresources...)
|
||
|
if err != nil {
|
||
|
return gr, err
|
||
|
}
|
||
|
|
||
|
return newGR, nil
|
||
|
}
|