agent

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Jul 18, 2026 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Overview

Package agent implements agent-level runtime services.

Index

Constants

View Source
const (
	// DefaultMode is the default operating mode.
	DefaultMode = "node"

	// DefaultLogLevel is the default log level.
	DefaultLogLevel = "info"

	// DefaultDataDir is the default data directory.
	DefaultDataDir = "/var/lib/plexd"
)
View Source
const DefaultHeartbeatInterval = 30 * time.Second

DefaultHeartbeatInterval is the default heartbeat interval.

Variables

This section is empty.

Functions

This section is empty.

Types

type AgentConfig

type AgentConfig struct {
	// Mode is the operating mode: "node" or "bridge".
	// Default: "node"
	Mode string `yaml:"mode"`

	// LogLevel is the log level: "debug", "info", "warn", "error".
	// Default: "info"
	LogLevel string `yaml:"log_level"`

	// DataDir is the directory for persistent agent data.
	// Default: /var/lib/plexd
	DataDir string `yaml:"data_dir"`

	API          api.Config          `yaml:"api"`
	Registration registration.Config `yaml:"registration"`
	Reconcile    reconcile.Config    `yaml:"reconcile"`
	NodeAPI      nodeapi.Config      `yaml:"node_api"`
	Actions      actions.Config      `yaml:"actions"`
	Policy       policy.Config       `yaml:"policy"`
	WireGuard    wireguard.Config    `yaml:"wireguard"`
	Metrics      metrics.Config      `yaml:"metrics"`
	LogFwd       logfwd.Config       `yaml:"log_fwd"`
	AuditFwd     auditfwd.Config     `yaml:"audit_fwd"`
	Integrity    integrity.Config    `yaml:"integrity"`
	Tunnel       tunnel.Config       `yaml:"tunnel"`
	NAT          nat.Config          `yaml:"nat"`
	PeerExchange peerexchange.Config `yaml:"peer_exchange"`
	Bridge       bridge.Config       `yaml:"bridge"`
	Heartbeat    HeartbeatConfig     `yaml:"heartbeat"`
}

AgentConfig is the top-level configuration for the plexd agent. It aggregates all subsystem configurations and is populated from a YAML configuration file via ParseConfig.

func ParseConfig

func ParseConfig(path string) (*AgentConfig, error)

ParseConfig reads a YAML configuration file and returns an AgentConfig. It applies defaults and validates the configuration.

func (*AgentConfig) ApplyDefaults

func (c *AgentConfig) ApplyDefaults()

ApplyDefaults sets default values for zero-valued fields.

func (*AgentConfig) Validate

func (c *AgentConfig) Validate() error

Validate checks that required fields are set and values are acceptable.

type HeartbeatClient

type HeartbeatClient interface {
	Heartbeat(ctx context.Context, nodeID string, req api.HeartbeatRequest) (*api.HeartbeatResponse, error)
}

HeartbeatClient sends heartbeat requests to the control plane.

type HeartbeatConfig

type HeartbeatConfig struct {
	// Interval is the heartbeat send interval.
	// Default: 30s
	Interval time.Duration `yaml:"interval"`

	// NodeID is the node identifier (required).
	NodeID string `yaml:"node_id"`
}

HeartbeatConfig holds the configuration for the heartbeat service.

func (*HeartbeatConfig) ApplyDefaults

func (c *HeartbeatConfig) ApplyDefaults()

ApplyDefaults sets default values for zero-valued fields.

func (*HeartbeatConfig) Validate

func (c *HeartbeatConfig) Validate() error

Validate checks that required fields are set.

type HeartbeatService

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

HeartbeatService sends periodic heartbeats to the control plane and dispatches directive flags from the response.

func NewHeartbeatService

func NewHeartbeatService(cfg HeartbeatConfig, client HeartbeatClient, logger *slog.Logger) *HeartbeatService

NewHeartbeatService creates a new HeartbeatService with the given configuration and client. The config is validated; defaults are applied for any zero-valued optional fields.

func (*HeartbeatService) Run

func (s *HeartbeatService) Run(ctx context.Context) error

Run starts the heartbeat loop. It sends one heartbeat immediately and then continues at the configured interval until ctx is cancelled. Run always returns nil.

func (*HeartbeatService) SetBuildRequest

func (s *HeartbeatService) SetBuildRequest(fn func() api.HeartbeatRequest)

SetBuildRequest sets a custom heartbeat request builder. If not set, the service sends a zero-valued HeartbeatRequest.

func (*HeartbeatService) SetOnAuthFailure

func (s *HeartbeatService) SetOnAuthFailure(fn func())

SetOnAuthFailure sets a callback invoked when a heartbeat fails with a 401 Unauthorized error.

func (*HeartbeatService) SetOnRotateKeys

func (s *HeartbeatService) SetOnRotateKeys(fn func())

SetOnRotateKeys sets a callback invoked when the control plane signals that keys should be rotated.

func (*HeartbeatService) SetReconcileTrigger

func (s *HeartbeatService) SetReconcileTrigger(rt ReconcileTrigger)

SetReconcileTrigger sets the reconcile trigger invoked when the control plane requests reconciliation.

type ReconcileTrigger

type ReconcileTrigger interface {
	TriggerReconcile()
}

ReconcileTrigger triggers an immediate reconciliation.

Jump to

Keyboard shortcuts

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