|
From: <ha...@us...> - 2006-11-08 21:30:44
|
Revision: 1363
http://svn.sourceforge.net/cogkit/?rev=1363&view=rev
Author: hategan
Date: 2006-11-08 13:30:39 -0800 (Wed, 08 Nov 2006)
Log Message:
-----------
make sure args are strings
Modified Paths:
--------------
trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2006-11-08 21:30:15 UTC (rev 1362)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2006-11-08 21:30:39 UTC (rev 1363)
@@ -6,6 +6,7 @@
package org.globus.cog.karajan.workflow.nodes.grid;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -85,10 +86,10 @@
}
else if (name.equals(A_ARGS.getName()) || name.equals(A_ARGUMENTS.getName())) {
if (value instanceof List) {
- js.setArguments((List) value);
+ js.setArguments(stringify((List) value));
}
else if (value instanceof VariableArguments) {
- js.setArguments(((VariableArguments) value).getAll());
+ js.setArguments(stringify(((VariableArguments) value).getAll()));
}
else {
js.setArguments(TypeUtil.toString(value));
@@ -237,6 +238,15 @@
throw new ExecutionException("Exception caught while submitting job", e);
}
}
+
+ private List stringify(List l) {
+ ArrayList sl = new ArrayList(l.size());
+ Iterator i = l.iterator();
+ while (i.hasNext()) {
+ sl.add(TypeUtil.toString(i.next()));
+ }
+ return sl;
+ }
protected void taskFailed(StatusEvent e, VariableStack stack) throws ExecutionException {
Task task = (Task) e.getSource();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ha...@us...> - 2007-02-13 00:47:06
|
Revision: 1576
http://svn.sourceforge.net/cogkit/?rev=1576&view=rev
Author: hategan
Date: 2007-02-12 16:47:02 -0800 (Mon, 12 Feb 2007)
Log Message:
-----------
removed extra newlines
Modified Paths:
--------------
trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2007-02-12 23:55:03 UTC (rev 1575)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2007-02-13 00:47:02 UTC (rev 1576)
@@ -283,10 +283,10 @@
if (TypeUtil.toBoolean(A_REDIRECT.getValue(stack))) {
Task t = (Task) e.getSource();
if (t.getStdOutput() != null) {
- STDOUT.ret(stack, t.getStdOutput() + '\n');
+ STDOUT.ret(stack, t.getStdOutput());
}
if (t.getStdError() != null) {
- STDOUT.ret(stack, t.getStdError() + '\n');
+ STDOUT.ret(stack, t.getStdError());
}
}
super.taskCompleted(e, stack);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ha...@us...> - 2007-08-16 22:47:48
|
Revision: 1678
http://cogkit.svn.sourceforge.net/cogkit/?rev=1678&view=rev
Author: hategan
Date: 2007-08-16 15:47:46 -0700 (Thu, 16 Aug 2007)
Log Message:
-----------
stderr goes to stderr
Modified Paths:
--------------
trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2007-08-16 22:47:24 UTC (rev 1677)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2007-08-16 22:47:46 UTC (rev 1678)
@@ -286,7 +286,7 @@
STDOUT.ret(stack, t.getStdOutput());
}
if (t.getStdError() != null) {
- STDOUT.ret(stack, t.getStdError());
+ STDERR.ret(stack, t.getStdError());
}
}
super.taskCompleted(e, stack);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ha...@us...> - 2007-08-20 22:39:38
|
Revision: 1696
http://cogkit.svn.sourceforge.net/cogkit/?rev=1696&view=rev
Author: hategan
Date: 2007-08-20 15:39:11 -0700 (Mon, 20 Aug 2007)
Log Message:
-----------
added stdoutLocation, stderrLocation, and failOnJobError
Modified Paths:
--------------
trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2007-08-20 22:34:12 UTC (rev 1695)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2007-08-20 22:39:11 UTC (rev 1696)
@@ -15,9 +15,12 @@
import org.apache.log4j.Logger;
import org.globus.cog.abstraction.impl.common.StatusEvent;
+import org.globus.cog.abstraction.impl.common.execution.JobException;
import org.globus.cog.abstraction.impl.common.task.GenericTaskHandler;
import org.globus.cog.abstraction.impl.common.task.JobSpecificationImpl;
import org.globus.cog.abstraction.impl.common.task.TaskImpl;
+import org.globus.cog.abstraction.interfaces.FileLocation;
+import org.globus.cog.abstraction.interfaces.JobSpecification;
import org.globus.cog.abstraction.interfaces.Service;
import org.globus.cog.abstraction.interfaces.StatusListener;
import org.globus.cog.abstraction.interfaces.Task;
@@ -43,6 +46,8 @@
public static final Arg A_HOST = new Arg.Optional("host");
public static final Arg A_STDOUT = new Arg.Optional("stdout");
public static final Arg A_STDERR = new Arg.Optional("stderr");
+ public static final Arg A_STDOUTLOCATION = new Arg.Optional("stdoutLocation");
+ public static final Arg A_STDERRLOCATION = new Arg.Optional("stderrLocation");
public static final Arg A_STDIN = new Arg.Optional("stdin");
public static final Arg A_PROVIDER = new Arg.Optional("provider");
public static final Arg A_SECURITY_CONTEXT = new Arg.Optional("securitycontext");
@@ -62,13 +67,14 @@
public static final Arg A_DELEGATION = new Arg.Optional("delegation", Boolean.FALSE);
public static final Arg.Channel C_ENVIRONMENT = new Arg.Channel("environment");
public static final Arg A_ATTRIBUTES = new Arg.Optional("attributes", Collections.EMPTY_MAP);
+ public static final Arg A_FAIL_ON_JOB_ERROR = new Arg.Optional("failonjoberror", Boolean.TRUE);
static {
setArguments(GridExec.class, new Arg[] { A_EXECUTABLE, A_ARGS, A_ARGUMENTS, A_HOST,
- A_STDOUT, A_STDERR, A_STDIN, A_PROVIDER, A_COUNT, A_JOBTYPE, A_MAXTIME,
- A_MAXWALLTIME, A_MAXCPUTIME, A_ENVIRONMENT, A_QUEUE, A_PROJECT, A_MINMEMORY,
- A_MAXMEMORY, A_REDIRECT, A_SECURITY_CONTEXT, A_DIRECTORY, A_NATIVESPEC,
- A_DELEGATION, A_ATTRIBUTES, C_ENVIRONMENT });
+ A_STDOUT, A_STDERR, A_STDOUTLOCATION, A_STDERRLOCATION, A_STDIN, A_PROVIDER,
+ A_COUNT, A_JOBTYPE, A_MAXTIME, A_MAXWALLTIME, A_MAXCPUTIME, A_ENVIRONMENT, A_QUEUE,
+ A_PROJECT, A_MINMEMORY, A_MAXMEMORY, A_REDIRECT, A_SECURITY_CONTEXT, A_DIRECTORY,
+ A_NATIVESPEC, A_DELEGATION, A_ATTRIBUTES, C_ENVIRONMENT, A_FAIL_ON_JOB_ERROR });
}
public void submitTask(VariableStack stack) throws ExecutionException {
@@ -79,9 +85,10 @@
Iterator i = named.getNames();
Object host = null;
String provider = null;
+ boolean redirect = false;
while (i.hasNext()) {
String name = (String) i.next();
-
+
Object value = named.getArgument(name);
if (name.equals(A_EXECUTABLE.getName())) {
js.setExecutable(TypeUtil.toString(value));
@@ -98,7 +105,7 @@
}
}
else if (name.equals(A_REDIRECT.getName())) {
- js.setRedirected(TypeUtil.toBoolean(value));
+ redirect = TypeUtil.toBoolean(value);
}
else if (name.equals(A_STDIN.getName())) {
js.setStdInput(TypeUtil.toString(value));
@@ -106,9 +113,15 @@
else if (name.equals(A_STDOUT.getName())) {
js.setStdOutput(TypeUtil.toString(value));
}
+ else if (name.equals(A_STDOUTLOCATION.getName())) {
+ js.setStdOutputLocation(new FileLocation.Impl(TypeUtil.toInt(value)));
+ }
else if (name.equals(A_STDERR.getName())) {
js.setStdError(TypeUtil.toString(value));
}
+ else if (name.equals(A_STDERRLOCATION.getName())) {
+ js.setStdErrorLocation(new FileLocation.Impl(TypeUtil.toInt(value)));
+ }
else if (name.equals(A_DIRECTORY.getName())) {
js.setDirectory(TypeUtil.toString(value));
}
@@ -165,7 +178,8 @@
js.setAttribute((String) e.getKey(), e.getValue());
}
catch (ClassCastException ex) {
- throw new ExecutionException("Invalid attribute name (" + e.getKey() + ")", ex);
+ throw new ExecutionException("Invalid attribute name (" + e.getKey()
+ + ")", ex);
}
}
}
@@ -173,7 +187,12 @@
js.setAttribute(name, value);
}
}
-
+
+ if (redirect) {
+ js.setStdOutputLocation(FileLocation.MEMORY);
+ js.setStdErrorLocation(FileLocation.MEMORY);
+ }
+
VariableArguments env = C_ENVIRONMENT.get(stack);
Iterator j = env.iterator();
while (j.hasNext()) {
@@ -253,42 +272,50 @@
throw new ExecutionException("Exception caught while submitting job", e);
}
}
-
+
private List stringify(List l) {
- ArrayList sl = new ArrayList(l.size());
- Iterator i = l.iterator();
- while (i.hasNext()) {
- sl.add(TypeUtil.toString(i.next()));
- }
- return sl;
+ ArrayList sl = new ArrayList(l.size());
+ Iterator i = l.iterator();
+ while (i.hasNext()) {
+ sl.add(TypeUtil.toString(i.next()));
+ }
+ return sl;
}
protected void taskFailed(StatusEvent e, VariableStack stack) throws ExecutionException {
Task task = (Task) e.getSource();
- if (task.getStdError() != null) {
- failImmediately(stack, task.getStdError());
+ returnOutputs(task, stack);
+ Exception ex = e.getStatus().getException();
+ if (ex instanceof JobException && !TypeUtil.toBoolean(A_FAIL_ON_JOB_ERROR.getValue(stack))) {
+ Arg.VARGS.ret(stack, new Integer(((JobException) ex).getExitCode()));
+ super.taskCompleted(e, stack);
}
- else if (e.getStatus().getException() != null) {
- failImmediately(stack, e.getStatus().getException());
- }
- else if (e.getStatus().getMessage() != null) {
- failImmediately(stack, e.getStatus().getMessage());
- }
else {
- failImmediately(stack, "Task failed");
+ if (e.getStatus().getException() != null) {
+ failImmediately(stack, e.getStatus().getException());
+ }
+ else if (e.getStatus().getMessage() != null) {
+ failImmediately(stack, e.getStatus().getMessage());
+ }
+ else {
+ failImmediately(stack, "Task failed");
+ }
}
}
protected void taskCompleted(StatusEvent e, VariableStack stack) throws ExecutionException {
- if (TypeUtil.toBoolean(A_REDIRECT.getValue(stack))) {
- Task t = (Task) e.getSource();
- if (t.getStdOutput() != null) {
- STDOUT.ret(stack, t.getStdOutput());
- }
- if (t.getStdError() != null) {
- STDERR.ret(stack, t.getStdError());
- }
- }
+ Task t = (Task) e.getSource();
+ returnOutputs(t, stack);
super.taskCompleted(e, stack);
}
+
+ protected void returnOutputs(Task t, VariableStack stack) throws ExecutionException {
+ JobSpecification spec = (JobSpecification) t.getSpecification();
+ if (t.getStdOutput() != null && FileLocation.MEMORY.overlaps(spec.getStdOutputLocation())) {
+ STDOUT.ret(stack, t.getStdOutput());
+ }
+ if (t.getStdError() != null && FileLocation.MEMORY.overlaps(spec.getStdErrorLocation())) {
+ STDERR.ret(stack, t.getStdError());
+ }
+ }
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ha...@us...> - 2007-08-22 16:58:45
|
Revision: 1704
http://cogkit.svn.sourceforge.net/cogkit/?rev=1704&view=rev
Author: hategan
Date: 2007-08-22 09:58:43 -0700 (Wed, 22 Aug 2007)
Log Message:
-----------
also return exit code if failOnJobError is false and the job does not fail
Modified Paths:
--------------
trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2007-08-21 22:22:02 UTC (rev 1703)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2007-08-22 16:58:43 UTC (rev 1704)
@@ -306,6 +306,9 @@
protected void taskCompleted(StatusEvent e, VariableStack stack) throws ExecutionException {
Task t = (Task) e.getSource();
returnOutputs(t, stack);
+ if (!TypeUtil.toBoolean(A_FAIL_ON_JOB_ERROR.getValue(stack))) {
+ Arg.VARGS.ret(stack, new Integer(0));
+ }
super.taskCompleted(e, stack);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ha...@us...> - 2007-09-19 15:35:09
|
Revision: 1742
http://cogkit.svn.sourceforge.net/cogkit/?rev=1742&view=rev
Author: hategan
Date: 2007-09-19 08:35:05 -0700 (Wed, 19 Sep 2007)
Log Message:
-----------
added hostCount and batch arguments
Modified Paths:
--------------
trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2007-09-18 21:45:30 UTC (rev 1741)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2007-09-19 15:35:05 UTC (rev 1742)
@@ -52,6 +52,7 @@
public static final Arg A_PROVIDER = new Arg.Optional("provider");
public static final Arg A_SECURITY_CONTEXT = new Arg.Optional("securitycontext");
public static final Arg A_COUNT = new Arg.Optional("count");
+ public static final Arg A_HOST_COUNT = new Arg.Optional("hostcount");
public static final Arg A_JOBTYPE = new Arg.Optional("jobtype");
public static final Arg A_MAXTIME = new Arg.Optional("maxtime");
public static final Arg A_MAXWALLTIME = new Arg.Optional("maxwalltime");
@@ -68,13 +69,14 @@
public static final Arg.Channel C_ENVIRONMENT = new Arg.Channel("environment");
public static final Arg A_ATTRIBUTES = new Arg.Optional("attributes", Collections.EMPTY_MAP);
public static final Arg A_FAIL_ON_JOB_ERROR = new Arg.Optional("failonjoberror", Boolean.TRUE);
+ public static final Arg A_BATCH = new Arg.Optional("batch", Boolean.FALSE);
static {
setArguments(GridExec.class, new Arg[] { A_EXECUTABLE, A_ARGS, A_ARGUMENTS, A_HOST,
A_STDOUT, A_STDERR, A_STDOUTLOCATION, A_STDERRLOCATION, A_STDIN, A_PROVIDER,
- A_COUNT, A_JOBTYPE, A_MAXTIME, A_MAXWALLTIME, A_MAXCPUTIME, A_ENVIRONMENT, A_QUEUE,
+ A_COUNT, A_HOST_COUNT, A_JOBTYPE, A_MAXTIME, A_MAXWALLTIME, A_MAXCPUTIME, A_ENVIRONMENT, A_QUEUE,
A_PROJECT, A_MINMEMORY, A_MAXMEMORY, A_REDIRECT, A_SECURITY_CONTEXT, A_DIRECTORY,
- A_NATIVESPEC, A_DELEGATION, A_ATTRIBUTES, C_ENVIRONMENT, A_FAIL_ON_JOB_ERROR });
+ A_NATIVESPEC, A_DELEGATION, A_ATTRIBUTES, C_ENVIRONMENT, A_FAIL_ON_JOB_ERROR, A_BATCH });
}
public void submitTask(VariableStack stack) throws ExecutionException {
@@ -183,6 +185,9 @@
}
}
}
+ else if (name.equals(A_BATCH.getName())) {
+ js.setBatchJob(TypeUtil.toBoolean(value));
+ }
else {
js.setAttribute(name, value);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ha...@us...> - 2008-05-12 16:54:39
|
Revision: 2005
http://cogkit.svn.sourceforge.net/cogkit/?rev=2005&view=rev
Author: hategan
Date: 2008-05-12 09:54:26 -0700 (Mon, 12 May 2008)
Log Message:
-----------
avoid passing arguments of derived classes as attributes and general cleanup
Modified Paths:
--------------
trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2008-05-12 09:46:36 UTC (rev 2004)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2008-05-12 16:54:26 UTC (rev 2005)
@@ -74,130 +74,80 @@
static {
setArguments(GridExec.class, new Arg[] { A_EXECUTABLE, A_ARGS, A_ARGUMENTS, A_HOST,
A_STDOUT, A_STDERR, A_STDOUTLOCATION, A_STDERRLOCATION, A_STDIN, A_PROVIDER,
- A_COUNT, A_HOST_COUNT, A_JOBTYPE, A_MAXTIME, A_MAXWALLTIME, A_MAXCPUTIME, A_ENVIRONMENT, A_QUEUE,
- A_PROJECT, A_MINMEMORY, A_MAXMEMORY, A_REDIRECT, A_SECURITY_CONTEXT, A_DIRECTORY,
- A_NATIVESPEC, A_DELEGATION, A_ATTRIBUTES, C_ENVIRONMENT, A_FAIL_ON_JOB_ERROR, A_BATCH });
+ A_COUNT, A_HOST_COUNT, A_JOBTYPE, A_MAXTIME, A_MAXWALLTIME, A_MAXCPUTIME,
+ A_ENVIRONMENT, A_QUEUE, A_PROJECT, A_MINMEMORY, A_MAXMEMORY, A_REDIRECT,
+ A_SECURITY_CONTEXT, A_DIRECTORY, A_NATIVESPEC, A_DELEGATION, A_ATTRIBUTES,
+ C_ENVIRONMENT, A_FAIL_ON_JOB_ERROR, A_BATCH });
}
public void submitTask(VariableStack stack) throws ExecutionException {
try {
JobSpecificationImpl js = new JobSpecificationImpl();
Task task = new TaskImpl();
- NamedArguments named = ArgUtil.getNamedArguments(stack);
- Iterator i = named.getNames();
- Object host = null;
- String provider = null;
- boolean redirect = false;
- while (i.hasNext()) {
- String name = (String) i.next();
- Object value = named.getArgument(name);
- if (name.equals(A_EXECUTABLE.getName())) {
- js.setExecutable(TypeUtil.toString(value));
- }
- else if (name.equals(A_ARGS.getName()) || name.equals(A_ARGUMENTS.getName())) {
- if (value instanceof List) {
- js.setArguments(stringify((List) value));
- }
- else if (value instanceof VariableArguments) {
- js.setArguments(stringify(((VariableArguments) value).getAll()));
- }
- else {
- js.setArguments(TypeUtil.toString(value));
- }
- }
- else if (name.equals(A_REDIRECT.getName())) {
- redirect = TypeUtil.toBoolean(value);
- }
- else if (name.equals(A_STDIN.getName())) {
- js.setStdInput(TypeUtil.toString(value));
- }
- else if (name.equals(A_STDOUT.getName())) {
- js.setStdOutput(TypeUtil.toString(value));
- }
- else if (name.equals(A_STDOUTLOCATION.getName())) {
- js.setStdOutputLocation(new FileLocation.Impl(TypeUtil.toInt(value)));
- }
- else if (name.equals(A_STDERR.getName())) {
- js.setStdError(TypeUtil.toString(value));
- }
- else if (name.equals(A_STDERRLOCATION.getName())) {
- js.setStdErrorLocation(new FileLocation.Impl(TypeUtil.toInt(value)));
- }
- else if (name.equals(A_DIRECTORY.getName())) {
- js.setDirectory(TypeUtil.toString(value));
- }
- else if (name.equals(A_JOBTYPE.getName())) {
- js.setAttribute("jobType", value);
- }
- else if (name.equals(A_NATIVESPEC.getName())) {
- js.setSpecification(TypeUtil.toString(value));
- }
- else if (name.equals(A_PROVIDER.getName())) {
- provider = TypeUtil.toString(value);
- }
- else if (name.equals(A_SECURITY_CONTEXT.getName())) {
- // set later
- }
- else if (name.equals(A_DELEGATION.getName())) {
- js.setDelegationEnabled(TypeUtil.toBoolean(value));
- }
- else if (name.equals(A_HOST.getName())) {
- host = value;
- }
- else if (name.equals(A_ENVIRONMENT.getName())) {
- if (value instanceof Map) {
- Iterator j = ((Map) value).entrySet().iterator();
- while (j.hasNext()) {
- Map.Entry e = (Map.Entry) j.next();
- js.addEnvironmentVariable((String) e.getKey(), (String) e.getValue());
- }
- }
- else if (value instanceof String) {
- StringTokenizer st = new StringTokenizer((String) value, ",");
- while (st.hasMoreTokens()) {
- String el = st.nextToken().trim();
- String[] nv = el.split("=");
- if (nv.length > 2 || el.length() == 0) {
- throw new ExecutionException("Invalid environment entry: '" + el
- + "'");
- }
- else if (nv.length == 1) {
- js.addEnvironmentVariable(nv[0].trim(), "");
- }
- else {
- js.addEnvironmentVariable(nv[0].trim(), nv[1].trim());
- }
- }
- }
- }
- else if (name.equals(A_ATTRIBUTES.getName())) {
- Map m = (Map) checkClass(A_ATTRIBUTES.getValue(stack), Map.class, "map");
- Iterator ai = m.entrySet().iterator();
- while (ai.hasNext()) {
- Map.Entry e = (Map.Entry) ai.next();
- try {
- js.setAttribute((String) e.getKey(), e.getValue());
- }
- catch (ClassCastException ex) {
- throw new ExecutionException("Invalid attribute name (" + e.getKey()
- + ")", ex);
- }
- }
- }
- else if (name.equals(A_BATCH.getName())) {
- js.setBatchJob(TypeUtil.toBoolean(value));
- }
- else {
- js.setAttribute(name, value);
- }
+ js.setExecutable(TypeUtil.toString(A_EXECUTABLE.getValue(stack)));
+ if (A_ARGUMENTS.isPresent(stack)) {
+ setArguments(js, A_ARGUMENTS.getValue(stack));
}
-
- if (redirect) {
+ else if (A_ARGS.isPresent(stack)) {
+ setArguments(js, A_ARGS.getValue(stack));
+ }
+
+ if (TypeUtil.toBoolean(A_REDIRECT.getValue(stack))) {
js.setStdOutputLocation(FileLocation.MEMORY);
js.setStdErrorLocation(FileLocation.MEMORY);
}
+ String stmp;
+ int itmp;
+ stmp = TypeUtil.toString(A_STDIN.getValue(stack, null));
+ if (stmp != null) {
+ js.setStdInput(stmp);
+ }
+ stmp = TypeUtil.toString(A_STDOUT.getValue(stack, null));
+ if (stmp != null) {
+ js.setStdOutput(stmp);
+ }
+ stmp = TypeUtil.toString(A_STDERR.getValue(stack, null));
+ if (stmp != null) {
+ js.setStdError(stmp);
+ }
+ if (A_STDOUTLOCATION.isPresent(stack)) {
+ js.setStdOutputLocation(new FileLocation.Impl(
+ TypeUtil.toInt(A_STDOUTLOCATION.getValue(stack))));
+ }
+ if (A_STDERRLOCATION.isPresent(stack)) {
+ js.setStdErrorLocation(new FileLocation.Impl(
+ TypeUtil.toInt(A_STDERRLOCATION.getValue(stack))));
+ }
+ stmp = TypeUtil.toString(A_DIRECTORY.getValue(stack, null));
+ if (stmp != null) {
+ js.setDirectory(stmp);
+ }
+ stmp = TypeUtil.toString(A_JOBTYPE.getValue(stack, null));
+ if (stmp != null) {
+ js.setAttribute("jobType", stmp);
+ }
+ stmp = TypeUtil.toString(A_NATIVESPEC.getValue(stack, null));
+ if (stmp != null) {
+ js.setSpecification(stmp);
+ }
+ js.setDelegationEnabled(TypeUtil.toBoolean(A_DELEGATION.getValue(stack)));
+ if (A_ENVIRONMENT.isPresent(stack)) {
+ setEnvironment(js, A_ENVIRONMENT.getValue(stack));
+ }
+ if (A_ATTRIBUTES.isPresent(stack)) {
+ setAttributes(js, A_ATTRIBUTES.getValue(stack));
+ }
+ if (A_ATTRIBUTES.isPresent(stack)) {
+ setAttributes(js, A_ATTRIBUTES.getValue(stack));
+ }
+ js.setBatchJob(TypeUtil.toBoolean(A_BATCH.getValue(stack)));
+ setMiscAttributes(js, stack);
+
+ Object host = A_HOST.getValue(stack, null);
+ String provider = TypeUtil.toString(A_PROVIDER.getValue(stack, null));
+
VariableArguments env = C_ENVIRONMENT.get(stack);
Iterator j = env.iterator();
while (j.hasNext()) {
@@ -278,6 +228,71 @@
}
}
+ protected void setArguments(JobSpecification js, Object value) {
+ if (value instanceof List) {
+ js.setArguments(stringify((List) value));
+ }
+ else if (value instanceof VariableArguments) {
+ js.setArguments(stringify(((VariableArguments) value).getAll()));
+ }
+ else {
+ js.setArguments(TypeUtil.toString(value));
+ }
+ }
+
+ protected void setEnvironment(JobSpecification js, Object value) throws ExecutionException {
+ if (value instanceof Map) {
+ Iterator j = ((Map) value).entrySet().iterator();
+ while (j.hasNext()) {
+ Map.Entry e = (Map.Entry) j.next();
+ js.addEnvironmentVariable((String) e.getKey(), (String) e.getValue());
+ }
+ }
+ else if (value instanceof String) {
+ StringTokenizer st = new StringTokenizer((String) value, ",");
+ while (st.hasMoreTokens()) {
+ String el = st.nextToken().trim();
+ String[] nv = el.split("=");
+ if (nv.length > 2 || el.length() == 0) {
+ throw new ExecutionException("Invalid environment entry: '" + el + "'");
+ }
+ else if (nv.length == 1) {
+ js.addEnvironmentVariable(nv[0].trim(), "");
+ }
+ else {
+ js.addEnvironmentVariable(nv[0].trim(), nv[1].trim());
+ }
+ }
+ }
+ }
+
+ protected void setAttributes(JobSpecification js, Object value) throws ExecutionException {
+ Map m = (Map) checkClass(value, Map.class, "map");
+ Iterator ai = m.entrySet().iterator();
+ while (ai.hasNext()) {
+ Map.Entry e = (Map.Entry) ai.next();
+ try {
+ js.setAttribute((String) e.getKey(), e.getValue());
+ }
+ catch (ClassCastException ex) {
+ throw new ExecutionException("Invalid attribute name (" + e.getKey() + ")", ex);
+ }
+ }
+ }
+
+ protected final static Arg[] MISC_ATTRS = new Arg[] { A_COUNT, A_HOST_COUNT, A_JOBTYPE,
+ A_MAXTIME, A_MAXWALLTIME, A_MAXCPUTIME, A_QUEUE, A_PROJECT, A_MINMEMORY, A_MAXMEMORY };
+
+ protected void setMiscAttributes(JobSpecification js, VariableStack stack) {
+ for (int i = 0; i < MISC_ATTRS.length; i++) {
+ setAttributeIfPresent(MISC_ATTRS[i], js, stack);
+ }
+ }
+
+ protected void setAttributeIfPresent(Arg arg, JobSpecification js, VariableStack stack) {
+
+ }
+
private List stringify(List l) {
ArrayList sl = new ArrayList(l.size());
Iterator i = l.iterator();
@@ -311,14 +326,14 @@
protected void taskCompleted(StatusEvent e, VariableStack stack) throws ExecutionException {
Task t = (Task) e.getSource();
returnOutputs(t, stack);
- if (!TypeUtil.toBoolean(A_FAIL_ON_JOB_ERROR.getValue(stack))) {
- Arg.VARGS.ret(stack, new Integer(0));
- }
+ if (!TypeUtil.toBoolean(A_FAIL_ON_JOB_ERROR.getValue(stack))) {
+ Arg.VARGS.ret(stack, new Integer(0));
+ }
super.taskCompleted(e, stack);
}
protected void returnOutputs(Task t, VariableStack stack) throws ExecutionException {
- JobSpecification spec = (JobSpecification) t.getSpecification();
+ JobSpecification spec = (JobSpecification) t.getSpecification();
if (t.getStdOutput() != null && FileLocation.MEMORY.overlaps(spec.getStdOutputLocation())) {
STDOUT.ret(stack, t.getStdOutput());
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ha...@us...> - 2008-05-12 16:56:22
|
Revision: 2006
http://cogkit.svn.sourceforge.net/cogkit/?rev=2006&view=rev
Author: hategan
Date: 2008-05-12 09:56:13 -0700 (Mon, 12 May 2008)
Log Message:
-----------
cleaned imports and removed unused variable
Modified Paths:
--------------
trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2008-05-12 16:54:26 UTC (rev 2005)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2008-05-12 16:56:13 UTC (rev 2006)
@@ -26,8 +26,6 @@
import org.globus.cog.abstraction.interfaces.Task;
import org.globus.cog.abstraction.interfaces.TaskHandler;
import org.globus.cog.karajan.arguments.Arg;
-import org.globus.cog.karajan.arguments.ArgUtil;
-import org.globus.cog.karajan.arguments.NamedArguments;
import org.globus.cog.karajan.arguments.VariableArguments;
import org.globus.cog.karajan.scheduler.Scheduler;
import org.globus.cog.karajan.scheduler.TaskConstraints;
@@ -99,7 +97,6 @@
}
String stmp;
- int itmp;
stmp = TypeUtil.toString(A_STDIN.getValue(stack, null));
if (stmp != null) {
js.setStdInput(stmp);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ha...@us...> - 2008-05-13 14:59:12
|
Revision: 2019
http://cogkit.svn.sourceforge.net/cogkit/?rev=2019&view=rev
Author: hategan
Date: 2008-05-13 07:59:06 -0700 (Tue, 13 May 2008)
Log Message:
-----------
fixed disappearing attributes
Modified Paths:
--------------
trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
Modified: trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java
===================================================================
--- trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2008-05-13 13:53:17 UTC (rev 2018)
+++ trunk/current/src/cog/modules/karajan/src/org/globus/cog/karajan/workflow/nodes/grid/GridExec.java 2008-05-13 14:59:06 UTC (rev 2019)
@@ -90,7 +90,7 @@
else if (A_ARGS.isPresent(stack)) {
setArguments(js, A_ARGS.getValue(stack));
}
-
+
if (TypeUtil.toBoolean(A_REDIRECT.getValue(stack))) {
js.setStdOutputLocation(FileLocation.MEMORY);
js.setStdErrorLocation(FileLocation.MEMORY);
@@ -280,14 +280,19 @@
protected final static Arg[] MISC_ATTRS = new Arg[] { A_COUNT, A_HOST_COUNT, A_JOBTYPE,
A_MAXTIME, A_MAXWALLTIME, A_MAXCPUTIME, A_QUEUE, A_PROJECT, A_MINMEMORY, A_MAXMEMORY };
- protected void setMiscAttributes(JobSpecification js, VariableStack stack) {
+ protected void setMiscAttributes(JobSpecification js, VariableStack stack)
+ throws ExecutionException {
for (int i = 0; i < MISC_ATTRS.length; i++) {
setAttributeIfPresent(MISC_ATTRS[i], js, stack);
}
}
-
- protected void setAttributeIfPresent(Arg arg, JobSpecification js, VariableStack stack) {
-
+
+ protected void setAttributeIfPresent(Arg arg, JobSpecification js, VariableStack stack)
+ throws ExecutionException {
+ Object value = arg.getValue(stack, null);
+ if (value != null) {
+ js.setAttribute(arg.getName(), value);
+ }
}
private List stringify(List l) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|