processor

package
v0.14.1 Latest Latest
Warning

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

Go to latest
Published: Aug 25, 2026 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AccumulatorAdd

func AccumulatorAdd(
	acc Accumulator,
	resource gvk.ResourceID,
	obj AccumulatorObject,
)

Types

type Accumulator

type Accumulator = map[string]*AccumulatorItem

Keeps track of generated items.

type AccumulatorItem

type AccumulatorItem struct {
	Resource gvk.ResourceID
	Objects  *[]AccumulatorObject
}

Keeps track of generated items.

type AccumulatorObject

type AccumulatorObject struct {
	Origin gvk.TenantResourceIDWithOrigin
	Object *unstructured.Unstructured
}

Keeps track of generated items.

type Processor

type Processor struct {
	Configuration                configuration.Configuration
	AllowCrossNamespaceSelection bool
	GatherClient                 client.Reader
	Mapper                       k8smeta.RESTMapper
}

func (*Processor) Apply

func (r *Processor) Apply(
	ctx context.Context,
	c client.Client,
	obj *unstructured.Unstructured,
	fieldOwner string,
	force bool,
	adopt bool,
	ownerreference *metav1.OwnerReference,
	current *meta.ObjectReferenceStatus,
) (lastApply *metav1.Time, created bool, err error)

func (*Processor) Prune

func (r *Processor) Prune(
	ctx context.Context,
	c client.Client,
	obj *unstructured.Unstructured,
	fieldOwner string,
	current *meta.ObjectReferenceStatus,
) (deleted bool, err error)

Prune by reverting the patch by the given fieldOwner If the item was created by the controller and has no more field-managers we are going to delete.

func (*Processor) Reconcile

func (p *Processor) Reconcile(
	ctx context.Context,
	log logr.Logger,
	c client.Client,
	processed *meta.ProcessedItems,
	acc Accumulator,
	opts ProcessorOptions,
) (err error)

func (*Processor) ReconcileNamespace added in v0.14.0

func (p *Processor) ReconcileNamespace(
	ctx context.Context,
	log logr.Logger,
	c client.Client,
	current meta.ProcessedItems,
	acc Accumulator,
	opts ProcessorOptions,
	scope Scope,
) (meta.ProcessedItems, error)

ReconcileNamespace applies the accumulated items targeting a single Namespace of a single Tenant, returning the processed items of that scope only.

Contrarily to Reconcile, the given Accumulator is not authoritative for the whole Tenant: nothing is pruned, nor disowned, since the items missing from it may just belong to a Namespace this run knows nothing about. Pruning remains a duty of the full reconciliation.

The returned items are meant to be grafted on the persisted status through meta.ProcessedItems.ReplaceScope, which leaves the other Namespaces untouched. They are returned along an error too, since they carry the outcome of the single items which have been processed.

type ProcessorOptions

type ProcessorOptions struct {
	FieldOwnerPrefix string
	Prune            bool
	Adopt            bool
	Force            bool
	Owner            *metav1.OwnerReference
}

type Scope added in v0.14.0

type Scope struct {
	Tenant    string
	Namespace string
}

Scope narrows a reconciliation down to the items replicated into a single Namespace of a single Tenant.

func (Scope) Matches added in v0.14.0

func (s Scope) Matches(id gvk.ResourceID) bool

Matches states whether the given resource identity belongs to the scope.

Jump to

Keyboard shortcuts

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