go.ligato.io/vpp-agent/v3@v3.5.0/plugins/telemetry/options.go (about) 1 package telemetry 2 3 import ( 4 "go.ligato.io/cn-infra/v2/rpc/grpc" 5 "go.ligato.io/cn-infra/v2/rpc/prometheus" 6 "go.ligato.io/cn-infra/v2/rpc/rest" 7 "go.ligato.io/cn-infra/v2/servicelabel" 8 9 "go.ligato.io/vpp-agent/v3/plugins/govppmux" 10 "go.ligato.io/vpp-agent/v3/plugins/vpp/ifplugin" 11 ) 12 13 // DefaultPlugin is default instance of Plugin 14 var DefaultPlugin = *NewPlugin() 15 16 // NewPlugin creates a new Plugin with the provides Options 17 func NewPlugin(opts ...Option) *Plugin { 18 p := &Plugin{} 19 20 p.PluginName = "telemetry" 21 p.ServiceLabel = &servicelabel.DefaultPlugin 22 p.VPP = &govppmux.DefaultPlugin 23 p.Prometheus = &prometheus.DefaultPlugin 24 p.GRPC = &grpc.DefaultPlugin 25 p.HTTPHandlers = &rest.DefaultPlugin 26 p.IfPlugin = &ifplugin.DefaultPlugin 27 28 for _, o := range opts { 29 o(p) 30 } 31 32 p.PluginDeps.Setup() 33 34 return p 35 } 36 37 // Option is a function that acts on a Plugin to inject Dependencies or configuration 38 type Option func(*Plugin) 39 40 // UseDeps returns Option that can inject custom dependencies. 41 func UseDeps(cb func(*Deps)) Option { 42 return func(p *Plugin) { 43 cb(&p.Deps) 44 } 45 }