Merge pull request #13902 from ibuildthecloud/api-fixes

Set omitempty for IP and PublicPort to conform w/ API 1.18
This commit is contained in:
Arnaud Porterie 2015-06-12 10:42:07 -07:00
commit 2351557607
2 changed files with 42 additions and 2 deletions

View file

@ -94,9 +94,9 @@ type ImageInspect struct {
// GET "/containers/json"
type Port struct {
IP string
IP string `json:",omitempty"`
PrivatePort int
PublicPort int
PublicPort int `json:",omitempty"`
Type string
}

View file

@ -9,6 +9,7 @@ import (
"net/http/httputil"
"os"
"os/exec"
"strconv"
"strings"
"time"
@ -84,6 +85,45 @@ func (s *DockerSuite) TestContainerApiGetJSONNoFieldsOmitted(c *check.C) {
}
}
type containerPs struct {
Names []string
Ports []map[string]interface{}
}
// regression test for non-empty fields from #13901
func (s *DockerSuite) TestContainerPsOmitFields(c *check.C) {
name := "pstest"
port := 80
runCmd := exec.Command(dockerBinary, "run", "-d", "--name", name, "--expose", strconv.Itoa(port), "busybox", "sleep", "5")
_, err := runCommand(runCmd)
c.Assert(err, check.IsNil)
status, body, err := sockRequest("GET", "/containers/json?all=1", nil)
c.Assert(status, check.Equals, http.StatusOK)
c.Assert(err, check.IsNil)
var resp []containerPs
err = json.Unmarshal(body, &resp)
c.Assert(err, check.IsNil)
var foundContainer *containerPs
for _, container := range resp {
for _, testName := range container.Names {
if "/"+name == testName {
foundContainer = &container
break
}
}
}
c.Assert(len(foundContainer.Ports), check.Equals, 1)
c.Assert(foundContainer.Ports[0]["PrivatePort"], check.Equals, float64(port))
_, ok := foundContainer.Ports[0]["PublicPort"]
c.Assert(ok, check.Not(check.Equals), true)
_, ok = foundContainer.Ports[0]["IP"]
c.Assert(ok, check.Not(check.Equals), true)
}
func (s *DockerSuite) TestContainerApiGetExport(c *check.C) {
name := "exportcontainer"
runCmd := exec.Command(dockerBinary, "run", "--name", name, "busybox", "touch", "/test")