Loading & namespacing external plugins
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
package registry
|
||||
@@ -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
20
registry/name.go
Normal 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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user