Documentation ¶
Index ¶
- func ParseWatcherState(state []byte) (interface{}, error)
- func RegisterWatcherPlugin(name string, plugin model.WatcherConstructor) error
- type Machine
- type Manager
- func (m *Manager) AddWatcher(w model.Watcher) error
- func (m *Manager) Delete()
- func (m *Manager) JetStreamConnection() (*jsm.Manager, error)
- func (m *Manager) NotifyStateChance()
- func (m *Manager) Run(ctx context.Context, wg *sync.WaitGroup) error
- func (m *Manager) SetMachine(t interface{}) (err error)
- func (m *Manager) WatcherState(watcher string) (interface{}, bool)
- type State
- type WatcherDef
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ParseWatcherState ¶ added in v0.19.0
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 ¶
Manager manages all the defined watchers in a specific machine implements machine.WatcherManager
func (*Manager) AddWatcher ¶
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
JetStreamConnection is a NATS connection for accessing the JetStream API
func (*Manager) NotifyStateChance ¶
func (m *Manager) NotifyStateChance()
NotifyStateChance implements machine.WatcherManager
func (*Manager) Run ¶
Run starts all the defined watchers and periodically announce their state based on AnnounceInterval
func (*Manager) SetMachine ¶
SetMachine supplies the machine this manager will manage
func (*Manager) WatcherState ¶ added in v0.17.0
WatcherState retrieves the current status for a given watcher, boolean result is false for unknown watchers
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]interface{} `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