Documentation ¶
Index ¶
- Variables
- func NewCmdFactory(register func(id string) (*RegisteredLoop, error), lcfg CmdConfig) (func() *exec.Cmd, error)
- func SetCmdEnvFromConfig(cmd *exec.Cmd, cfg EnvConfig)
- type Base
- type CmdConfig
- type EnvConfig
- type LoopRegistry
- type PromServer
- type PromServerOpt
- type RegisteredLoop
- type RegistrarConfig
- type Server
Constants ¶
This section is empty.
Variables ¶
var ErrExists = errors.New("plugin already registered")
Functions ¶
func NewCmdFactory ¶ added in v2.3.0
func NewCmdFactory(register func(id string) (*RegisteredLoop, error), lcfg CmdConfig) (func() *exec.Cmd, error)
NewCmdFactory is helper to ensure synchronization between the loop registry and os cmd to exec the LOOP
func SetCmdEnvFromConfig ¶
SetCmdEnvFromConfig sets LOOP-specific vars in the env of the given cmd.
Types ¶
type Base ¶ added in v2.3.0
Base is a base layer for plugins to easily manage sub-[types.Service]s.
func (*Base) HealthReport ¶ added in v2.3.0
func (*Base) SubService ¶ added in v2.3.0
type CmdConfig ¶ added in v2.3.0
type CmdConfig struct { ID string // unique string used by the node to track the LOOP. typically supplied by the loop logger name Cmd string // string value of executable to exec }
CmdConfig is configuration used to register the LOOP and generate an exec
type EnvConfig ¶
type EnvConfig interface {
PrometheusPort() int
}
EnvConfig is the configuration interface between the application and the LOOP executable. The values are fully resolved and static and passed via the environment.
func GetEnvConfig ¶
GetEnvConfig deserializes LOOP-specific environment variables to an EnvConfig
func NewEnvConfig ¶
type LoopRegistry ¶
type LoopRegistry struct {
// contains filtered or unexported fields
}
LoopRegistry is responsible for assigning ports to plugins that are to be used for the plugin's prometheus HTTP server
func NewLoopRegistry ¶
func NewLoopRegistry(lggr logger.Logger) *LoopRegistry
func (*LoopRegistry) Get ¶
func (m *LoopRegistry) Get(id string) (*RegisteredLoop, bool)
Get plugin by id. Safe for concurrent use.
func (*LoopRegistry) List ¶
func (m *LoopRegistry) List() []*RegisteredLoop
Return slice sorted by plugin name. Safe for concurrent use.
func (*LoopRegistry) Register ¶
func (m *LoopRegistry) Register(id string) (*RegisteredLoop, error)
Register creates a port of the plugin. It is not idempotent. Duplicate calls to Register will return ErrExists Safe for concurrent use.
type PromServer ¶
type PromServer struct {
// contains filtered or unexported fields
}
func NewPromServer ¶
func NewPromServer(port int, lggr logger.Logger, opts ...PromServerOpt) *PromServer
func (*PromServer) Close ¶
func (p *PromServer) Close() error
Close shutdowns down the underlying HTTP server. See http.Server.Close for details
func (*PromServer) Port ¶
func (p *PromServer) Port() int
Port is the resolved port and is only known after Start(). returns -1 before it is resolved or if there was an error during resolution.
func (*PromServer) Start ¶
func (p *PromServer) Start() error
Start start HTTP server on specified port to handle metrics requests
type PromServerOpt ¶
type PromServerOpt func(*PromServer)
func WithHandler ¶ added in v2.3.0
func WithHandler(h http.Handler) PromServerOpt
type RegisteredLoop ¶
type RegistrarConfig ¶
type RegistrarConfig interface {
RegisterLOOP(loopId string, cmdName string) (func() *exec.Cmd, loop.GRPCOpts, error)
}
RegistrarConfig generates contains static configuration inher
func NewRegistrarConfig ¶
func NewRegistrarConfig(grpcOpts loop.GRPCOpts, loopRegistrationFn func(loopId string) (*RegisteredLoop, error)) RegistrarConfig
NewRegistrarConfig creates a RegistarConfig loopRegistrationFn must act as a global registry function of LOOPs and must be idempotent. The [func() *exec.Cmd] for a LOOP should be generated by calling [RegistrarConfig.RegisterLOOP]
type Server ¶ added in v2.3.0
type Server struct { loop.GRPCOpts Logger logger.SugaredLogger *PromServer services.Checker }
Server holds common plugin server fields.
func StartServer ¶ added in v2.3.0
StartServer returns a started Server. The caller is responsible for calling Server.Stop().
func (*Server) MustRegister ¶ added in v2.3.0
MustRegister registers the Checkable with services.Checker, or exits upon failure.