Documentation
¶
Index ¶
- Constants
- func RenderNotificationTemplate(templateStr string, params *Parameters) (string, error)
- type ChainError
- type CheckChain
- type CheckChainResult
- type CheckInstance
- type CheckResult
- type Checker
- type InstanceDescriptor
- type InstancesDescriptor
- type NotificationChain
- type NotificationData
- type NotificationDescriptor
- type NotificationInstance
- type Notifier
- type NotifyOneshot
- type NotifyPeriodic
- type NotifyScheduled
- type Parameters
- type Registry
- func (r *Registry) LoadInstances(config *ucfgwrap.Config, descriptor *InstancesDescriptor) error
- func (r *Registry) NewCheckChain(config string) (CheckChain, error)
- func (r *Registry) NewNotificationChain(config string) (NotificationChain, error)
- func (r *Registry) NewTriggerChain(config string) (TriggerChain, error)
- type ScheduleDescriptor
- type Scheduler
- type SchedulingLogger
- type ShouldNotifyParams
- type Trigger
- type TriggerChain
- type TriggerInstance
Constants ¶
const AndSeparator = "&&"
AndSeparator is a string that is used to combine two plugin instance within a config string.
const OrSeparator = "||"
OrSeparator is a string that is used to combine two plugin instance within a config string.
Variables ¶
This section is empty.
Functions ¶
func RenderNotificationTemplate ¶
func RenderNotificationTemplate(templateStr string, params *Parameters) (string, error)
Renders the given template string using the provided parameters.
Types ¶
type ChainError ¶
ChainError wraps an error that causes a PluginChain to fail.
func (*ChainError) Error ¶
func (e *ChainError) Error() string
func (*ChainError) Unwrap ¶
func (e *ChainError) Unwrap() error
type CheckChain ¶
type CheckChain struct {
Plugins []CheckInstance
Evaluable gval.Evaluable
Expression string
}
CheckChain represents a collection of multiple TriggerInstance that can be executed one after another.
func (*CheckChain) Execute ¶
func (chain *CheckChain) Execute(params Parameters) (CheckChainResult, error)
Execute invokes Trigger on each TriggerInstance in the chain and aborts when a plugin returns an error. It returns true if all checks passed.
type CheckChainResult ¶ added in v1.0.0
type CheckChainResult struct {
Passed bool `json:"passed"`
Info map[string]CheckResult `json:"info"`
Expression string `json:"expression"`
}
type CheckInstance ¶
CheckInstance represents a configured and named instance of a check plugin.
type CheckResult ¶ added in v1.0.0
type CheckResult struct {
ID string `json:"id"`
Passed bool `json:"passed"`
Info map[string]any `json:"info"`
}
func Failed ¶ added in v1.0.0
func Failed(info map[string]any) CheckResult
func FailedWithReason ¶ added in v1.5.1
func FailedWithReason(reason string) CheckResult
func Passed ¶ added in v1.0.0
func Passed(info map[string]any) CheckResult
func PassedWithReason ¶ added in v1.5.1
func PassedWithReason(reason string) CheckResult
type Checker ¶
type Checker interface {
Check(params Parameters) (CheckResult, error)
New(config *ucfgwrap.Config) (Checker, error)
ID() string
// OnTransition is invoked once evaluation the CheckChain this instance is the cause for a transition.
OnTransition(params Parameters) error
}
Checker is the interface that check plugins need to implement. Check plugins have to be idempotent, as they are invoked multiple times. A zero-initialized check plugin should not actually work as it is used to create the actual usable configured instances.
type InstanceDescriptor ¶
Specifies the configuration for a single check/trigger instance.
type InstancesDescriptor ¶
type InstancesDescriptor struct {
Check []InstanceDescriptor
Notify []NotificationDescriptor
Trigger []InstanceDescriptor
}
Specifies the configuration for instances.
type NotificationChain ¶
type NotificationChain struct {
Plugins []NotificationInstance
}
NotificationChain represents a collection of multiple NotificationInstance that can be executed one after another.
func (*NotificationChain) Execute ¶
func (chain *NotificationChain) Execute(params Parameters) error
Execute invokes Notify on each NotificationInstance in the chain and aborts when a plugin returns an error.
type NotificationData ¶
type NotificationData struct {
// Technically state.NodeStateLabel, but that causes a cyclic import
State string
Time time.Time
}
Data used to determine, whether to notify or not.
type NotificationDescriptor ¶
type NotificationDescriptor struct {
Name string
Type string
Schedule ScheduleDescriptor `config:"schedule" validate:"required"`
Config *ucfg.Config
}
Specifies the configuration for a single notification instance.
type NotificationInstance ¶
NotificationInstance represents a configured and named instance of a notification plugin.
type Notifier ¶
type Notifier interface {
Notify(params Parameters) error
New(config *ucfgwrap.Config) (Notifier, error)
ID() string
}
Notifier is the interface that notification plugins need to implement. It is recommend to make notification plugins idempotent, as the same message might be send multiple times. A zero-initialized notification plugin should not actually work as it is used to create the actual usable configured instances.
type NotifyOneshot ¶ added in v1.3.0
func (*NotifyOneshot) ShouldNotify ¶ added in v1.3.0
func (no *NotifyOneshot) ShouldNotify(params ShouldNotifyParams) bool
type NotifyPeriodic ¶
Notifies on state changes and after passing the interval since the last notification if not the operational state.
func (*NotifyPeriodic) ShouldNotify ¶
func (np *NotifyPeriodic) ShouldNotify(params ShouldNotifyParams) bool
type NotifyScheduled ¶
Notifies when the given instant passed on an allowed weekday.
func (*NotifyScheduled) ShouldNotify ¶
func (ns *NotifyScheduled) ShouldNotify(params ShouldNotifyParams) bool
type Parameters ¶
type Parameters struct {
// the current evaluated node
Node *corev1.Node
// the current state of the evaluated node
State string
// the profile that is currently evaluated
Profile string
// if any profile is in-maintenance on the evaluated node
InMaintenance bool
// whether to log failing checks, notifications, ...
LogDetails bool
Client client.Client
Clientset kubernetes.Interface
Ctx context.Context //nolint: containedctx
Log logr.Logger
Recorder record.EventRecorder
LastTransition time.Time
}
Parameters describes the parameters plugins get to work with.
type Registry ¶
type Registry struct {
NotificationInstances map[string]NotificationInstance
NotificationPlugins map[string]Notifier
CheckInstances map[string]CheckInstance
CheckPlugins map[string]Checker
TriggerInstances map[string]TriggerInstance
TriggerPlugins map[string]Trigger
}
Registry is a central storage for all plugins and their instances.
func NewRegistry ¶
func NewRegistry() Registry
NewRegistry creates a new registry with non-null maps.
func (*Registry) LoadInstances ¶
func (r *Registry) LoadInstances(config *ucfgwrap.Config, descriptor *InstancesDescriptor) error
LoadInstances parses the given config and constructs plugin instances accordingly. These instances are put into the respective instances map within the registry.
func (*Registry) NewCheckChain ¶
func (r *Registry) NewCheckChain(config string) (CheckChain, error)
NewCheckChain creates a CheckChain based the given config string.
func (*Registry) NewNotificationChain ¶
func (r *Registry) NewNotificationChain(config string) (NotificationChain, error)
NewNotificationChain creates a NotificaitonChain based the given config string.
func (*Registry) NewTriggerChain ¶
func (r *Registry) NewTriggerChain(config string) (TriggerChain, error)
NewTriggerChain creates a TriggerChain based the given config string.
type ScheduleDescriptor ¶
Specifies the configuration for a Scheduler.
type Scheduler ¶
type Scheduler interface {
// Determines if a notification is required.
ShouldNotify(params ShouldNotifyParams) bool
}
Interface notification schedulers need to implement.
type SchedulingLogger ¶ added in v0.17.0
Used to log scheduling decisions.
type ShouldNotifyParams ¶ added in v1.3.0
type ShouldNotifyParams struct {
Current NotificationData
Last NotificationData
StateChange time.Time
Log SchedulingLogger
}
type Trigger ¶
type Trigger interface {
Trigger(params Parameters) error
New(config *ucfgwrap.Config) (Trigger, error)
ID() string
}
Trigger is the interface that trigger plugins need to implement. It is recommend to make trigger plugins idempotent, as the same trigger might be invoked multiple times. A zero-initialized trigger plugin should not actually work as it is used to create the actual usable configured instances.
type TriggerChain ¶
type TriggerChain struct {
Plugins []TriggerInstance
}
TriggerChain represents a collection of multiple TriggerInstance that can be executed one after another.
func (*TriggerChain) Execute ¶
func (chain *TriggerChain) Execute(params Parameters) error
Execute invokes Trigger on each TriggerInstance in the chain and aborts when a plugin returns an error.
type TriggerInstance ¶
TriggerInstance represents a configured and named instance of a trigger plugin.