1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-09 17:37:12 +00:00
kyverno/pkg/engine/mutate/patch/patches.go
Charles-Edouard Brétéché 5dd5b57f6c
refactor: engine patchers (#7030)
* refactor: engine patchers

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* fix

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* fix

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* fix

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* fix

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* fix

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

---------

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2023-04-28 15:31:12 +08:00

52 lines
1.2 KiB
Go

package patch
import (
"github.com/go-logr/logr"
"github.com/mattbaird/jsonpatch"
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
)
type (
resource = []byte
patches = []jsonpatch.JsonPatchOperation
)
// Patcher patches the resource
type Patcher interface {
Patch(logr.Logger, resource) (resource, patches, error)
}
// patchStrategicMergeHandler
type patchStrategicMergeHandler struct {
patch apiextensions.JSON
}
func NewPatchStrategicMerge(patch apiextensions.JSON) Patcher {
return patchStrategicMergeHandler{
patch: patch,
}
}
func (h patchStrategicMergeHandler) Patch(logger logr.Logger, resource resource) (resource, patches, error) {
return ProcessStrategicMergePatch(logger, h.patch, resource)
}
// patchesJSON6902Handler
type patchesJSON6902Handler struct {
patches string
}
func NewPatchesJSON6902(patches string) Patcher {
return patchesJSON6902Handler{
patches: patches,
}
}
func (h patchesJSON6902Handler) Patch(logger logr.Logger, resource resource) (resource, patches, error) {
patchesJSON6902, err := ConvertPatchesToJSON(h.patches)
if err != nil {
logger.Error(err, "error in type conversion")
return nil, nil, err
}
return ProcessPatchJSON6902(logger, patchesJSON6902, resource)
}