Skip to content

Commit

Permalink
Add --no-healthcheck command to create/run
Browse files Browse the repository at this point in the history
Now support --no-healthcheck option to disable defined healthchecks in a container image.  --health-cmd=none remains supported as well.

Fixes: containers#5299

Signed-off-by: Brent Baude <bbaude@redhat.com>
  • Loading branch information
baude authored and snj33v committed May 31, 2020
1 parent b75ca01 commit aaaff22
Show file tree
Hide file tree
Showing 7 changed files with 42 additions and 2 deletions.
4 changes: 4 additions & 0 deletions cmd/podman/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,10 @@ func getCreateFlags(c *cliconfig.PodmanCommand) {
"name", "",
"Assign a name to the container",
)
createFlags.Bool(
"no-healthcheck", false,
"Disable healthchecks on container",
)
createFlags.Bool(
"oom-kill-disable", false,
"Disable OOM Killer",
Expand Down
5 changes: 3 additions & 2 deletions cmd/podman/shared/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,12 +120,13 @@ func CreateContainer(ctx context.Context, c *GenericCLIResults, runtime *libpod.
imageName = newImage.ID()
}

// if the user disabled the healthcheck with "none", we skip adding it
// if the user disabled the healthcheck with "none" or the no-healthcheck
// options is provided, we skip adding it
healthCheckCommandInput := c.String("healthcheck-command")

// the user didn't disable the healthcheck but did pass in a healthcheck command
// now we need to make a healthcheck from the commandline input
if healthCheckCommandInput != "none" {
if healthCheckCommandInput != "none" && !c.Bool("no-healthcheck") {
if len(healthCheckCommandInput) > 0 {
healthCheck, err = makeHealthCheckFromCli(c)
if err != nil {
Expand Down
1 change: 1 addition & 0 deletions cmd/podman/shared/intermediate.go
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,7 @@ func NewIntermediateLayer(c *cliconfig.PodmanCommand, remote bool) GenericCLIRes
m["memory-swappiness"] = newCRInt64(c, "memory-swappiness")
m["name"] = newCRString(c, "name")
m["network"] = newCRString(c, "network")
m["no-healthcheck"] = newCRBool(c, "no-healthcheck")
m["no-hosts"] = newCRBool(c, "no-hosts")
m["oom-kill-disable"] = newCRBool(c, "oom-kill-disable")
m["oom-score-adj"] = newCRInt(c, "oom-score-adj")
Expand Down
6 changes: 6 additions & 0 deletions completions/bash/podman
Original file line number Diff line number Diff line change
Expand Up @@ -1888,6 +1888,11 @@ _podman_container_run() {
--expose
--gidmap
--group-add
--health-cmd
--health-interval
--health-retries
--health-start-period
--health-timeout
--hostname -h
--http-proxy
--image-volume
Expand All @@ -1906,6 +1911,7 @@ _podman_container_run() {
--memory-reservation
--name
--network
--no-healthcheck
--no-hosts
--oom-score-adj
--pid
Expand Down
4 changes: 4 additions & 0 deletions docs/source/markdown/podman-create.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -564,6 +564,10 @@ Valid values are:

Not implemented

**--no-healthcheck**=*true|false*

Disable any defined healthchecks for container.

**--no-hosts**=*true|false*

Do not create /etc/hosts for the container.
Expand Down
4 changes: 4 additions & 0 deletions docs/source/markdown/podman-run.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -563,6 +563,10 @@ Valid _mode_ values are:

Not implemented.

**--no-healthcheck**=*true|false*

Disable any defined healthchecks for container.

**--no-hosts**=**true**|**false**

Do not create _/etc/hosts_ for the container.
Expand Down
20 changes: 20 additions & 0 deletions test/e2e/healthcheck_run_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,26 @@ var _ = Describe("Podman healthcheck run", func() {
Expect(session).To(ExitWithError())
})

It("podman disable healthcheck with --no-healthcheck on valid container", func() {
SkipIfRemote()
session := podmanTest.Podman([]string{"run", "-dt", "--no-healthcheck", "--name", "hc", healthcheck})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
hc := podmanTest.Podman([]string{"healthcheck", "run", "hc"})
hc.WaitWithDefaultTimeout()
Expect(hc.ExitCode()).To(Equal(125))
})

It("podman disable healthcheck with --health-cmd=none on valid container", func() {
SkipIfRemote()
session := podmanTest.Podman([]string{"run", "-dt", "--health-cmd", "none", "--name", "hc", healthcheck})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
hc := podmanTest.Podman([]string{"healthcheck", "run", "hc"})
hc.WaitWithDefaultTimeout()
Expect(hc.ExitCode()).To(Equal(125))
})

It("podman healthcheck on valid container", func() {
Skip("Extremely consistent flake - re-enable on debugging")
session := podmanTest.Podman([]string{"run", "-dt", "--name", "hc", healthcheck})
Expand Down

0 comments on commit aaaff22

Please sign in to comment.