Documentation ¶
Overview ¶
Package govppmux implements the GoVPPMux plugin that allows multiple plugins to share a single connection to VPP.
Index ¶
- Variables
- func NewStatsAdapter(socketName string) adapter.StatsAPI
- func NewVppAdapter(addr string, useShm bool) adapter.VppAPI
- type API
- type Config
- type Deps
- type Option
- type Plugin
- func (p *Plugin) AfterInit() error
- func (p *Plugin) BinapiVersion() vpp.Version
- func (p *Plugin) CheckCompatiblity(msgs ...govppapi.Message) error
- func (p *Plugin) Close() error
- func (p *Plugin) DumpStats(prefixes ...string) ([]adapter.StatEntry, error)
- func (p *Plugin) GetBufferStats(stats *govppapi.BufferStats) error
- func (p *Plugin) GetErrorStats(stats *govppapi.ErrorStats) error
- func (p *Plugin) GetInterfaceStats(stats *govppapi.InterfaceStats) error
- func (p *Plugin) GetNodeStats(stats *govppapi.NodeStats) error
- func (p *Plugin) GetSystemStats(stats *govppapi.SystemStats) error
- func (p *Plugin) Init() (err error)
- func (p *Plugin) Invoke(ctx context.Context, req govppapi.Message, reply govppapi.Message) error
- func (p *Plugin) IsPluginLoaded(plugin string) bool
- func (p *Plugin) ListStats(prefixes ...string) ([]string, error)
- func (p *Plugin) NewAPIChannel() (govppapi.Channel, error)
- func (p *Plugin) NewAPIChannelBuffered(reqChanBufSize, replyChanBufSize int) (govppapi.Channel, error)
- func (p *Plugin) NewStream(ctx context.Context) (govppapi.Stream, error)
- func (p *Plugin) OnReconnect(fn func())
- func (p *Plugin) Stats() govppapi.StatsProvider
- func (p *Plugin) VPPInfo() VPPInfo
- func (p *Plugin) Version() vpp.Version
- type Stats
- type VPPInfo
Constants ¶
This section is empty.
Variables ¶
var DefaultPlugin = *NewPlugin()
DefaultPlugin is default instance of Plugin
var DisableOldStats = os.Getenv("GOVPPMUX_OLDSTATS_DISABLED") != ""
DisableOldStats is used to disabled old way of collecting stats.
Functions ¶
func NewStatsAdapter ¶
NewStatsAdapter returns VPP stats API adapter, implemented as pure Go client.
Types ¶
type API ¶
type API interface { // VPPInfo returns VPP information which is retrieved immediatelly after connecting to VPP. VPPInfo() VPPInfo vpp.Client }
API for other plugins to get connectivity to VPP.
type Config ¶
type Config struct { // ReconnectResync enables resync after reconnect to VPP. ReconnectResync bool `json:"resync-after-reconnect"` // ReplyTimeout defines timeout period for replies in channels from VPP. ReplyTimeout time.Duration `json:"reply-timeout"` // Connect to VPP for configuration requests via the shared memory instead of through the socket. ConnectViaShm bool `json:"connect-via-shm"` // ShmPrefix defines prefix prepended to the name used for shared memory (SHM) segments. // If not set, shared memory segments are created directly in the SHM directory /dev/shm. ShmPrefix string `json:"shm-prefix"` // BinAPISocketPath defines path to the binapi socket file. BinAPISocketPath string `json:"binapi-socket-path"` // StatsSocketPath defines path to the stats socket file. StatsSocketPath string `json:"stats-socket-path"` // How many times can be request resent in case vpp is suddenly disconnected. RetryRequestCount int `json:"retry-request-count"` // Time between request resend attempts. Default is 500ms. RetryRequestTimeout time.Duration `json:"retry-request-timeout"` // How many times can be connection request resent in case the vpp is not reachable. RetryConnectCount int `json:"retry-connect-count"` // Time between connection request resend attempts. Default is 1s. RetryConnectTimeout time.Duration `json:"retry-connect-timeout"` // Enable VPP proxy. ProxyEnabled bool `json:"proxy-enabled"` // Below are options used for VPP connection health checking. HealthCheckProbeInterval time.Duration `json:"health-check-probe-interval"` HealthCheckReplyTimeout time.Duration `json:"health-check-reply-timeout"` HealthCheckThreshold int `json:"health-check-threshold"` // DEPRECATED: TraceEnabled is obsolete and used only in older versions. TraceEnabled bool `json:"trace-enabled"` }
Config defines configurable parameters for govppmux plugin.
func DefaultConfig ¶
func DefaultConfig() *Config
type Deps ¶
type Deps struct { infra.PluginDeps HTTPHandlers rest.HTTPHandlers StatusCheck statuscheck.PluginStatusWriter Resync *resync.Plugin }
Deps defines dependencies for the govppmux plugin.
type Option ¶
type Option func(*Plugin)
Option is a function that acts on a Plugin to inject Dependencies or configuration
type Plugin ¶
type Plugin struct { Deps // contains filtered or unexported fields }
Plugin is the govppmux plugin implementation.
func (*Plugin) BinapiVersion ¶
func (*Plugin) CheckCompatiblity ¶
func (*Plugin) GetBufferStats ¶
func (p *Plugin) GetBufferStats(stats *govppapi.BufferStats) error
GetBufferStats retrieves VPP error counters
func (*Plugin) GetErrorStats ¶
func (p *Plugin) GetErrorStats(stats *govppapi.ErrorStats) error
GetErrorStats retrieves VPP error counters
func (*Plugin) GetInterfaceStats ¶
func (p *Plugin) GetInterfaceStats(stats *govppapi.InterfaceStats) error
GetInterfaceStats retrieves all counters related to the VPP interfaces
func (*Plugin) GetNodeStats ¶
GetNodeStats retrieves a list of Node VPP counters (vectors, clocks, ...)
func (*Plugin) GetSystemStats ¶
func (p *Plugin) GetSystemStats(stats *govppapi.SystemStats) error
GetSystemStats retrieves system statistics of the connected VPP instance like Vector rate, Input rate, etc.
func (*Plugin) Init ¶
Init is the entry point called by Agent Core. A single binary-API connection to VPP is established.
func (*Plugin) IsPluginLoaded ¶
IsPluginLoaded returns true if plugin is loaded.
func (*Plugin) NewAPIChannel ¶
NewAPIChannel returns a new API channel for communication with VPP via govpp core. It uses default buffer sizes for the request and reply Go channels.
func (*Plugin) NewAPIChannelBuffered ¶
func (p *Plugin) NewAPIChannelBuffered(reqChanBufSize, replyChanBufSize int) (govppapi.Channel, error)
NewAPIChannelBuffered returns a new API channel for communication with VPP via govpp core. It allows to specify custom buffer sizes for the request and reply Go channels.
func (*Plugin) OnReconnect ¶ added in v3.1.0
func (p *Plugin) OnReconnect(fn func())
func (*Plugin) Stats ¶
func (p *Plugin) Stats() govppapi.StatsProvider
type Stats ¶
type Stats struct { govppmux.Metrics Errors metrics.Calls AllMessages metrics.CallStats Messages metrics.Calls Replies metrics.Calls }
Stats defines various statistics for govppmux plugin.
type VPPInfo ¶
type VPPInfo struct { Connected bool vppcalls.VersionInfo vppcalls.SessionInfo Plugins []vppcalls.PluginInfo }
VPPInfo defines retrieved information about the connected VPP instance.
func (VPPInfo) GetReleaseVersion ¶
GetReleaseVersion returns VPP release version (XX.YY), which is normalized from GetVersion.