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  }