mirror of
https://github.com/coredns/coredns.git
synced 2025-11-01 02:33:14 -04:00
Startup notification (#250)
Stop the caddy message and start our own init notifications. Log the version of CoreDNS when starting up. Fix all middleware's setup functions so that return the error prefixed with *which* middleware was failing; leads to better debuggable errors when starting up.
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"net"
|
||||
|
||||
"github.com/miekg/coredns/core/dnsserver"
|
||||
"github.com/miekg/coredns/middleware"
|
||||
|
||||
"github.com/mholt/caddy"
|
||||
)
|
||||
@@ -13,11 +14,11 @@ func setupBind(c *caddy.Controller) error {
|
||||
config := dnsserver.GetConfig(c)
|
||||
for c.Next() {
|
||||
if !c.Args(&config.ListenHost) {
|
||||
return c.ArgErr()
|
||||
return middleware.Error("bind", c.ArgErr())
|
||||
}
|
||||
}
|
||||
if net.ParseIP(config.ListenHost) == nil {
|
||||
return fmt.Errorf("not a valid IP address: %s", config.ListenHost)
|
||||
return middleware.Error("bind", fmt.Errorf("not a valid IP address: %s", config.ListenHost))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
2
middleware/cache/setup.go
vendored
2
middleware/cache/setup.go
vendored
@@ -20,7 +20,7 @@ func init() {
|
||||
func setup(c *caddy.Controller) error {
|
||||
ttl, zones, err := cacheParse(c)
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("cache", err)
|
||||
}
|
||||
dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
|
||||
return NewCache(ttl, zones, next)
|
||||
|
||||
@@ -2,6 +2,7 @@ package chaos
|
||||
|
||||
import (
|
||||
"github.com/miekg/coredns/core/dnsserver"
|
||||
"github.com/miekg/coredns/middleware"
|
||||
|
||||
"github.com/mholt/caddy"
|
||||
)
|
||||
@@ -16,7 +17,7 @@ func init() {
|
||||
func setup(c *caddy.Controller) error {
|
||||
version, authors, err := chaosParse(c)
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("chaos", err)
|
||||
}
|
||||
|
||||
dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
|
||||
|
||||
@@ -19,7 +19,7 @@ func init() {
|
||||
func setup(c *caddy.Controller) error {
|
||||
zones, keys, err := dnssecParse(c)
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("dnssec", err)
|
||||
}
|
||||
|
||||
dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"os"
|
||||
|
||||
"github.com/miekg/coredns/core/dnsserver"
|
||||
"github.com/miekg/coredns/middleware"
|
||||
"github.com/miekg/coredns/middleware/pkg/roller"
|
||||
|
||||
"github.com/hashicorp/go-syslog"
|
||||
@@ -22,7 +23,7 @@ func init() {
|
||||
func setup(c *caddy.Controller) error {
|
||||
handler, err := errorsParse(c)
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("errors", err)
|
||||
}
|
||||
|
||||
var writer io.Writer
|
||||
@@ -37,7 +38,7 @@ func setup(c *caddy.Controller) error {
|
||||
case "syslog":
|
||||
writer, err = gsyslog.NewLogger(gsyslog.LOG_ERR, "LOCAL0", "coredns")
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("errors", err)
|
||||
}
|
||||
default:
|
||||
if handler.LogFile == "" {
|
||||
@@ -48,7 +49,7 @@ func setup(c *caddy.Controller) error {
|
||||
var file *os.File
|
||||
file, err = os.OpenFile(handler.LogFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("errors", err)
|
||||
}
|
||||
if handler.LogRoller != nil {
|
||||
file.Close()
|
||||
|
||||
@@ -28,7 +28,7 @@ func init() {
|
||||
func setup(c *caddy.Controller) error {
|
||||
e, stubzones, err := etcdParse(c)
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("etcd", err)
|
||||
}
|
||||
if stubzones {
|
||||
c.OnStartup(func() error {
|
||||
|
||||
@@ -21,7 +21,7 @@ func init() {
|
||||
func setup(c *caddy.Controller) error {
|
||||
zones, err := fileParse(c)
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("file", err)
|
||||
}
|
||||
|
||||
// Add startup functions to notify the master(s).
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
package health
|
||||
|
||||
import "github.com/mholt/caddy"
|
||||
import (
|
||||
"github.com/miekg/coredns/middleware"
|
||||
|
||||
"github.com/mholt/caddy"
|
||||
)
|
||||
|
||||
func init() {
|
||||
caddy.RegisterPlugin("health", caddy.Plugin{
|
||||
@@ -12,7 +16,7 @@ func init() {
|
||||
func setup(c *caddy.Controller) error {
|
||||
addr, err := healthParse(c)
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("health", err)
|
||||
}
|
||||
|
||||
health := &Health{Addr: addr}
|
||||
|
||||
@@ -24,12 +24,12 @@ func init() {
|
||||
func setup(c *caddy.Controller) error {
|
||||
kubernetes, err := kubernetesParse(c)
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("kubernetes", err)
|
||||
}
|
||||
|
||||
err = kubernetes.InitKubeCache()
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("kubernetes", err)
|
||||
}
|
||||
|
||||
// Register KubeCache start and stop functions with Caddy
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"os"
|
||||
|
||||
"github.com/miekg/coredns/core/dnsserver"
|
||||
"github.com/miekg/coredns/middleware"
|
||||
"github.com/miekg/coredns/middleware/pkg/roller"
|
||||
|
||||
"github.com/hashicorp/go-syslog"
|
||||
@@ -23,7 +24,7 @@ func init() {
|
||||
func setup(c *caddy.Controller) error {
|
||||
rules, err := logParse(c)
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("log", err)
|
||||
}
|
||||
|
||||
// Open the log files for writing when the server starts
|
||||
@@ -39,13 +40,13 @@ func setup(c *caddy.Controller) error {
|
||||
} else if rules[i].OutputFile == "syslog" {
|
||||
writer, err = gsyslog.NewLogger(gsyslog.LOG_INFO, "LOCAL0", "coredns")
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("log", err)
|
||||
}
|
||||
} else {
|
||||
var file *os.File
|
||||
file, err = os.OpenFile(rules[i].OutputFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("log", err)
|
||||
}
|
||||
if rules[i].Roller != nil {
|
||||
file.Close()
|
||||
|
||||
@@ -19,7 +19,7 @@ func init() {
|
||||
func setup(c *caddy.Controller) error {
|
||||
m, err := prometheusParse(c)
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("prometheus", err)
|
||||
}
|
||||
|
||||
dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/miekg/dns"
|
||||
"golang.org/x/net/context"
|
||||
)
|
||||
@@ -52,4 +54,8 @@ func (f HandlerFunc) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.
|
||||
return f(ctx, w, r)
|
||||
}
|
||||
|
||||
// Error returns err with 'middleware/name: ' prefixed to it.
|
||||
func Error(name string, err error) error { return fmt.Errorf("%s/%s: %s", "middleware", name, err) }
|
||||
|
||||
// Namespace is the namespace used for the metrics.
|
||||
const Namespace = "coredns"
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"sync"
|
||||
|
||||
"github.com/mholt/caddy"
|
||||
"github.com/miekg/coredns/middleware"
|
||||
)
|
||||
|
||||
func init() {
|
||||
@@ -17,13 +18,13 @@ func setup(c *caddy.Controller) error {
|
||||
found := false
|
||||
for c.Next() {
|
||||
if found {
|
||||
return c.Err("pprof can only be specified once")
|
||||
return middleware.Error("pprof", c.Err("pprof can only be specified once"))
|
||||
}
|
||||
if len(c.RemainingArgs()) != 0 {
|
||||
return c.ArgErr()
|
||||
return middleware.Error("pprof", c.ArgErr())
|
||||
}
|
||||
if c.NextBlock() {
|
||||
return c.ArgErr()
|
||||
return middleware.Error("pprof", c.ArgErr())
|
||||
}
|
||||
found = true
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package proxy
|
||||
|
||||
import (
|
||||
"github.com/miekg/coredns/core/dnsserver"
|
||||
"github.com/miekg/coredns/middleware"
|
||||
|
||||
"github.com/mholt/caddy"
|
||||
)
|
||||
@@ -16,7 +17,7 @@ func init() {
|
||||
func setup(c *caddy.Controller) error {
|
||||
upstreams, err := NewStaticUpstreams(c.Dispenser)
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("proxy", err)
|
||||
}
|
||||
dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
|
||||
return Proxy{Next: next, Client: Clients(), Upstreams: upstreams}
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/miekg/coredns/core/dnsserver"
|
||||
"github.com/miekg/coredns/middleware"
|
||||
|
||||
"github.com/mholt/caddy"
|
||||
)
|
||||
@@ -19,7 +20,7 @@ func init() {
|
||||
func setup(c *caddy.Controller) error {
|
||||
rewrites, err := rewriteParse(c)
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("rewrite", err)
|
||||
}
|
||||
|
||||
dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
|
||||
|
||||
@@ -18,7 +18,7 @@ func init() {
|
||||
func setup(c *caddy.Controller) error {
|
||||
zones, err := secondaryParse(c)
|
||||
if err != nil {
|
||||
return err
|
||||
return middleware.Error("secondary", err)
|
||||
}
|
||||
|
||||
// Add startup functions to retrieve the zone and keep it up to date.
|
||||
|
||||
Reference in New Issue
Block a user