v2/pkg/genruntime/reconciler.go (29 lines of code) (raw):

/* * Copyright (c) Microsoft Corporation. * Licensed under the MIT license. */ package genruntime import ( "context" "github.com/go-logr/logr" "k8s.io/client-go/tools/record" ctrl "sigs.k8s.io/controller-runtime" ) // Reconciler performs create/delete actions against a particular kind of resource. type Reconciler interface { // CreateOrUpdate performs create or update of the resource. This must be idempotent. In the event the CreateOrUpdate // takes a long time, CreateOrUpdate should return quickly but set an annotation or ready condition that can be used on subsequent // calls to monitor the ongoing CreateOrUpdate. CreateOrUpdate( ctx context.Context, log logr.Logger, eventRecorder record.EventRecorder, obj MetaObject) (ctrl.Result, error) // Delete performs deletion of the resource. This must be idempotent. Removal of the common finalizer is performed elsewhere. // Delete should concern itself with issuing and tracking the resource deletion. Delete( ctx context.Context, log logr.Logger, eventRecorder record.EventRecorder, obj MetaObject) (ctrl.Result, error) // Claim performs resource specific claim actions. This must be idempotent. // A standard finalizer is added to all resources, Claim // should deal with any resource specific claiming actions (such as setting a resource ID annotation, etc). // If Claim returns an error then reconciliation will be retried according to the returned Ready condition until // no error is returned. Once Claim succeeds CreateOrUpdate is called. Claim( ctx context.Context, log logr.Logger, eventRecorder record.EventRecorder, obj MetaObject) error // UpdateStatus fetches the resource's status but performs no other actions. This is primarily called if the // reconcile-policy annotation was set in such a way that it blocks CreateOrUpdate UpdateStatus( ctx context.Context, log logr.Logger, eventRecorder record.EventRecorder, obj MetaObject) error }