mirror of
https://github.com/coredns/coredns.git
synced 2025-10-27 16:24:19 -04:00
Implement notifies for transfer plugin (#3972)
* Fix notifies in transfer plugin Signed-off-by: Miek Gieben <miek@miek.nl> * Make it compile Signed-off-by: Miek Gieben <miek@miek.nl> * Port more plugins Signed-off-by: Miek Gieben <miek@miek.nl> * golint Signed-off-by: Miek Gieben <miek@miek.nl> * Fix tests Signed-off-by: Miek Gieben <miek@miek.nl> * Fix notifies in transfer plugin Signed-off-by: Miek Gieben <miek@miek.nl> * Make it compile Signed-off-by: Miek Gieben <miek@miek.nl> * Port more plugins Signed-off-by: Miek Gieben <miek@miek.nl> * golint Signed-off-by: Miek Gieben <miek@miek.nl> * Fix tests Signed-off-by: Miek Gieben <miek@miek.nl> * Fix tests Signed-off-by: Miek Gieben <miek@miek.nl> * really fix test Signed-off-by: Miek Gieben <miek@miek.nl> * Implement ixfr fallback and unify file and auto for transfering Signed-off-by: Miek Gieben <miek@miek.nl> * Add transfer tests copied and modified from #3452 Signed-off-by: Miek Gieben <miek@miek.nl> * Test correct selection of plugin Signed-off-by: Miek Gieben <miek@miek.nl> * add upstream back in Signed-off-by: Miek Gieben <miek@miek.nl> * Implement ixfr fallback and unify file and auto for transfering Signed-off-by: Miek Gieben <miek@miek.nl> * fix test Signed-off-by: Miek Gieben <miek@miek.nl> * properly merge Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
@@ -7,8 +7,8 @@ import (
|
||||
|
||||
"github.com/coredns/coredns/core/dnsserver"
|
||||
"github.com/coredns/coredns/plugin"
|
||||
"github.com/coredns/coredns/plugin/pkg/parse"
|
||||
"github.com/coredns/coredns/plugin/pkg/upstream"
|
||||
"github.com/coredns/coredns/plugin/transfer"
|
||||
|
||||
"github.com/caddyserver/caddy"
|
||||
)
|
||||
@@ -21,26 +21,43 @@ func setup(c *caddy.Controller) error {
|
||||
return plugin.Error("file", err)
|
||||
}
|
||||
|
||||
// Add startup functions to notify the master(s).
|
||||
for _, n := range zones.Names {
|
||||
z := zones.Z[n]
|
||||
c.OnStartup(func() error {
|
||||
z.StartupOnce.Do(func() {
|
||||
if len(z.TransferTo) > 0 {
|
||||
z.Notify()
|
||||
}
|
||||
z.Reload()
|
||||
})
|
||||
f := File{Zones: zones}
|
||||
// get the transfer plugin, so we can send notifies and send notifies on startup as well.
|
||||
c.OnStartup(func() error {
|
||||
t := dnsserver.GetConfig(c).Handler("transfer")
|
||||
if t == nil {
|
||||
return nil
|
||||
})
|
||||
}
|
||||
}
|
||||
f.transfer = t.(*transfer.Transfer) // if found this must be OK.
|
||||
for _, n := range zones.Names {
|
||||
f.transfer.Notify(n)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
||||
c.OnRestartFailed(func() error {
|
||||
t := dnsserver.GetConfig(c).Handler("transfer")
|
||||
if t == nil {
|
||||
return nil
|
||||
}
|
||||
for _, n := range zones.Names {
|
||||
f.transfer.Notify(n)
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
||||
for _, n := range zones.Names {
|
||||
z := zones.Z[n]
|
||||
c.OnShutdown(z.OnShutdown)
|
||||
c.OnStartup(func() error {
|
||||
z.StartupOnce.Do(func() { z.Reload(f.transfer) })
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
dnsserver.GetConfig(c).AddPlugin(func(next plugin.Handler) plugin.Handler {
|
||||
return File{Next: next, Zones: zones}
|
||||
f.Next = next
|
||||
return f
|
||||
})
|
||||
|
||||
return nil
|
||||
@@ -93,24 +110,14 @@ func fileParse(c *caddy.Controller) (Zones, error) {
|
||||
names = append(names, origins[i])
|
||||
}
|
||||
|
||||
t := []string{}
|
||||
var e error
|
||||
|
||||
for c.NextBlock() {
|
||||
switch c.Val() {
|
||||
case "transfer":
|
||||
t, _, e = parse.Transfer(c, false)
|
||||
if e != nil {
|
||||
return Zones{}, e
|
||||
}
|
||||
|
||||
case "reload":
|
||||
d, err := time.ParseDuration(c.RemainingArgs()[0])
|
||||
if err != nil {
|
||||
return Zones{}, plugin.Error("file", err)
|
||||
}
|
||||
reload = d
|
||||
|
||||
case "upstream":
|
||||
// remove soon
|
||||
c.RemainingArgs()
|
||||
@@ -118,12 +125,6 @@ func fileParse(c *caddy.Controller) (Zones, error) {
|
||||
default:
|
||||
return Zones{}, c.Errf("unknown property '%s'", c.Val())
|
||||
}
|
||||
|
||||
for _, origin := range origins {
|
||||
if t != nil {
|
||||
z[origin].TransferTo = append(z[origin].TransferTo, t...)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user