plugin/metadata: metadata is just label=value (#1914)

This revert 17d807f0 and re-adds the metadata plugin as a plugin that
just sets a label to a value function.

Add package documentation on how to use the metadata package. Make it
clear that any caching is up to the Func implemented.

There are now - no in tree users. We could add the request metadata by
default under names that copy request.Request, i.e

request/ip - remote IP
request/port - remote port

Variables.go has been deleted.

Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
Miek Gieben
2018-07-01 20:01:17 +01:00
committed by GitHub
parent 0b326e2686
commit 99800a687c
16 changed files with 229 additions and 371 deletions

View File

@@ -1,8 +1,6 @@
package metadata
import (
"fmt"
"github.com/coredns/coredns/core/dnsserver"
"github.com/coredns/coredns/plugin"
@@ -28,16 +26,8 @@ func setup(c *caddy.Controller) error {
c.OnStartup(func() error {
plugins := dnsserver.GetConfig(c).Handlers()
// Collect all plugins which implement Provider interface
metadataVariables := map[string]bool{}
for _, p := range plugins {
if met, ok := p.(Provider); ok {
for _, varName := range met.MetadataVarNames() {
if _, ok := metadataVariables[varName]; ok {
return fmt.Errorf("Metadata variable '%v' has duplicates", varName)
}
metadataVariables[varName] = true
}
m.Providers = append(m.Providers, met)
}
}