Documentation
¶
Index ¶
- type DefaultRemoteDiff
- func (h *DefaultRemoteDiff[apiObject]) AddDiff(diff string)
- func (h *DefaultRemoteDiff[apiObject]) Diff() string
- func (h *DefaultRemoteDiff[apiObject]) GetObjectToCreate() apiObject
- func (h *DefaultRemoteDiff[apiObject]) GetObjectToUpdate() apiObject
- func (h *DefaultRemoteDiff[apiObject]) IsDiff() bool
- func (h *DefaultRemoteDiff[apiObject]) NeedCreate() bool
- func (h *DefaultRemoteDiff[apiObject]) NeedUpdate() bool
- func (h *DefaultRemoteDiff[apiObject]) SetObjectToCreate(object apiObject)
- func (h *DefaultRemoteDiff[apiObject]) SetObjectToUpdate(object apiObject)
- type DefaultRemoteExternalReconciler
- func (h *DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Build(k8sO k8sObject) (object apiObject, err error)
- func (h *DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Client() apiClient
- func (h *DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Create(apiO apiObject, k8sO k8sObject) (err error)
- func (h *DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Delete(k8sO k8sObject) (err error)
- func (h *DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Diff(currentOject apiObject, expectedObject apiObject, originalObject apiObject, ...) (patchResult *patch.PatchResult, err error)
- func (h *DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Get(k8sO k8sObject) (object apiObject, err error)
- func (h *DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Update(apiO apiObject, k8sO k8sObject) (err error)
- type DefaultRemoteRead
- type DefaultRemoteReconciler
- type DefaultRemoteReconcilerAction
- func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) Configure(ctx context.Context, o k8sObject, data map[string]any, ...) (res reconcile.Result, err error)
- func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) Create(ctx context.Context, o k8sObject, data map[string]any, ...) (res reconcile.Result, err error)
- func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) Delete(ctx context.Context, o k8sObject, data map[string]any, ...) (err error)
- func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) Diff(ctx context.Context, o k8sObject, read RemoteRead[apiObject], ...) (diff RemoteDiff[apiObject], res reconcile.Result, err error)
- func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) GetIgnoresDiff() []patch.CalculateOption
- func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) GetRemoteHandler(ctx context.Context, req reconcile.Request, o k8sObject, logger *logrus.Entry) (handler RemoteExternalReconciler[k8sObject, apiObject, apiClient], ...)
- func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) OnError(ctx context.Context, o k8sObject, data map[string]any, ...) (res reconcile.Result, err error)
- func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) OnSuccess(ctx context.Context, o k8sObject, data map[string]any, ...) (res reconcile.Result, err error)
- func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) Read(ctx context.Context, o k8sObject, data map[string]any, ...) (read RemoteRead[apiObject], res reconcile.Result, err error)
- func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) Update(ctx context.Context, o k8sObject, data map[string]any, ...) (res reconcile.Result, err error)
- type RemoteDiff
- type RemoteExternalReconciler
- type RemoteRead
- type RemoteReconciler
- type RemoteReconcilerAction
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DefaultRemoteDiff ¶
type DefaultRemoteDiff[apiObject comparable] struct { // contains filtered or unexported fields }
DefaultRemoteDiff is the default implementation of RemoteDiff interface
func (*DefaultRemoteDiff[apiObject]) AddDiff ¶
func (h *DefaultRemoteDiff[apiObject]) AddDiff(diff string)
func (*DefaultRemoteDiff[apiObject]) Diff ¶
func (h *DefaultRemoteDiff[apiObject]) Diff() string
func (*DefaultRemoteDiff[apiObject]) GetObjectToCreate ¶
func (h *DefaultRemoteDiff[apiObject]) GetObjectToCreate() apiObject
func (*DefaultRemoteDiff[apiObject]) GetObjectToUpdate ¶
func (h *DefaultRemoteDiff[apiObject]) GetObjectToUpdate() apiObject
func (*DefaultRemoteDiff[apiObject]) IsDiff ¶
func (h *DefaultRemoteDiff[apiObject]) IsDiff() bool
func (*DefaultRemoteDiff[apiObject]) NeedCreate ¶
func (h *DefaultRemoteDiff[apiObject]) NeedCreate() bool
func (*DefaultRemoteDiff[apiObject]) NeedUpdate ¶
func (h *DefaultRemoteDiff[apiObject]) NeedUpdate() bool
func (*DefaultRemoteDiff[apiObject]) SetObjectToCreate ¶
func (h *DefaultRemoteDiff[apiObject]) SetObjectToCreate(object apiObject)
func (*DefaultRemoteDiff[apiObject]) SetObjectToUpdate ¶
func (h *DefaultRemoteDiff[apiObject]) SetObjectToUpdate(object apiObject)
type DefaultRemoteExternalReconciler ¶
type DefaultRemoteExternalReconciler[k8sObject object.RemoteObject, apiObject comparable, apiClient any] struct { // contains filtered or unexported fields }
DefaultRemoteExternalReconciler is the default implementation of RemoteExternalReconciler It only implement the Diff method, because of is generic with 3-way merge patch
func (*DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Build ¶
func (h *DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Build(k8sO k8sObject) (object apiObject, err error)
func (*DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Client ¶
func (h *DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Client() apiClient
func (*DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Create ¶
func (h *DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Create(apiO apiObject, k8sO k8sObject) (err error)
func (*DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Delete ¶
func (h *DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Delete(k8sO k8sObject) (err error)
func (*DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Diff ¶
func (h *DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Diff(currentOject apiObject, expectedObject apiObject, originalObject apiObject, o k8sObject, ignoresDiff ...patch.CalculateOption) (patchResult *patch.PatchResult, err error)
func (*DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Get ¶
func (h *DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Get(k8sO k8sObject) (object apiObject, err error)
func (*DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Update ¶
func (h *DefaultRemoteExternalReconciler[k8sObject, apiObject, apiClient]) Update(apiO apiObject, k8sO k8sObject) (err error)
type DefaultRemoteRead ¶
type DefaultRemoteRead[T any] struct { // contains filtered or unexported fields }
DefaultRemoteRead is the default implementation of RemoteRead
func (*DefaultRemoteRead[apiObject]) GetCurrentObject ¶
func (h *DefaultRemoteRead[apiObject]) GetCurrentObject() apiObject
func (*DefaultRemoteRead[apiObject]) GetExpectedObject ¶
func (h *DefaultRemoteRead[apiObject]) GetExpectedObject() apiObject
func (*DefaultRemoteRead[apiObject]) SetCurrentObject ¶
func (h *DefaultRemoteRead[apiObject]) SetCurrentObject(object apiObject)
func (*DefaultRemoteRead[apiObject]) SetExpectedObject ¶
func (h *DefaultRemoteRead[apiObject]) SetExpectedObject(object apiObject)
type DefaultRemoteReconciler ¶
type DefaultRemoteReconciler[k8sObject object.RemoteObject, apiObject comparable, apiClient any] struct { controller.Reconciler }
DefaultRemoteReconciler is the default implementation of RemoteReconciler interface
func (*DefaultRemoteReconciler[k8sObject, apiObject, apiClient]) Reconcile ¶
func (h *DefaultRemoteReconciler[k8sObject, apiObject, apiClient]) Reconcile(ctx context.Context, req reconcile.Request, o k8sObject, data map[string]interface{}, reconciler RemoteReconcilerAction[k8sObject, apiObject, apiClient]) (res reconcile.Result, err error)
type DefaultRemoteReconcilerAction ¶
type DefaultRemoteReconcilerAction[k8sObject object.RemoteObject, apiObject comparable, apiClient any] struct { controller.ReconcilerAction }
DefaultRemoteReconcilerAction is the default implementation of RemoteReconcilerAction
func (*DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) Delete ¶
func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) Delete(ctx context.Context, o k8sObject, data map[string]any, handler RemoteExternalReconciler[k8sObject, apiObject, apiClient], logger *logrus.Entry) (err error)
Delete can be call on your own version It only add some log / events
func (*DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) Diff ¶
func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) Diff(ctx context.Context, o k8sObject, read RemoteRead[apiObject], data map[string]any, handler RemoteExternalReconciler[k8sObject, apiObject, apiClient], logger *logrus.Entry, ignoreDiff ...patch.CalculateOption) (diff RemoteDiff[apiObject], res reconcile.Result, err error)
func (*DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) GetIgnoresDiff ¶
func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) GetIgnoresDiff() []patch.CalculateOption
func (*DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) GetRemoteHandler ¶
func (*DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) OnSuccess ¶
func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) OnSuccess(ctx context.Context, o k8sObject, data map[string]any, handler RemoteExternalReconciler[k8sObject, apiObject, apiClient], diff RemoteDiff[apiObject], logger *logrus.Entry) (res reconcile.Result, err error)
func (*DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) Read ¶
func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) Read(ctx context.Context, o k8sObject, data map[string]any, handler RemoteExternalReconciler[k8sObject, apiObject, apiClient], logger *logrus.Entry) (read RemoteRead[apiObject], res reconcile.Result, err error)
func (*DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) Update ¶
func (h *DefaultRemoteReconcilerAction[k8sObject, apiObject, apiClient]) Update(ctx context.Context, o k8sObject, data map[string]any, handler RemoteExternalReconciler[k8sObject, apiObject, apiClient], object apiObject, logger *logrus.Entry) (res reconcile.Result, err error)
Update can be call on your own version It only add some log / events
type RemoteDiff ¶
type RemoteDiff[apiObject comparable] interface { // NeedCreate is true when need to create K8s object NeedCreate() bool // NeedUpdate is true when need to update K8s object NeedUpdate() bool // GetObjectsToCreate is the list of object to create on K8s GetObjectToCreate() apiObject // SetObjectsToCreate permit to set the list of object to create on K8s SetObjectToCreate(object apiObject) // GetObjectsToUpdate is the list of object to update on K8s GetObjectToUpdate() apiObject // SetObjectsToUpdate permit to set the list of object to update on K8s SetObjectToUpdate(object apiObject) // AddDiff permit to add diff // It add return line at the end AddDiff(diff string) // Diff permit to print human diff Diff() string // IsDiff permit to know is there are current diff to print IsDiff() bool }
func NewRemoteDiff ¶
func NewRemoteDiff[apiObject comparable]() RemoteDiff[apiObject]
NewBasicRemoteDiff is the basic contructor of RemoteDiff interface
type RemoteExternalReconciler ¶
type RemoteExternalReconciler[k8sObject object.RemoteObject, apiObject comparable, apiClient any] interface { Build(k8sO k8sObject) (object apiObject, err error) Get(k8sO k8sObject) (object apiObject, err error) Create(apiO apiObject, k8sO k8sObject) (err error) Update(apiO apiObject, k8sO k8sObject) (err error) Delete(k8sO k8sObject) (err error) Diff(currentOject apiObject, expectedObject apiObject, originalObject apiObject, k8sO k8sObject, ignoresDiff ...patch.CalculateOption) (patchResult *patch.PatchResult, err error) Client() apiClient }
RemoteExternalReconciler is the interface to call the remote API to handler resource
func NewRemoteExternalReconciler ¶
func NewRemoteExternalReconciler[k8sObject object.RemoteObject, apiObject comparable, apiClient any](handler apiClient) RemoteExternalReconciler[k8sObject, apiObject, apiClient]
type RemoteRead ¶
type RemoteRead[apiObject comparable] interface { // GetCurrentObject permit to get the current object GetCurrentObject() apiObject // SetCurrentObject permit to set the current object SetCurrentObject(object apiObject) // GetExpectedObject permit to get the expected object GetExpectedObject() apiObject // SetExpectedObject permit to set the expected object SetExpectedObject(object apiObject) }
RemoteRead is the interface to store the result of read on remote reconciler
func NewRemoteRead ¶
func NewRemoteRead[apiObject comparable]() RemoteRead[apiObject]
NewRemoteRead is the default implementation of RemoteRead interface
type RemoteReconciler ¶
type RemoteReconciler[k8sObject object.RemoteObject, apiObject comparable, apiClient any] interface { controller.Reconciler // Reconcile permit to reconcile the step (one K8s resource) Reconcile(ctx context.Context, req reconcile.Request, o k8sObject, data map[string]interface{}, reconciler RemoteReconcilerAction[k8sObject, apiObject, apiClient]) (res reconcile.Result, err error) }
RemoteReconciler is the reconciler to reconcile the remote resource
func NewRemoteReconciler ¶
func NewRemoteReconciler[k8sObject object.RemoteObject, apiObject comparable, apiClient any](client client.Client, name string, finalizer shared.FinalizerName, logger *logrus.Entry, recorder record.EventRecorder) (remoteReconciler RemoteReconciler[k8sObject, apiObject, apiClient])
NewRemoteReconciler permit to instanciate new basic multiphase resonciler
type RemoteReconcilerAction ¶
type RemoteReconcilerAction[k8sObject object.RemoteObject, apiObject comparable, apiClient any] interface { controller.ReconcilerAction // GetRemoteHandler permit to get the handler to manage the remote resources GetRemoteHandler(ctx context.Context, req reconcile.Request, o k8sObject, logger *logrus.Entry) (handler RemoteExternalReconciler[k8sObject, apiObject, apiClient], res reconcile.Result, err error) // Confirgure permit to init external provider driver (API client REST) // It can also permit to init condition on status Configure(ctx context.Context, o k8sObject, data map[string]any, handler RemoteExternalReconciler[k8sObject, apiObject, apiClient], logger *logrus.Entry) (res reconcile.Result, err error) // Read permit to read the actual resource state from provider and set it on data map Read(ctx context.Context, o k8sObject, data map[string]any, handler RemoteExternalReconciler[k8sObject, apiObject, apiClient], logger *logrus.Entry) (read RemoteRead[apiObject], res reconcile.Result, err error) // Create permit to create resource on provider // It only call if diff.NeeCreated is true Create(ctx context.Context, o k8sObject, data map[string]any, handler RemoteExternalReconciler[k8sObject, apiObject, apiClient], object apiObject, logger *logrus.Entry) (res reconcile.Result, err error) // Update permit to update resource on provider // It only call if diff.NeedUpdated is true Update(ctx context.Context, o k8sObject, data map[string]any, handler RemoteExternalReconciler[k8sObject, apiObject, apiClient], object apiObject, logger *logrus.Entry) (res reconcile.Result, err error) // Delete permit to delete resource on provider // It only call if you have specified finalizer name when you create reconciler and if resource as marked to be deleted Delete(ctx context.Context, o k8sObject, data map[string]any, handler RemoteExternalReconciler[k8sObject, apiObject, apiClient], logger *logrus.Entry) (err error) // OnError is call when error is throwing // It the right way to set status condition when error OnError(ctx context.Context, o k8sObject, data map[string]any, handler RemoteExternalReconciler[k8sObject, apiObject, apiClient], currentErr error, logger *logrus.Entry) (res reconcile.Result, err error) // OnSuccess is call at the end if no error // It's the right way to set status condition when everithink is good OnSuccess(ctx context.Context, o k8sObject, data map[string]any, handler RemoteExternalReconciler[k8sObject, apiObject, apiClient], diff RemoteDiff[apiObject], logger *logrus.Entry) (res reconcile.Result, err error) // Diff permit to compare the actual state and the expected state Diff(ctx context.Context, o k8sObject, read RemoteRead[apiObject], data map[string]any, handler RemoteExternalReconciler[k8sObject, apiObject, apiClient], logger *logrus.Entry, ignoreDiff ...patch.CalculateOption) (diff RemoteDiff[apiObject], res reconcile.Result, err error) GetIgnoresDiff() []patch.CalculateOption }
RemoteReconcilerAction is the interface that use by reconciler remote to reconcile your remote resource Put logger param on each function, permit to set contextual fields like namespace and object name, object type
func NewRemoteReconcilerAction ¶
func NewRemoteReconcilerAction[k8sObject object.RemoteObject, apiObject comparable, apiClient any](client client.Client, recorder record.EventRecorder) (remoteReconciler RemoteReconcilerAction[k8sObject, apiObject, apiClient])
NewRemoteReconcilerAction is the default implementation of RemoteReconcilerAction interface