extensions

package
v2.0.0 Latest Latest
Warning

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

Go to latest
Published: Apr 14, 2023 License: MIT Imports: 12 Imported by: 18

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ARMResourceModifier

type ARMResourceModifier interface {
	// ModifyARMResource takes a genruntime.ARMResource and returns an updated genruntime.ARMResource. The updated resource
	// is then serialized and sent to ARM in the body of a PUT request.
	ModifyARMResource(
		ctx context.Context,
		armObj genruntime.ARMResource,
		obj genruntime.ARMMetaObject,
		kubeClient kubeclient.Client,
		resolver *resolver.Resolver,
		log logr.Logger) (genruntime.ARMResource, error)
}

ARMResourceModifier provides a hook allowing resources to modify the payload that will be sent to ARM just before it is sent.

type ARMResourceModifierFunc

type ARMResourceModifierFunc = func(ctx context.Context, obj genruntime.ARMMetaObject, armObj genruntime.ARMResource) (genruntime.ARMResource, error)

func CreateARMResourceModifier

func CreateARMResourceModifier(
	host genruntime.ResourceExtension,
	kubeClient kubeclient.Client,
	resolver *resolver.Resolver,
	log logr.Logger) ARMResourceModifierFunc

CreateARMResourceModifier returns a function that performs per-resource modifications. If the ARMResourceModifier extension has not been implemented for the resource in question, the default behavior is to return the provided genruntime.ARMResource unmodified.

type ClaimFunc

type ClaimFunc = func(ctx context.Context, log logr.Logger, obj genruntime.ARMOwnedMetaObject) error

ClaimFunc is the signature of a function that can be used to create a default Claimer

func CreateClaimer

func CreateClaimer(
	host genruntime.ResourceExtension,
	next ClaimFunc) ClaimFunc

CreateClaimer creates a ClaimFunc. If the resource in question has not implemented the Claimer interface the provided default ClaimFunc is run by default.

type Claimer

type Claimer interface {
	// Claim claims the resource
	Claim(ctx context.Context, log logr.Logger, obj genruntime.ARMOwnedMetaObject, next ClaimFunc) error
}

Claimer can be implemented to customize how the reconciler claims a resource

type DeleteFunc

type DeleteFunc = func(
	ctx context.Context,
	log logr.Logger,
	resolver *resolver.Resolver,
	armClient *genericarmclient.GenericClient,
	obj genruntime.ARMMetaObject) (ctrl.Result, error)

DeleteFunc is the signature of a function that can be used to create a default Deleter

func CreateDeleter

func CreateDeleter(
	host genruntime.ResourceExtension,
	next DeleteFunc) DeleteFunc

CreateDeleter creates a DeleteFunc. If the resource in question has not implemented the Deleter interface the provided default DeleteFunc is run by default.

type Deleter

type Deleter interface {
	// Delete deletes the resource
	Delete(
		ctx context.Context,
		log logr.Logger,
		resolver *resolver.Resolver,
		armClient *genericarmclient.GenericClient,
		obj genruntime.ARMMetaObject,
		next DeleteFunc) (ctrl.Result, error)
}

Deleter can be implemented to customize how the reconciler deletes resources

type ErrorClassifier

type ErrorClassifier interface {
	// ClassifyError evaluates the provided error, returning including whether it is fatal or can be retried.
	// cloudError is the error returned from ARM.
	// apiVersion is the ARM API version used for the request.
	// log is a logger than can be used for telemetry.
	// next is the next implementation to call.
	ClassifyError(
		cloudError *genericarmclient.CloudError,
		apiVersion string,
		log logr.Logger,
		next ErrorClassifierFunc) (core.CloudErrorDetails, error)
}

ErrorClassifier can be implemented to customize how the reconciler reacts to specific errors

type ErrorClassifierFunc

type ErrorClassifierFunc func(cloudError *genericarmclient.CloudError) (core.CloudErrorDetails, error)

ErrorClassifierFunc is the signature of a function that can be used to create a DefaultErrorClassifier

func CreateErrorClassifier

func CreateErrorClassifier(
	host genruntime.ResourceExtension,
	classifier ErrorClassifierFunc,
	apiVersion string,
	log logr.Logger,
) ErrorClassifierFunc

type ImportResult

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

ImportResult is the result of doing an import.

func ImportSkipped

func ImportSkipped(because string) ImportResult

ImportSkipped creates a new ImportResult for a resource that was not imported.

func ImportSucceeded

func ImportSucceeded() ImportResult

ImportSucceeded creates a new ImportResult with a resource that was imported successfully.

func (ImportResult) Skipped

func (r ImportResult) Skipped() (string, bool)

Skipped returns a reason and true if the import was skipped, empty string and false otherwise.

type Importer

type Importer interface {
	// Import allows interception of the import process.
	// ctx is the current asynchronous context
	// resource is the resource being imported.
	// owner is an optional owner for the resource.
	// next is a function to call to do the actual import.
	Import(
		ctx context.Context,
		rsrc genruntime.ImportableResource,
		owner *genruntime.ResourceReference,
		next ImporterFunc,
	) (ImportResult, error)
}

Importer is an optional interface that can be implemented by resource extensions to customize the import process.

type ImporterFunc

type ImporterFunc func(
	ctx context.Context,
	resource genruntime.ImportableResource,
	owner *genruntime.ResourceReference,
) (ImportResult, error)

ImporterFunc is the signature of the function that does the actual import.

type KubernetesExportFunc

type KubernetesExportFunc = func(obj genruntime.MetaObject) ([]client.Object, error)

func CreateKubernetesExporter

func CreateKubernetesExporter(
	ctx context.Context,
	host genruntime.ResourceExtension,
	armClient *genericarmclient.GenericClient,
	log logr.Logger) KubernetesExportFunc

CreateKubernetesExporter creates a function to create Kubernetes resources. If the resource in question has not been configured with the genruntime.KubernetesExporter interface, the returned function is a no-op.

type PostReconcileCheckFunc

type PostReconcileCheckFunc func(
	ctx context.Context,
	obj genruntime.MetaObject,
	owner genruntime.MetaObject,
	kubeClient kubeclient.Client,
	armClient *genericarmclient.GenericClient,
	log logr.Logger,
) (PostReconcileCheckResult, error)

func CreatePostReconciliationChecker

func CreatePostReconciliationChecker(
	host genruntime.ResourceExtension,
) (PostReconcileCheckFunc, bool)

CreatePostReconciliationChecker creates a checker that can be used to check if we want to customise the condition on the resource after reconciliation. If the resource in question has not implemented the PostReconciliationChecker interface, the provided default checker is returned directly. We also return a bool indicating whether the resource extension implements the PostReconciliationChecker interface. host is a resource extension that may implement the PostReconciliationChecker interface.

type PostReconcileCheckResult

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

func PostReconcileCheckResultFailure

func PostReconcileCheckResultFailure(reason string) PostReconcileCheckResult

PostReconcileCheckResultFailure indicates post reconciliation check of a resource is currently failed by returning a PostReconcileCheckResult with action `Failure`. reason is an explanatory reason to show to the user via a warning condition on the resource.

func PostReconcileCheckResultSuccess

func PostReconcileCheckResultSuccess() PostReconcileCheckResult

PostReconcileCheckResultSuccess indicates that a resource is ready after reconciliation by returning a PostReconcileCheckResult with action `Success`.

func (PostReconcileCheckResult) CreateConditionError

func (r PostReconcileCheckResult) CreateConditionError() error

CreateConditionError returns an error that can be used to set a condition on the resource.

func (PostReconcileCheckResult) Message

func (r PostReconcileCheckResult) Message() string

func (PostReconcileCheckResult) ReconciliationFailed

func (r PostReconcileCheckResult) ReconciliationFailed() bool

func (PostReconcileCheckResult) ReconciliationSucceeded

func (r PostReconcileCheckResult) ReconciliationSucceeded() bool

type PostReconciliationChecker

type PostReconciliationChecker interface {
	// PostReconcileCheck does a post-reconcile check to see if the resource is in a state to set 'Ready' condition.
	// ARM resources should implement this if they need to defer the Ready condition until later.
	// Returns PostReconcileCheckResultSuccess if the reconciliation is successful.
	// Returns PostReconcileCheckResultFailure and a human-readable reason if the reconciliation should put a condition on resource.
	// ctx is the current operation context.
	// obj is the resource about to be reconciled. The resource's State will be freshly updated.
	// owner is the parent resource of obj. This can be nil in some cases like `ResourceGroups` and `Alias`.
	// kubeClient allows access to the cluster for any required queries.
	// armClient allows access to ARM for any required queries.
	// log is the logger for the current operation.
	PostReconcileCheck(
		ctx context.Context,
		obj genruntime.MetaObject,
		owner genruntime.MetaObject,
		kubeClient kubeclient.Client,
		armClient *genericarmclient.GenericClient,
		log logr.Logger,
		next PostReconcileCheckFunc,
	) (PostReconcileCheckResult, error)
}

PostReconciliationChecker is implemented by resources that want to do extra status checks after a full ARM reconcile.

type PreReconcileCheckFunc

type PreReconcileCheckFunc func(
	ctx context.Context,
	obj genruntime.MetaObject,
	owner genruntime.MetaObject,
	kubeClient kubeclient.Client,
	armClient *genericarmclient.GenericClient,
	log logr.Logger,
) (PreReconcileCheckResult, error)

func CreatePreReconciliationChecker

func CreatePreReconciliationChecker(
	host genruntime.ResourceExtension,
) (PreReconcileCheckFunc, bool)

CreatePreReconciliationChecker creates a checker that can be used to check if a resource is ready for reconciliation. If the resource in question has not implemented the PreReconciliationChecker interface, the provided default checker is returned directly. We also return a bool indicating whether the resource extension implements the PreReconciliationChecker interface. host is a resource extension that may implement the PreReconciliationChecker interface.

type PreReconcileCheckResult

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

func BlockReconcile

func BlockReconcile(reason string) PreReconcileCheckResult

BlockReconcile indicates reconciliation of a resource is currently blocked by returning a PreReconcileCheckResult with action `Block`. reason is an explanatory reason to show to the user via a warning condition on the resource.

func PostponeReconcile

func PostponeReconcile() PreReconcileCheckResult

PostponeReconcile indicates reconciliation of a resource is not currently required by returning a PreReconcileCheckResult with action `Postpone`.

func ProceedWithReconcile

func ProceedWithReconcile() PreReconcileCheckResult

ProceedWithReconcile indicates that a resource is ready for reconciliation by returning a PreReconcileCheckResult with action `Proceed`.

func (PreReconcileCheckResult) BlockReconciliation

func (r PreReconcileCheckResult) BlockReconciliation() bool

func (PreReconcileCheckResult) CreateConditionError

func (r PreReconcileCheckResult) CreateConditionError() error

CreateConditionError returns an error that can be used to set a condition on the resource.

func (PreReconcileCheckResult) Message

func (r PreReconcileCheckResult) Message() string

func (PreReconcileCheckResult) PostponeReconciliation

func (r PreReconcileCheckResult) PostponeReconciliation() bool

type PreReconciliationChecker

type PreReconciliationChecker interface {
	// PreReconcileCheck does a pre-reconcile check to see if the resource is in a state that can be reconciled.
	// ARM resources should implement this to avoid reconciliation attempts that cannot possibly succeed.
	// Returns ProceedWithReconcile if the reconciliation should go ahead.
	// Returns BlockReconcile and a human-readable reason if the reconciliation should be skipped.
	// ctx is the current operation context.
	// obj is the resource about to be reconciled. The resource's State will be freshly updated.
	// kubeClient allows access to the cluster for any required queries.
	// armClient allows access to ARM for any required queries.
	// log is the logger for the current operation.
	// next is the next (nested) implementation to call.
	PreReconcileCheck(
		ctx context.Context,
		obj genruntime.MetaObject,
		owner genruntime.MetaObject,
		kubeClient kubeclient.Client,
		armClient *genericarmclient.GenericClient,
		log logr.Logger,
		next PreReconcileCheckFunc,
	) (PreReconcileCheckResult, error)
}

PreReconciliationChecker is implemented by resources that want to do extra checks before proceeding with a full ARM reconcile.

type SuccessFunc

type SuccessFunc = func(obj genruntime.ARMMetaObject) error

SuccessFunc is the signature of a function that can be used to create a default SuccessfulCreationHandler

func CreateSuccessfulCreationHandler

func CreateSuccessfulCreationHandler(
	host genruntime.ResourceExtension,
	log logr.Logger) SuccessFunc

CreateSuccessfulCreationHandler creates a SuccessFunc if the resource implements SuccessfulCreationHandler. If the resource did not implement SuccessfulCreationHandler a default handler that does nothing is returned.

type SuccessfulCreationHandler

type SuccessfulCreationHandler interface {
	// Success modifies the resource based on a successful creation
	Success(obj genruntime.ARMMetaObject) error
}

SuccessfulCreationHandler can be implemented to customize the resource upon successful creation

Jump to

Keyboard shortcuts

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