1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Merge pull request #13277 from runcom/restartpolicy-methods

RestartPolicy methods instead of strings checking
This commit is contained in:
Brian Goff 2015-05-18 14:36:54 -04:00
commit 3b69ca5b97
4 changed files with 18 additions and 6 deletions

View file

@ -122,7 +122,7 @@ func (cli *DockerCli) CmdRun(args ...string) error {
fmt.Fprintf(cli.out, "%s\n", createResponse.ID)
}()
}
if *flAutoRemove && (hostConfig.RestartPolicy.Name == "always" || hostConfig.RestartPolicy.Name == "on-failure") {
if *flAutoRemove && (hostConfig.RestartPolicy.IsAlways() || hostConfig.RestartPolicy.IsOnFailure()) {
return ErrConflictRestartPolicyAndAutoRemove
}
// We need to instantiate the chan because the select needs it. It can

View file

@ -325,8 +325,8 @@ func (daemon *Daemon) restore() error {
logrus.Debug("Restarting containers...")
for _, container := range registeredContainers {
if container.hostConfig.RestartPolicy.Name == "always" ||
(container.hostConfig.RestartPolicy.Name == "on-failure" && container.ExitCode != 0) {
if container.hostConfig.RestartPolicy.IsAlways() ||
(container.hostConfig.RestartPolicy.IsOnFailure() && container.ExitCode != 0) {
logrus.Debugf("Starting container %s", container.ID)
if err := container.Start(); err != nil {

View file

@ -223,10 +223,10 @@ func (m *containerMonitor) shouldRestart(exitCode int) bool {
return false
}
switch m.restartPolicy.Name {
case "always":
switch {
case m.restartPolicy.IsAlways():
return true
case "on-failure":
case m.restartPolicy.IsOnFailure():
// the default value of 0 for MaximumRetryCount means that we will not enforce a maximum count
if max := m.restartPolicy.MaximumRetryCount; max != 0 && m.failureCount > max {
logrus.Debugf("stopping restart of container %s because maximum failure could of %d has been reached",

View file

@ -129,6 +129,18 @@ type RestartPolicy struct {
MaximumRetryCount int
}
func (rp *RestartPolicy) IsNone() bool {
return rp.Name == "no"
}
func (rp *RestartPolicy) IsAlways() bool {
return rp.Name == "always"
}
func (rp *RestartPolicy) IsOnFailure() bool {
return rp.Name == "on-failure"
}
type LogConfig struct {
Type string
Config map[string]string