7
"github.com/containers/image/v5/manifest"
11
// HealthCheckHealthy describes a healthy container
12
HealthCheckHealthy string = "healthy"
13
// HealthCheckUnhealthy describes an unhealthy container
14
HealthCheckUnhealthy string = "unhealthy"
15
// HealthCheckStarting describes the time between when the container starts
16
// and the start-period (time allowed for the container to start and application
17
// to be running) expires.
18
HealthCheckStarting string = "starting"
21
// HealthCheckStatus represents the current state of a container
22
type HealthCheckStatus int
25
// HealthCheckSuccess means the health worked
26
HealthCheckSuccess HealthCheckStatus = iota
27
// HealthCheckFailure means the health ran and failed
28
HealthCheckFailure HealthCheckStatus = iota
29
// HealthCheckContainerStopped means the health check cannot
30
// be run because the container is stopped
31
HealthCheckContainerStopped HealthCheckStatus = iota
32
// HealthCheckContainerNotFound means the container could
33
// not be found in local store
34
HealthCheckContainerNotFound HealthCheckStatus = iota
35
// HealthCheckNotDefined means the container has no health
36
// check defined in it
37
HealthCheckNotDefined HealthCheckStatus = iota
38
// HealthCheckInternalError means some something failed obtaining or running
39
// a given health check
40
HealthCheckInternalError HealthCheckStatus = iota
41
// HealthCheckDefined means the healthcheck was found on the container
42
HealthCheckDefined HealthCheckStatus = iota
43
// HealthCheckStartup means the healthcheck was unhealthy, but is still
44
// either within the startup HC or the startup period of the healthcheck
45
HealthCheckStartup HealthCheckStatus = iota
48
// Healthcheck defaults. These are used both in the cli as well in
49
// libpod and were moved from cmd/podman/common
51
// DefaultHealthCheckInterval default value
52
DefaultHealthCheckInterval = "30s"
53
// DefaultHealthCheckRetries default value
54
DefaultHealthCheckRetries uint = 3
55
// DefaultHealthCheckStartPeriod default value
56
DefaultHealthCheckStartPeriod = "0s"
57
// DefaultHealthCheckTimeout default value
58
DefaultHealthCheckTimeout = "30s"
61
// HealthConfig.Test options
63
// HealthConfigTestNone disables healthcheck
64
HealthConfigTestNone = "NONE"
65
// HealthConfigTestCmd execs arguments directly
66
HealthConfigTestCmd = "CMD"
67
// HealthConfigTestCmdShell runs commands with the system's default shell
68
HealthConfigTestCmdShell = "CMD-SHELL"
71
// HealthCheckOnFailureAction defines how Podman reacts when a container's health
72
// status turns unhealthy.
73
type HealthCheckOnFailureAction int
75
// Healthcheck on-failure actions.
77
// HealthCheckOnFailureActionNonce instructs Podman to not react on an unhealthy status.
78
HealthCheckOnFailureActionNone = iota // Must be first iota for backwards compatibility
79
// HealthCheckOnFailureActionInvalid denotes an invalid on-failure policy.
80
HealthCheckOnFailureActionInvalid = iota
81
// HealthCheckOnFailureActionNonce instructs Podman to kill the container on an unhealthy status.
82
HealthCheckOnFailureActionKill = iota
83
// HealthCheckOnFailureActionNonce instructs Podman to restart the container on an unhealthy status.
84
HealthCheckOnFailureActionRestart = iota
85
// HealthCheckOnFailureActionNonce instructs Podman to stop the container on an unhealthy status.
86
HealthCheckOnFailureActionStop = iota
89
// String representations for on-failure actions.
91
strHealthCheckOnFailureActionNone = "none"
92
strHealthCheckOnFailureActionInvalid = "invalid"
93
strHealthCheckOnFailureActionKill = "kill"
94
strHealthCheckOnFailureActionRestart = "restart"
95
strHealthCheckOnFailureActionStop = "stop"
98
// SupportedHealthCheckOnFailureActions lists all supported healthcheck restart policies.
99
var SupportedHealthCheckOnFailureActions = []string{
100
strHealthCheckOnFailureActionNone,
101
strHealthCheckOnFailureActionKill,
102
strHealthCheckOnFailureActionRestart,
103
strHealthCheckOnFailureActionStop,
106
// String returns the string representation of the HealthCheckOnFailureAction.
107
func (h HealthCheckOnFailureAction) String() string {
109
case HealthCheckOnFailureActionNone:
110
return strHealthCheckOnFailureActionNone
111
case HealthCheckOnFailureActionKill:
112
return strHealthCheckOnFailureActionKill
113
case HealthCheckOnFailureActionRestart:
114
return strHealthCheckOnFailureActionRestart
115
case HealthCheckOnFailureActionStop:
116
return strHealthCheckOnFailureActionStop
118
return strHealthCheckOnFailureActionInvalid
122
// ParseHealthCheckOnFailureAction parses the specified string into a HealthCheckOnFailureAction.
123
// An error is returned for an invalid input.
124
func ParseHealthCheckOnFailureAction(s string) (HealthCheckOnFailureAction, error) {
126
case "", strHealthCheckOnFailureActionNone:
127
return HealthCheckOnFailureActionNone, nil
128
case strHealthCheckOnFailureActionKill:
129
return HealthCheckOnFailureActionKill, nil
130
case strHealthCheckOnFailureActionRestart:
131
return HealthCheckOnFailureActionRestart, nil
132
case strHealthCheckOnFailureActionStop:
133
return HealthCheckOnFailureActionStop, nil
135
err := fmt.Errorf("invalid on-failure action %q for health check: supported actions are %s", s, strings.Join(SupportedHealthCheckOnFailureActions, ","))
136
return HealthCheckOnFailureActionInvalid, err
140
// StartupHealthCheck is the configuration of a startup healthcheck.
141
type StartupHealthCheck struct {
142
manifest.Schema2HealthConfig
143
// Successes are the number of successes required to mark the startup HC
145
// If set to 0, a single success will mark the HC as passed.
146
Successes int `json:",omitempty"`