diff options
author | baude <bbaude@redhat.com> | 2019-03-14 15:14:18 -0500 |
---|---|---|
committer | baude <bbaude@redhat.com> | 2019-03-22 14:58:44 -0500 |
commit | bb69004b8c799763b5e47f2e6b0f5bd77f6ca726 (patch) | |
tree | 63cf1b7421d7aaf0eec3a8cd60b04ea6dd642e7e /libpod/container_internal.go | |
parent | 0458daf13d50e45bf9ca0ac03449c6ea60b2ef64 (diff) | |
download | podman-bb69004b8c799763b5e47f2e6b0f5bd77f6ca726.tar.gz podman-bb69004b8c799763b5e47f2e6b0f5bd77f6ca726.tar.bz2 podman-bb69004b8c799763b5e47f2e6b0f5bd77f6ca726.zip |
podman health check phase3
podman will not start a transient service and timer for healthchecks.
this handles the tracking of the timing for health checks.
added the 'started' status which represents the time that a container is
in its start-period.
the systemd timing can be disabled with an env variable of
DISABLE_HC_SYSTEMD="true".
added filter for ps where --filter health=[starting, healthy, unhealthy]
can now be used.
Signed-off-by: baude <bbaude@redhat.com>
Diffstat (limited to 'libpod/container_internal.go')
-rw-r--r-- | libpod/container_internal.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/libpod/container_internal.go b/libpod/container_internal.go index 13e660dc3..7a90bc7d4 100644 --- a/libpod/container_internal.go +++ b/libpod/container_internal.go @@ -833,6 +833,12 @@ func (c *Container) init(ctx context.Context) error { if err := c.save(); err != nil { return err } + if c.config.HealthCheckConfig != nil { + if err := c.createTimer(); err != nil { + logrus.Error(err) + } + } + defer c.newContainerEvent(events.Init) return c.completeNetworkSetup() } @@ -956,6 +962,15 @@ func (c *Container) start() error { c.state.State = ContainerStateRunning + if c.config.HealthCheckConfig != nil { + if err := c.updateHealthStatus(HealthCheckStarting); err != nil { + logrus.Error(err) + } + if err := c.startTimer(); err != nil { + logrus.Error(err) + } + } + defer c.newContainerEvent(events.Start) return c.save() @@ -1123,6 +1138,13 @@ func (c *Container) cleanup(ctx context.Context) error { logrus.Debugf("Cleaning up container %s", c.ID()) + // Remove healthcheck unit/timer file if it execs + if c.config.HealthCheckConfig != nil { + if err := c.removeTimer(); err != nil { + logrus.Error(err) + } + } + // Clean up network namespace, if present if err := c.cleanupNetwork(); err != nil { lastError = err |