package com.nirima.jenkins.plugins.docker.builder;
import com.nirima.jenkins.plugins.docker.utils.JenkinsUtils;
import hudson.Launcher;
import hudson.model.Build;
import hudson.model.Run;
import shaded.com.google.common.base.Strings;
import com.github.dockerjava.api.DockerClient;
import com.nirima.jenkins.plugins.docker.DockerCloud;
import com.nirima.jenkins.plugins.docker.DockerSlave;
import hudson.model.AbstractBuild;
import hudson.model.Node;
import jenkins.model.Jenkins;
import shaded.com.google.common.base.Optional;
import javax.annotation.Nonnull;
/**
* Abstract class for cloud based container "control" actions
*
* @author magnayn
*/
public abstract class DockerBuilderControlCloudOption extends DockerBuilderControlOption {
public final String cloudName;
protected DockerBuilderControlCloudOption(String cloudName) {
this.cloudName = cloudName;
}
public String getCloudName() {
return cloudName;
}
protected @Nonnull DockerCloud getCloud(Run<?, ?> build, Launcher launcher) {
// Did we specify?
if (!Strings.isNullOrEmpty(cloudName)) {
DockerCloud specifiedCloud = (DockerCloud)Jenkins.getInstance().getCloud(cloudName);
if( specifiedCloud == null )
throw new IllegalStateException("Could not find a cloud named " + cloudName);
return specifiedCloud;
}
// Otherwise default to where we ran
Optional<DockerCloud> cloud = JenkinsUtils.getCloudThatWeBuiltOn(build, launcher);
if (!cloud.isPresent()) {
throw new IllegalStateException("Cannot list cloud for docker action");
}
return cloud.get();
}
}