All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fitbur.github.dockerjava.api.model.RestartPolicy Maven / Gradle / Ivy

There is a newer version: 1.0.0
Show newest version
package com.fitbur.github.dockerjava.api.model;

import static com.fitbur.google.com.fitburmon.base.Preconditions.checkNotNull;

import com.fitbur.apache.com.fitburmons.lang.builder.EqualsBuilder;
import com.fitbur.apache.com.fitburmons.lang.builder.HashCodeBuilder;

import com.fitbur.fasterxml.jackson.annotation.JsonProperty;

/**
 * Container restart policy
 * 
 * 
*
no
*
Do not restart the container if it dies. (com.fitburfault)
* *
on-failure
*
Restart the container if it exits with a non-zero exit code. Can also accept an optional maximum restart count * (e.g. on-failure:5). *
* *
always
*
Always restart the container no matter what exit code is returned. *
*
* * @author marcus * */ public class RestartPolicy { @JsonProperty("MaximumRetryCount") private int maximumRetryCount = 0; @JsonProperty("Name") private String name = ""; public RestartPolicy() { } private RestartPolicy(int maximumRetryCount, String name) { checkNotNull(name, "name is null"); this.maximumRetryCount = maximumRetryCount; this.name = name; } /** * Do not restart the container if it dies. (com.fitburfault) */ public static RestartPolicy noRestart() { return new RestartPolicy(); } /** * Always restart the container no matter what exit code is returned. */ public static RestartPolicy alwaysRestart() { return new RestartPolicy(0, "always"); } /** * Restart the container if it exits with a non-zero exit code. * * @param maximumRetryCount * the maximum number of restarts. Set to 0 for unlimited retries. */ public static RestartPolicy onFailureRestart(int maximumRetryCount) { return new RestartPolicy(maximumRetryCount, "on-failure"); } public int getMaximumRetryCount() { return maximumRetryCount; } public String getName() { return name; } /** * Parses a textual restart polixy specification (as used by the Docker CLI) to a {@link RestartPolicy}. * * @param serialized * the specification, e.g. on-failure:2 * @return a {@link RestartPolicy} matching the specification * @throws IllegalArgumentException * if the specification cannot be parsed */ public static RestartPolicy parse(String serialized) throws IllegalArgumentException { try { String[] parts = serialized.split(":"); String name = parts[0]; if ("no".equals(name)) return noRestart(); if ("always".equals(name)) return alwaysRestart(); if ("on-failure".equals(name)) { int count = 0; if (parts.length == 2) { count = Integer.parseInt(parts[1]); } return onFailureRestart(count); } throw new IllegalArgumentException(); } catch (Exception e) { throw new IllegalArgumentException("Error parsing RestartPolicy '" + serialized + "'"); } } /** * Returns a string representation of this {@link RestartPolicy}. The format is name[:count], like the * argument in {@link #parse(String)}. * * @return a string representation of this {@link RestartPolicy} */ @Override public String toString() { String result = name.isEmpty() ? "no" : name; return maximumRetryCount > 0 ? result + ":" + maximumRetryCount : result; } @Override public boolean equals(Object obj) { if (obj instanceof RestartPolicy) { RestartPolicy other = (RestartPolicy) obj; return new EqualsBuilder().append(maximumRetryCount, other.getMaximumRetryCount()) .append(name, other.getName()).isEquals(); } else return super.equals(obj); } @Override public int hashCode() { return new HashCodeBuilder().append(maximumRetryCount).append(name).toHashCode(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy