Skip to content

Commit

Permalink
fix port early return
Browse files Browse the repository at this point in the history
when listing multiple ports on a container with podman port, an early
return was limiting results.

Fixes: containers#3747

Signed-off-by: baude <[email protected]>
  • Loading branch information
baude committed Aug 7, 2019
1 parent 66ea32c commit b7b86bd
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 4 deletions.
11 changes: 7 additions & 4 deletions cmd/podman/port.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ func init() {

func portCmd(c *cliconfig.PortValues) error {
var (
userProto, containerName string
userPort int
userProto string
userPort int
)
args := c.InputArgs

Expand Down Expand Up @@ -106,6 +106,7 @@ func portCmd(c *cliconfig.PortValues) error {
if err != nil {
return err
}
var found bool
// Iterate mappings
for _, v := range portmappings {
hostIP := v.HostIP
Expand All @@ -125,12 +126,14 @@ func portCmd(c *cliconfig.PortValues) error {
if v.ContainerPort == int32(userPort) {
if userProto == "" || userProto == v.Protocol {
fmt.Printf("%s:%d\n", hostIP, v.HostPort)
found = true
break
}
} else {
return errors.Errorf("No public port '%d' published for %s", userPort, containerName)
}
}
if !found && port != "" {
return errors.Errorf("failed to find published port '%d'", userPort)
}
}

return nil
Expand Down
38 changes: 38 additions & 0 deletions test/e2e/port_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,4 +105,42 @@ var _ = Describe("Podman port", func() {
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
})

It("podman port nginx by name", func() {
session, cid := podmanTest.RunNginxWithHealthCheck("portcheck")
Expect(session.ExitCode()).To(Equal(0))

if err := podmanTest.RunHealthCheck(cid); err != nil {
Fail(err.Error())
}

result := podmanTest.Podman([]string{"port", "portcheck"})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
result.LineInOuputStartsWith("80/tcp -> 0.0.0.0:")
})

It("podman port multiple ports", func() {
// Acquire and release locks
lock1 := GetPortLock("5000")
defer lock1.Unlock()
lock2 := GetPortLock("5001")
defer lock2.Unlock()

setup := podmanTest.Podman([]string{"run", "-dt", "-p", "5000:5000", "-p", "5001:5001", ALPINE, "top"})
setup.WaitWithDefaultTimeout()
Expect(setup.ExitCode()).To(BeZero())

// Check that the first port was honored
result1 := podmanTest.Podman([]string{"port", "-l", "5000"})
result1.WaitWithDefaultTimeout()
Expect(result1.ExitCode()).To(BeZero())
Expect(result1.LineInOuputStartsWith("0.0.0.0:5000"))

// Check that the second port was honored
result2 := podmanTest.Podman([]string{"port", "-l", "5001"})
result2.WaitWithDefaultTimeout()
Expect(result2.ExitCode()).To(BeZero())
Expect(result2.LineInOuputStartsWith("0.0.0.0:5001"))
})
})

0 comments on commit b7b86bd

Please sign in to comment.