watchers

package
v0.28.0 Latest Latest
Warning

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

Go to latest
Published: Feb 3, 2024 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ParseWatcherState added in v0.19.0

func ParseWatcherState(state []byte) (any, error)

func RegisterWatcherPlugin added in v0.19.0

func RegisterWatcherPlugin(name string, plugin model.WatcherConstructor) error

RegisterWatcherPlugin registers a new type of watcher

Types

type Machine

type Machine interface {
	model.Machine
	Watchers() []*WatcherDef
}

Machine is a Choria Machine

type Manager

type Manager struct {
	sync.Mutex
	// contains filtered or unexported fields
}

Manager manages all the defined watchers in a specific machine implements machine.WatcherManager

func New

func New(ctx context.Context) *Manager

func (*Manager) AddWatcher

func (m *Manager) AddWatcher(w model.Watcher) error

AddWatcher adds a watcher to a managed machine

func (*Manager) Delete added in v0.15.0

func (m *Manager) Delete()

Delete gets called before a watcher is being deleted after its files were removed from disk

func (*Manager) JetStreamConnection added in v0.23.0

func (m *Manager) JetStreamConnection() (*jsm.Manager, error)

JetStreamConnection is a NATS connection for accessing the JetStream API

func (*Manager) NotifyStateChance

func (m *Manager) NotifyStateChance()

NotifyStateChance implements machine.WatcherManager

func (*Manager) Run

func (m *Manager) Run(ctx context.Context, wg *sync.WaitGroup) error

Run starts all the defined watchers and periodically announce their state based on AnnounceInterval

func (*Manager) SetMachine

func (m *Manager) SetMachine(t any) (err error)

SetMachine supplies the machine this manager will manage

func (*Manager) WatcherState added in v0.17.0

func (m *Manager) WatcherState(watcher string) (any, bool)

WatcherState retrieves the current status for a given watcher, boolean result is false for unknown watchers

type State

type State int

type WatcherDef

type WatcherDef struct {
	Name              string         `json:"name" yaml:"name"`
	Type              string         `json:"type" yaml:"type"`
	StateMatch        []string       `json:"state_match" yaml:"state_match"`
	FailTransition    string         `json:"fail_transition" yaml:"fail_transition"`
	SuccessTransition string         `json:"success_transition" yaml:"success_transition"`
	Interval          string         `json:"interval" yaml:"interval"`
	AnnounceInterval  string         `json:"announce_interval" yaml:"announce_interval"`
	Properties        map[string]any `json:"properties" yaml:"properties"`
	AnnounceDuration  time.Duration  `json:"-" yaml:"-"`
}

WatcherDef is the core definition of a watcher, watcher type specific properties get stored in Properties and parsed by each watcher type

func (*WatcherDef) ParseAnnounceInterval

func (w *WatcherDef) ParseAnnounceInterval() (err error)

ParseAnnounceInterval parses the announce interval and ensures its not too small

func (*WatcherDef) ValidateStates

func (w *WatcherDef) ValidateStates(valid []string) (err error)

ValidateStates makes sure that all the states mentioned are valid

func (*WatcherDef) ValidateTransitions

func (w *WatcherDef) ValidateTransitions(valid []string) (err error)

ValidateTransitions checks that all stated transitions are valid

Jump to

Keyboard shortcuts

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