Loading & namespacing external plugins

This commit is contained in:
Cameron Sparr
2017-02-06 16:45:35 +00:00
parent 2eee1b84fb
commit f4e48f9909
9 changed files with 78 additions and 5 deletions

View File

@@ -1,11 +1,20 @@
package aggregators
import "github.com/influxdata/telegraf"
import (
"log"
"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/registry"
)
type Creator func() telegraf.Aggregator
var Aggregators = map[string]Creator{}
func Add(name string, creator Creator) {
if override := registry.GetName(); override != "" {
name = override
}
log.Println("D! Loading plugin: [[aggregators." + name + "]]")
Aggregators[name] = creator
}

View File

@@ -1 +0,0 @@
package registry

View File

@@ -1,11 +1,20 @@
package inputs
import "github.com/influxdata/telegraf"
import (
"log"
"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/registry"
)
type Creator func() telegraf.Input
var Inputs = map[string]Creator{}
func Add(name string, creator Creator) {
if override := registry.GetName(); override != "" {
name = override
}
log.Println("D! Loading plugin: [[inputs." + name + "]]")
Inputs[name] = creator
}

20
registry/name.go Normal file
View File

@@ -0,0 +1,20 @@
package registry
import (
"sync"
)
var nameOverride string
var mu sync.Mutex
func SetName(s string) {
mu.Lock()
nameOverride = s
mu.Unlock()
}
func GetName() string {
mu.Lock()
defer mu.Unlock()
return nameOverride
}

View File

@@ -1,7 +1,10 @@
package outputs
import (
"log"
"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/registry"
)
type Creator func() telegraf.Output
@@ -9,5 +12,9 @@ type Creator func() telegraf.Output
var Outputs = map[string]Creator{}
func Add(name string, creator Creator) {
if override := registry.GetName(); override != "" {
name = override
}
log.Println("D! Loading plugin: [[outputs." + name + "]]")
Outputs[name] = creator
}

View File

@@ -1,11 +1,20 @@
package processors
import "github.com/influxdata/telegraf"
import (
"log"
"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/registry"
)
type Creator func() telegraf.Processor
var Processors = map[string]Creator{}
func Add(name string, creator Creator) {
if override := registry.GetName(); override != "" {
name = override
}
log.Println("D! Loading plugin: [[processors." + name + "]]")
Processors[name] = creator
}