package com.nirima.jenkins.plugins.docker.builder;
import com.github.dockerjava.api.exception.DockerException;
import com.nirima.jenkins.plugins.docker.action.DockerLaunchAction;
import hudson.Launcher;
import hudson.model.*;
import jenkins.model.Jenkins;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
/**
* Root abstract class for DockerBuilderControls
*
* @author magnayn
*/
public abstract class DockerBuilderControlOption implements Describable<DockerBuilderControlOption>, Serializable {
public abstract void execute(Run<?, ?> build, Launcher launcher, TaskListener listener)
throws DockerException;
/**
* @return first DockerLaunchAction attached to build
*/
protected DockerLaunchAction getLaunchAction(Run<?, ?> build) {
List<DockerLaunchAction> launchActionList = build.getActions(DockerLaunchAction.class);
DockerLaunchAction launchAction;
if (launchActionList.size() > 0 ) {
launchAction = launchActionList.get(0);
} else {
launchAction = new DockerLaunchAction();
build.addAction(launchAction);
}
return launchAction;
}
@SuppressWarnings({"unchecked", "rawtypes"})
public Descriptor<DockerBuilderControlOption> getDescriptor() {
return Jenkins.getInstance().getDescriptorOrDie(getClass());
}
}