package it.dockins.dockerslaves.spi; import hudson.model.AbstractDescribableImpl; import hudson.model.Job; import it.dockins.dockerslaves.spec.ContainerDefinitionDescriptor; import it.dockins.dockerslaves.spec.ContainerSetDefinition; import it.dockins.dockerslaves.spec.DockerSocketContainerDefinition; import java.io.IOException; /** * This component is responsible to orchestrate the provisioning of a build environment based on configured * {@link ContainerSetDefinition} for specified {@link Job}. * * @author <a href="mailto:nicolas.deloof@gmail.com">Nicolas De Loof</a> */ public abstract class DockerProvisionerFactory extends AbstractDescribableImpl<DockerProvisionerFactory> { public abstract DockerProvisioner createProvisionerForClassicJob(Job job, ContainerSetDefinition spec) throws IOException, InterruptedException; public abstract DockerProvisioner createProvisionerForPipeline(Job job, ContainerSetDefinition spec) throws IOException, InterruptedException; public boolean canBeUsedAsMainContainer(ContainerDefinitionDescriptor d) { return d.clazz != DockerSocketContainerDefinition.class; } public boolean canBeUsedAsSideContainer(ContainerDefinitionDescriptor d) { return true; } }