Merge pull request #1291 from weaveworks/docker-1.8
Docker 1.8 compatibility. Fixes #1287.
This commit is contained in:
commit
bd41d114b5
2 files changed
+12
-8
No files matched your search
+9
-5
@@ -25,9 +25,8 @@ var (
|
||||
containerStartRegexp = regexp.MustCompile("^(/v[0-9\\.]*)?/containers/[^/]*/(re)?start$")
|
||||
execCreateRegexp = regexp.MustCompile("^(/v[0-9\\.]*)?/containers/[^/]*/exec$")
|
||||
|
||||
ErrInvalidNetworkMode = errors.New("--net option")
|
||||
ErrWeaveCIDRNone = errors.New("WEAVE_CIDR=none")
|
||||
ErrNoDefaultIPAM = errors.New("--no-default-ipam option")
|
||||
ErrWeaveCIDRNone = errors.New("WEAVE_CIDR=none")
|
||||
ErrNoDefaultIPAM = errors.New("--no-default-ipam option")
|
||||
)
|
||||
|
||||
type Proxy struct {
|
||||
@@ -82,7 +81,11 @@ func NewProxy(c Config) (*Proxy, error) {
|
||||
Error.Fatalf("Could not configure tls for proxy: %s", err)
|
||||
}
|
||||
|
||||
p.client, err = docker.NewClient(p.DockerAddr)
|
||||
// We pin the protocol version to 1.15 (which corresponds to Docker 1.3.x;
|
||||
// the earliest version supported by weave) in order to insulate ourselves
|
||||
// from breaking changes to the API, as happened in 1.20 (Docker 1.8.0) when
|
||||
// the presentation of volumes changed in inspect.
|
||||
p.client, err = docker.NewVersionedClient(p.DockerAddr, "1.15")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -148,8 +151,9 @@ func (proxy *Proxy) ListenAndServe() error {
|
||||
func (proxy *Proxy) weaveCIDRsFromConfig(config *docker.Config, hostConfig *docker.HostConfig) ([]string, error) {
|
||||
if hostConfig != nil &&
|
||||
hostConfig.NetworkMode != "" &&
|
||||
hostConfig.NetworkMode != "default" &&
|
||||
hostConfig.NetworkMode != "bridge" {
|
||||
return nil, ErrInvalidNetworkMode
|
||||
return nil, fmt.Errorf("--net option: %q", hostConfig.NetworkMode)
|
||||
}
|
||||
for _, e := range config.Env {
|
||||
if strings.HasPrefix(e, "WEAVE_CIDR=") {
|
||||
|
||||
@@ -29,9 +29,9 @@ assert_raises "proxy docker_on $HOST1 exec c3 true"
|
||||
assert_raises "proxy docker_on $HOST1 run -e 'WEAVE_CIDR=10.2.1.2/24' $BASE_IMAGE touch /w/w" 1
|
||||
|
||||
# Check only user-specified volumes and /w are mounted
|
||||
proxy docker_on $HOST1 create --name c4 -v /tmp/1:/srv1 -v /tmp/2:/srv2 -e 'WEAVE_CIDR=10.2.1.3/24' $BASE_IMAGE $CHECK_ETHWE_UP
|
||||
proxy docker_on $HOST1 start -ai c4
|
||||
assert "docker_on $HOST1 inspect --format='{{range \$k, \$v := .Volumes}}{{\$k}} {{end}}' c4" "/srv1 /srv2 /w "
|
||||
dirs_sans_proxy=$(docker_on $HOST1 run --rm -it $BASE_IMAGE mount | wc -l)
|
||||
dirs_with_proxy=$(proxy docker_on $HOST1 run --rm -it -v /tmp/1:/srv1 -v /tmp/2:/srv2 -e 'WEAVE_CIDR=10.2.1.3/24' $BASE_IMAGE mount | wc -l)
|
||||
assert "$((dirs_with_proxy-3))" $dirs_sans_proxy
|
||||
|
||||
# Check errors are returned (when docker returns an error code)
|
||||
assert_raises "proxy docker_on $HOST1 run -e 'WEAVE_CIDR=10.2.1.3/24' $SMALL_IMAGE foo 2>&1 | grep 'exec: \"foo\": executable file not found in \$PATH'"
|
||||
|
||||
Reference in new issue
Block a user