strategicpatch

package
v0.0.0-...-10121ec Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 2, 2022 License: Apache-2.0, Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CreateStrategicMergePatch deprecated

func CreateStrategicMergePatch(original, modified []byte, dataStruct interface{}) ([]byte, error)

Deprecated: Use the synonym CreateTwoWayMergePatch, instead.

func CreateThreeWayMergePatch

func CreateThreeWayMergePatch(original, modified, current []byte, dataStruct interface{}, overwrite bool, fns ...PreconditionFunc) ([]byte, error)

CreateThreeWayMergePatch reconciles a modified configuration with an original configuration, while preserving any changes or deletions made to the original configuration in the interim, and not overridden by the current configuration. All three documents must be passed to the method as json encoded content. It will return a strategic merge patch, or an error if any of the documents is invalid, or if there are any preconditions that fail against the modified configuration, or, if overwrite is false and there are conflicts between the modified and current configurations. Conflicts are defined as keys changed differently from original to modified than from original to current. In other words, a conflict occurs if modified changes any key in a way that is different from how it is changed in current (e.g., deleting it, changing its value).

func CreateTwoWayMergePatch

func CreateTwoWayMergePatch(original, modified []byte, dataStruct interface{}, fns ...PreconditionFunc) ([]byte, error)

CreateTwoWayMergePatch creates a patch that can be passed to StrategicMergePatch from an original document and a modified document, which are passed to the method as json encoded content. It will return a patch that yields the modified document when applied to the original document, or an error if either of the two documents is invalid.

func HasConflicts

func HasConflicts(left, right interface{}) (bool, error)

HasConflicts returns true if the left and right JSON interface objects overlap with different values in any key. All keys are required to be strings. Since patches of the same Type have congruent keys, this is valid for multiple patch types. This method supports JSON merge patch semantics.

func IsConflict

func IsConflict(err error) bool

IsConflict returns true if the provided error indicates a conflict between the patch and the current configuration.

func IsPreconditionFailed

func IsPreconditionFailed(err error) bool

IsPreconditionFailed returns true if the provided error indicates a precondition failed.

func MergingMapsHaveConflicts

func MergingMapsHaveConflicts(left, right map[string]interface{}, dataStruct interface{}) (bool, error)

MergingMapsHaveConflicts returns true if the left and right JSON interface objects overlap with different values in any key. All keys are required to be strings. Since patches of the same Type have congruent keys, this is valid for multiple patch types. This method supports strategic merge patch semantics.

func StrategicMergePatch

func StrategicMergePatch(original, patch []byte, dataStruct interface{}) ([]byte, error)

StrategicMergePatch applies a strategic merge patch. The patch and the original document must be json encoded content. A patch can be created from an original and a modified document by calling CreateStrategicMergePatch.

func StrategicMergePatchData deprecated

func StrategicMergePatchData(original, patch []byte, dataStruct interface{}) ([]byte, error)

Deprecated: StrategicMergePatchData is deprecated. Use the synonym StrategicMergePatch, instead, which follows the naming convention of evanphx/json-patch.

Types

type PreconditionFunc

type PreconditionFunc func(interface{}) bool

PreconditionFunc asserts that an incompatible change is not present within a patch.

func RequireKeyUnchanged

func RequireKeyUnchanged(key string) PreconditionFunc

RequireKeyUnchanged returns a precondition function that fails if the provided key is present in the patch (indicating that its value has changed).

type SortableSliceOfMaps

type SortableSliceOfMaps struct {
	// contains filtered or unexported fields
}

func (SortableSliceOfMaps) Len

func (ss SortableSliceOfMaps) Len() int

func (SortableSliceOfMaps) Less

func (ss SortableSliceOfMaps) Less(i, j int) bool

func (SortableSliceOfMaps) Swap

func (ss SortableSliceOfMaps) Swap(i, j int)

type SortableSliceOfScalars

type SortableSliceOfScalars struct {
	// contains filtered or unexported fields
}

func (SortableSliceOfScalars) Len

func (ss SortableSliceOfScalars) Len() int

func (SortableSliceOfScalars) Less

func (ss SortableSliceOfScalars) Less(i, j int) bool

func (SortableSliceOfScalars) Swap

func (ss SortableSliceOfScalars) Swap(i, j int)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL