watcher

package
v0.0.0-...-2932577 Latest Latest
Warning

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

Go to latest
Published: Jun 6, 2021 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNoAction     = errors.New("no action")
	ErrMachineError = errors.New("machine internal error")
)

Возможные ошибки

View Source
var (
	ErrNoHost             = errors.New("unknown machine host")
	ErrPlanAlreadyStarted = errors.New("plan already started")
)

Возможные ошибки.

View Source
var (
	ErrUnknownPlan = errors.New("unknown plan")
)

Возможные ошибки.

Functions

func StartWatcher

func StartWatcher(ctx context.Context, l *util.Logger, cfg *PlanWatcherConfig) error

StartWatcher инициализирует синглтон RuntimeWatcher и запускает его.

Types

type Machine

type Machine struct {
	// contains filtered or unexported fields
}

Machine абстракция машины

func NewMachine

func NewMachine(l *util.Logger, cfg *MachineConfig) *Machine

NewMachine содает новый объект Machine.

func (*Machine) Ping

func (m *Machine) Ping() ([]*message.RuntimeTelemetry, error)

Ping возвращает список работающих действий, запущенных на машине.

func (*Machine) SendChangeOut

func (m *Machine) SendChangeOut(ctx context.Context, schemeName, actionName, oldOut, newOut string) error

SendChangeOut отправляет запрос на изменение Out у действия.

func (*Machine) SendRunAction

func (m *Machine) SendRunAction(ctx context.Context, schemeName string, node *planner.NodePlan) error

SendRunAction отправляет запрос для запуска действия на машине.

func (*Machine) SendStopAction

func (m *Machine) SendStopAction(ctx context.Context, schemeName string, node *planner.NodePlan) error

SendStopAction отправляет запрос для остановки действия на машине.

type MachineConfig

type MachineConfig struct {
	// Host хост, на котором машина ожидает подключения.
	Host string `yaml:"host"`
	// Post сервисный порт машины, который используется
	// для передачи команд от meta_node и возврата статистики выше.
	Port int `yaml:"port"`
	// Timeout время, по истечению которого в случае отсутствия ответа
	// машина признается не работающей и начинается процесс восстановления.
	Timeout util.Duration `yaml:"timeout"`
}

MachineConfig настройки машины, на котором запущен machine_node

type MachineWatcher

type MachineWatcher struct {
	// contains filtered or unexported fields
}

MachineWatcher структура для контроля запущенных действий.

type MachineWatcherConfig

type MachineWatcherConfig struct {
	// Machines список доступных машин, которые будет опрашивать
	// machine_watcher и параметры подключения к ним.
	Machines []*MachineConfig `yaml:"machines"`
}

MachineWatcherConfig набор настроек для Watcher

func NewMachineWatcherConfig

func NewMachineWatcherConfig() *MachineWatcherConfig

NewMachineWatcherConfig возвращает MachineWatcherConfig с настройками по умолчанию.

type NodeTelemetry

type NodeTelemetry struct {
	Name         string
	Action       string
	Address      string
	IsRunning    bool
	OldestOutput uint32
	PrevName     []string
}

NodeTelemetry телеметрия узла, хранящая статистику по узлу.

type Plan

type Plan struct {
	// contains filtered or unexported fields
}

Plan отслеживает состояние машин в плане.

func NewPlan

func NewPlan(plan *planner.Plan, w *MachineWatcher, l *util.Logger, cfg *PlanConfig) *Plan

NewPlan создает новый объект Plan

func (*Plan) GetTelemetry

func (p *Plan) GetTelemetry() *PlanTelemetry

GetTelemetry возвращает снимок состояния плана в момент вызова

func (*Plan) RunProtection

func (p *Plan) RunProtection(ctx context.Context) error

RunProtection запускает проверку работоспобности.

func (*Plan) StartNodes

func (p *Plan) StartNodes(ctx context.Context) error

StartNodes запускает ноды плана в работу.

type PlanConfig

type PlanConfig struct {
	PingFrequency util.Duration
	Retry         *util.RetryConfig
}

PlanConfig набор настроек плана

type PlanTelemetry

type PlanTelemetry struct {
	Name  string
	Nodes []*NodeTelemetry
}

PlanTelemetry телеметрия плана, хранящая статистику по каждому узлу и связи узлов.

type PlanWatcher

type PlanWatcher struct {
	// contains filtered or unexported fields
}

PlanWatcher структура, наблюдающая за выполняющимися планами.

var Watcher *PlanWatcher

Watcher объект синглтон для слежения за работоспособностью планов.

func (*PlanWatcher) GetPlanTelemetry

func (w *PlanWatcher) GetPlanTelemetry(planName string) (*PlanTelemetry, error)

GetPlanTelemetry возвращает телеметрию плана.

func (*PlanWatcher) RunPlan

func (w *PlanWatcher) RunPlan(p *planner.Plan) error

RunPlan запускает план и сохраняет в watcher для отказоустойчивости.

func (*PlanWatcher) StopPlan

func (w *PlanWatcher) StopPlan(planName string) error

StopPlan останавливает работу плана.

func (*PlanWatcher) WorkingPlans

func (w *PlanWatcher) WorkingPlans() map[string]struct{}

WorkingPlans возвращает map работающих в данный момент планов.

type PlanWatcherConfig

type PlanWatcherConfig struct {
	// PingFrequency время между запросами к машинам для получения
	// информации о состоянии машин и запущенных на них рантаймов.
	PingFrequency util.Duration `yaml:"ping-freq"`
	// Retry конфигурация попток взаимодействия с узлом.
	Retry *util.RetryConfig `yaml:"retry"`
	// MachineWatcher набор настроек для watcher, который
	// следит за состоянием машин.
	MachineWatcher *MachineWatcherConfig `yaml:"machine-watcher"`
}

PlanWatcherConfig набор параметров для PlanWatcher.

func NewPlanWatcherConfig

func NewPlanWatcherConfig() *PlanWatcherConfig

NewPlanWatcherConfig возвращает PlanWatcherConfig c настройками по умолчанию.

Jump to

Keyboard shortcuts

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