aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar James Hartig <fastest963@gmail.com> 2017-12-13 16:59:10 -0500
committerGravatar GitHub <noreply@github.com> 2017-12-13 16:59:10 -0500
commit1919913c986b7c1e1652a94bf69e54b503e40a18 (patch)
tree51ef8c36d4894736c920ac2151693b9a49c49708
parent2e2e5e1bec11e4dc5a7862443a34965b65332e73 (diff)
downloadcoredns-1919913c986b7c1e1652a94bf69e54b503e40a18.tar.gz
coredns-1919913c986b7c1e1652a94bf69e54b503e40a18.tar.zst
coredns-1919913c986b7c1e1652a94bf69e54b503e40a18.zip
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.
-rw-r--r--plugin/metrics/metrics.go5
-rw-r--r--plugin/metrics/metrics_test.go2
-rw-r--r--plugin/metrics/setup.go11
3 files changed, 10 insertions, 8 deletions
diff --git a/plugin/metrics/metrics.go b/plugin/metrics/metrics.go
index 0dabcdf96..df07da0ae 100644
--- a/plugin/metrics/metrics.go
+++ b/plugin/metrics/metrics.go
@@ -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()
diff --git a/plugin/metrics/metrics_test.go b/plugin/metrics/metrics_test.go
index 54e7859e8..f3e4ba3d8 100644
--- a/plugin/metrics/metrics_test.go
+++ b/plugin/metrics/metrics_test.go
@@ -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)
}
diff --git a/plugin/metrics/setup.go b/plugin/metrics/setup.go
index eecfac62c..a0f68a53f 100644
--- a/plugin/metrics/setup.go
+++ b/plugin/metrics/setup.go
@@ -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