operator

package
v1.1.1 Latest Latest
Warning

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

Go to latest
Published: Oct 24, 2024 License: AGPL-3.0 Imports: 30 Imported by: 5

Documentation

Index

Constants

View Source
const (
	ErrNotInInputs        fstring = "key=%s not found in .Spec.Inputs"
	ErrNotInGeneratedVars fstring = "key=%s not found in .Status.GeneratedVars"
	ErrNotInDisplayVars   fstring = "key=%s not found in .Status.DisplayVars"
)

Variables

This section is empty.

Functions

func AreChecksEqual added in v1.1.0

func AreChecksEqual(c1 Check, c2 Check) bool

func ErrNotInReqLocals

func ErrNotInReqLocals(key string) error

func Get

func Get[T client.Object](ctx context.Context, cli client.Client, nn types.NamespacedName, obj T) (T, error)

func GetLocal

func GetLocal[T any, V Resource](r *Request[V], key string) (T, bool)

func GetRaw

func GetRaw[T any](ctx context.Context, cli client.Client, nn types.NamespacedName, obj *unstructured.Unstructured) (*T, error)

func NewRunningCheck added in v1.1.0

func NewRunningCheck[T Resource](name string, req *Request[T]) *checkWrapper[T]

func ReconcileFilter

func ReconcileFilter() predicate.Funcs

func SetLocal

func SetLocal[T any, V Resource](r *Request[V], key string, value T)

Types

type Check

type Check struct {
	Status     bool   `json:"status"`
	Message    string `json:"message,omitempty"`
	Generation int64  `json:"generation,omitempty"`

	State State `json:"state,omitempty"`

	StartedAt *metav1.Time `json:"startedAt,omitempty"`

	Info  string `json:"info,omitempty"`
	Debug string `json:"debug,omitempty"`
	Error string `json:"error,omitempty"`
}

+kubebuilder:object:generate=true

func (*Check) DeepCopy

func (in *Check) DeepCopy() *Check

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Check.

func (*Check) DeepCopyInto

func (in *Check) DeepCopyInto(out *Check)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CheckMeta added in v1.1.0

type CheckMeta struct {
	Name        string  `json:"name"`
	Title       string  `json:"title"`
	Description *string `json:"description,omitempty"`
	Debug       bool    `json:"debug,omitempty"`
	Hide        bool    `json:"hide,omitempty"`
}

+kubebuilder:object:generate=true

func (*CheckMeta) DeepCopy added in v1.1.0

func (in *CheckMeta) DeepCopy() *CheckMeta

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CheckMeta.

func (*CheckMeta) DeepCopyInto added in v1.1.0

func (in *CheckMeta) DeepCopyInto(out *CheckMeta)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ContainerMessage

type ContainerMessage struct {
	State     string `json:"state,omitempty"`
	Pod       string `json:"pod,omitempty"`
	Container string `json:"container,omitempty"`
	Reason    string `json:"reason,omitempty"`
	Message   string `json:"message,omitempty"`
	ExitCode  int32  `json:"exitCode,omitempty"`
}

func GetMessagesFromPods

func GetMessagesFromPods(pods ...corev1.Pod) []ContainerMessage

type Reconciler

type Reconciler interface {
	reconcile.Reconciler
	SetupWithManager(mgr ctrl.Manager, logger logging.Logger) error
	GetName() string
}

type ReconcilerCtx

type ReconcilerCtx context.Context

func NewReconcilerCtx

func NewReconcilerCtx(parent context.Context, logger logging.Logger) ReconcilerCtx

type Request

type Request[T Resource] struct {
	Object T
	Logger logging.Logger
	// contains filtered or unexported fields
}

func NewRequest

func NewRequest[T Resource](ctx ReconcilerCtx, c client.Client, nn types.NamespacedName, resource T) (*Request[T], error)

func (*Request[T]) AddToOwnedResources

func (r *Request[T]) AddToOwnedResources(refs ...ResourceRef)

func (*Request[T]) CheckFailed

func (r *Request[T]) CheckFailed(name string, check Check, msg string) stepResult.Result

func (*Request[T]) CheckStillRunning added in v1.1.0

func (r *Request[T]) CheckStillRunning(name string, check Check, msg string) stepResult.Result

func (*Request[T]) CleanupOwnedResources deprecated

func (r *Request[T]) CleanupOwnedResources() stepResult.Result

Deprecated: CleanupOwnedResources is deprecated use CleanupOwnedResourcesV2 instead

func (*Request[T]) CleanupOwnedResourcesV2 added in v1.1.0

func (r *Request[T]) CleanupOwnedResourcesV2(check *checkWrapper[T]) stepResult.Result

func (*Request[T]) ClearStatusIfAnnotated

func (r *Request[T]) ClearStatusIfAnnotated() stepResult.Result

func (*Request[T]) Context

func (r *Request[T]) Context() context.Context

func (*Request[T]) Done

func (r *Request[T]) Done(result ...ctrl.Result) stepResult.Result

func (*Request[T]) EnsureCheckList added in v1.1.0

func (r *Request[T]) EnsureCheckList(expected []CheckMeta) stepResult.Result

func (*Request[T]) EnsureChecks

func (r *Request[T]) EnsureChecks(names ...string) stepResult.Result

func (*Request[T]) EnsureFinalizers

func (r *Request[T]) EnsureFinalizers(finalizers ...string) stepResult.Result

func (*Request[T]) EnsureLabelsAndAnnotations

func (r *Request[T]) EnsureLabelsAndAnnotations() stepResult.Result

func (*Request[T]) Finalize

func (r *Request[T]) Finalize() stepResult.Result

func (*Request[T]) ForceCleanupOwnedResources added in v1.1.0

func (r *Request[T]) ForceCleanupOwnedResources(check *checkWrapper[T]) stepResult.Result

INFO: this should only be used for very specific cases, where there is no other way to cleanup owned resources Like, when deleting ManagedService

  • all managed resources should be deleted, but since owner is already getting deleted, there is no point in their proper cleanup

func (*Request[T]) GetAnchorName

func (r *Request[T]) GetAnchorName() string

func (*Request[T]) GetClient

func (r *Request[T]) GetClient() client.Client

func (*Request[T]) GetOwnedK8sResources

func (r *Request[T]) GetOwnedK8sResources() []client.Object

func (*Request[T]) GetOwnedResources

func (r *Request[T]) GetOwnedResources() []ResourceRef

func (*Request[T]) LogPostCheck

func (r *Request[T]) LogPostCheck(checkName string)

func (*Request[T]) LogPreCheck

func (r *Request[T]) LogPreCheck(checkName string)

func (*Request[T]) Next

func (r *Request[T]) Next() stepResult.Result

func (*Request[T]) PostReconcile

func (r *Request[T]) PostReconcile()

func (*Request[T]) PreReconcile

func (r *Request[T]) PreReconcile()

func (*Request[T]) RestartIfAnnotated

func (r *Request[T]) RestartIfAnnotated() stepResult.Result

func (*Request[T]) ShouldReconcile

func (r *Request[T]) ShouldReconcile() bool

func (*Request[T]) UpdateStatus

func (r *Request[T]) UpdateStatus() stepResult.Result

type Resource

type Resource interface {
	client.Object
	runtime.Object
	EnsureGVK()
	GetStatus() *Status
	GetEnsuredLabels() map[string]string
	GetEnsuredAnnotations() map[string]string
}

type ResourceRef

type ResourceRef struct {
	metav1.TypeMeta `json:",inline" graphql:"children-required"`
	Namespace       string `json:"namespace"`
	Name            string `json:"name"`
}

+kubebuilder:object:generate=true

func ParseResourceRef

func ParseResourceRef(obj client.Object) ResourceRef

func (*ResourceRef) DeepCopy

func (in *ResourceRef) DeepCopy() *ResourceRef

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceRef.

func (*ResourceRef) DeepCopyInto

func (in *ResourceRef) DeepCopyInto(out *ResourceRef)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type State

type State string

+kubebuilder:object:generate=true

const (
	WaitingState   State = "yet-to-be-reconciled"
	RunningState   State = "under-reconcilation"
	ErroredState   State = "errored-during-reconcilation"
	CompletedState State = "finished-reconcilation"
)

type Status

type Status struct {
	// +kubebuilder:validation:Optional
	IsReady   bool             `json:"isReady"`
	Resources []ResourceRef    `json:"resources,omitempty"`
	Message   *rawJson.RawJson `json:"message,omitempty"`

	CheckList           []CheckMeta      `json:"checkList,omitempty"`
	Checks              map[string]Check `json:"checks,omitempty"`
	LastReadyGeneration int64            `json:"lastReadyGeneration,omitempty"`
	LastReconcileTime   *metav1.Time     `json:"lastReconcileTime,omitempty"`
}

func (*Status) DeepCopy

func (in *Status) DeepCopy() *Status

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Status.

func (*Status) DeepCopyInto

func (in *Status) DeepCopyInto(out *Status)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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