resync

package
v2.2.0+incompatible Latest Latest
Warning

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

Go to latest
Published: Aug 23, 2019 License: Apache-2.0 Imports: 5 Imported by: 115

Documentation

Overview

Package resync implements the mechanism to notify previously registered plugins that the resync procedure needs to start.

Index

Constants

This section is empty.

Variables

View Source
var (
	// SingleResyncAcceptTimeout defines timeout for accepting resync start.
	SingleResyncAcceptTimeout = time.Second * 1
	// SingleResyncAckTimeout defines timeout for resync ack.
	SingleResyncAckTimeout = time.Second * 10
)
View Source
var DefaultPlugin = *NewPlugin()

DefaultPlugin is a default instance of Plugin.

Functions

This section is empty.

Types

type Deps

type Deps struct {
	infra.PluginName
	Log logging.PluginLogger
}

Deps groups dependencies injected into the plugin so that they are logically separated from other plugin fields.

type Option added in v1.5.0

type Option func(*Plugin)

Option is a function that can be used in NewPlugin to customize Plugin.

func UseDeps added in v1.5.0

func UseDeps(cb func(*Deps)) Option

UseDeps returns Option that can inject custom dependencies.

type Plugin

type Plugin struct {
	Deps
	// contains filtered or unexported fields
}

Plugin implements Plugin interface, therefore it can be loaded with other plugins.

func NewPlugin added in v1.5.0

func NewPlugin(opts ...Option) *Plugin

NewPlugin creates a new Plugin with the provided Options.

func (*Plugin) Close

func (p *Plugin) Close() error

Close TODO set flag that ignore errors => not start Resync while agent is stopping TODO kill existing Resync timeout while agent is stopping

func (*Plugin) DoResync added in v1.3.0

func (p *Plugin) DoResync()

DoResync can be used to start resync procedure outside of after init

func (*Plugin) Init

func (p *Plugin) Init() error

Init initializes variables.

func (*Plugin) Register

func (p *Plugin) Register(resyncName string) Registration

Register function is supposed to be called in Init() by all VPP Agent plugins. The plugins are supposed to load current state of their objects when newResync() is called. The actual CreateNewObjects(), DeleteObsoleteObjects() and ModifyExistingObjects() will be orchestrated to ensure their proper order. If an error occurs during Resync, then new Resync is planned.

type Registration

type Registration interface {
	StatusChan() <-chan StatusEvent
	String() string
}

Registration is an interface that is returned by the Register() call.

type Status

type Status string

Status used in the events.

const (
	// Started means that the Resync has started.
	Started Status = "Started"
	// NotActive means that Resync has not started yet or it has been finished.
	NotActive Status = "NotActive"
)

type StatusEvent

type StatusEvent interface {
	// Status() is used by the Plugin if it needs to Start resync.
	ResyncStatus() Status

	// Ack() is used by the Plugin to acknowledge that it processed this event.
	// This is supposed to be called after the configuration was applied by the Plugin.
	Ack()
}

StatusEvent is the base type that will be propagated to the channel.

type Subscriber

type Subscriber interface {
	// Register function is supposed to be called in Init() by all VPP Agent plugins.
	// Those plugins will use Registration.StatusChan() to listen
	// The plugins are supposed to load current state of their objects when newResync() is called.
	Register(resyncName string) Registration
}

Subscriber is an API used by plugins to register for notifications from the RESYNC Orcherstrator.

Jump to

Keyboard shortcuts

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