package com.github.dockerjava.core.command; import static com.google.common.base.Preconditions.checkNotNull; import java.util.Map; import com.fasterxml.jackson.annotation.JsonProperty; import com.github.dockerjava.api.command.CommitCmd; import com.github.dockerjava.api.exception.NotFoundException; import com.github.dockerjava.api.model.ExposedPorts; import com.github.dockerjava.api.model.Volumes; /** * * Create a new image from a container's changes. Returns the new image ID. * */ public class CommitCmdImpl extends AbstrDockerCmd<CommitCmd, String> implements CommitCmd { private String containerId, repository, tag, message, author; private Boolean pause = true; @JsonProperty("AttachStdin") private Boolean attachStdin; @JsonProperty("AttachStdout") private Boolean attachStdout; @JsonProperty("AttachStderr") private Boolean attachStderr; @JsonProperty("Cmd") private String[] cmd; @JsonProperty("DisableNetwork") private Boolean disableNetwork; @JsonProperty("Env") private String[] env; @JsonProperty("ExposedPorts") private ExposedPorts exposedPorts; @JsonProperty("Hostname") private String hostname; /** * @since 1.19 */ @JsonProperty("Labels") private Map<String, String> labels; @JsonProperty("Memory") private Integer memory; @JsonProperty("MemorySwap") private Integer memorySwap; @JsonProperty("OpenStdin") private Boolean openStdin; @JsonProperty("PortSpecs") private String[] portSpecs; @JsonProperty("StdinOnce") private Boolean stdinOnce; @JsonProperty("Tty") private Boolean tty; @JsonProperty("User") private String user; @JsonProperty("Volumes") private Volumes volumes; @JsonProperty("WorkingDir") private String workingDir; public CommitCmdImpl(CommitCmd.Exec exec, String containerId) { super(exec); withContainerId(containerId); } @Override public String getContainerId() { return containerId; } @Override public CommitCmdImpl withContainerId(String containerId) { checkNotNull(containerId, "containerId was not specified"); this.containerId = containerId; return this; } @Override public String getRepository() { return repository; } @Override public String getTag() { return tag; } @Override public String getMessage() { return message; } @Override public String getAuthor() { return author; } @Override public Boolean hasPauseEnabled() { return pause; } @Override public CommitCmdImpl withAttachStderr(Boolean attachStderr) { this.attachStderr = attachStderr; return this; } @Override public CommitCmdImpl withAttachStdin(Boolean attachStdin) { this.attachStdin = attachStdin; return this; } @Override public CommitCmdImpl withAttachStdout(Boolean attachStdout) { this.attachStdout = attachStdout; return this; } @Override public CommitCmdImpl withCmd(String... cmd) { checkNotNull(cmd, "cmd was not specified"); this.cmd = cmd; return this; } @Override public CommitCmdImpl withDisableNetwork(Boolean disableNetwork) { this.disableNetwork = disableNetwork; return this; } @Override public CommitCmdImpl withAuthor(String author) { checkNotNull(author, "author was not specified"); this.author = author; return this; } @Override public CommitCmdImpl withMessage(String message) { checkNotNull(message, "message was not specified"); this.message = message; return this; } @Override public CommitCmdImpl withTag(String tag) { checkNotNull(tag, "tag was not specified"); this.tag = tag; return this; } @Override public CommitCmdImpl withRepository(String repository) { checkNotNull(repository, "repository was not specified"); this.repository = repository; return this; } @Override public CommitCmdImpl withPause(Boolean pause) { this.pause = pause; return this; } @Override public String[] getEnv() { return env; } @Override public CommitCmdImpl withEnv(String... env) { checkNotNull(env, "env was not specified"); this.env = env; return this; } @Override public Map<String, String> getLabels() { return labels; } @Override public CommitCmdImpl withLabels(Map<String, String> labels) { this.labels = labels; return this; } @Override public ExposedPorts getExposedPorts() { return exposedPorts; } @Override public CommitCmdImpl withExposedPorts(ExposedPorts exposedPorts) { checkNotNull(exposedPorts, "exposedPorts was not specified"); this.exposedPorts = exposedPorts; return this; } @Override public String getHostname() { return hostname; } @Override public CommitCmdImpl withHostname(String hostname) { checkNotNull(hostname, "hostname was not specified"); this.hostname = hostname; return this; } @Override public Integer getMemory() { return memory; } @Override public CommitCmdImpl withMemory(Integer memory) { checkNotNull(memory, "memory was not specified"); this.memory = memory; return this; } @Override public Integer getMemorySwap() { return memorySwap; } @Override public CommitCmdImpl withMemorySwap(Integer memorySwap) { checkNotNull(memorySwap, "memorySwap was not specified"); this.memorySwap = memorySwap; return this; } @Override public Boolean isOpenStdin() { return openStdin; } @Override public CommitCmdImpl withOpenStdin(Boolean openStdin) { checkNotNull(openStdin, "openStdin was not specified"); this.openStdin = openStdin; return this; } @Override public String[] getPortSpecs() { return portSpecs; } @Override public CommitCmdImpl withPortSpecs(String... portSpecs) { checkNotNull(portSpecs, "portSpecs was not specified"); this.portSpecs = portSpecs; return this; } @Override public Boolean isStdinOnce() { return stdinOnce; } @Override public CommitCmdImpl withStdinOnce(Boolean stdinOnce) { this.stdinOnce = stdinOnce; return this; } @Override public Boolean isTty() { return tty; } @Override public CommitCmdImpl withTty(Boolean tty) { this.tty = tty; return this; } @Override public String getUser() { return user; } @Override public CommitCmdImpl withUser(String user) { checkNotNull(user, "user was not specified"); this.user = user; return this; } @Override public Volumes getVolumes() { return volumes; } @Override public CommitCmdImpl withVolumes(Volumes volumes) { checkNotNull(volumes, "volumes was not specified"); this.volumes = volumes; return this; } @Override public String getWorkingDir() { return workingDir; } @Override public CommitCmdImpl withWorkingDir(String workingDir) { checkNotNull(workingDir, "workingDir was not specified"); this.workingDir = workingDir; return this; } /** * @throws NotFoundException * No such container */ @Override public String exec() throws NotFoundException { return super.exec(); } }