2022-01-04 17:36:33 -08:00
|
|
|
package patch
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/go-logr/logr"
|
|
|
|
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
|
2023-04-28 09:31:12 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
type (
|
|
|
|
resource = []byte
|
2022-01-04 17:36:33 -08:00
|
|
|
)
|
|
|
|
|
|
|
|
// Patcher patches the resource
|
|
|
|
type Patcher interface {
|
2023-06-07 11:45:11 +02:00
|
|
|
Patch(logr.Logger, resource) (resource, error)
|
2022-01-04 17:36:33 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
// patchStrategicMergeHandler
|
|
|
|
type patchStrategicMergeHandler struct {
|
2023-04-28 09:31:12 +02:00
|
|
|
patch apiextensions.JSON
|
2022-01-04 17:36:33 -08:00
|
|
|
}
|
|
|
|
|
2023-04-28 09:31:12 +02:00
|
|
|
func NewPatchStrategicMerge(patch apiextensions.JSON) Patcher {
|
2022-01-04 17:36:33 -08:00
|
|
|
return patchStrategicMergeHandler{
|
2023-04-28 09:31:12 +02:00
|
|
|
patch: patch,
|
2022-01-04 17:36:33 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-06-07 11:45:11 +02:00
|
|
|
func (h patchStrategicMergeHandler) Patch(logger logr.Logger, resource resource) (resource, error) {
|
2023-04-28 09:31:12 +02:00
|
|
|
return ProcessStrategicMergePatch(logger, h.patch, resource)
|
2022-01-04 17:36:33 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
// patchesJSON6902Handler
|
|
|
|
type patchesJSON6902Handler struct {
|
2023-04-28 09:31:12 +02:00
|
|
|
patches string
|
2022-01-04 17:36:33 -08:00
|
|
|
}
|
|
|
|
|
2023-04-28 09:31:12 +02:00
|
|
|
func NewPatchesJSON6902(patches string) Patcher {
|
2022-01-04 17:36:33 -08:00
|
|
|
return patchesJSON6902Handler{
|
2023-04-28 09:31:12 +02:00
|
|
|
patches: patches,
|
2022-01-04 17:36:33 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-06-07 11:45:11 +02:00
|
|
|
func (h patchesJSON6902Handler) Patch(logger logr.Logger, resource resource) (resource, error) {
|
|
|
|
patchesJSON6902, err := convertPatchesToJSON(h.patches)
|
2022-01-04 17:36:33 -08:00
|
|
|
if err != nil {
|
2023-04-28 09:31:12 +02:00
|
|
|
logger.Error(err, "error in type conversion")
|
2023-06-07 11:45:11 +02:00
|
|
|
return nil, err
|
2022-01-04 17:36:33 -08:00
|
|
|
}
|
2023-04-28 09:31:12 +02:00
|
|
|
return ProcessPatchJSON6902(logger, patchesJSON6902, resource)
|
2022-01-04 17:36:33 -08:00
|
|
|
}
|