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 ¶
- func CallPluginInit(pluginName string, name string, properties *map[string]any)
- func CallPluginStart(pluginName string)
- func IsRunningInKubernetes() bool
- func LoadPluginPath(driverConfig *config.DriverConfig, pluginToolConfig map[string]any) string
- func RegisterPluginCallbacks(pluginName string, initFunc PluginInitFunc, startFunc PluginStartFunc)
- type KernelCtx
- type PluginHandler
- func (pluginHandler *PluginHandler) AddKernelPlugin(service string, driverConfig *config.DriverConfig, ...)
- func (pluginHandler *PluginHandler) DynamicReloader(driverConfig *config.DriverConfig)
- func (pluginHandler *PluginHandler) GetKernelID() int
- func (pluginHandler *PluginHandler) GetPluginHandler(service string, driverConfig *config.DriverConfig) *PluginHandler
- func (pluginHandler *PluginHandler) HandleChat(driverConfig *config.DriverConfig)
- func (pluginHandler *PluginHandler) Init(properties *map[string]any)
- func (pluginHandler *PluginHandler) InitPluginStatus(driverConfig *config.DriverConfig)
- func (pluginHandler *PluginHandler) LoadPluginMod(driverConfig *config.DriverConfig, pluginPath string)
- func (pluginHandler *PluginHandler) PluginserviceStart(driverConfig *config.DriverConfig, pluginToolConfig map[string]any)
- func (pluginHandler *PluginHandler) PluginserviceStop(driverConfig *config.DriverConfig)
- func (pluginHandler *PluginHandler) RunPlugin(driverConfig *config.DriverConfig, service string, ...)
- type PluginInitFunc
- type PluginStartFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CallPluginInit ¶ added in v1.52.2
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 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
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