зеркало из https://github.com/microsoft/docker.git
Vendor Libnetwork v0.7.0-rc.6
Signed-off-by: Santhosh Manohar <santhosh@docker.com>
This commit is contained in:
Родитель
b4664e3f86
Коммит
6dd2c33217
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче