diff options
author | Stefan Becker <chemobejk@gmail.com> | 2019-07-09 20:19:20 +0300 |
---|---|---|
committer | Stefan Becker <chemobejk@gmail.com> | 2019-07-16 07:01:43 +0300 |
commit | dd0ea08cefce43b4ca5e468a4bafb909f877cd58 (patch) | |
tree | 9ccc7b47c2efd9a1a60032f1e7673fcc0275d4db | |
parent | d2291ecdd514befd18a8b57ff2c7a8ef0cf04ba8 (diff) | |
download | podman-dd0ea08cefce43b4ca5e468a4bafb909f877cd58.tar.gz podman-dd0ea08cefce43b4ca5e468a4bafb909f877cd58.tar.bz2 podman-dd0ea08cefce43b4ca5e468a4bafb909f877cd58.zip |
healthcheck: improve command list parser
- remove duplicate check, already called in HealthCheck()
- reject zero-length command list and empty command string as errorneous
- support all Docker command list keywords: NONE, CMD or CMD-SHELL
- use Docker default "/bin/sh -c" for CMD-SHELL
Fixes #3507
Signed-off-by: Stefan Becker <chemobejk@gmail.com>
-rw-r--r-- | libpod/healthcheck.go | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/libpod/healthcheck.go b/libpod/healthcheck.go index f4ea6c694..e9bf984e2 100644 --- a/libpod/healthcheck.go +++ b/libpod/healthcheck.go @@ -107,14 +107,20 @@ func (c *Container) runHealthCheck() (HealthCheckStatus, error) { capture bytes.Buffer inStartPeriod bool ) - hcStatus, err := checkHealthCheckCanBeRun(c) - if err != nil { - return hcStatus, err - } hcCommand := c.HealthCheckConfig().Test - if len(hcCommand) > 0 && hcCommand[0] == "CMD-SHELL" { - newCommand = []string{"sh", "-c", strings.Join(hcCommand[1:], " ")} - } else { + if len(hcCommand) < 1 { + return HealthCheckNotDefined, errors.Errorf("container %s has no defined healthcheck", c.ID()) + } + switch hcCommand[0] { + case "", "NONE": + return HealthCheckNotDefined, errors.Errorf("container %s has no defined healthcheck", c.ID()) + case "CMD": + newCommand = hcCommand[1:] + case "CMD-SHELL": + // TODO: SHELL command from image not available in Container - use Docker default + newCommand = []string{"/bin/sh", "-c", strings.Join(hcCommand[1:], " ")} + default: + // command supplied on command line - pass as-is newCommand = hcCommand } captureBuffer := bufio.NewWriter(&capture) |