package com.nirima.jenkins.plugins.docker;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.export.Exported;
import hudson.Extension;
import hudson.model.Describable;
import hudson.model.Descriptor;
import hudson.util.FormValidation;
import jenkins.model.Jenkins;
/**
* Represents an own section to specify a Docker Template in job configuration.
*
* @author Ingo Rissmann
*/
public class DockerJobTemplateProperty implements Describable<DockerJobTemplateProperty> {
public final String cloudname;
public final DockerTemplate template;
@DataBoundConstructor
public DockerJobTemplateProperty(String cloudname, DockerTemplate template) {
this.cloudname = cloudname;
this.template = template;
}
@Exported
public String getCloudname() {
return cloudname;
}
@Exported
public DockerTemplate getTemplate() {
return template;
}
@Override
public Descriptor<DockerJobTemplateProperty> getDescriptor() {
return (DescriptorImpl) Jenkins.getInstance().getDescriptor(DockerJobTemplateProperty.class);
}
@Extension
public static class DescriptorImpl extends Descriptor<DockerJobTemplateProperty> {
@Override
public String getDisplayName() {
return "Docker Job Image Property";
}
/**
* Validates the given name of the Docker Cloud. It checks against the
* global defined Docker clouds.
*
* @param cloudname
* Name of the cloud to use.
* @return Returns an error message if the given <code>cloudname</code>
* is not defined in the global Docker configuration.
*/
public FormValidation doCheckCloudname(@QueryParameter String cloudname) {
if (DockerCloud.getCloudByName(cloudname) == null) {
return FormValidation.error("Cloud doesn't exists.", cloudname);
}
return FormValidation.ok();
}
}
}