package org.jenkinsci.plugins.ansible.jobdsl;
import hudson.Extension;
import javaposse.jobdsl.dsl.helpers.step.StepContext;
import javaposse.jobdsl.plugin.ContextExtensionPoint;
import javaposse.jobdsl.plugin.DslExtensionMethod;
import org.jenkinsci.plugins.ansible.AnsibleAdHocCommandBuilder;
import org.jenkinsci.plugins.ansible.AnsiblePlaybookBuilder;
import org.jenkinsci.plugins.ansible.jobdsl.context.AnsibleContext;
/**
* @author lanwen (Merkushev Kirill)
*/
@Extension(optional = true)
public class AnsibleJobDslExtension extends ContextExtensionPoint {
@DslExtensionMethod(context = StepContext.class)
public Object ansibleAdHoc(String module, String command, Runnable closure) {
AnsibleContext context = new AnsibleContext();
executeInContext(closure, context);
AnsibleAdHocCommandBuilder adhoc = new AnsibleAdHocCommandBuilder(
context.getHostPattern(), context.getInventory(), module, command
);
adhoc.setAdditionalParameters(context.getAdditionalParameters());
adhoc.setAnsibleName(context.getAnsibleName());
adhoc.setCredentialsId(context.getCredentialsId());
adhoc.setColorizedOutput(context.isColorizedOutput());
adhoc.setForks(context.getForks());
adhoc.setHostKeyChecking(context.isHostKeyChecking());
adhoc.setSudo(context.isSudo());
adhoc.setSudoUser(context.getSudoUser());
adhoc.setUnbufferedOutput(context.isUnbufferedOutput());
return adhoc;
}
@DslExtensionMethod(context = StepContext.class)
public Object ansiblePlaybook(String playbook, Runnable closure) {
AnsibleContext context = new AnsibleContext();
executeInContext(closure, context);
AnsiblePlaybookBuilder plbook = new AnsiblePlaybookBuilder(playbook, context.getInventory());
plbook.setAdditionalParameters(context.getAdditionalParameters());
plbook.setAnsibleName(context.getAnsibleName());
plbook.setCredentialsId(context.getCredentialsId());
plbook.setColorizedOutput(context.isColorizedOutput());
plbook.setForks(context.getForks());
plbook.setHostKeyChecking(context.isHostKeyChecking());
plbook.setSudo(context.isSudo());
plbook.setSudoUser(context.getSudoUser());
plbook.setUnbufferedOutput(context.isUnbufferedOutput());
plbook.setLimit(context.getLimit());
plbook.setTags(context.getTags());
plbook.setSkippedTags(context.getSkippedTags());
plbook.setStartAtTask(context.getStartAtTask());
return plbook;
}
}