resource

package
v0.0.0-...-1648215 Latest Latest
Warning

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

Go to latest
Published: Jan 29, 2025 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AnnotationKeyReady                   = "krm.kcl.dev/ready"
	AnnotationKeyCompositionResourceName = "krm.kcl.dev/composition-resource-name"
	MetaApiVersion                       = "meta.krm.kcl.dev/v1alpha1"
)

Variables

This section is empty.

Functions

func AddResourcesTo

func AddResourcesTo(o any, opts *AddResourcesOptions) error

AddResourcesTo adds the given data to any allowed object passed Will return err if the object is not of a supported type For 'desired' composed resources, the Basename is used for the resource name For 'xr' resources, the Basename must match the xr name For 'existing' resources, the Basename must match the resource name

func CheckAndSetDesired

func CheckAndSetDesired(desired map[resource.Name]*resource.DesiredComposed, checked map[string]struct{}, cd *resource.DesiredComposed) error

Check the set the resource into the desired resource map.

func DataResourcesFromYaml

func DataResourcesFromYaml(in []byte) (result []unstructured.Unstructured, err error)

DataResourcesFromYaml returns the manifests list from the YAML stream data.

func GetResourceName

func GetResourceName(cd *resource.DesiredComposed) string

func JsonByteToRawExtension

func JsonByteToRawExtension(jsonByte []byte) (runtime.RawExtension, error)

func JsonByteToUnstructured

func JsonByteToUnstructured(jsonByte []byte) (*unstructured.Unstructured, error)

func MergeContext

func MergeContext(req *fnv1.RunFunctionRequest, val map[string]interface{}) (map[string]interface{}, error)

MergeContext merges existing Context with new values provided

func ObjToRawExtension

func ObjToRawExtension(obj interface{}) (runtime.RawExtension, error)

func SetConditions

func SetConditions(rsp *fnv1.RunFunctionResponse, cr ConditionResources, log logging.Logger) error

SetConditions updates the RunFunctionResponse with specified conditions from ConditionResources, ensuring no duplicates. It validates that system-reserved Crossplane condition types are not set and permits forced updates when specified.

func SetData

func SetData(data any, path string, o any, overwrite bool) error

SetData is a recursive function that is intended to build a kube fieldpath valid JSONPath(s) of the given object, it will then copy from 'data' at the given path to the passed o object - at the same path, overwrite defines if this function should be allowed to overwrite values or not, if not return an conflicting value error

If the resource to write to 'o' contains a nil .Resource, setData will return an error It is expected that the resource is created via composed.New() or composite.New() prior to calling setData

func SetEvents

func SetEvents(rsp *fnv1.RunFunctionResponse, ers EventResources) error

SetEvents processes a list of EventResources, transforms them into Results, and appends them to the RunFunctionResponse. Returns an error if any transformation fails.

func UnstructuredToRawExtension

func UnstructuredToRawExtension(obj *unstructured.Unstructured) (runtime.RawExtension, error)

Types

type AddResourcesOptions

type AddResourcesOptions struct {
	Basename  string
	Data      []unstructured.Unstructured
	Overwrite bool
}

type AddResourcesResult

type AddResourcesResult struct {
	Target   Target
	Object   any
	MsgCount int
	Msgs     []string
}

func ProcessResources

func ProcessResources(dxr *resource.Composite, oxr *resource.Composite, desired map[resource.Name]*resource.DesiredComposed, observed map[resource.Name]resource.ObservedComposed, extraResources map[string]*fnv1.ResourceSelector, conditions *ConditionResources,
	events *EventResources, contextData *map[string]interface{}, target Target, resources ResourceList, opts *AddResourcesOptions) (AddResourcesResult, error)

type BindingTarget

type BindingTarget string

Target determines which objects to set the condition on.

const (
	// TargetComposite targets only the composite resource.
	TargetComposite BindingTarget = "Composite"

	// TargetCompositeAndClaim targets both the composite and the claim.
	TargetCompositeAndClaim BindingTarget = "CompositeAndClaim"
)

type Condition

type Condition struct {
	// Type of the condition. Required.
	Type string `json:"type"`
	// Status of the condition. Required.
	Status metav1.ConditionStatus `json:"status"`
	// Reason of the condition. Required.
	Reason string `json:"reason"`
	// Message of the condition. Optional. A template can be used. The available
	// template variables come from capturing groups in MatchCondition message
	// regular expressions.
	Message *string `json:"message"`
}

Condition allows you to specify fields to set on a composite resource and claim.

type ConditionResource

type ConditionResource struct {
	// The target(s) to receive the condition. Can be Composite or
	// CompositeAndClaim. Defaults to Composite
	Target *BindingTarget `json:"target"`
	// If true, the condition will override a condition of the same Type. Defaults
	// to false.
	Force *bool `json:"force"`
	// Condition to set.
	Condition Condition `json:"condition"`
}

ConditionResource will set a condition on the target.

type ConditionResources

type ConditionResources []ConditionResource

type CreateEvent

type CreateEvent struct {
	// The target(s) to create an event for. Can be Composite or
	// CompositeAndClaim. Defaults to Composite
	Target *BindingTarget `json:"target"`

	// Event to create.
	Event Event `json:"event"`
}

CreateEvent will create an event for the target(s).

type DesiredMatch

type DesiredMatch map[*resource.DesiredComposed][]map[string]interface{}

DesiredMatch matches a list of data to apply to a desired resource This is used when targeting PatchDesired resources

func MatchResources

func MatchResources(desired map[resource.Name]*resource.DesiredComposed, data []unstructured.Unstructured) (DesiredMatch, error)

MatchResources finds and associates the data to the desired resource The length of the passed data should match the total count of desired match data

type Event

type Event struct {
	// Type of the event. Optional. Should be either Normal or Warning.
	Type *EventType `json:"type"`
	// Reason of the event. Optional.
	Reason *string `json:"reason"`
	// Message of the event. Required. A template can be used. The available
	// template variables come from capturing groups in MatchCondition message
	// regular expressions.
	Message string `json:"message"`
}

Event allows you to specify the fields of an event to create.

type EventResources

type EventResources []CreateEvent

type EventType

type EventType string

EventType type of an event.

const (
	// EventTypeNormal signifies a normal event.
	EventTypeNormal EventType = "Normal"

	// EventTypeWarning signifies a warning event.
	EventTypeWarning EventType = "Warning"
)

type ExtraResourcesRequirement

type ExtraResourcesRequirement struct {
	// APIVersion of the resource.
	APIVersion string `json:"apiVersion"`
	// Kind of the resource.
	Kind string `json:"kind"`
	// MatchLabels defines the labels to match the resource, if defined,
	// matchName is ignored.
	MatchLabels map[string]string `json:"matchLabels,omitempty"`
	// MatchName defines the name to match the resource, if MatchLabels is
	// empty.
	MatchName string `json:"matchName,omitempty"`
}

ExtraResourcesRequirement defines a single requirement for extra resources. Needed to have camelCase keys instead of the snake_case keys as defined through json tags by fnv1.ResourceSelector.

func (*ExtraResourcesRequirement) ToResourceSelector

func (e *ExtraResourcesRequirement) ToResourceSelector() *fnv1.ResourceSelector

ToResourceSelector converts the ExtraResourcesRequirement to a fnv1.ResourceSelector.

type ExtraResourcesRequirements

type ExtraResourcesRequirements map[string]ExtraResourcesRequirement

ExtraResourcesRequirements defines the requirements for extra resources.

type Resource

type Resource struct {
	// Name is a unique identifier for this entry in a ResourceList
	Name string                    `json:"name"`
	Base unstructured.Unstructured `json:"base,omitempty"`
}

type ResourceList

type ResourceList []Resource

type Target

type Target string
const (
	// PatchDesired targets existing Resources on the Desired XR
	PatchDesired Target = "PatchDesired"
	// PatchResources targets existing KCLInput.spec.Resources
	// These resources are then created similar to the Resources target
	PatchResources Target = "PatchResources"
	// Resources creates new resources that are added to the DesiredComposed Resources
	Resources Target = "Resources"
	// XR targets the existing Observed XR itself
	XR Target = "XR"
	// Default targets the existing all resources including XR, Desired XR,
	// spec.Resources and DesiredComposed Resources.
	Default Target = "Default"
)

Jump to

Keyboard shortcuts

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