hive

package
v1.53.2 Latest Latest
Warning

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

Go to latest
Published: Feb 24, 2026 License: MIT Imports: 40 Imported by: 3

Documentation

Overview

Package hive provides the kernel plugin management infrastructure for Tierceron.

This package implements a dynamic plugin system that allows loading, managing, and orchestrating Go plugins at runtime. Key features include:

  • Dynamic plugin loading and reloading
  • Plugin lifecycle management (initialization, startup, shutdown)
  • Certificate monitoring and automatic renewal
  • Kernel command routing and execution
  • Chat message handling and inter-plugin communication
  • Panic recovery and error handling

Plugin Handler

The PluginHandler manages multiple plugin kernels, each running in its own goroutine. It handles:

  • Plugin registration and initialization
  • Certificate lifecycle monitoring
  • Dynamic plugin updates without downtime
  • Safe channel communication between plugins

Safety Features

All channel operations use generic safeChannelSend[T] to prevent panics from:

  • Sending to closed channels
  • Nil channel dereferences
  • Closed channel detection

Usage

The hive package is designed to work with plugins built using Go's plugin package. Plugins must implement the expected interface methods for initialization, startup, and shutdown operations.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CallPluginInit added in v1.52.2

func CallPluginInit(pluginName string, name string, properties *map[string]any)

CallPluginInit calls a registered plugin's Init function if it exists

func CallPluginStart added in v1.52.2

func CallPluginStart(pluginName string)

CallPluginStart calls a registered plugin's Start function if it exists

func IsRunningInKubernetes added in v1.52.2

func IsRunningInKubernetes() bool

IsRunningInKubernetes detects if the process is running in a Kubernetes/AKS environment

func LoadPluginPath

func LoadPluginPath(driverConfig *config.DriverConfig, pluginToolConfig map[string]any) string

func RegisterPluginCallbacks added in v1.52.2

func RegisterPluginCallbacks(pluginName string, initFunc PluginInitFunc, startFunc PluginStartFunc)

RegisterPluginCallbacks allows plugins to register their Init and Start functions without creating import cycles

Types

type KernelCtx added in v1.29.11

type KernelCtx struct {
	DeployRestartChan *chan string
	PluginRestartChan *chan tccore.KernelCmd
}

type PluginHandler

type PluginHandler struct {
	Name             string // service
	State            int    // 0 - initialized, 1 - running, 2 - failed
	Id               string
	KernelId         int
	Signature        string // sha256 of plugin
	ConfigContext    *tccore.ConfigContext
	Services         *map[string]*PluginHandler
	PluginMod        *plugin.Plugin
	KernelCtx        *KernelCtx
	ServiceResource  any
	DeploymentConfig map[string]interface{} // Full deployment configuration from Vault Certify
}

func InitKernel added in v1.24.6

func InitKernel(id string) *PluginHandler

func (*PluginHandler) AddKernelPlugin added in v1.24.6

func (pluginHandler *PluginHandler) AddKernelPlugin(service string, driverConfig *config.DriverConfig, deploymentConfig *map[string]interface{})

func (*PluginHandler) DynamicReloader added in v1.29.3

func (pluginHandler *PluginHandler) DynamicReloader(driverConfig *config.DriverConfig)

func (*PluginHandler) GetKernelID added in v1.50.1

func (pluginHandler *PluginHandler) GetKernelID() int

func (*PluginHandler) GetPluginHandler added in v1.24.6

func (pluginHandler *PluginHandler) GetPluginHandler(service string, driverConfig *config.DriverConfig) *PluginHandler

func (*PluginHandler) HandleChat added in v1.50.1

func (pluginHandler *PluginHandler) HandleChat(driverConfig *config.DriverConfig)

func (*PluginHandler) Init added in v1.24.6

func (pluginHandler *PluginHandler) Init(properties *map[string]any)

func (*PluginHandler) InitPluginStatus added in v1.32.8

func (pluginHandler *PluginHandler) InitPluginStatus(driverConfig *config.DriverConfig)

func (*PluginHandler) LoadPluginMod added in v1.24.6

func (pluginHandler *PluginHandler) LoadPluginMod(driverConfig *config.DriverConfig, pluginPath string)

func (*PluginHandler) PluginserviceStart

func (pluginHandler *PluginHandler) PluginserviceStart(driverConfig *config.DriverConfig, pluginToolConfig map[string]any)

func (*PluginHandler) PluginserviceStop

func (pluginHandler *PluginHandler) PluginserviceStop(driverConfig *config.DriverConfig)

func (*PluginHandler) RunPlugin added in v1.31.5

func (pluginHandler *PluginHandler) RunPlugin(
	driverConfig *config.DriverConfig,
	service string,
	serviceConfig *map[string]any,
)

type PluginInitFunc added in v1.52.2

type PluginInitFunc func(string, *map[string]any)

PluginInitFunc is the signature for a plugin's Init function

type PluginStartFunc added in v1.52.2

type PluginStartFunc func()

PluginStartFunc is the signature for a plugin's Start function

Directories

Path Synopsis
plugins
trcshcmd command

Jump to

Keyboard shortcuts

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