go.ligato.io/vpp-agent/v3@v3.5.0/plugins/linux/ifplugin/options.go (about)

     1  package ifplugin
     2  
     3  import (
     4  	"go.ligato.io/cn-infra/v2/config"
     5  	"go.ligato.io/cn-infra/v2/logging"
     6  	"go.ligato.io/cn-infra/v2/servicelabel"
     7  
     8  	"go.ligato.io/vpp-agent/v3/plugins/kvscheduler"
     9  	"go.ligato.io/vpp-agent/v3/plugins/linux/nsplugin"
    10  	"go.ligato.io/vpp-agent/v3/plugins/netalloc"
    11  )
    12  
    13  // DefaultPlugin is a default instance of IfPlugin.
    14  var DefaultPlugin = *NewPlugin()
    15  
    16  // NewPlugin creates a new Plugin with the provides Options
    17  func NewPlugin(opts ...Option) *IfPlugin {
    18  	p := &IfPlugin{}
    19  
    20  	p.PluginName = "linux-ifplugin"
    21  	p.KVScheduler = &kvscheduler.DefaultPlugin
    22  	p.NsPlugin = &nsplugin.DefaultPlugin
    23  	p.AddrAlloc = &netalloc.DefaultPlugin
    24  	p.ServiceLabel = &servicelabel.DefaultPlugin
    25  
    26  	for _, o := range opts {
    27  		o(p)
    28  	}
    29  
    30  	if p.Log == nil {
    31  		p.Log = logging.ForPlugin(p.String())
    32  	}
    33  	if p.Cfg == nil {
    34  		p.Cfg = config.ForPlugin(p.String(),
    35  			config.WithCustomizedFlag(config.FlagName(p.String()), "linux-ifplugin.conf"),
    36  		)
    37  	}
    38  
    39  	return p
    40  }
    41  
    42  // Option is a function that can be used in NewPlugin to customize Plugin.
    43  type Option func(*IfPlugin)
    44  
    45  // UseDeps returns Option that can inject custom dependencies.
    46  func UseDeps(f func(*Deps)) Option {
    47  	return func(p *IfPlugin) {
    48  		f(&p.Deps)
    49  	}
    50  }