Skip to content

Commit

Permalink
Add node filter parameter processing to /job/run and /run/command and…
Browse files Browse the repository at this point in the history
… /run/script api methods. modify /job/run to return common execution info via ExecutionController.renderApiExecutionListResultXML
  • Loading branch information
gschueler committed Feb 14, 2011
1 parent dbf0063 commit 01ee98c
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 19 deletions.
Expand Up @@ -2246,7 +2246,7 @@ class ScheduledExecutionController {
try{
e= executionService.createExecution(scheduledExecution,framework,params.user,extra)
eid=scheduledExecutionService.scheduleTempJob(scheduledExecution,params.user,rolelist,e);
return [executionId:eid,name:scheduledExecution.jobName]
return [executionId:eid,name:scheduledExecution.jobName, execution:e]
}catch(ExecutionServiceValidationException exc){
return [error:'invalid',message:exc.getMessage(),options:exc.getOptions(),errors:exc.getErrors()]
}catch(ExecutionServiceException exc){
Expand Down Expand Up @@ -2458,29 +2458,23 @@ class ScheduledExecutionController {
params["user"] = (session?.user) ? session.user : "anonymous"
def rolelist = (session?.roles) ? session.roles : []

//TODO: convert input parameter names for node filters?
//XXX: arguments are supposed to be "extra.argString"
if(params.argString){
params.extra.argString=params.argString
}
//convert api parameters to node filter parameters
def filters=FrameworkController.extractApiNodeFilterParams(params)
if(filters){
filters.each{k,v->
extra['extra.'+k]=v
}
}

def result = executeScheduledExecution(scheduledExecution, framework, rolelist, params)
if (result.error) {
flash.error = result.message
return chain(controller: "api", action: "error")
}
return new ApiController().success {delegate ->
delegate.'success' {
message("Execution started: ${result.executionId}")
}
delegate.'succeeded'(count: 1) {
execution(index: 0) {
id(result.executionId)
name(result.name)
url(g.createLink(controller: 'execution', action: 'follow', id: result.executionId))
}
}
}
return new ExecutionController().renderApiExecutionListResultXML([result.execution])
}
/**
* API: DELETE job definition: /job/{id}, version 1.2
Expand Down Expand Up @@ -2545,6 +2539,13 @@ class ScheduledExecutionController {
params.workflow=new Workflow(commands:[new CommandExec(adhocRemoteString:params.remove('exec'), adhocExecution:true)])
params.description=params.description?:""

//convert api parameters to node filter parameters
def filters=FrameworkController.extractApiNodeFilterParams(params)
if(filters){
filters.each{k,v->
params[k]=v
}
}

def results=runAdhoc()
if(results.failed){
Expand Down Expand Up @@ -2606,6 +2607,13 @@ class ScheduledExecutionController {
params.workflow=new Workflow(commands:[new CommandExec(adhocLocalString:script, adhocExecution:true, argString:params.argString)])
params.description=params.description?:""

//convert api parameters to node filter parameters
def filters=FrameworkController.extractApiNodeFilterParams(params)
if(filters){
filters.each{k,v->
params[k]=v
}
}

def results=runAdhoc()
if(results.failed){
Expand Down
8 changes: 4 additions & 4 deletions test/api/test-job-run.sh
Expand Up @@ -116,13 +116,13 @@ sh $DIR/api-test-success.sh $DIR/curl.out || exit 2

#get execid

execid=$($XMLSTARLET sel -T -t -v "/result/succeeded/execution/id" $DIR/curl.out)
sucmsg=$($XMLSTARLET sel -T -t -v "/result/success/message" $DIR/curl.out)
execcount=$($XMLSTARLET sel -T -t -v "/result/executions/@count" $DIR/curl.out)
execid=$($XMLSTARLET sel -T -t -v "/result/executions/execution/@id" $DIR/curl.out)

if [ "" != "${execid}" -a "Execution started: ${execid}" == "$sucmsg" ] ; then
if [ "1" == "${execcount}" -a "" != "${execid}" ] ; then
echo "OK"
else
errorMsg "FAIL: expected delete success message"
errorMsg "FAIL: expected run success message for execution id. (count: ${execcount}, id: ${execid})"
exit 2
fi

Expand Down

0 comments on commit 01ee98c

Please sign in to comment.