Skip to content

Commit

Permalink
Remove ant cruft and handle BuildException
Browse files Browse the repository at this point in the history
  • Loading branch information
gschueler committed Apr 6, 2011
1 parent 5e166d2 commit 109b2aa
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import com.dtolabs.rundeck.core.execution.service.NodeExecutorResult;
import com.dtolabs.rundeck.core.tasks.net.ExtSSHExec;
import com.dtolabs.rundeck.core.tasks.net.SSHTaskBuilder;
import com.sun.xml.internal.rngom.ast.builder.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.Sequential;
Expand Down Expand Up @@ -66,7 +67,7 @@ public NodeExecutorResult executeCommand(ExecutionContext context, String[] comm
"Username must be set to connect to remote node '" + node.getNodename() + "'");
}


final ExecutionListener listener = context.getExecutionListener();
final Project project = new Project();
AntSupport.addAntBuildListener(listener, project);
Expand All @@ -76,11 +77,12 @@ public NodeExecutorResult executeCommand(ExecutionContext context, String[] comm
try {
//perform jsch sssh command
sshexec = buildSSHTask(context, node, command, project, framework);
final Task taskSequence = createRemoteTaskSequence(node, project, sshexec);
taskSequence.execute();
sshexec.execute();
success = true;
} catch (SSHTaskBuilder.BuilderException e) {
throw new ExecutionException(e);
} catch (BuildException e) {
throw new ExecutionException(e);
}
final int resultCode = sshexec.getExitStatus();
final boolean status = success;
Expand All @@ -103,27 +105,6 @@ public String toString() {
}



/**
* Create a Task which invokes the command by sending it to a remote node.
*
* @param nodeentry the node
* @param project the ant project
* @param sshexec
*
* @return the Task
*/
protected Task createRemoteTaskSequence(final INodeEntry nodeentry,
final Project project, final Task sshexec) {
final Sequential seq = new Sequential();
seq.setProject(project);
ParallelNodeDispatcher.addNodeContextTasks(nodeentry, project, seq);
seq.addTask(sshexec);
ParallelNodeDispatcher.addNodeContextSuccessReport(nodeentry, project, seq);
return seq;

}

private ExtSSHExec buildSSHTask(ExecutionContext context, INodeEntry nodeentry, String[] args, Project project,
Framework framework) throws SSHTaskBuilder.BuilderException {
//XXX:TODO use node attributes to specify ssh key/timeout
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import com.dtolabs.rundeck.core.execution.script.ExecTaskParameters;
import com.dtolabs.rundeck.core.execution.service.NodeExecutor;
import com.dtolabs.rundeck.core.execution.service.NodeExecutorResult;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.ExecTask;
Expand Down Expand Up @@ -77,9 +78,13 @@ public NodeExecutorResult executeCommand(final ExecutionContext context, final S
DataContextUtils.replaceDataReferences(command, dataContext)), dataContext);
execTask.setResultProperty(propName);

final Task task = createTaskSequence(node, project, execTask);
task.execute();
success = true;
try {
execTask.execute();
success = true;
} catch (BuildException e) {
throw new ExecutionException(e);
}

int result = success ? 0 : -1;
if (project.getProperty(propName) != null) {
try {
Expand All @@ -88,7 +93,7 @@ public NodeExecutorResult executeCommand(final ExecutionContext context, final S

}
}
final boolean status = success;
final boolean status = 0==result;
final int resultCode = result;
return new NodeExecutorResult() {
public int getResultCode() {
Expand All @@ -107,42 +112,14 @@ public String toString() {
};
}

/**
* Create a task to execute the command on the local node, using the specified exec task parameters and data
* context.
*
* @param nodeentry the node
* @param project ant project
* @param nestedTask
*
* @return a Task
*/
protected Task createTaskSequence(final INodeEntry nodeentry, final Project project,
final ExecTask nestedTask) throws
ExecutionException {
final Sequential seq = new Sequential();
seq.setProject(project);
ParallelNodeDispatcher.addNodeContextTasks(nodeentry, project, seq);

seq.addTask(nestedTask);

//add success report for current node execution, for use by parallel execution failed nodes listener
ParallelNodeDispatcher.addNodeContextSuccessReport(nodeentry, project, seq);

return seq;

}

private ExecTask buildExecTask(Project project, ExecTaskParameters taskParameters,
Map<String, Map<String, String>> dataContext) {
final ExecTask execTask = new ExecTask();
execTask.setTaskType("exec");
execTask.setFailonerror(true);
execTask.setFailonerror(false);
execTask.setProject(project);
final Commandline.Argument arg = execTask.createArg();

// verbose("exectask");

execTask.setExecutable(taskParameters.getCommandexecutable());
arg.setLine(taskParameters.getCommandargline());

Expand Down

0 comments on commit 109b2aa

Please sign in to comment.