Add filtering options to select plugin at startup
This commit is contained in:
36
agent.go
36
agent.go
@@ -99,8 +99,14 @@ func (a *Agent) Connect() error {
|
||||
}
|
||||
|
||||
// LoadPlugins loads the agent's plugins
|
||||
func (a *Agent) LoadPlugins() ([]string, error) {
|
||||
func (a *Agent) LoadPlugins(pluginsFilter string) ([]string, error) {
|
||||
var names []string
|
||||
var filters []string
|
||||
|
||||
pluginsFilter = strings.TrimSpace(pluginsFilter)
|
||||
if pluginsFilter != "" {
|
||||
filters = strings.Split(":"+pluginsFilter+":", ":")
|
||||
}
|
||||
|
||||
for _, name := range a.Config.PluginsDeclared() {
|
||||
creator, ok := plugins.Plugins[name]
|
||||
@@ -108,15 +114,31 @@ func (a *Agent) LoadPlugins() ([]string, error) {
|
||||
return nil, fmt.Errorf("Undefined but requested plugin: %s", name)
|
||||
}
|
||||
|
||||
plugin := creator()
|
||||
|
||||
config, err := a.Config.ApplyPlugin(name, plugin)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
isPluginEnabled := false
|
||||
if len(filters)>0 {
|
||||
for _, runeValue := range filters {
|
||||
if runeValue != "" && strings.ToLower(runeValue) == strings.ToLower(name) {
|
||||
fmt.Printf("plugin [%s] is enabled (filter options)\n", name)
|
||||
isPluginEnabled = true
|
||||
break
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// if no filter, we ALWAYS accept the plugin
|
||||
isPluginEnabled = true
|
||||
}
|
||||
|
||||
a.plugins = append(a.plugins, &runningPlugin{name, plugin, config})
|
||||
names = append(names, name)
|
||||
if isPluginEnabled {
|
||||
plugin := creator()
|
||||
config, err := a.Config.ApplyPlugin(name, plugin)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
a.plugins = append(a.plugins, &runningPlugin{name, plugin, config})
|
||||
names = append(names, name)
|
||||
}
|
||||
}
|
||||
|
||||
sort.Strings(names)
|
||||
|
||||
Reference in New Issue
Block a user