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 }