package org.jenkinsci.plugins.dockerbuildstep.cmd; import hudson.Extension; import hudson.model.AbstractBuild; import java.util.Arrays; import java.util.List; import org.jenkinsci.plugins.dockerbuildstep.log.ConsoleLogger; import org.jenkinsci.plugins.dockerbuildstep.util.Resolver; import org.kohsuke.stapler.DataBoundConstructor; import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.api.exception.DockerException; /** * This command restarts specified Docker container(s). * * @see http://docs.docker.com/reference/api/docker_remote_api_v1.13/#restart-a-container * * @author vjuranek * */ public class RestartCommand extends DockerCommand { private final String containerIds; private final int timeout; @DataBoundConstructor public RestartCommand(String containerIds, int timeout) { this.containerIds = containerIds; this.timeout = timeout; } public String getContainerIds() { return containerIds; } public int getTimeout() { return timeout; } @Override public void execute(@SuppressWarnings("rawtypes") AbstractBuild build, ConsoleLogger console) throws DockerException { if (containerIds == null || containerIds.isEmpty()) { throw new IllegalArgumentException("At least one parameter is required"); } String containerIdsRes = Resolver.buildVar(build, containerIds); List<String> ids = Arrays.asList(containerIdsRes.split(",")); DockerClient client = getClient(build, null); for(String id : ids) { id = id.trim(); client.restartContainerCmd(id).withtTimeout(timeout).exec(); console.logInfo("restarted container id " + id); } } @Extension public static class RestartCommandDescriptor extends DockerCommandDescriptor { @Override public String getDisplayName() { return "Restart container(s)"; } } }