diff --git a/api/primary.go b/api/primary.go index f7eb28db94..314f356f8c 100644 --- a/api/primary.go +++ b/api/primary.go @@ -53,30 +53,32 @@ var routes = map[string]map[string]handler{ "/volumes/{volumename:.*}": proxyVolume, }, "POST": { - "/auth": proxyRandom, - "/commit": postCommit, - "/build": postBuild, - "/images/create": postImagesCreate, - "/images/load": postImagesLoad, - "/images/{name:.*}/push": proxyImageTagOptional, - "/images/{name:.*}/tag": postTagImage, - "/containers/create": postContainersCreate, - "/containers/{name:.*}/kill": proxyContainerAndForceRefresh, - "/containers/{name:.*}/pause": proxyContainerAndForceRefresh, - "/containers/{name:.*}/unpause": proxyContainerAndForceRefresh, - "/containers/{name:.*}/rename": postRenameContainer, - "/containers/{name:.*}/restart": proxyContainerAndForceRefresh, - "/containers/{name:.*}/start": proxyContainerAndForceRefresh, - "/containers/{name:.*}/stop": proxyContainerAndForceRefresh, - "/containers/{name:.*}/wait": proxyContainerAndForceRefresh, - "/containers/{name:.*}/resize": proxyContainer, - "/containers/{name:.*}/attach": proxyHijack, - "/containers/{name:.*}/copy": proxyContainer, - "/containers/{name:.*}/exec": postContainersExec, - "/exec/{execid:.*}/start": postExecStart, - "/exec/{execid:.*}/resize": proxyContainer, - "/networks/create": postNetworksCreate, - "/volumes": postVolumes, + "/auth": proxyRandom, + "/commit": postCommit, + "/build": postBuild, + "/images/create": postImagesCreate, + "/images/load": postImagesLoad, + "/images/{name:.*}/push": proxyImageTagOptional, + "/images/{name:.*}/tag": postTagImage, + "/containers/create": postContainersCreate, + "/containers/{name:.*}/kill": proxyContainerAndForceRefresh, + "/containers/{name:.*}/pause": proxyContainerAndForceRefresh, + "/containers/{name:.*}/unpause": proxyContainerAndForceRefresh, + "/containers/{name:.*}/rename": postRenameContainer, + "/containers/{name:.*}/restart": proxyContainerAndForceRefresh, + "/containers/{name:.*}/start": proxyContainerAndForceRefresh, + "/containers/{name:.*}/stop": proxyContainerAndForceRefresh, + "/containers/{name:.*}/wait": proxyContainerAndForceRefresh, + "/containers/{name:.*}/resize": proxyContainer, + "/containers/{name:.*}/attach": proxyHijack, + "/containers/{name:.*}/copy": proxyContainer, + "/containers/{name:.*}/exec": postContainersExec, + "/exec/{execid:.*}/start": postExecStart, + "/exec/{execid:.*}/resize": proxyContainer, + "/networks/create": postNetworksCreate, + "/networks/{networkid:.*}/connect": proxyNetwork, + "/networks/{networkid:.*}/disconnect": proxyNetwork, + "/volumes": postVolumes, }, "PUT": { "/containers/{name:.*}/archive": proxyContainer, diff --git a/test/integration/api/network.bats b/test/integration/api/network.bats index 9a600b170f..d5c52ce1fa 100644 --- a/test/integration/api/network.bats +++ b/test/integration/api/network.bats @@ -66,3 +66,29 @@ function teardown() { run docker_swarm network ls [ "${#lines[@]}" -eq 7 ] } + +@test "docker network disconnect connect" { + start_docker_with_busybox 2 + swarm_manage + + # run + docker_swarm run -d --name test_container -e constraint:node==node-0 busybox sleep 100 + + run docker_swarm network inspect node-0/bridge + [ "${#lines[@]}" -eq 13 ] + + docker_swarm network disconnect node-0/bridge test_container + + run docker_swarm network inspect node-0/bridge + [ "${#lines[@]}" -eq 6 ] + + docker_swarm network connect node-0/bridge test_container + + run docker_swarm network inspect node-0/bridge + [ "${#lines[@]}" -eq 13 ] + + docker_swarm rm -f test_container + + run docker_swarm network inspect node-0/bridge + [ "${#lines[@]}" -eq 6 ] +}