plugin/metrics: Added New func (#1309)

If external plugins wanted to extend metrics there was no way since
zoneNames couldn't be initialized. Now plugins can call New to get an
instance of Metrics that they can extend.
This commit is contained in:
James Hartig 2017-12-13 16:59:10 -05:00 committed by GitHub
parent 2e2e5e1bec
commit 1919913c98
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 8 deletions

View file

@ -36,6 +36,11 @@ type Metrics struct {
zoneMu sync.RWMutex
}
// New returns a new instance of Metrics with the given address
func New(addr string) *Metrics {
return &Metrics{Addr: addr, zoneMap: make(map[string]bool)}
}
// AddZone adds zone z to m.
func (m *Metrics) AddZone(z string) {
m.zoneMu.Lock()

View file

@ -13,7 +13,7 @@ import (
)
func TestMetrics(t *testing.T) {
met := &Metrics{Addr: "localhost:0", zoneMap: make(map[string]bool)}
met := New("localhost:0")
if err := met.OnStartup(); err != nil {
t.Fatalf("Failed to start metrics handler: %s", err)
}

View file

@ -42,10 +42,7 @@ func setup(c *caddy.Controller) error {
}
func prometheusParse(c *caddy.Controller) (*Metrics, error) {
var (
met = &Metrics{Addr: addr, zoneMap: make(map[string]bool)}
err error
)
var met = New(defaultAddr)
defer func() {
uniqAddr.SetAddress(met.Addr)
@ -73,7 +70,7 @@ func prometheusParse(c *caddy.Controller) (*Metrics, error) {
return met, c.ArgErr()
}
}
return met, err
return met, nil
}
var uniqAddr addrs
@ -91,8 +88,8 @@ func (a *addrs) SetAddress(addr string) {
a.a[addr] = todo
}
// Addr is the address the where the metrics are exported by default.
const addr = "localhost:9153"
// defaultAddr is the address the where the metrics are exported by default.
const defaultAddr = "localhost:9153"
const (
todo = 1