use of org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionType in project airavata by apache.
the class JSDLUtils method getOrCreatePOSIXApplication.
public static POSIXApplicationType getOrCreatePOSIXApplication(JobDefinitionType value) {
ApplicationType application = getOrCreateApplication(value);
if (getHPCProfileApplication(value) != null) {
// TODO handle: not creating POSIX element if HPCProfile already exists
return getPOSIXApplication(value);
}
if (getPOSIXApplication(value) == null) {
XmlCursor acursor = application.newCursor();
acursor.toEndToken();
acursor.insertElement(POSIX_APPLICATION);
acursor.dispose();
}
return getPOSIXApplication(value);
}
use of org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionType in project airavata by apache.
the class ApplicationProcessor method createGenericApplication.
public static void createGenericApplication(JobDefinitionType value, String appName) {
ApplicationType appType = JSDLUtils.getOrCreateApplication(value);
appType.setApplicationName(appName);
}
use of org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionType in project airavata by apache.
the class ApplicationProcessor method generateJobSpecificAppElements.
public static void generateJobSpecificAppElements(JobDefinitionType value, JobExecutionContext context) {
String userName = getUserNameFromContext(context);
// if (userName.equalsIgnoreCase("admin")){
// userName = "CN=zdv575, O=Ultrascan Gateway, C=DE";
// }
ApplicationDeploymentDescription appDep = context.getApplicationContext().getApplicationDeploymentDescription();
String appname = context.getApplicationContext().getApplicationInterfaceDescription().getApplicationName();
ApplicationParallelismType parallelism = appDep.getParallelism();
ApplicationType appType = JSDLUtils.getOrCreateApplication(value);
appType.setApplicationName(appname);
// if (appDep.getSetEnvironment().size() > 0) {
// createApplicationEnvironment(value, appDep.getSetEnvironment(), parallelism);
// }
//
String stdout = context.getStandardOutput();
String stderr = context.getStandardError();
if (stdout != null) {
stdout = stdout.substring(stdout.lastIndexOf('/') + 1);
}
if (stderr != null) {
stderr = stderr.substring(stderr.lastIndexOf('/') + 1);
}
stdout = (stdout == null || stdout.equals("")) ? "stdout" : stdout;
stderr = (stdout == null || stderr.equals("")) ? "stderr" : stderr;
if (appDep.getExecutablePath() != null) {
FileNameType fNameType = FileNameType.Factory.newInstance();
fNameType.setStringValue(appDep.getExecutablePath());
if (isParallelJob(context)) {
JSDLUtils.getOrCreateSPMDApplication(value).setExecutable(fNameType);
if (parallelism.equals(ApplicationParallelismType.OPENMP_MPI)) {
JSDLUtils.getSPMDApplication(value).setSPMDVariation(SPMDVariations.OpenMPI.value());
} else if (parallelism.equals(ApplicationParallelismType.MPI)) {
JSDLUtils.getSPMDApplication(value).setSPMDVariation(SPMDVariations.MPI.value());
}
// setting number of processes
try {
String np = getInputAsString(context, BESConstants.NUMBER_OF_PROCESSES);
if ((np != null) && (Integer.parseInt(np) > 0)) {
NumberOfProcessesType num = NumberOfProcessesType.Factory.newInstance();
num.setStringValue(np);
JSDLUtils.getSPMDApplication(value).setNumberOfProcesses(num);
}
} catch (RuntimeException np) {
// do nothing
}
try {
// setting processes per host
String pphost = getInputAsString(context, BESConstants.PROCESSES_PER_HOST);
if ((pphost != null) && (Integer.parseInt(pphost) > 0)) {
ProcessesPerHostType pph = ProcessesPerHostType.Factory.newInstance();
pph.setStringValue(String.valueOf(pphost));
JSDLUtils.getSPMDApplication(value).setProcessesPerHost(pph);
}
} catch (RuntimeException np) {
// do nothing
}
int totalThreadCount = context.getTaskData().getTaskScheduling().getNumberOfThreads();
// we take it as threads per processes
if (totalThreadCount > 0) {
ThreadsPerProcessType tpp = ThreadsPerProcessType.Factory.newInstance();
tpp.setStringValue(String.valueOf(totalThreadCount));
JSDLUtils.getSPMDApplication(value).setThreadsPerProcess(tpp);
}
if (userName != null) {
UserNameType userNameType = UserNameType.Factory.newInstance();
userNameType.setStringValue(userName);
JSDLUtils.getSPMDApplication(value).setUserName(userNameType);
}
if (stdout != null) {
FileNameType fName = FileNameType.Factory.newInstance();
fName.setStringValue(stdout);
JSDLUtils.getOrCreateSPMDApplication(value).setOutput(fName);
}
if (stderr != null) {
FileNameType fName = FileNameType.Factory.newInstance();
fName.setStringValue(stderr);
JSDLUtils.getOrCreateSPMDApplication(value).setError(fName);
}
} else {
JSDLUtils.getOrCreatePOSIXApplication(value).setExecutable(fNameType);
if (userName != null) {
UserNameType userNameType = UserNameType.Factory.newInstance();
userNameType.setStringValue(userName);
JSDLUtils.getOrCreatePOSIXApplication(value).setUserName(userNameType);
}
if (stdout != null) {
FileNameType fName = FileNameType.Factory.newInstance();
fName.setStringValue(stdout);
JSDLUtils.getOrCreatePOSIXApplication(value).setOutput(fName);
}
if (stderr != null) {
FileNameType fName = FileNameType.Factory.newInstance();
fName.setStringValue(stderr);
JSDLUtils.getOrCreatePOSIXApplication(value).setError(fName);
}
}
}
}
use of org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionType in project airavata by apache.
the class JSDLGenerator method buildJSDLInstance.
public static synchronized JobDefinitionDocument buildJSDLInstance(JobExecutionContext context, String smsUrl, Object jobDirectoryMode) throws Exception {
JobDefinitionDocument jobDefDoc = JobDefinitionDocument.Factory.newInstance();
JobDefinitionType value = jobDefDoc.addNewJobDefinition();
// build Identification
createJobIdentification(value, context);
ResourceProcessor.generateResourceElements(value, context);
ApplicationProcessor.generateJobSpecificAppElements(value, context);
UASDataStagingProcessor.generateDataStagingElements(value, context, smsUrl);
return jobDefDoc;
}
use of org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionType in project airavata by apache.
the class JSDLUtils method getPOSIXApplication.
public static POSIXApplicationType getPOSIXApplication(JobDefinitionType value) {
if (value != null && value.getJobDescription() != null && value.getJobDescription().isSetApplication()) {
XmlCursor acursor = value.getJobDescription().getApplication().newCursor();
if (acursor.toFirstChild()) {
do {
if (acursor.getName().equals(POSIX_APPLICATION)) {
XmlObject result = acursor.getObject();
acursor.dispose();
return (POSIXApplicationType) result;
}
} while (acursor.toNextSibling());
acursor.dispose();
return null;
} else {
acursor.dispose();
return null;
}
} else {
return null;
}
}
Aggregations