daemon

package
v0.1.12 Latest Latest
Warning

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

Go to latest
Published: Jun 4, 2026 License: MIT Imports: 16 Imported by: 0

Documentation

Overview

Package daemon defines public library-facing types for composing host-local agent daemon controllers and operation runners.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FinishMachineOperation

func FinishMachineOperation(ctx context.Context, c client.Client, op MachineOperation, result MachineOperationResult[int64]) error

FinishMachineOperation records the final status for a MachineOperation.

func SetupController

func SetupController(
	name string,
	mgr ctrl.Manager,
	machineOperations MachineOperationRequestReconciler,
	repaves RepaveReconciler,
) error

SetupController registers a serialized controller with mgr. The reconciler owns request handling, including any goal resolution and host-local operation execution. All queued requests are serialized because host-local daemon operations mutate the same nspawn, systemd, filesystem, and daemon-binary state.

Types

type MachinaMachineOperationReconciler

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

MachinaMachineOperationReconciler fetches MachineOperation objects, skips terminal operations, and dispatches non-terminal operations to kind-specific targets.

func NewMachinaMachineOperationReconciler

func NewMachinaMachineOperationReconciler(
	c client.Client,
	machineName string,
	nodeName string,
	handlers MachineOperationHandlers,
) (*MachinaMachineOperationReconciler, error)

NewMachinaMachineOperationReconciler returns a reusable MachineOperation request reconciler backed by client and kind-specific targets.

func (*MachinaMachineOperationReconciler) Finish

Finish records the final status for a MachineOperation.

func (*MachinaMachineOperationReconciler) MarkInProgress

func (r *MachinaMachineOperationReconciler) MarkInProgress(ctx context.Context, op MachineOperation, message string) error

func (*MachinaMachineOperationReconciler) ReconcileMachineOperation

func (r *MachinaMachineOperationReconciler) ReconcileMachineOperation(
	ctx context.Context,
	name string,
) (ctrl.Result, error)

ReconcileMachineOperation handles a queued MachineOperation request.

func (*MachinaMachineOperationReconciler) SetupController

SetupController registers the MachineOperation watch for this reconciler.

type MachineOperation

type MachineOperation struct {
	// Name is the operation name in its source system.
	Name string

	// Kind is the requested host-local operation kind.
	Kind machinav1alpha3.OperationKind

	// Parameters contains operation-specific inputs, such as an AgentUpgrade download URL.
	Parameters map[string]string
}

MachineOperation is a typed host-local daemon operation request.

type MachineOperationHandler

type MachineOperationHandler[TGeneration comparable] func(context.Context, MachineOperationStore[TGeneration], MachineOperation) (ctrl.Result, error)

MachineOperationHandler executes a host-local daemon operation.

type MachineOperationHandlers

type MachineOperationHandlers map[machinav1alpha3.OperationKind]MachineOperationHandler[int64]

MachineOperationHandlers maps operation kinds to host-local MachineOperation handlers.

type MachineOperationRequestReconciler

type MachineOperationRequestReconciler interface {
	// SetupController registers MachineOperation watches on builder.
	SetupController(*builder.TypedBuilder[Request]) *builder.TypedBuilder[Request]

	// ReconcileMachineOperation handles req, which identifies a MachineOperation
	// object queued by controller-runtime.
	ReconcileMachineOperation(context.Context, string) (ctrl.Result, error)
}

MachineOperationRequestReconciler handles MachineOperation requests produced by the shared controller setup.

func NoopMachineOperationReconciler

func NoopMachineOperationReconciler() MachineOperationRequestReconciler

NoopMachineOperationReconciler returns a MachineOperationRequestReconciler that does not register watches. Use it when a daemon controller only needs repave requests.

type MachineOperationResult

type MachineOperationResult[TGeneration comparable] struct {
	// Phase is the resulting operation phase.
	Phase machinav1alpha3.OperationPhase

	// Reason is a stable, machine-readable reason for the result.
	Reason string

	// Message is a human-readable result description.
	Message string

	// ObservedMachineGeneration records the machine generation acted on by the operation.
	ObservedMachineGeneration TGeneration
}

MachineOperationResult describes the outcome of a host-local daemon operation.

type MachineOperationStore

type MachineOperationStore[TGeneration comparable] interface {
	// MarkInProgress records that op has started execution with message as the
	// human-readable in-progress status.
	MarkInProgress(context.Context, MachineOperation, string) error

	// Finish records the terminal or non-terminal result for op. The result
	// carries the desired phase, reason, message, observed generation, and any
	// controller-runtime requeue request.
	Finish(context.Context, MachineOperation, MachineOperationResult[TGeneration]) error
}

MachineOperationStore records operation lifecycle state.

type RepaveReconciler

type RepaveReconciler interface {
	// SetupController registers repave watches on builder.
	SetupController(*builder.TypedBuilder[Request]) *builder.TypedBuilder[Request]

	// ReconcileRepave handles req, which identifies a local repave trigger queued
	// by controller-runtime.
	ReconcileRepave(context.Context, string) (ctrl.Result, error)
}

RepaveReconciler handles repave requests produced by the shared controller setup.

type Request

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

Request is the controller-runtime queue item used by shared daemon controller setup. Use NewMachineOperationRequest or NewRepaveRequest to construct one.

func NewMachineOperationRequest

func NewMachineOperationRequest(name string) Request

NewMachineOperationRequest returns a controller queue request for a MachineOperation object.

func NewRepaveRequest

func NewRepaveRequest(source string) Request

NewRepaveRequest returns a controller queue request for a repave trigger.

Jump to

Keyboard shortcuts

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