k8s

package
v0.11.0 Latest Latest
Warning

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

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Always added in v0.8.0

func Always(_ unstructured.Unstructured) bool

func NewDefaultBackoff added in v0.8.0

func NewDefaultBackoff() wait.Backoff

func NewRetryingClient added in v0.8.0

func NewRetryingClient(c client.WithWatch, predicate func(error) bool, backoff wait.Backoff) client.WithWatch

func Patch

func Patch[T any, PT ObjectWithDeepCopy[T]](
	ctx context.Context,
	k8sClient client.Client,
	obj PT,
	modify func(),
) error

Patch updates k8s objects by subsequently calling k8s client `Patch()` and `Status().Patch()` The `modify` lambda is expected to mutate the `obj` but does not take the object as an argument as the object should be visible in the parent scope Example:

var pod *corev1.Pod

patchErr = k8s.Patch(ctx, fakeClient, pod, func() {
	pod.Spec.RestartPolicy = corev1.RestartPolicyOnFailure
	pod.Status.Message = "hello"
})

Note that this function should be used when current user has permissions to patch both object's spec and status, e.g. in controllers context

func PatchResource added in v0.4.0

func PatchResource[T any, PT ObjectWithDeepCopy[T]](
	ctx context.Context,
	k8sClient client.Client,
	obj PT,
	modify func(),
) error

PatchResource updates k8s objects by calling k8s client `Patch`. It does not patch the object status which makes it convenient to use in contexts where the current user is not permitted to patch the status, such as within the api repositories. The `modify` lambda is expected to mutate the `obj` but does not take the object as an argument as the object should be visible in the parent scope Example:

var pod *corev1.Pod

patchErr = k8s.PatchResource(ctx, fakeClient, pod, func() {
  pod.Spec.RestartPolicy = corev1.RestartPolicyOnFailure
})

Note that this function should be used when current user has permissions to patch both object's spec and status, e.g. in controllers context

Types

type FinalizerDescriptor added in v0.8.0

type FinalizerDescriptor struct {
	FinalizerName string
	SetPolicy     func(unstructured.Unstructured) bool
}

type FinalizerWebhook added in v0.8.0

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

func NewFinalizerWebhook added in v0.8.0

func NewFinalizerWebhook(resourceTypeToFinalizerNameRegistry map[string]FinalizerDescriptor) *FinalizerWebhook

func (*FinalizerWebhook) Handle added in v0.8.0

func (*FinalizerWebhook) SetupWebhookWithManager added in v0.8.0

func (r *FinalizerWebhook) SetupWebhookWithManager(mgr ctrl.Manager)

type ObjectReconciler

type ObjectReconciler[T any, PT ObjectWithDeepCopy[T]] interface {
	ReconcileResource(ctx context.Context, obj PT) (ctrl.Result, error)
	SetupWithManager(mgr ctrl.Manager) *builder.Builder
}

type ObjectWithDeepCopy

type ObjectWithDeepCopy[T any] interface {
	*T

	client.Object
	DeepCopy() *T
}

type PatchingReconciler

type PatchingReconciler[T any, PT ObjectWithDeepCopy[T]] struct {
	// contains filtered or unexported fields
}

func NewPatchingReconciler

func NewPatchingReconciler[T any, PT ObjectWithDeepCopy[T]](log logr.Logger, k8sClient client.Client, objectReconciler ObjectReconciler[T, PT]) *PatchingReconciler[T, PT]

func (*PatchingReconciler[T, PT]) Reconcile

func (r *PatchingReconciler[T, PT]) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error)

func (*PatchingReconciler[T, PT]) SetupWithManager

func (r *PatchingReconciler[T, PT]) SetupWithManager(mgr ctrl.Manager) error

type RetryingClient added in v0.8.0

type RetryingClient struct {
	client.WithWatch
	// contains filtered or unexported fields
}

func (RetryingClient) Create added in v0.8.0

func (a RetryingClient) Create(ctx context.Context, obj client.Object, opts ...client.CreateOption) error

func (RetryingClient) Delete added in v0.8.0

func (a RetryingClient) Delete(ctx context.Context, obj client.Object, opts ...client.DeleteOption) error

func (RetryingClient) DeleteAllOf added in v0.8.0

func (a RetryingClient) DeleteAllOf(ctx context.Context, obj client.Object, opts ...client.DeleteAllOfOption) error

func (RetryingClient) Get added in v0.8.0

func (RetryingClient) List added in v0.8.0

func (RetryingClient) Patch added in v0.8.0

func (a RetryingClient) Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption) error

func (RetryingClient) Update added in v0.8.0

func (a RetryingClient) Update(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error

Directories

Path Synopsis
Code generated by counterfeiter.
Code generated by counterfeiter.

Jump to

Keyboard shortcuts

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