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

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