diff options
author | 2016-03-22 22:44:50 +0000 | |
---|---|---|
committer | 2016-03-22 22:44:50 +0000 | |
commit | 8c707c803134c36c67d6deb2f6ac4929ee83256e (patch) | |
tree | 3d3dc33efdfdd1db387806668b6d3e81074059b4 /core/setup | |
parent | a6c3719bd8af03ca908dd5da77d5a017afd76834 (diff) | |
download | coredns-8c707c803134c36c67d6deb2f6ac4929ee83256e.tar.gz coredns-8c707c803134c36c67d6deb2f6ac4929ee83256e.tar.zst coredns-8c707c803134c36c67d6deb2f6ac4929ee83256e.zip |
more
Diffstat (limited to 'core/setup')
-rw-r--r-- | core/setup/etcd.go | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/core/setup/etcd.go b/core/setup/etcd.go index 68e150392..1423e71aa 100644 --- a/core/setup/etcd.go +++ b/core/setup/etcd.go @@ -10,38 +10,53 @@ import ( "github.com/miekg/coredns/middleware" "github.com/miekg/coredns/middleware/etcd" + "github.com/miekg/coredns/middleware/etcd/singleflight" + "github.com/miekg/coredns/middleware/proxy" etcdc "github.com/coreos/etcd/client" + "golang.org/x/net/context" ) const defaultEndpoint = "http://127.0.0.1:2379" // Etcd sets up the etcd middleware. func Etcd(c *Controller) (middleware.Middleware, error) { - client, err := etcdParse(c) + etcd, err := etcdParse(c) if err != nil { return nil, err } return func(next middleware.Handler) middleware.Handler { - return etcd.NewEtcd(client, next, c.ServerBlockHosts) + etcd.Next = next + return etcd }, nil } -func etcdParse(c *Controller) (etcdc.KeysAPI, error) { +func etcdParse(c *Controller) (etcd.Etcd, error) { + etc := etcd.Etcd{ + // make stuff configurable + Proxy: proxy.New([]string{"8.8.8.8:53"}), + PathPrefix: "skydns", + Ctx: context.Background(), + Inflight: &singleflight.Group{}, + } for c.Next() { if c.Val() == "etcd" { - // etcd [address...] - if !c.NextArg() { - // TODO(certs) and friends, this is client side - client, err := newEtcdClient([]string{defaultEndpoint}, "", "", "") - return client, err + // etcd [origin...] + client, err := newEtcdClient([]string{defaultEndpoint}, "", "", "") + if err != nil { + return etcd.Etcd{}, err + } + etc.Client = client + etc.Zones = c.RemainingArgs() + if len(etc.Zones) == 0 { + etc.Zones = c.ServerBlockHosts } - client, err := newEtcdClient(c.RemainingArgs(), "", "", "") - return client, err + middleware.Zones(etc.Zones).FullyQualify() + return etc, nil } } - return nil, nil + return etcd.Etcd{}, nil } func newEtcdClient(endpoints []string, tlsCert, tlsKey, tlsCACert string) (etcdc.KeysAPI, error) { |