patch

package
v1.8.2 Latest Latest
Warning

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

Go to latest
Published: Feb 13, 2023 License: Apache-2.0 Imports: 20 Imported by: 8

Documentation

Index

Constants

View Source
const LastAppliedConfig = "banzaicloud.com/last-applied"

Variables

View Source
var DefaultAnnotator = NewAnnotator(LastAppliedConfig)

Functions

func DeleteNullInJson

func DeleteNullInJson(jsonBytes []byte) ([]byte, map[string]interface{}, error)

Types

type Annotator

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

func NewAnnotator

func NewAnnotator(key string) *Annotator

func (*Annotator) GetModifiedConfiguration

func (a *Annotator) GetModifiedConfiguration(obj runtime.Object, annotate bool) ([]byte, error)

GetModifiedConfiguration retrieves the modified configuration of the object. If annotate is true, it embeds the result as an annotation in the modified configuration. If an object was read from the command input, it will use that version of the object. Otherwise, it will use the version from the server.

func (*Annotator) GetOriginalConfiguration

func (a *Annotator) GetOriginalConfiguration(obj runtime.Object) ([]byte, error)

GetOriginalConfiguration retrieves the original configuration of the object from the annotation, or nil if no annotation was found.

func (*Annotator) SetLastAppliedAnnotation

func (a *Annotator) SetLastAppliedAnnotation(obj runtime.Object) error

SetLastAppliedAnnotation gets the modified configuration of the object, without embedding it again, and then sets it on the object as the annotation.

func (*Annotator) SetLastAppliedAnnotationToObject added in v1.8.2

func (a *Annotator) SetLastAppliedAnnotationToObject(objModified runtime.Object, objExpected runtime.Object) error

SetLastAppliedAnnotation gets the modified configuration of the object, without embedding it again, and then sets it on the object as the annotation.

func (*Annotator) SetOriginalConfiguration

func (a *Annotator) SetOriginalConfiguration(obj runtime.Object, original []byte) error

SetOriginalConfiguration sets the original configuration of the object as the annotation on the object for later use in computing a three way patch.

type BaseJSONMergePatcher

type BaseJSONMergePatcher struct{}

func (*BaseJSONMergePatcher) CreateMergePatch

func (p *BaseJSONMergePatcher) CreateMergePatch(originalJSON, modifiedJSON []byte) ([]byte, error)

func (*BaseJSONMergePatcher) CreateThreeWayJSONMergePatch

func (p *BaseJSONMergePatcher) CreateThreeWayJSONMergePatch(original, modified, current []byte) ([]byte, error)

func (*BaseJSONMergePatcher) MergePatch

func (p *BaseJSONMergePatcher) MergePatch(docData, patchData []byte) ([]byte, error)

type CalculateOption

type CalculateOption func([]byte, []byte) ([]byte, []byte, error)

func CleanMetadata added in v1.8.2

func CleanMetadata() CalculateOption

func IgnoreField

func IgnoreField(field string) CalculateOption

func IgnorePDBSelector

func IgnorePDBSelector() CalculateOption

func IgnoreStatusFields

func IgnoreStatusFields() CalculateOption

func IgnoreVolumeClaimTemplateTypeMetaAndStatus

func IgnoreVolumeClaimTemplateTypeMetaAndStatus() CalculateOption

type JSONMergePatcher

type JSONMergePatcher interface {
	MergePatch(docData, patchData []byte) ([]byte, error)
	CreateMergePatch(originalJSON, modifiedJSON []byte) ([]byte, error)
	CreateThreeWayJSONMergePatch(original, modified, current []byte) ([]byte, error)
}

type K8sStrategicMergePatcher

type K8sStrategicMergePatcher struct {
	PreconditionFuncs []mergepatch.PreconditionFunc
}

func (*K8sStrategicMergePatcher) CreateThreeWayMergePatch

func (p *K8sStrategicMergePatcher) CreateThreeWayMergePatch(original, modified, current []byte, dataStruct interface{}) ([]byte, error)

func (*K8sStrategicMergePatcher) CreateTwoWayMergePatch

func (p *K8sStrategicMergePatcher) CreateTwoWayMergePatch(original, modified []byte, dataStruct interface{}) ([]byte, error)

func (*K8sStrategicMergePatcher) StrategicMergePatch

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

type Maker

type Maker interface {
	Calculate(currentObject, modifiedObject runtime.Object, opts ...CalculateOption) (*PatchResult, error)
}

func NewPatchMaker

func NewPatchMaker(annotator *Annotator, strategicMergePatcher StrategicMergePatcher, jsonMergePatcher JSONMergePatcher) Maker

type PatchMaker

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

func (*PatchMaker) Calculate

func (p *PatchMaker) Calculate(currentObject, modifiedObject runtime.Object, opts ...CalculateOption) (*PatchResult, error)

type PatchResult

type PatchResult struct {
	Patch    []byte
	Current  []byte
	Modified []byte
	Original []byte
	Patched  any
}

func (*PatchResult) IsEmpty

func (p *PatchResult) IsEmpty() bool

func (*PatchResult) String

func (p *PatchResult) String() string

type StrategicMergePatcher

type StrategicMergePatcher interface {
	StrategicMergePatch(original, patch []byte, dataStruct interface{}) ([]byte, error)
	CreateTwoWayMergePatch(original, modified []byte, dataStruct interface{}) ([]byte, error)
	CreateThreeWayMergePatch(original, modified, current []byte, dataStruct interface{}) ([]byte, error)
}

Jump to

Keyboard shortcuts

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