package it.dockins.dockerslaves.drivers;
import hudson.Extension;
import hudson.model.Job;
import hudson.util.ListBoxModel;
import it.dockins.dockerslaves.DefaultDockerHostSource;
import it.dockins.dockerslaves.spi.DockerDriver;
import it.dockins.dockerslaves.spi.DockerDriverFactory;
import it.dockins.dockerslaves.spi.DockerDriverFactoryDescriptor;
import it.dockins.dockerslaves.spi.DockerHostConfig;
import it.dockins.dockerslaves.spi.DockerHostSource;
import org.jenkinsci.plugins.docker.commons.credentials.DockerServerEndpoint;
import org.kohsuke.stapler.DataBoundConstructor;
import javax.annotation.Nonnull;
import java.io.IOException;
/**
* A ${@link DockerDriverFactory} relying on plain good old Docker API usage.
*
* @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a>
*/
public class PlainDockerAPIDockerDriverFactory extends DockerDriverFactory {
private final DockerHostSource dockerHostSource;
@DataBoundConstructor
public PlainDockerAPIDockerDriverFactory(DockerHostSource dockerHostSource) {
this.dockerHostSource = dockerHostSource;
}
public PlainDockerAPIDockerDriverFactory(DockerServerEndpoint dockerHost) {
this(new DefaultDockerHostSource(dockerHost));
}
public DockerHostSource getDockerHostSource() {
return dockerHostSource;
}
@Override
public DockerDriver forJob(Job context) throws IOException, InterruptedException {
return new CliDockerDriver(dockerHostSource.getDockerHost(context));
}
@Extension
public static class DescriptorImp extends DockerDriverFactoryDescriptor {
@Nonnull
@Override
public String getDisplayName() {
return "Docker CLI (require docker executable on PATH)";
}
}
}