diff --git a/hack/vendor.sh b/hack/vendor.sh index 23e77e2714..c8b6d32def 100755 --- a/hack/vendor.sh +++ b/hack/vendor.sh @@ -30,7 +30,7 @@ clone git github.com/RackSec/srslog 259aed10dfa74ea2961eddd1d9847619f6e98837 clone git github.com/imdario/mergo 0.2.1 #get libnetwork packages -clone git github.com/docker/libnetwork v0.7.0-rc.4 +clone git github.com/docker/libnetwork v0.7.0-rc.6 clone git github.com/armon/go-metrics eb0af217e5e9747e41dd5303755356b62d28e3ec clone git github.com/hashicorp/go-msgpack 71c2886f5a673a35f909803f38ece5810165097b clone git github.com/hashicorp/memberlist 9a1e242e454d2443df330bdd51a436d5a9058fc4 diff --git a/vendor/src/github.com/docker/libnetwork/CHANGELOG.md b/vendor/src/github.com/docker/libnetwork/CHANGELOG.md index 0eb85cde52..883830f5cd 100644 --- a/vendor/src/github.com/docker/libnetwork/CHANGELOG.md +++ b/vendor/src/github.com/docker/libnetwork/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 0.7.0-rc.6 (2016-04-10) +- Flush cached resolver socket on default gateway change + +## 0.7.0-rc.5 (2016-04-08) +- Persist ipam driver options +- Fixes https://github.com/docker/libnetwork/issues/1087 +- Use go vet from go tool +- Godep update to pick up latest docker/docker packages +- Validate remote driver response using docker plugins package method. + ## 0.7.0-rc.4 (2016-04-06) - Fix the handling for default gateway Endpoint join/leave. diff --git a/vendor/src/github.com/docker/libnetwork/Dockerfile.build b/vendor/src/github.com/docker/libnetwork/Dockerfile.build index 01b690e955..035f852c03 100644 --- a/vendor/src/github.com/docker/libnetwork/Dockerfile.build +++ b/vendor/src/github.com/docker/libnetwork/Dockerfile.build @@ -3,6 +3,5 @@ RUN apt-get update && apt-get -y install iptables RUN go get github.com/tools/godep \ github.com/golang/lint/golint \ - golang.org/x/tools/cmd/vet \ golang.org/x/tools/cmd/cover\ github.com/mattn/goveralls diff --git a/vendor/src/github.com/docker/libnetwork/drivers/remote/driver.go b/vendor/src/github.com/docker/libnetwork/drivers/remote/driver.go index 32533533dd..e3f2cd58e2 100644 --- a/vendor/src/github.com/docker/libnetwork/drivers/remote/driver.go +++ b/vendor/src/github.com/docker/libnetwork/drivers/remote/driver.go @@ -3,7 +3,6 @@ package remote import ( "fmt" "net" - "strings" log "github.com/Sirupsen/logrus" "github.com/docker/docker/pkg/plugins" @@ -14,10 +13,6 @@ import ( "github.com/docker/libnetwork/types" ) -const ( - missingMethod = "404 page not found" -) - type driver struct { endpoint *plugins.Client networkType string @@ -260,7 +255,7 @@ func (d *driver) ProgramExternalConnectivity(nid, eid string, options map[string Options: options, } err := d.call("ProgramExternalConnectivity", data, &api.ProgramExternalConnectivityResponse{}) - if err != nil && strings.Contains(err.Error(), missingMethod) { + if err != nil && plugins.IsNotFound(err) { // It is not mandatory yet to support this method return nil } @@ -274,7 +269,7 @@ func (d *driver) RevokeExternalConnectivity(nid, eid string) error { EndpointID: eid, } err := d.call("RevokeExternalConnectivity", data, &api.RevokeExternalConnectivityResponse{}) - if err != nil && strings.Contains(err.Error(), missingMethod) { + if err != nil && plugins.IsNotFound(err) { // It is not mandatory yet to support this method return nil } diff --git a/vendor/src/github.com/docker/libnetwork/endpoint.go b/vendor/src/github.com/docker/libnetwork/endpoint.go index 55b3a8e1ab..7608dd7457 100644 --- a/vendor/src/github.com/docker/libnetwork/endpoint.go +++ b/vendor/src/github.com/docker/libnetwork/endpoint.go @@ -477,6 +477,10 @@ func (ep *endpoint) sbJoin(sb *sandbox, options ...EndpointOption) error { ep.Name(), ep.ID(), err) } } + + if sb.resolver != nil { + sb.resolver.FlushExtServers() + } } if !sb.needDefaultGW() { diff --git a/vendor/src/github.com/docker/libnetwork/network.go b/vendor/src/github.com/docker/libnetwork/network.go index ed2b52c790..a14550cd7e 100644 --- a/vendor/src/github.com/docker/libnetwork/network.go +++ b/vendor/src/github.com/docker/libnetwork/network.go @@ -320,6 +320,13 @@ func (n *network) CopyTo(o datastore.KVObject) error { dstN.labels[k] = v } + if n.ipamOptions != nil { + dstN.ipamOptions = make(map[string]string, len(n.ipamOptions)) + for k, v := range n.ipamOptions { + dstN.ipamOptions[k] = v + } + } + for _, v4conf := range n.ipamV4Config { dstV4Conf := &IpamConf{} v4conf.CopyTo(dstV4Conf) @@ -372,6 +379,7 @@ func (n *network) MarshalJSON() ([]byte, error) { netMap["scope"] = n.scope netMap["labels"] = n.labels netMap["ipamType"] = n.ipamType + netMap["ipamOptions"] = n.ipamOptions netMap["addrSpace"] = n.addrSpace netMap["enableIPv6"] = n.enableIPv6 if n.generic != nil { @@ -432,6 +440,15 @@ func (n *network) UnmarshalJSON(b []byte) (err error) { } } + if v, ok := netMap["ipamOptions"]; ok { + if iOpts, ok := v.(map[string]interface{}); ok { + n.ipamOptions = make(map[string]string, len(iOpts)) + for k, v := range iOpts { + n.ipamOptions[k] = v.(string) + } + } + } + if v, ok := netMap["generic"]; ok { n.generic = v.(map[string]interface{}) // Restore opts in their map[string]string form diff --git a/vendor/src/github.com/docker/libnetwork/resolver.go b/vendor/src/github.com/docker/libnetwork/resolver.go index 7af1850cf6..cff692fd1f 100644 --- a/vendor/src/github.com/docker/libnetwork/resolver.go +++ b/vendor/src/github.com/docker/libnetwork/resolver.go @@ -45,7 +45,7 @@ const ( ptrIPv6domain = ".ip6.arpa." respTTL = 600 maxExtDNS = 3 //max number of external servers to try - extIOTimeout = 3 * time.Second + extIOTimeout = 4 * time.Second defaultRespSize = 512 maxConcurrent = 50 logInterval = 2 * time.Second @@ -158,6 +158,10 @@ func (r *resolver) Start() error { func (r *resolver) FlushExtServers() { for i := 0; i < maxExtDNS; i++ { + if r.extDNSList[i].extConn != nil { + r.extDNSList[i].extConn.Close() + } + r.extDNSList[i].extConn = nil r.extDNSList[i].extOnce = sync.Once{} } @@ -344,9 +348,6 @@ func (r *resolver) ServeDNS(w dns.ResponseWriter, query *dns.Msg) { if extDNS.ipStr == "" { break } - log.Debugf("Query %s[%d] from %s, forwarding to %s:%s", name, query.Question[0].Qtype, - w.LocalAddr().String(), proto, extDNS.ipStr) - extConnect := func() { addr := fmt.Sprintf("%s:%d", extDNS.ipStr, 53) extConn, err = net.DialTimeout(proto, addr, extIOTimeout) @@ -378,6 +379,8 @@ func (r *resolver) ServeDNS(w dns.ResponseWriter, query *dns.Msg) { if extConn == nil { continue } + log.Debugf("Query %s[%d] from %s, forwarding to %s:%s", name, query.Question[0].Qtype, + extConn.LocalAddr().String(), proto, extDNS.ipStr) // Timeout has to be set for every IO operation. extConn.SetDeadline(time.Now().Add(extIOTimeout)) @@ -424,7 +427,7 @@ func (r *resolver) ServeDNS(w dns.ResponseWriter, query *dns.Msg) { break } - if resp == nil { + if resp == nil || w == nil { return } }