diff options
author | 2020-09-24 11:30:39 -0700 | |
---|---|---|
committer | 2020-09-24 20:30:39 +0200 | |
commit | 9798dd067f53a74e3777cff539b2f01617c107c6 (patch) | |
tree | fac3bbc495c9a7f78fd9a847fb44533bd6367d9a /plugin/file/setup.go | |
parent | 279194f2e45c9dfeccafe95e515e0aced0ea8bdc (diff) | |
download | coredns-9798dd067f53a74e3777cff539b2f01617c107c6.tar.gz coredns-9798dd067f53a74e3777cff539b2f01617c107c6.tar.zst coredns-9798dd067f53a74e3777cff539b2f01617c107c6.zip |
Cherry-pick: Implement notifies for transfer plugin (#3972) (#4142)
* 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>
* Remove plugin/kubernetes/setup_transfer_test.go
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
Co-authored-by: Miek Gieben <miek@miek.nl>
Diffstat (limited to 'plugin/file/setup.go')
-rw-r--r-- | plugin/file/setup.go | 59 |
1 files changed, 30 insertions, 29 deletions
diff --git a/plugin/file/setup.go b/plugin/file/setup.go index c1dc853d6..ed19aedfe 100644 --- a/plugin/file/setup.go +++ b/plugin/file/setup.go @@ -8,8 +8,8 @@ import ( "github.com/coredns/caddy" "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" ) func init() { plugin.Register("file", setup) } @@ -20,26 +20,43 @@ func setup(c *caddy.Controller) error { return plugin.Error("file", err) } - // Add startup functions to notify the master(s). + 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() { - if len(z.TransferTo) > 0 { - z.Notify() - } - z.Reload() - }) + z.StartupOnce.Do(func() { z.Reload(f.transfer) }) return nil }) } - for _, n := range zones.Names { - z := zones.Z[n] - c.OnShutdown(z.OnShutdown) - } dnsserver.GetConfig(c).AddPlugin(func(next plugin.Handler) plugin.Handler { - return File{Next: next, Zones: zones} + f.Next = next + return f }) return nil @@ -92,24 +109,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() @@ -117,12 +124,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...) - } - } } } |