diff options
Diffstat (limited to 'plugin/k8s_external/setup.go')
-rw-r--r-- | plugin/k8s_external/setup.go | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/plugin/k8s_external/setup.go b/plugin/k8s_external/setup.go index dbb1372e5..f42f7de23 100644 --- a/plugin/k8s_external/setup.go +++ b/plugin/k8s_external/setup.go @@ -1,6 +1,7 @@ package external import ( + "errors" "strconv" "github.com/coredns/caddy" @@ -9,7 +10,9 @@ import ( "github.com/coredns/coredns/plugin/pkg/upstream" ) -func init() { plugin.Register("k8s_external", setup) } +const pluginName = "k8s_external" + +func init() { plugin.Register(pluginName, setup) } func setup(c *caddy.Controller) error { e, err := parse(c) @@ -21,14 +24,18 @@ func setup(c *caddy.Controller) error { c.OnStartup(func() error { m := dnsserver.GetConfig(c).Handler("kubernetes") if m == nil { - return nil + return plugin.Error(pluginName, errors.New("kubernetes plugin not loaded")) } - if x, ok := m.(Externaler); ok { - e.externalFunc = x.External - e.externalAddrFunc = x.ExternalAddress - e.externalServicesFunc = x.ExternalServices - e.externalSerialFunc = x.ExternalSerial + + x, ok := m.(Externaler) + if !ok { + return plugin.Error(pluginName, errors.New("kubernetes plugin does not implement the Externaler interface")) } + + e.externalFunc = x.External + e.externalAddrFunc = x.ExternalAddress + e.externalServicesFunc = x.ExternalServices + e.externalSerialFunc = x.ExternalSerial return nil }) @@ -70,6 +77,8 @@ func parse(c *caddy.Controller) (*External, error) { e.apex = args[0] case "headless": e.headless = true + case "fallthrough": + e.Fall.SetZonesFromArgs(c.RemainingArgs()) default: return nil, c.Errf("unknown property '%s'", c.Val()) } |