reconciler

package
v0.2.3 Latest Latest
Warning

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

Go to latest
Published: Aug 20, 2020 License: AGPL-3.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RetryInterval = 50 * time.Millisecond
	RetryTimeout  = 2 * time.Second
	// ReadinessTimeout = 30 * time.Second
	ReadinessTimeout = 5 * time.Minute
	GCTimeout        = 5 * time.Minute
)

Variables

This section is empty.

Functions

func CleanUpResources

func CleanUpResources(old, new *status.Resources, c client.Client, ns string) error

func Record

func Record(owner runtime.Object, recorder record.EventRecorder, result syncer.SyncResult) error

func SyncComponents

func SyncComponents(ctx context.Context, r interfaces.Reconcile, cpts map[string]application.ComponentMutate, owner interfaces.Object, order map[int]string) (appStatus status.ApplicationStatus, err error)

func SyncObjects

func SyncObjects(ctx context.Context, r interfaces.Reconcile, syncers map[int]syncer.Interface) (resources status.Resources, err error)

func WaitUntilCompletion

func WaitUntilCompletion(r interfaces.Reconcile, obj runtime.Object) error

Types

type ComponentReconciler

type ComponentReconciler struct {
	ReconcilerBase *ReconcilerBase
	Component      application.Component
	Status         status.ComponentStatus

	Owner interfaces.Object
	// contains filtered or unexported fields
}

func (*ComponentReconciler) Reconcile

func (r *ComponentReconciler) Reconcile(request reconcile.Request) (reconcile.Result, error)

type InstanceReconciler

type InstanceReconciler struct {
	*ReconcilerBase
	Instance  application.Instance
	SyncOrder map[int]string
}

func NewInstanceReconciler

func NewInstanceReconciler(r *ReconcilerBase, i application.Instance, order map[int]string) *InstanceReconciler

func (*InstanceReconciler) ManageError

 func (er *InstanceReconciler) ManageSuccess(instance apis.Resource) (reconcile.Result, error) {
	if enforcingReconcileStatusAware, updateStatus := (instance).(apis.EnforcingReconcileStatusAware); updateStatus {
		condition := status.Condition{
			Type:               "ReconcileSuccess",
			LastTransitionTime: metav1.Now(),
			Message:            astatus.SuccessfulMessage,
			Reason:             astatus.SuccessfulReason,
			Status:             corev1.ConditionTrue,
		}
		status := apis.EnforcingReconcileStatus{
			Conditions:             status.NewConditions(condition),
			LockedResourceStatuses: er.GetLockedResourceStatuses(instance),
			LockedPatchStatuses:    er.GetLockedPatchStatuses(instance),
		}
		enforcingReconcileStatusAware.SetEnforcingReconcileStatus(status)
		log.V(1).Info("about to modify state for", "instance version", instance.GetResourceVersion())
		err := er.GetClient().Status().Update(context.Background(), instance)
		if err != nil {
			if errors.IsResourceExpired(err) {
				log.Info("unable to update status for", "object version", instance.GetResourceVersion(), "resource version expired, will trigger another reconcile cycle", "")
			} else {
				log.Error(err, "unable to update status for", "object", instance)
			}
			return reconcile.Result{}, err
		}
	} else {
		log.V(1).Info("object is not RecocileStatusAware, not setting status")
	}
	return reconcile.Result{}, nil
}

func (*InstanceReconciler) Reconcile

func (r *InstanceReconciler) Reconcile(request reconcile.Request) (reconcile.Result, error)

type ReconcilerBase

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

func NewReconcilerBase

func NewReconcilerBase(client client.Client, scheme *runtime.Scheme, restConfig *rest.Config, recorder record.EventRecorder) ReconcilerBase

func (*ReconcilerBase) GetClient

func (r *ReconcilerBase) GetClient() client.Client

GetClient returns the underlying client

func (*ReconcilerBase) GetRecorder

func (r *ReconcilerBase) GetRecorder() record.EventRecorder

GetRecorder returns the underlying recorder

func (*ReconcilerBase) GetRestConfig

func (r *ReconcilerBase) GetRestConfig() *rest.Config

GetRestConfig returns the undelying rest config

func (*ReconcilerBase) GetScheme

func (r *ReconcilerBase) GetScheme() *runtime.Scheme

GetScheme returns the scheme

func (*ReconcilerBase) IsInitialized

func (r *ReconcilerBase) IsInitialized(obj metav1.Object) bool

IsInitialized determines if a CR instance is initialized. this implementation returns always true, should be overridden

func (*ReconcilerBase) IsValid

func (r *ReconcilerBase) IsValid(obj metav1.Object) (bool, error)

IsValid determines if a CR instance is valid. this implementation returns always true, should be overridden

func (*ReconcilerBase) Reconcile

func (r *ReconcilerBase) Reconcile(request reconcile.Request) (reconcile.Result, error)

Reconcile is a stub function to have ReconcilerBase match the Reconciler interface. You must redefine this function

type ResourceReconciler

type ResourceReconciler struct {
	*ReconcilerBase
	Object objects.Object
	Owner  interfaces.Object
	Status status.ObjectStatus
	// contains filtered or unexported fields
}

func (*ResourceReconciler) Reconcile

func (r *ResourceReconciler) Reconcile(request reconcile.Request) (reconcile.Result, error)

Jump to

Keyboard shortcuts

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