mirror of https://github.com/containers/podman.git
				
				
				
			
		
			
				
	
	
		
			65 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
package docker
 | 
						|
 | 
						|
import (
 | 
						|
	"errors"
 | 
						|
	"fmt"
 | 
						|
	"net/http"
 | 
						|
)
 | 
						|
 | 
						|
// RestartPolicy represents the policy for automatically restarting a container.
 | 
						|
//
 | 
						|
// Possible values are:
 | 
						|
//
 | 
						|
//   - always: the docker daemon will always restart the container
 | 
						|
//   - on-failure: the docker daemon will restart the container on failures, at
 | 
						|
//     most MaximumRetryCount times
 | 
						|
//   - unless-stopped: the docker daemon will always restart the container except
 | 
						|
//     when user has manually stopped the container
 | 
						|
//   - no: the docker daemon will not restart the container automatically
 | 
						|
type RestartPolicy struct {
 | 
						|
	Name              string `json:"Name,omitempty" yaml:"Name,omitempty" toml:"Name,omitempty"`
 | 
						|
	MaximumRetryCount int    `json:"MaximumRetryCount,omitempty" yaml:"MaximumRetryCount,omitempty" toml:"MaximumRetryCount,omitempty"`
 | 
						|
}
 | 
						|
 | 
						|
// AlwaysRestart returns a restart policy that tells the Docker daemon to
 | 
						|
// always restart the container.
 | 
						|
func AlwaysRestart() RestartPolicy {
 | 
						|
	return RestartPolicy{Name: "always"}
 | 
						|
}
 | 
						|
 | 
						|
// RestartOnFailure returns a restart policy that tells the Docker daemon to
 | 
						|
// restart the container on failures, trying at most maxRetry times.
 | 
						|
func RestartOnFailure(maxRetry int) RestartPolicy {
 | 
						|
	return RestartPolicy{Name: "on-failure", MaximumRetryCount: maxRetry}
 | 
						|
}
 | 
						|
 | 
						|
// RestartUnlessStopped returns a restart policy that tells the Docker daemon to
 | 
						|
// always restart the container except when user has manually stopped the container.
 | 
						|
func RestartUnlessStopped() RestartPolicy {
 | 
						|
	return RestartPolicy{Name: "unless-stopped"}
 | 
						|
}
 | 
						|
 | 
						|
// NeverRestart returns a restart policy that tells the Docker daemon to never
 | 
						|
// restart the container on failures.
 | 
						|
func NeverRestart() RestartPolicy {
 | 
						|
	return RestartPolicy{Name: "no"}
 | 
						|
}
 | 
						|
 | 
						|
// RestartContainer stops a container, killing it after the given timeout (in
 | 
						|
// seconds), during the stop process.
 | 
						|
//
 | 
						|
// See https://goo.gl/MrAKQ5 for more details.
 | 
						|
func (c *Client) RestartContainer(id string, timeout uint) error {
 | 
						|
	path := fmt.Sprintf("/containers/%s/restart?t=%d", id, timeout)
 | 
						|
	resp, err := c.do(http.MethodPost, path, doOptions{})
 | 
						|
	if err != nil {
 | 
						|
		var e *Error
 | 
						|
		if errors.As(err, &e) && e.Status == http.StatusNotFound {
 | 
						|
			return &NoSuchContainer{ID: id}
 | 
						|
		}
 | 
						|
		return err
 | 
						|
	}
 | 
						|
	resp.Body.Close()
 | 
						|
	return nil
 | 
						|
}
 |