You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ra...@apache.org on 2013/12/13 17:19:36 UTC
svn commit: r1550760 [2/3] - in /airavata/trunk: ./ modules/airavata-client/
modules/commons/ modules/commons/json/ modules/credential-store/
modules/distribution/airavata-server/
modules/distribution/airavata-server/src/main/assembly/ modules/distribu...
Modified: airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/JSDLUtils.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/JSDLUtils.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/JSDLUtils.java (original)
+++ airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/JSDLUtils.java Fri Dec 13 16:19:35 2013
@@ -1,513 +1,519 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
package org.apache.airavata.gfac.provider.utils;
+
import javax.xml.namespace.QName;
import org.apache.commons.httpclient.URIException;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlObject;
-import org.ogf.schemas.jsdl.ApplicationType;
-import org.ogf.schemas.jsdl.BoundaryType;
-import org.ogf.schemas.jsdl.CPUArchitectureType;
-import org.ogf.schemas.jsdl.CandidateHostsType;
-import org.ogf.schemas.jsdl.CreationFlagEnumeration;
-import org.ogf.schemas.jsdl.DataStagingType;
-import org.ogf.schemas.jsdl.ExactType;
-import org.ogf.schemas.jsdl.JobDefinitionType;
-import org.ogf.schemas.jsdl.JobDescriptionType;
-import org.ogf.schemas.jsdl.JobIdentificationType;
-import org.ogf.schemas.jsdl.OperatingSystemType;
-import org.ogf.schemas.jsdl.OperatingSystemTypeEnumeration;
-import org.ogf.schemas.jsdl.OperatingSystemTypeType;
-import org.ogf.schemas.jsdl.ProcessorArchitectureEnumeration;
-import org.ogf.schemas.jsdl.ResourcesType;
-import org.ogf.schemas.jsdl.SourceTargetType;
-import org.ogf.schemas.jsdl.hpcpa.HPCProfileApplicationDocument;
-import org.ogf.schemas.jsdl.hpcpa.HPCProfileApplicationType;
-import org.ogf.schemas.jsdl.posix.EnvironmentType;
-import org.ogf.schemas.jsdl.posix.POSIXApplicationDocument;
-import org.ogf.schemas.jsdl.posix.POSIXApplicationType;
-import org.ogf.schemas.jsdl.spmd.SPMDApplicationDocument;
-import org.ogf.schemas.jsdl.spmd.SPMDApplicationType;
-
-public class JSDLUtils {
-
- public static final int FLAG_OVERWRITE = 1;
- public static final int FLAG_APPEND = 2;
- public static final int FLAG_DELETE_ON_TERMINATE = 32;
-
- public static final QName POSIX_APPLICATION = POSIXApplicationDocument.type.getDocumentElementName();
-
- public static final QName HPC_PROFILE_APPLICATION = HPCProfileApplicationDocument.type.getDocumentElementName();
-
- public static final QName SPMD_APPLICATION = SPMDApplicationDocument.type.getDocumentElementName();
-
- public static final String PROCESSESPERHOST = "ProcessesPerHost";
- public static final String NUMBEROFPROCESSES = "NumberOfProcesses";
- public static final String THREADSPERHOST = "ThreadsPerHost";
-
- public static EnvironmentType addEnvVariable(JobDefinitionType def, String name, String value) {
- POSIXApplicationType posixApp = getOrCreatePOSIXApplication(def);
- EnvironmentType newEnv = posixApp.addNewEnvironment();
- newEnv.setName(name);
- newEnv.setStringValue(value);
- return newEnv;
- }
-
- public static void setApplicationName(JobDefinitionType value, String applicationName) {
- getOrCreateApplication(value).setApplicationName(applicationName);
- }
-
- public static void setApplicationVersion(JobDefinitionType value, String applicationVersion) {
- getOrCreateApplication(value).setApplicationVersion(applicationVersion);
- }
-
- public static void addProjectName(JobDefinitionType value, String projectName) {
- getOrCreateJobIdentification(value).addNewJobProject().setStringValue(projectName);
- }
-
- public static void addMultipleProjectNames(JobDefinitionType value, String[] projectNames) {
- for (String name : projectNames) {
- getOrCreateJobIdentification(value).addNewJobProject().setStringValue(name);
- }
- }
-
- public static void addCandidateHost(JobDefinitionType value, String host) {
- getOrCreateCandidateHosts(value).addHostName(host);
-
- }
-
- public static void addDataStagingTargetElement(JobDefinitionType value, String fileSystem, String file, String uri) {
- addDataStagingTargetElement(value, fileSystem, file, uri, 0);
- }
-
- public static void addDataStagingTargetElement(JobDefinitionType value, String fileSystem, String file, String uri,
- int flags) {
- JobDescriptionType jobDescr = getOrCreateJobDescription(value);
- DataStagingType newDS = jobDescr.addNewDataStaging();
- CreationFlagEnumeration.Enum creationFlag = CreationFlagEnumeration.DONT_OVERWRITE;
- if ((flags & FLAG_OVERWRITE) != 0)
- creationFlag = CreationFlagEnumeration.OVERWRITE;
- if ((flags & FLAG_APPEND) != 0)
- creationFlag = CreationFlagEnumeration.APPEND;
- boolean deleteOnTerminate = (flags & FLAG_DELETE_ON_TERMINATE) != 0;
- newDS.setCreationFlag(creationFlag);
- newDS.setDeleteOnTermination(deleteOnTerminate);
- SourceTargetType target = newDS.addNewTarget();
-
- try {
- uri = (uri == null) ? null : URIUtils.encodeAll(uri);
- } catch (URIException e) {
- }
- target.setURI(uri);
- newDS.setFileName(file);
- if (fileSystem != null && !fileSystem.equals("Work")) { //$NON-NLS-1$
- newDS.setFilesystemName(fileSystem);
- }
- }
-
- public static void addDataStagingSourceElement(JobDefinitionType value, String uri, String fileSystem, String file) {
- addDataStagingSourceElement(value, uri, fileSystem, file, 0);
- }
-
- public static void addDataStagingSourceElement(JobDefinitionType value, String uri, String fileSystem, String file,
- int flags) {
- JobDescriptionType jobDescr = getOrCreateJobDescription(value);
-
- try {
- uri = (uri == null) ? null : URIUtils.encodeAll(uri);
- } catch (URIException e) {
- }
- DataStagingType newDS = jobDescr.addNewDataStaging();
- CreationFlagEnumeration.Enum creationFlag = CreationFlagEnumeration.DONT_OVERWRITE;
- if ((flags & FLAG_OVERWRITE) != 0)
- creationFlag = CreationFlagEnumeration.OVERWRITE;
- if ((flags & FLAG_APPEND) != 0)
- creationFlag = CreationFlagEnumeration.APPEND;
- boolean deleteOnTerminate = (flags & FLAG_DELETE_ON_TERMINATE) != 0;
- newDS.setCreationFlag(creationFlag);
- newDS.setDeleteOnTermination(deleteOnTerminate);
- SourceTargetType source = newDS.addNewSource();
- source.setURI(uri);
- newDS.setFileName(file);
- if (fileSystem != null && !fileSystem.equals("Work")) { //$NON-NLS-1$
- newDS.setFilesystemName(fileSystem);
- }
- }
-
- public static ApplicationType getOrCreateApplication(JobDefinitionType value) {
- JobDescriptionType jobDescr = getOrCreateJobDescription(value);
- if (!jobDescr.isSetApplication()) {
- jobDescr.addNewApplication();
- }
- return jobDescr.getApplication();
- }
-
- public static CandidateHostsType getOrCreateCandidateHosts(JobDefinitionType value) {
- ResourcesType resources = getOrCreateResources(value);
- if (!resources.isSetCandidateHosts()) {
- resources.addNewCandidateHosts();
- }
- return resources.getCandidateHosts();
- }
-
- public static CPUArchitectureType getOrCreateCPUArchitecture(JobDefinitionType value) {
-
- ResourcesType jobResources = getOrCreateResources(value);
- if (!jobResources.isSetCPUArchitecture()) {
- jobResources.addNewCPUArchitecture();
- }
- return jobResources.getCPUArchitecture();
- }
-
- public static org.ogf.schemas.jsdl.RangeValueType getOrCreateIndividualCPUCount(
- JobDefinitionType value) {
- ResourcesType jobResources = getOrCreateResources(value);
- if (!jobResources.isSetIndividualCPUCount()) {
- jobResources.addNewIndividualCPUCount();
- }
- return jobResources.getIndividualCPUCount();
- }
-
- public static org.ogf.schemas.jsdl.RangeValueType getOrCreateIndividualCPUSpeed(
- JobDefinitionType value) {
-
- ResourcesType jobResources = getOrCreateResources(value);
- if (!jobResources.isSetIndividualCPUSpeed()) {
- jobResources.addNewIndividualCPUSpeed();
- }
- return jobResources.getIndividualCPUSpeed();
- }
-
- public static org.ogf.schemas.jsdl.RangeValueType getOrCreateIndividualCPUTime(
- JobDefinitionType value) {
-
- ResourcesType jobResources = getOrCreateResources(value);
- if (!jobResources.isSetIndividualCPUTime()) {
- jobResources.addNewIndividualCPUTime();
- }
- return jobResources.getIndividualCPUTime();
- }
-
- public static org.ogf.schemas.jsdl.RangeValueType getOrCreateIndividualDiskSpace(
- JobDefinitionType value) {
-
- ResourcesType jobResources = getOrCreateResources(value);
- if (!jobResources.isSetIndividualDiskSpace()) {
- jobResources.addNewIndividualDiskSpace();
- }
- return jobResources.getIndividualDiskSpace();
- }
-
- public static org.ogf.schemas.jsdl.RangeValueType getOrCreateIndividualPhysicalMemory(
- JobDefinitionType value) {
-
- ResourcesType jobResources = getOrCreateResources(value);
- if (!jobResources.isSetIndividualPhysicalMemory()) {
- jobResources.addNewIndividualPhysicalMemory();
- }
- return jobResources.getIndividualPhysicalMemory();
- }
-
- public static JobDescriptionType getOrCreateJobDescription(JobDefinitionType value) {
- if (value.getJobDescription() == null) {
- return value.addNewJobDescription();
- }
- return value.getJobDescription();
- }
-
- public static JobIdentificationType getOrCreateJobIdentification(JobDefinitionType value) {
- JobDescriptionType descr = getOrCreateJobDescription(value);
- if (descr.getJobIdentification() == null) {
- return descr.addNewJobIdentification();
- }
- return descr.getJobIdentification();
- }
-
- public static OperatingSystemType getOrCreateOperatingSystem(JobDefinitionType value) {
- ResourcesType jobResources = getOrCreateResources(value);
- if (!jobResources.isSetOperatingSystem()) {
- jobResources.addNewOperatingSystem();
- }
- return jobResources.getOperatingSystem();
- }
-
- public static ResourcesType getOrCreateResources(JobDefinitionType value) {
- JobDescriptionType jobDescr = getOrCreateJobDescription(value);
- if (!jobDescr.isSetResources()) {
- jobDescr.addNewResources();
- }
- return jobDescr.getResources();
- }
-
- public static org.ogf.schemas.jsdl.RangeValueType getOrCreateTotalCPUCount(JobDefinitionType value) {
-
- ResourcesType jobResources = getOrCreateResources(value);
- if (!jobResources.isSetTotalCPUCount()) {
- jobResources.addNewTotalCPUCount();
- }
- return jobResources.getTotalCPUCount();
- }
-
- public static org.ogf.schemas.jsdl.RangeValueType getOrCreateTotalResourceCount(
- JobDefinitionType value) {
-
- ResourcesType jobResources = getOrCreateResources(value);
- if (!jobResources.isSetTotalResourceCount()) {
- jobResources.addNewTotalResourceCount();
- }
- return jobResources.getTotalResourceCount();
- }
-
- 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);
- }
-
- public static SPMDApplicationType getOrCreateSPMDApplication(JobDefinitionType value) {
-
- ApplicationType application = getOrCreateApplication(value);
-
- if (getSPMDApplication(value) == null) {
- XmlCursor acursor = application.newCursor();
- acursor.toEndToken();
- acursor.insertElement(SPMD_APPLICATION);
- acursor.dispose();
- }
- return getSPMDApplication(value);
- }
-
- public static SPMDApplicationType getSPMDApplication(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(SPMD_APPLICATION)) {
- XmlObject result = acursor.getObject();
- acursor.dispose();
- return (SPMDApplicationType) result;
- }
- } while (acursor.toNextSibling());
- acursor.dispose();
- return null;
- } else {
- acursor.dispose();
- return null;
- }
- } else {
- return null;
- }
- }
-
- 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;
- }
- }
-
- public static HPCProfileApplicationType getOrCreateHPCProfileApplication(JobDefinitionType value) {
-
- ApplicationType application = getOrCreateApplication(value);
-
- if (getPOSIXApplication(value) != null) {
- // TODO handle: creating HPC element if POSIX already exists
- return getHPCProfileApplication(value);
- }
-
- if (getHPCProfileApplication(value) == null) {
- XmlCursor acursor = application.newCursor();
- acursor.toEndToken();
- acursor.insertElement(HPC_PROFILE_APPLICATION);
- acursor.dispose();
- }
- return getHPCProfileApplication(value);
- }
-
- public static HPCProfileApplicationType getHPCProfileApplication(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(HPC_PROFILE_APPLICATION)) {
- XmlObject result = acursor.getObject();
- acursor.dispose();
- return (HPCProfileApplicationType) result;
- }
- } while (acursor.toNextSibling());
- acursor.dispose();
- return null;
- } else {
- acursor.dispose();
- return null;
- }
- } else {
- return null;
- }
- }
-
- public static RangeValueType getTotalCPUCountRequirements(JobDefinitionType value) {
- if (value != null && value.getJobDescription() != null && value.getJobDescription().isSetResources()
- && value.getJobDescription().getResources().isSetTotalCPUCount()) {
- return toU6RangeValue(value.getJobDescription().getResources().getTotalCPUCount());
- } else
- return null;
- }
-
- public static RangeValueType getTotalResourceCountRequirements(JobDefinitionType value) {
- if (value != null && value.getJobDescription() != null && value.getJobDescription().isSetResources()
- && value.getJobDescription().getResources().isSetTotalResourceCount()) {
- return toU6RangeValue(value.getJobDescription().getResources().getTotalResourceCount());
- } else
- return null;
- }
-
- public static RangeValueType toU6RangeValue(org.ogf.schemas.jsdl.RangeValueType jsdlType) {
- RangeValueType result = new RangeValueType();
- if (jsdlType.getExactArray().length > 0) {
- result.setExact(jsdlType.getExactArray(0).getDoubleValue());
- }
- if (jsdlType.isSetLowerBoundedRange()) {
- result.setLowerBound(jsdlType.getLowerBoundedRange().getDoubleValue());
- }
- if (jsdlType.isSetUpperBoundedRange()) {
- result.setUpperBound(jsdlType.getUpperBoundedRange().getDoubleValue());
- }
- return result;
- }
-
- public static void setCPUArchitectureRequirements(JobDefinitionType value, ProcessorRequirement cpuArchitecture) {
- if (cpuArchitecture == null || cpuArchitecture.getValue() == null)
- return;
- CPUArchitectureType cpuArch = getOrCreateCPUArchitecture(value);
- cpuArch.setCPUArchitectureName(ProcessorArchitectureEnumeration.Enum.forString(cpuArchitecture.getValue()));
- }
-
- public static void setIndividualCPUCountRequirements(JobDefinitionType value, RangeValueType cpuCount) {
- org.ogf.schemas.jsdl.RangeValueType individualCPUCount = getOrCreateIndividualCPUCount(value);
- setRangeValue(cpuCount, individualCPUCount);
- }
-
- public static void setIndividualCPUSpeedRequirements(JobDefinitionType value, RangeValueType cpuSpeed) {
- org.ogf.schemas.jsdl.RangeValueType individualCPUSpeed = getOrCreateIndividualCPUSpeed(value);
- setRangeValue(cpuSpeed, individualCPUSpeed);
- }
-
- public static void setIndividualCPUTimeRequirements(JobDefinitionType value, RangeValueType cpuTime) {
- org.ogf.schemas.jsdl.RangeValueType cpuIndividualTime = getOrCreateIndividualCPUTime(value);
- setRangeValue(cpuTime, cpuIndividualTime);
- }
-
- public static void setIndividualDiskSpaceRequirements(JobDefinitionType value, RangeValueType diskSpace) {
- org.ogf.schemas.jsdl.RangeValueType individualDiskSpace = getOrCreateIndividualDiskSpace(value);
- setRangeValue(diskSpace, individualDiskSpace);
- }
-
- public static void setIndividualPhysicalMemoryRequirements(JobDefinitionType value, RangeValueType physicalMemory) {
- org.ogf.schemas.jsdl.RangeValueType individualPhysicalMemory = getOrCreateIndividualPhysicalMemory(value);
- setRangeValue(physicalMemory, individualPhysicalMemory);
- }
-
- public static void setName(JobDefinitionType value, String name) {
- getOrCreateJobIdentification(value).setJobName(name);
- }
-
- public static void setOperatingSystemRequirements(JobDefinitionType value, OSRequirement osType) {
- if (osType == null || osType.getOSType() == null)
- return;
- OperatingSystemType os_Type = getOrCreateOperatingSystem(value);
- OperatingSystemTypeType ostt = os_Type.addNewOperatingSystemType();
- ostt.setOperatingSystemName(OperatingSystemTypeEnumeration.Enum.forString(osType.getOSType().getValue()));
- if (osType.getOSVersion() != null) {
- os_Type.setOperatingSystemVersion(osType.getOSVersion());
- }
- }
-
- public static void setRangeValue(RangeValueType u6Type, org.ogf.schemas.jsdl.RangeValueType jsdlType) {
- Double exact = u6Type.getExact();
- Double epsilon = u6Type.getEpsilon();
- Double lower = u6Type.getLowerBound();
- Double upper = u6Type.getUpperBound();
-
- if (lower.isNaN() && upper.isNaN()) {
- ExactType exactType = jsdlType.getExactArray().length > 0 ? jsdlType.getExactArray(0) : jsdlType
- .addNewExact();
- exactType.setDoubleValue(exact);
- if (!epsilon.isNaN() && epsilon != 0) {
- exactType.setEpsilon(epsilon);
- }
- } else {
- if (!lower.isNaN()) {
- BoundaryType lowerBound = jsdlType.isSetLowerBoundedRange() ? jsdlType.getLowerBoundedRange()
- : jsdlType.addNewLowerBoundedRange();
- lowerBound.setDoubleValue(lower);
- lowerBound.setExclusiveBound(!u6Type.isIncludeLowerBound());
- }
-
- if (!upper.isNaN()) {
- BoundaryType upperBound = jsdlType.isSetUpperBoundedRange() ? jsdlType.getUpperBoundedRange()
- : jsdlType.addNewUpperBoundedRange();
- upperBound.setDoubleValue(upper);
- upperBound.setExclusiveBound(!u6Type.isIncludeUpperBound());
- }
- }
- }
-
- public static void setTotalCPUCountRequirements(JobDefinitionType value, RangeValueType cpuCount) {
- org.ogf.schemas.jsdl.RangeValueType cpuTotalCount = getOrCreateTotalCPUCount(value);
- setRangeValue(cpuCount, cpuTotalCount);
- }
-
- public static void setTotalResourceCountRequirements(JobDefinitionType value, RangeValueType resourceCount) {
- org.ogf.schemas.jsdl.RangeValueType totalCount = getOrCreateTotalResourceCount(value);
- setRangeValue(resourceCount, totalCount);
- }
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.ApplicationType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.BoundaryType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.CPUArchitectureType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.CandidateHostsType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.CreationFlagEnumeration;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.DataStagingType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.ExactType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDescriptionType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobIdentificationType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.OperatingSystemType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.OperatingSystemTypeEnumeration;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.OperatingSystemTypeType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.ProcessorArchitectureEnumeration;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.ResourcesType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.SourceTargetType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdlPosix.EnvironmentType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdlPosix.POSIXApplicationDocument;
+import org.ggf.schemas.jsdl.x2005.x11.jsdlPosix.POSIXApplicationType;
+import org.ggf.schemas.jsdl.x2006.x07.jsdlHpcpa.HPCProfileApplicationDocument;
+import org.ggf.schemas.jsdl.x2006.x07.jsdlHpcpa.HPCProfileApplicationType;
+import org.ogf.schemas.jsdl.x2007.x02.jsdlSpmd.SPMDApplicationDocument;
+import org.ogf.schemas.jsdl.x2007.x02.jsdlSpmd.SPMDApplicationType;
+
+
+/**
+ *
+ * @author shahbaz memon, bastian demuth
+ *
+ */
+public class JSDLUtils
+{
+
+ public static final int FLAG_OVERWRITE = 1;
+ public static final int FLAG_APPEND = 2;
+ public static final int FLAG_DELETE_ON_TERMINATE = 32;
+
+ public static final QName POSIX_APPLICATION=POSIXApplicationDocument.type.getDocumentElementName();
+
+ public static final QName HPC_PROFILE_APPLICATION=HPCProfileApplicationDocument.type.getDocumentElementName();
+
+ public static final QName SPMD_APPLICATION=SPMDApplicationDocument.type.getDocumentElementName();
+
+ public static final String PROCESSESPERHOST = "ProcessesPerHost";
+ public static final String NUMBEROFPROCESSES = "NumberOfProcesses";
+ public static final String THREADSPERHOST = "ThreadsPerHost";
+
+
+
+ public static EnvironmentType addEnvVariable(JobDefinitionType def,String name, String value) {
+ POSIXApplicationType posixApp = getOrCreatePOSIXApplication(def);
+ EnvironmentType newEnv = posixApp.addNewEnvironment();
+ newEnv.setName(name);
+ newEnv.setStringValue(value);
+ return newEnv;
+ }
+
+ public static void setApplicationName(JobDefinitionType value, String applicationName) {
+ getOrCreateApplication(value).setApplicationName(applicationName);
+ }
+
+ public static void setApplicationVersion(JobDefinitionType value, String applicationVersion) {
+ getOrCreateApplication(value).setApplicationVersion(applicationVersion);
+ }
+
+ public static void addProjectName(JobDefinitionType value, String projectName) {
+ getOrCreateJobIdentification(value).addNewJobProject().setStringValue(projectName);
+ }
+
+ public static void addMultipleProjectNames(JobDefinitionType value, String[] projectNames) {
+ for (String name : projectNames) {
+ getOrCreateJobIdentification(value).addNewJobProject().setStringValue(name);
+ }
+ }
+
+ public static void addCandidateHost(JobDefinitionType value, String host) {
+ getOrCreateCandidateHosts(value).addHostName(host);
+
+ }
+ public static void addDataStagingTargetElement(JobDefinitionType value, String fileSystem, String file, String uri) {
+ addDataStagingTargetElement(value,fileSystem, file, uri, 0);
+ }
+
+ public static void addDataStagingTargetElement(JobDefinitionType value, String fileSystem, String file, String uri, int flags) {
+ JobDescriptionType jobDescr = getOrCreateJobDescription(value);
+ DataStagingType newDS = jobDescr.addNewDataStaging();
+ CreationFlagEnumeration.Enum creationFlag = CreationFlagEnumeration.DONT_OVERWRITE;
+ if((flags & FLAG_OVERWRITE) != 0) creationFlag = CreationFlagEnumeration.OVERWRITE;
+ if((flags & FLAG_APPEND) != 0) creationFlag = CreationFlagEnumeration.APPEND;
+ boolean deleteOnTerminate = (flags & FLAG_DELETE_ON_TERMINATE) != 0;
+ newDS.setCreationFlag(creationFlag);
+ newDS.setDeleteOnTermination(deleteOnTerminate);
+ SourceTargetType target = newDS.addNewTarget();
+
+ try {
+ uri = (uri == null) ? null : URIUtils.encodeAll(uri);
+ } catch (URIException e) {
+ }
+ target.setURI(uri);
+ newDS.setFileName(file);
+ if (fileSystem != null && !fileSystem.equals("Work")) { //$NON-NLS-1$
+ newDS.setFilesystemName(fileSystem);
+ }
+ }
+
+ public static void addDataStagingSourceElement(JobDefinitionType value, String uri, String fileSystem, String file) {
+ addDataStagingSourceElement(value, uri, fileSystem, file, 0);
+ }
+
+ public static void addDataStagingSourceElement(JobDefinitionType value, String uri, String fileSystem, String file, int flags) {
+ JobDescriptionType jobDescr = getOrCreateJobDescription(value);
+
+ try {
+ uri = (uri == null) ? null : URIUtils.encodeAll(uri);
+ } catch (URIException e) {
+ }
+ DataStagingType newDS = jobDescr.addNewDataStaging();
+ CreationFlagEnumeration.Enum creationFlag = CreationFlagEnumeration.DONT_OVERWRITE;
+ if((flags & FLAG_OVERWRITE) != 0) creationFlag = CreationFlagEnumeration.OVERWRITE;
+ if((flags & FLAG_APPEND) != 0) creationFlag = CreationFlagEnumeration.APPEND;
+ boolean deleteOnTerminate = (flags & FLAG_DELETE_ON_TERMINATE) != 0;
+ newDS.setCreationFlag(creationFlag);
+ newDS.setDeleteOnTermination(deleteOnTerminate);
+ SourceTargetType source = newDS.addNewSource();
+ source.setURI(uri);
+ newDS.setFileName(file);
+ if (fileSystem != null && !fileSystem.equals("Work")) { //$NON-NLS-1$
+ newDS.setFilesystemName(fileSystem);
+ }
+ }
+
+
+ public static ApplicationType getOrCreateApplication(JobDefinitionType value) {
+ JobDescriptionType jobDescr = getOrCreateJobDescription(value);
+ if (!jobDescr.isSetApplication()) {
+ jobDescr.addNewApplication();
+ }
+ return jobDescr.getApplication();
+ }
+
+ public static CandidateHostsType getOrCreateCandidateHosts(JobDefinitionType value) {
+ ResourcesType resources = getOrCreateResources(value);
+ if (!resources.isSetCandidateHosts()) {
+ resources.addNewCandidateHosts();
+ }
+ return resources.getCandidateHosts();
+ }
+
+ public static CPUArchitectureType getOrCreateCPUArchitecture(JobDefinitionType value) {
+
+ ResourcesType jobResources = getOrCreateResources(value);
+ if (!jobResources.isSetCPUArchitecture()) {
+ jobResources.addNewCPUArchitecture();
+ }
+ return jobResources.getCPUArchitecture();
+ }
+
+ public static org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType getOrCreateIndividualCPUCount(JobDefinitionType value) {
+ ResourcesType jobResources = getOrCreateResources(value);
+ if (!jobResources.isSetIndividualCPUCount()) {
+ jobResources.addNewIndividualCPUCount();
+ }
+ return jobResources.getIndividualCPUCount();
+ }
+
+
+ public static org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType getOrCreateIndividualCPUSpeed(JobDefinitionType value) {
+
+ ResourcesType jobResources = getOrCreateResources(value);
+ if (!jobResources.isSetIndividualCPUSpeed()) {
+ jobResources.addNewIndividualCPUSpeed();
+ }
+ return jobResources.getIndividualCPUSpeed();
+ }
+
+ public static org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType getOrCreateIndividualCPUTime(JobDefinitionType value) {
+
+ ResourcesType jobResources = getOrCreateResources(value);
+ if ( !jobResources.isSetIndividualCPUTime() ) {
+ jobResources.addNewIndividualCPUTime();
+ }
+ return jobResources.getIndividualCPUTime();
+ }
+
+ public static org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType getOrCreateIndividualDiskSpace(JobDefinitionType value) {
+
+ ResourcesType jobResources = getOrCreateResources(value);
+ if (!jobResources.isSetIndividualDiskSpace()) {
+ jobResources.addNewIndividualDiskSpace();
+ }
+ return jobResources.getIndividualDiskSpace();
+ }
+
+ public static org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType getOrCreateIndividualPhysicalMemory(JobDefinitionType value) {
+
+ ResourcesType jobResources = getOrCreateResources(value);
+ if (!jobResources.isSetIndividualPhysicalMemory()) {
+ jobResources.addNewIndividualPhysicalMemory();
+ }
+ return jobResources.getIndividualPhysicalMemory();
+ }
+
+ public static JobDescriptionType getOrCreateJobDescription(JobDefinitionType value) {
+ if (value.getJobDescription() == null) {
+ return value.addNewJobDescription();
+ }
+ return value.getJobDescription();
+ }
+
+ public static JobIdentificationType getOrCreateJobIdentification(JobDefinitionType value) {
+ JobDescriptionType descr = getOrCreateJobDescription(value);
+ if (descr.getJobIdentification() == null) {
+ return descr.addNewJobIdentification();
+ }
+ return descr.getJobIdentification();
+ }
+
+ public static OperatingSystemType getOrCreateOperatingSystem(JobDefinitionType value)
+ {
+ ResourcesType jobResources = getOrCreateResources(value);
+ if(!jobResources.isSetOperatingSystem()) {
+ jobResources.addNewOperatingSystem();
+ }
+ return jobResources.getOperatingSystem();
+ }
+
+ public static ResourcesType getOrCreateResources(JobDefinitionType value) {
+ JobDescriptionType jobDescr = getOrCreateJobDescription(value);
+ if (!jobDescr.isSetResources()) {
+ jobDescr.addNewResources();
+ }
+ return jobDescr.getResources();
+ }
+
+
+ public static org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType getOrCreateTotalCPUCount(JobDefinitionType value) {
+
+ ResourcesType jobResources = getOrCreateResources(value);
+ if ( !jobResources.isSetTotalCPUCount() ) {
+ jobResources.addNewTotalCPUCount();
+ }
+ return jobResources.getTotalCPUCount();
+ }
+
+
+ public static org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType getOrCreateTotalResourceCount(JobDefinitionType value) {
+
+ ResourcesType jobResources = getOrCreateResources(value);
+ if ( !jobResources.isSetTotalResourceCount())
+ {
+ jobResources.addNewTotalResourceCount();
+ }
+ return jobResources.getTotalResourceCount();
+ }
+
+ 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);
+ }
+
+
+ public static SPMDApplicationType getOrCreateSPMDApplication(JobDefinitionType value) {
+
+ ApplicationType application = getOrCreateApplication(value);
+
+ if (getSPMDApplication(value) == null) {
+ XmlCursor acursor = application.newCursor();
+ acursor.toEndToken();
+ acursor.insertElement(SPMD_APPLICATION);
+ acursor.dispose();
+ }
+ return getSPMDApplication(value);
+ }
+
+ public static SPMDApplicationType getSPMDApplication(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(SPMD_APPLICATION)) {
+ XmlObject result = acursor.getObject();
+ acursor.dispose();
+ return (SPMDApplicationType) result;
+ }
+ } while (acursor.toNextSibling());
+ acursor.dispose();
+ return null;
+ } else {
+ acursor.dispose();
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
+
+
+ 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;
+ }
+ }
+
+
+
+ public static HPCProfileApplicationType getOrCreateHPCProfileApplication(JobDefinitionType value) {
+
+ ApplicationType application = getOrCreateApplication(value);
+
+ if(getPOSIXApplication(value) != null){
+ //TODO handle: creating HPC element if POSIX already exists
+ return getHPCProfileApplication(value);
+ }
+
+ if (getHPCProfileApplication(value) == null) {
+ XmlCursor acursor = application.newCursor();
+ acursor.toEndToken();
+ acursor.insertElement(HPC_PROFILE_APPLICATION);
+ acursor.dispose();
+ }
+ return getHPCProfileApplication(value);
+ }
+
+
+ public static HPCProfileApplicationType getHPCProfileApplication(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(HPC_PROFILE_APPLICATION)) {
+ XmlObject result = acursor.getObject();
+ acursor.dispose();
+ return (HPCProfileApplicationType) result;
+ }
+ } while (acursor.toNextSibling());
+ acursor.dispose();
+ return null;
+ } else {
+ acursor.dispose();
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
+
+
+
+ public static RangeValueType getTotalCPUCountRequirements(JobDefinitionType value) {
+ if(value != null && value.getJobDescription() != null && value.getJobDescription().isSetResources() &&
+ value.getJobDescription().getResources().isSetTotalCPUCount()){
+ return toU6RangeValue(value.getJobDescription().getResources().getTotalCPUCount());
+ }
+ else
+ return null;
+ }
+
+ public static RangeValueType getTotalResourceCountRequirements(JobDefinitionType value) {
+ if(value != null && value.getJobDescription() != null && value.getJobDescription().isSetResources() &&
+ value.getJobDescription().getResources().isSetTotalResourceCount()){
+ return toU6RangeValue(value.getJobDescription().getResources().getTotalResourceCount());
+ }
+ else
+ return null;
+ }
+
+
+ public static RangeValueType toU6RangeValue(org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType jsdlType) {
+ RangeValueType result = new RangeValueType();
+ if(jsdlType.getExactArray().length > 0){
+ result.setExact(jsdlType.getExactArray(0).getDoubleValue());
+ }
+ if(jsdlType.isSetLowerBoundedRange()){
+ result.setLowerBound(jsdlType.getLowerBoundedRange().getDoubleValue());
+ }
+ if(jsdlType.isSetUpperBoundedRange()){
+ result.setUpperBound(jsdlType.getUpperBoundedRange().getDoubleValue());
+ }
+ return result;
+ }
+
+
+
+ public static void setCPUArchitectureRequirements(JobDefinitionType value, ProcessorRequirement cpuArchitecture) {
+ if(cpuArchitecture == null || cpuArchitecture.getValue() == null) return;
+ CPUArchitectureType cpuArch = getOrCreateCPUArchitecture(value);
+ cpuArch.setCPUArchitectureName(ProcessorArchitectureEnumeration.Enum.forString(cpuArchitecture.getValue()));
+ }
+
+ public static void setIndividualCPUCountRequirements(JobDefinitionType value, RangeValueType cpuCount) {
+ org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType individualCPUCount = getOrCreateIndividualCPUCount(value);
+ setRangeValue(cpuCount, individualCPUCount);
+ }
+
+ public static void setIndividualCPUSpeedRequirements(JobDefinitionType value, RangeValueType cpuSpeed) {
+ org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType individualCPUSpeed = getOrCreateIndividualCPUSpeed(value);
+ setRangeValue(cpuSpeed, individualCPUSpeed);
+ }
+
+ public static void setIndividualCPUTimeRequirements(JobDefinitionType value, RangeValueType cpuTime) {
+ org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType cpuIndividualTime = getOrCreateIndividualCPUTime(value);
+ setRangeValue(cpuTime, cpuIndividualTime);
+ }
+
+ public static void setIndividualDiskSpaceRequirements(JobDefinitionType value, RangeValueType diskSpace) {
+ org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType individualDiskSpace = getOrCreateIndividualDiskSpace(value);
+ setRangeValue(diskSpace, individualDiskSpace);
+ }
+
+ public static void setIndividualPhysicalMemoryRequirements(JobDefinitionType value, RangeValueType physicalMemory) {
+ org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType individualPhysicalMemory = getOrCreateIndividualPhysicalMemory(value);
+ setRangeValue(physicalMemory, individualPhysicalMemory);
+ }
+
+
+ public static void setName(JobDefinitionType value, String name) {
+ getOrCreateJobIdentification(value).setJobName(name);
+ }
+
+ public static void setOperatingSystemRequirements(JobDefinitionType value, OSRequirement osType) {
+ if(osType == null || osType.getOSType() == null) return;
+ OperatingSystemType os_Type = getOrCreateOperatingSystem(value);
+ OperatingSystemTypeType ostt = os_Type.addNewOperatingSystemType();
+ ostt.setOperatingSystemName(OperatingSystemTypeEnumeration.Enum.forString(osType.getOSType().getValue()));
+ if(osType.getOSVersion() != null)
+ {
+ os_Type.setOperatingSystemVersion(osType.getOSVersion());
+ }
+ }
+
+ public static void setRangeValue(RangeValueType u6Type, org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType jsdlType) {
+ Double exact = u6Type.getExact();
+ Double epsilon = u6Type.getEpsilon();
+ Double lower = u6Type.getLowerBound();
+ Double upper = u6Type.getUpperBound();
+
+
+ if(lower.isNaN() && upper.isNaN())
+ {
+ ExactType exactType = jsdlType.getExactArray().length > 0 ? jsdlType.getExactArray(0) : jsdlType.addNewExact();
+ exactType.setDoubleValue(exact);
+ if(!epsilon.isNaN() && epsilon != 0)
+ {
+ exactType.setEpsilon(epsilon);
+ }
+ }
+ else
+ {
+ if(!lower.isNaN())
+ {
+ BoundaryType lowerBound = jsdlType.isSetLowerBoundedRange() ? jsdlType.getLowerBoundedRange() : jsdlType.addNewLowerBoundedRange();
+ lowerBound.setDoubleValue(lower);
+ lowerBound.setExclusiveBound(!u6Type.isIncludeLowerBound());
+ }
+
+ if(!upper.isNaN())
+ {
+ BoundaryType upperBound = jsdlType.isSetUpperBoundedRange() ? jsdlType.getUpperBoundedRange() : jsdlType.addNewUpperBoundedRange();
+ upperBound.setDoubleValue(upper);
+ upperBound.setExclusiveBound(!u6Type.isIncludeUpperBound());
+ }
+ }
+ }
+
+ public static void setTotalCPUCountRequirements(JobDefinitionType value, RangeValueType cpuCount) {
+ org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType cpuTotalCount = getOrCreateTotalCPUCount(value);
+ setRangeValue(cpuCount, cpuTotalCount);
+ }
+
+ public static void setTotalResourceCountRequirements(JobDefinitionType value, RangeValueType resourceCount) {
+ org.ggf.schemas.jsdl.x2005.x11.jsdl.RangeValueType totalCount = getOrCreateTotalResourceCount(value);
+ setRangeValue(resourceCount, totalCount);
+ }
}
Modified: airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/ResourceProcessor.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/ResourceProcessor.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/ResourceProcessor.java (original)
+++ airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/ResourceProcessor.java Fri Dec 13 16:19:35 2013
@@ -1,94 +1,135 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
package org.apache.airavata.gfac.provider.utils;
import org.apache.airavata.gfac.context.JobExecutionContext;
+import org.apache.airavata.gfac.provider.GFacProviderException;
import org.apache.airavata.schemas.gfac.HpcApplicationDeploymentType;
-import org.ogf.schemas.jsdl.JobDefinitionType;
+import org.apache.airavata.schemas.gfac.QueueType;
+import org.apache.airavata.schemas.wec.ContextHeaderDocument;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionType;
+import org.ogf.schemas.jsdl.x2007.x02.jsdlSpmd.NumberOfProcessesType;
public class ResourceProcessor {
- public static void generateResourceElements(JobDefinitionType value, JobExecutionContext context) throws Exception {
+
+ public static void generateResourceElements(JobDefinitionType value, JobExecutionContext context) throws Exception{
+
+ HpcApplicationDeploymentType appDepType = (HpcApplicationDeploymentType) context
+ .getApplicationContext().getApplicationDeploymentDescription()
+ .getType();
+
+ createMemory(value, appDepType);
+ ContextHeaderDocument.ContextHeader currentContextHeader = context.getContextHeader();
+ if(currentContextHeader != null){
+ if (currentContextHeader.getWorkflowSchedulingContext() != null) {
+ if (currentContextHeader != null &&
+ currentContextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray() != null &&
+ currentContextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray().length > 0) {
+ try {
+ int cpuCount = currentContextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray()[0].getCpuCount();
+ if(cpuCount>0){
+// appDepType.setCpuCount(cpuCount);
+ NumberOfProcessesType num = NumberOfProcessesType.Factory.newInstance();
+ String processers = Integer.toString(cpuCount);
+ num.setStringValue(processers);
+ JSDLUtils.getOrCreateSPMDApplication(value).setNumberOfProcesses(num);
+ }
+ } catch (NullPointerException e) {
+ new GFacProviderException("No Value sent in WorkflowContextHeader for Node Count, value in the Deployment Descriptor will be used",e);
+ }
+ try {
+ int nodeCount = currentContextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray()[0].getNodeCount();
+ if(nodeCount>0){
+ appDepType.setNodeCount(nodeCount);
+ }
+ } catch (NullPointerException e) {
+ new GFacProviderException("No Value sent in WorkflowContextHeader for Node Count, value in the Deployment Descriptor will be used",e);
+ }
+ try {
+ String queueName = currentContextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray()[0].getQueueName();
+ if (queueName != null) {
+ if(appDepType.getQueue() == null){
+ QueueType queueType = appDepType.addNewQueue();
+ queueType.setQueueName(queueName);
+ }else{
+ appDepType.getQueue().setQueueName(queueName);
+ }
+ }
+ } catch (NullPointerException e) {
+ new GFacProviderException("No Value sent in WorkflowContextHeader for Node Count, value in the Deployment Descriptor will be used",e);
+ }
+ try {
+ int maxwallTime = currentContextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray()[0].getMaxWallTime();
+ if(maxwallTime>0){
+ appDepType.setMaxWallTime(maxwallTime);
+ }
+ } catch (NullPointerException e) {
+ new GFacProviderException("No Value sent in WorkflowContextHeader for Node Count, value in the Deployment Descriptor will be used",e);
+ }
+ }
+ }
+ }
+
+ if (appDepType.getCpuCount() > 0) {
+ RangeValueType rangeType = new RangeValueType();
+ rangeType.setLowerBound(Double.NaN);
+ rangeType.setUpperBound(Double.NaN);
+ rangeType.setExact(appDepType.getCpuCount());
+ JSDLUtils.setTotalCPUCountRequirements(value, rangeType);
+ }
+
+ if (appDepType.getProcessorsPerNode() > 0) {
+ RangeValueType rangeType = new RangeValueType();
+ rangeType.setLowerBound(Double.NaN);
+ rangeType.setUpperBound(Double.NaN);
+ rangeType.setExact(appDepType.getProcessorsPerNode());
+ JSDLUtils.setIndividualCPUCountRequirements(value, rangeType);
+ }
+
+ if (appDepType.getNodeCount() > 0) {
+ RangeValueType rangeType = new RangeValueType();
+ rangeType.setLowerBound(Double.NaN);
+ rangeType.setUpperBound(Double.NaN);
+ rangeType.setExact(appDepType.getNodeCount());
+ JSDLUtils.setTotalResourceCountRequirements(value, rangeType);
+ }
+
+ if(appDepType.getMaxWallTime() > 0) {
+ RangeValueType cpuTime = new RangeValueType();
+ cpuTime.setLowerBound(Double.NaN);
+ cpuTime.setUpperBound(Double.NaN);
+ long wallTime = appDepType.getMaxWallTime() * 60;
+ cpuTime.setExact(wallTime);
+ JSDLUtils.setIndividualCPUTimeRequirements(value, cpuTime);
+ }
+ }
+
+
+ private static void createMemory(JobDefinitionType value, HpcApplicationDeploymentType appDepType){
+ if (appDepType.getMinMemory() > 0 && appDepType.getMaxMemory() > 0) {
+ RangeValueType rangeType = new RangeValueType();
+ rangeType.setLowerBound(appDepType.getMinMemory());
+ rangeType.setUpperBound(appDepType.getMaxMemory());
+ JSDLUtils.setIndividualPhysicalMemoryRequirements(value, rangeType);
+ }
+
+ else if (appDepType.getMinMemory() > 0 && appDepType.getMaxMemory() <= 0) {
+ // TODO set Wall time
+ RangeValueType rangeType = new RangeValueType();
+ rangeType.setLowerBound(appDepType.getMinMemory());
+ JSDLUtils.setIndividualPhysicalMemoryRequirements(value, rangeType);
+ }
+
+ else if (appDepType.getMinMemory() <= 0 && appDepType.getMaxMemory() > 0) {
+ // TODO set Wall time
+ RangeValueType rangeType = new RangeValueType();
+ rangeType.setUpperBound(appDepType.getMinMemory());
+ JSDLUtils.setIndividualPhysicalMemoryRequirements(value, rangeType);
+ }
+
+ }
- HpcApplicationDeploymentType appDepType = (HpcApplicationDeploymentType) context.getApplicationContext()
- .getApplicationDeploymentDescription().getType();
-
- createMemory(value, appDepType);
-
- if (appDepType.getCpuCount() > 0) {
- RangeValueType rangeType = new RangeValueType();
- rangeType.setLowerBound(Double.NaN);
- rangeType.setUpperBound(Double.NaN);
- rangeType.setExact(appDepType.getCpuCount());
- JSDLUtils.setTotalCPUCountRequirements(value, rangeType);
- }
-
- if (appDepType.getProcessorsPerNode() > 0) {
- RangeValueType rangeType = new RangeValueType();
- rangeType.setLowerBound(Double.NaN);
- rangeType.setUpperBound(Double.NaN);
- rangeType.setExact(appDepType.getProcessorsPerNode());
- JSDLUtils.setIndividualCPUCountRequirements(value, rangeType);
- }
-
- if (appDepType.getNodeCount() > 0) {
- RangeValueType rangeType = new RangeValueType();
- rangeType.setLowerBound(Double.NaN);
- rangeType.setUpperBound(Double.NaN);
- rangeType.setExact(appDepType.getNodeCount());
- JSDLUtils.setTotalResourceCountRequirements(value, rangeType);
- }
-
- if (appDepType.getMaxWallTime() > 0) {
- RangeValueType cpuTime = new RangeValueType();
- cpuTime.setLowerBound(Double.NaN);
- cpuTime.setUpperBound(Double.NaN);
- long wallTime = appDepType.getMaxWallTime() * 60;
- cpuTime.setExact(wallTime);
- JSDLUtils.setIndividualCPUTimeRequirements(value, cpuTime);
- }
- }
-
- private static void createMemory(JobDefinitionType value, HpcApplicationDeploymentType appDepType) {
- if (appDepType.getMinMemory() > 0 && appDepType.getMaxMemory() > 0) {
- RangeValueType rangeType = new RangeValueType();
- rangeType.setLowerBound(appDepType.getMinMemory());
- rangeType.setUpperBound(appDepType.getMaxMemory());
- JSDLUtils.setIndividualPhysicalMemoryRequirements(value, rangeType);
- }
-
- else if (appDepType.getMinMemory() > 0 && appDepType.getMaxMemory() <= 0) {
- // TODO set Wall time
- RangeValueType rangeType = new RangeValueType();
- rangeType.setLowerBound(appDepType.getMinMemory());
- JSDLUtils.setIndividualPhysicalMemoryRequirements(value, rangeType);
- }
-
- else if (appDepType.getMinMemory() <= 0 && appDepType.getMaxMemory() > 0) {
- // TODO set Wall time
- RangeValueType rangeType = new RangeValueType();
- rangeType.setUpperBound(appDepType.getMinMemory());
- JSDLUtils.setIndividualPhysicalMemoryRequirements(value, rangeType);
- }
-
- }
+
+
+
}
Modified: airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDProcessor.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDProcessor.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDProcessor.java (original)
+++ airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDProcessor.java Fri Dec 13 16:19:35 2013
@@ -1,33 +1,12 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
package org.apache.airavata.gfac.provider.utils;
import org.apache.airavata.gfac.context.JobExecutionContext;
-import org.ogf.schemas.jsdl.JobDefinitionType;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionType;
public class SPMDProcessor {
- public static void generateSPMDElements(JobDefinitionType value, JobExecutionContext context) {
-
- }
-
+ public static void generateSPMDElements(JobDefinitionType value, JobExecutionContext context) {
+
+ }
+
}
Modified: airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDVariations.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDVariations.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDVariations.java (original)
+++ airavata/trunk/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/provider/utils/SPMDVariations.java Fri Dec 13 16:19:35 2013
@@ -1,24 +1,3 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
package org.apache.airavata.gfac.provider.utils;
public enum SPMDVariations {
Modified: airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/AbstractBESTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/AbstractBESTest.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/AbstractBESTest.java (original)
+++ airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/AbstractBESTest.java Fri Dec 13 16:19:35 2013
@@ -23,10 +23,9 @@ package org.apache.airavata.core.gfac.se
import java.io.File;
import java.net.URL;
import java.util.Date;
+import java.util.Random;
import java.util.UUID;
-import org.apache.airavata.common.utils.DatabaseTestCases;
-import org.apache.airavata.common.utils.DerbyUtil;
import org.apache.airavata.commons.gfac.type.ApplicationDescription;
import org.apache.airavata.commons.gfac.type.HostDescription;
import org.apache.airavata.commons.gfac.type.ServiceDescription;
@@ -40,20 +39,32 @@ import org.apache.airavata.gfac.context.
import org.apache.airavata.gfac.context.security.GSISecurityContext;
import org.apache.airavata.schemas.gfac.JobTypeType;
import org.apache.airavata.schemas.gfac.UnicoreHostType;
+import org.apache.airavata.schemas.wec.ContextHeaderDocument;
+import org.apache.airavata.schemas.wec.ContextHeaderDocument.ContextHeader;
import org.apache.log4j.PropertyConfigurator;
-import org.junit.BeforeClass;
public abstract class AbstractBESTest extends GFacBaseTestCase {
-
+
+ protected static String tmpFilePath = "target"+File.separator+"data";
protected JobExecutionContext jobExecutionContext;
+ private String userName = "";
- public static final String[] hostArray = new String[] { "https://zam1161v01.zam.kfa-juelich.de:8002/INTEROP1/services/BESFactory?res=default_bes_factory" };
-
+// public static final String[] hostArray = new String[] { "https://zam1161v01.zam.kfa-juelich.de:8002/INTEROP1/services/BESFactory?res=default_bes_factory" };
- // public static final String[] hostArray = new String[] {
- // "https://deisa-unic.fz-juelich.de:9111/FZJ_JUROPA/services/BESFactory?res=default_bes_factory"
- // };
+ public static final String[] hostArray = new String[] {
+ "https://deisa-unic.fz-juelich.de:9111/FZJ_JUROPA/services/BESFactory?res=default_bes_factory"
+ };
+
+
+// public static final String[] hostArray = new String[] {
+// "https://daemon.alamo.futuregrid.org:8082/ALAMO/services/BESFactory?res=default_bes_factory"
+// };
+
+// public static final String[] hostArray = new String[] {
+// "https://daemon.india.futuregrid.org:8081/INDIA/services/BESFactory?res=default_bes_factory"
+// };
+
// directory where data will be copy into and copied out to unicore
// resources
@@ -66,7 +77,7 @@ public abstract class AbstractBESTest ex
// public static final String scratchDir = "/brashear/msmemon/airavata/";
public static final String gridftpAddress = "gsiftp://osg-xsede.grid.iu.edu:2811/";
- public static final String scratchDir = "/home/ramifnu/airavata/";
+ public static final String scratchDir = "/home/ogce/airavata/";
protected String remoteTempDir = null;
@@ -91,7 +102,13 @@ public abstract class AbstractBESTest ex
}
- protected abstract void submitJob() throws Exception;
+ protected void submitJob() throws Exception {
+ ContextHeader contextHeader = ContextHeader.Factory.newInstance();
+ buildOutputLocation(contextHeader);
+
+ buildUserName(contextHeader, userName);
+ jobExecutionContext.setContextHeader(contextHeader);
+ }
protected GFacConfiguration getGFACConfig() throws Exception {
URL resource = this.getClass().getClassLoader()
@@ -130,5 +147,27 @@ public abstract class AbstractBESTest ex
protected abstract MessageContext getInMessageContext();
protected abstract MessageContext getOutMessageContext();
+
+
+ protected void buildOutputLocation(ContextHeader currentContextHeader) {
+ File tmpDir = new File(tmpFilePath+File.separator+"output-"+new Random().nextInt(1000));
+
+ if(!tmpDir.exists()) {
+ tmpDir.mkdirs();
+ }
+ currentContextHeader.addNewWorkflowOutputDataHandling().addNewApplicationOutputDataHandling().setOutputDataDirectory(tmpDir.getAbsolutePath());
+
+ }
+
+
+ protected void buildUserName(ContextHeader currentContextHeader, String userName) {
+ if("".equals(userName) || userName == null) return;
+
+ currentContextHeader.setUserIdentifier(userName);
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
}
Modified: airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/GSISSHProviderTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/GSISSHProviderTest.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/GSISSHProviderTest.java (original)
+++ airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/GSISSHProviderTest.java Fri Dec 13 16:19:35 2013
@@ -58,7 +58,7 @@ public class GSISSHProviderTest {
private static final String hostName = "trestles";
private static final String myProxyUserName = "ogce";
private static final String myProxyPassword = "";
- private static final String certificateLocation = "/Users/lahirugunathilake/Downloads/certificates";
+ private static final String certificateLocation = "/Users/raminder/.globus/certificates/";
@Before
public void setUp() throws Exception {
Modified: airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTest.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTest.java (original)
+++ airavata/trunk/modules/gfac/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/JSDLGeneratorTest.java Fri Dec 13 16:19:35 2013
@@ -1,24 +1,3 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
package org.apache.airavata.core.gfac.services.impl;
import static org.junit.Assert.assertEquals;
@@ -40,7 +19,6 @@ import org.apache.airavata.gfac.GFacConf
import org.apache.airavata.gfac.context.ApplicationContext;
import org.apache.airavata.gfac.context.JobExecutionContext;
import org.apache.airavata.gfac.context.MessageContext;
-import org.apache.airavata.gfac.context.security.GSISecurityContext;
import org.apache.airavata.gfac.provider.utils.JSDLGenerator;
import org.apache.airavata.gfac.provider.utils.JSDLUtils;
import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
@@ -54,230 +32,266 @@ import org.apache.airavata.schemas.gfac.
import org.apache.airavata.schemas.gfac.URIParameterType;
import org.apache.airavata.schemas.gfac.UnicoreHostType;
import org.apache.log4j.PropertyConfigurator;
+import org.ggf.schemas.jsdl.x2005.x11.jsdl.JobDefinitionDocument;
import org.junit.Before;
import org.junit.Test;
-import org.ogf.schemas.jsdl.JobDefinitionDocument;
-
-public class JSDLGeneratorTest extends GFacBaseTestCase {
-
- public static final String[] hostArray = new String[] { "https://zam1161v01.zam.kfa-juelich.de:8002/INTEROP1/services/BESFactory?res=default_bes_factory" };
- public static final String gridftpAddress = "gsiftp://gridftp.blacklight.psc.teragrid.org:2811";
- public static final String hostAddress = "zam1161v01.zam.kfa-juelich.de";
- public static final String hostName = "DEMO-INTEROP-SITE";
- public static final String scratchDir = "/scratch/msmemon/airavata";
-
- protected JobExecutionContext jobExecutionContext;
-
- @Test
- public void testSerialJSDL() throws Exception {
-
- JobTypeType jobType = JobTypeType.Factory.newInstance();
- jobType.set(JobTypeType.SERIAL);
- ApplicationContext appContext = getApplicationContext();
- appContext.setApplicationDeploymentDescription(getApplicationDesc(jobType));
- jobExecutionContext.setApplicationContext(appContext);
-
- JobDefinitionDocument jobDefDoc = JSDLGenerator.buildJSDLInstance(jobExecutionContext);
-
- assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getApplication().toString().contains("/bin/cat"));
- assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getDataStagingArray().length > 2);
-
- assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getJobIdentification().getJobProjectArray().length > 0);
-
- assertFalse(JSDLUtils.getPOSIXApplication(jobDefDoc.getJobDefinition()) == null);
-
- assertEquals("jsdl_stdout", JSDLUtils.getOrCreatePOSIXApplication(jobDefDoc.getJobDefinition()).getOutput()
- .getStringValue().toString());
-
- }
-
- @Test
- public void testMPIJSDL() throws Exception {
-
- JobTypeType jobType = JobTypeType.Factory.newInstance();
- jobType.set(JobTypeType.MPI);
- ApplicationContext appContext = getApplicationContext();
- appContext.setApplicationDeploymentDescription(getApplicationDesc(jobType));
- jobExecutionContext.setApplicationContext(appContext);
- JobDefinitionDocument jobDefDoc = JSDLGenerator.buildJSDLInstance(jobExecutionContext);
+public class JSDLGeneratorTest {
- assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getApplication().toString().contains("/bin/cat"));
- assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getDataStagingArray().length > 2);
+ public static final String[] hostArray = new String[] { "https://zam1161v01.zam.kfa-juelich.de:8002/INTEROP1/services/BESFactory?res=default_bes_factory" };
+ public static final String gridftpAddress = "gsiftp://gridftp.blacklight.psc.teragrid.org:2811";
+ public static final String hostAddress = "zam1161v01.zam.kfa-juelich.de";
+ public static final String hostName = "DEMO-INTEROP-SITE";
+ public static final String scratchDir = "/scratch/msmemon/airavata";
+
+ protected JobExecutionContext jobExecutionContext;
+
+
+ @Test
+ public void testSerialJSDLWithStdout() throws Exception{
+
+ JobTypeType jobType = JobTypeType.Factory.newInstance();
+ jobType.set(JobTypeType.SERIAL);
+ ApplicationContext appContext = getApplicationContext();
+ appContext.setApplicationDeploymentDescription(getApplicationDesc(jobType, true));
+ jobExecutionContext.setApplicationContext(appContext);
+
+ JobDefinitionDocument jobDefDoc = JSDLGenerator.buildJSDLInstance(jobExecutionContext);
+
+ assertTrue (jobDefDoc.getJobDefinition().getJobDescription().getApplication().toString().contains("/bin/cat"));
+ assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getDataStagingArray().length > 2);
+
+ assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getJobIdentification().getJobProjectArray().length > 0);
+
+ assertFalse(JSDLUtils.getPOSIXApplication(jobDefDoc.getJobDefinition())==null);
+
+ assertEquals("jsdl_stdout", JSDLUtils.getOrCreatePOSIXApplication(jobDefDoc.getJobDefinition()).getOutput().getStringValue().toString());
+
+ }
+
+ @Test
+ public void testSerialJSDLWithoutStdout() throws Exception{
+
+ JobTypeType jobType = JobTypeType.Factory.newInstance();
+ jobType.set(JobTypeType.SERIAL);
+ ApplicationContext appContext = getApplicationContext();
+ appContext.setApplicationDeploymentDescription(getApplicationDesc(jobType, false));
+ jobExecutionContext.setApplicationContext(appContext);
+
+ JobDefinitionDocument jobDefDoc = JSDLGenerator.buildJSDLInstance(jobExecutionContext);
+
+ assertTrue (jobDefDoc.getJobDefinition().getJobDescription().getApplication().toString().contains("/bin/cat"));
+ assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getDataStagingArray().length > 2);
+
+ assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getJobIdentification().getJobProjectArray().length > 0);
+
+ assertFalse(JSDLUtils.getPOSIXApplication(jobDefDoc.getJobDefinition())==null);
+
+ assertEquals("stdout", JSDLUtils.getOrCreatePOSIXApplication(jobDefDoc.getJobDefinition()).getOutput().getStringValue().toString());
+ assertEquals("stderr", JSDLUtils.getOrCreatePOSIXApplication(jobDefDoc.getJobDefinition()).getError().getStringValue().toString());
+
+ }
+
+
+ @Test
+ public void testMPIJSDL() throws Exception{
+
+ JobTypeType jobType = JobTypeType.Factory.newInstance();
+ jobType.set(JobTypeType.MPI);
+ ApplicationContext appContext = getApplicationContext();
+ appContext.setApplicationDeploymentDescription(getApplicationDesc(jobType, true));
+ jobExecutionContext.setApplicationContext(appContext);
+
+ JobDefinitionDocument jobDefDoc = JSDLGenerator.buildJSDLInstance(jobExecutionContext);
+
+ assertTrue (jobDefDoc.getJobDefinition().getJobDescription().getApplication().toString().contains("/bin/cat"));
+ assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getDataStagingArray().length > 2);
+
+ assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getJobIdentification().getJobProjectArray().length > 0);
+
+ assertEquals("jsdl_stdout", JSDLUtils.getOrCreateSPMDApplication(jobDefDoc.getJobDefinition()).getOutput().getStringValue().toString());
+
+ assertFalse(JSDLUtils.getSPMDApplication(jobDefDoc.getJobDefinition())==null);
+
+
+ }
- assertTrue(jobDefDoc.getJobDefinition().getJobDescription().getJobIdentification().getJobProjectArray().length > 0);
-
- assertEquals("jsdl_stdout", JSDLUtils.getOrCreateSPMDApplication(jobDefDoc.getJobDefinition()).getOutput()
- .getStringValue().toString());
-
- assertFalse(JSDLUtils.getSPMDApplication(jobDefDoc.getJobDefinition()) == null);
-
- }
-
- protected GFacConfiguration getGFACConfig() throws Exception {
+ protected GFacConfiguration getGFACConfig() throws Exception{
URL resource = BESProviderTest.class.getClassLoader().getResource("gfac-config.xml");
System.out.println(resource.getFile());
- GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()), null, null);
- return gFacConfiguration;
- }
-
- protected ApplicationContext getApplicationContext() {
- ApplicationContext applicationContext = new ApplicationContext();
- applicationContext.setHostDescription(getHostDesc());
-
- applicationContext.setServiceDescription(getServiceDesc());
- return applicationContext;
- }
-
- protected ApplicationDescription getApplicationDesc(JobTypeType jobType) {
- ApplicationDescription appDesc = new ApplicationDescription(HpcApplicationDeploymentType.type);
- HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc.getType();
- ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory
- .newInstance();
- name.setStringValue("EchoLocal");
- app.setApplicationName(name);
- ProjectAccountType projectAccountType = app.addNewProjectAccount();
- projectAccountType.setProjectAccountNumber("TG-AST110064");
-
- QueueType queueType = app.addNewQueue();
- queueType.setQueueName("development");
-
- app.setCpuCount(1);
- // TODO: also handle parallel jobs
- if ((jobType.enumValue() == JobTypeType.SERIAL) || (jobType.enumValue() == JobTypeType.SINGLE)) {
- app.setJobType(JobTypeType.SERIAL);
- } else if (jobType.enumValue() == JobTypeType.MPI) {
- app.setJobType(JobTypeType.MPI);
- } else {
- app.setJobType(JobTypeType.OPEN_MP);
- }
-
- app.setNodeCount(1);
- app.setProcessorsPerNode(1);
-
- /*
- * Use bat file if it is compiled on Windows
- */
- app.setExecutableLocation("/bin/cat");
-
- /*
- * Default tmp location
- */
- String date = (new Date()).toString();
- date = date.replaceAll(" ", "_");
- date = date.replaceAll(":", "_");
-
- String remoteTempDir = scratchDir + File.separator + "SimpleEcho" + "_" + date + "_" + UUID.randomUUID();
-
- System.out.println(remoteTempDir);
-
- // no need of these parameters, as unicore manages by itself
- app.setScratchWorkingDirectory(remoteTempDir);
- app.setStaticWorkingDirectory(remoteTempDir);
- app.setInputDataDirectory(remoteTempDir + File.separator + "inputData");
- app.setOutputDataDirectory(remoteTempDir + File.separator + "outputData");
-
- app.setStandardOutput(app.getOutputDataDirectory() + "/jsdl_stdout");
-
- app.setStandardError(app.getOutputDataDirectory() + "/jsdl_stderr");
-
- return appDesc;
- }
-
- protected HostDescription getHostDesc() {
- HostDescription host = new HostDescription(UnicoreHostType.type);
- host.getType().setHostAddress(hostAddress);
- host.getType().setHostName(hostName);
- ((UnicoreHostType) host.getType()).setUnicoreBESEndPointArray(hostArray);
- ((UnicoreHostType) host.getType()).setGridFTPEndPointArray(new String[] { gridftpAddress });
- return host;
- }
-
- protected ServiceDescription getServiceDesc() {
- ServiceDescription serv = new ServiceDescription();
- serv.getType().setName("SimpleCat");
-
- List<InputParameterType> inputList = new ArrayList<InputParameterType>();
- InputParameterType input = InputParameterType.Factory.newInstance();
- input.setParameterName("echo_input");
- input.setParameterType(StringParameterType.Factory.newInstance());
- inputList.add(input);
- InputParameterType[] inputParamList = inputList.toArray(new InputParameterType[inputList.size()]);
-
- List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
- OutputParameterType output = OutputParameterType.Factory.newInstance();
- output.setParameterName("echo_output");
- output.setParameterType(StringParameterType.Factory.newInstance());
- outputList.add(output);
- OutputParameterType[] outputParamList = outputList.toArray(new OutputParameterType[outputList.size()]);
-
- serv.getType().setInputParametersArray(inputParamList);
- serv.getType().setOutputParametersArray(outputParamList);
-
- return serv;
- }
-
- protected MessageContext getInMessageContext() {
- MessageContext inMessage = new MessageContext();
-
+ GFacConfiguration gFacConfiguration = GFacConfiguration.create(new File(resource.getPath()),null,null);
+ return gFacConfiguration;
+ }
+
+
+ protected ApplicationContext getApplicationContext() {
+ ApplicationContext applicationContext = new ApplicationContext();
+ applicationContext.setHostDescription(getHostDesc());
+
+ applicationContext.setServiceDescription(getServiceDesc());
+ return applicationContext;
+ }
+
+ protected ApplicationDescription getApplicationDesc(JobTypeType jobType, boolean setOuput) {
+ ApplicationDescription appDesc = new ApplicationDescription(
+ HpcApplicationDeploymentType.type);
+ HpcApplicationDeploymentType app = (HpcApplicationDeploymentType) appDesc
+ .getType();
+ ApplicationDeploymentDescriptionType.ApplicationName name = ApplicationDeploymentDescriptionType.ApplicationName.Factory
+ .newInstance();
+ name.setStringValue("EchoLocal");
+ app.setApplicationName(name);
+ ProjectAccountType projectAccountType = app.addNewProjectAccount();
+ projectAccountType.setProjectAccountNumber("TG-AST110064");
+
+ QueueType queueType = app.addNewQueue();
+ queueType.setQueueName("development");
+
+ app.setCpuCount(1);
+ // TODO: also handle parallel jobs
+ if((jobType.enumValue() == JobTypeType.SERIAL) || (jobType.enumValue() == JobTypeType.SINGLE)) {
+ app.setJobType(JobTypeType.SERIAL);
+ }
+ else if (jobType.enumValue() == JobTypeType.MPI) {
+ app.setJobType(JobTypeType.MPI);
+ }
+ else {
+ app.setJobType(JobTypeType.OPEN_MP);
+ }
+
+ app.setNodeCount(1);
+ app.setProcessorsPerNode(1);
+
+ /*
+ * Use bat file if it is compiled on Windows
+ */
+ app.setExecutableLocation("/bin/cat");
+
+ /*
+ * Default tmp location
+ */
+ String date = (new Date()).toString();
+ date = date.replaceAll(" ", "_");
+ date = date.replaceAll(":", "_");
+
+ String remoteTempDir = scratchDir + File.separator + "SimpleEcho" + "_" + date + "_"
+ + UUID.randomUUID();
+
+ System.out.println(remoteTempDir);
+
+ // no need of these parameters, as unicore manages by itself
+ app.setScratchWorkingDirectory(remoteTempDir);
+ app.setStaticWorkingDirectory(remoteTempDir);
+ app.setInputDataDirectory(remoteTempDir + File.separator + "inputData");
+ app.setOutputDataDirectory(remoteTempDir + File.separator + "outputData");
+
+ if(setOuput) {
+ app.setStandardOutput(app.getOutputDataDirectory()+"/jsdl_stdout");
+ app.setStandardError(app.getOutputDataDirectory()+"/jsdl_stderr");
+ }
+ return appDesc;
+ }
+
+ protected HostDescription getHostDesc() {
+ HostDescription host = new HostDescription(UnicoreHostType.type);
+ host.getType().setHostAddress(hostAddress);
+ host.getType().setHostName(hostName);
+ ((UnicoreHostType) host.getType()).setUnicoreBESEndPointArray(hostArray);
+ ((UnicoreHostType) host.getType()).setGridFTPEndPointArray(new String[]{gridftpAddress});
+ return host;
+ }
+
+ protected ServiceDescription getServiceDesc() {
+ ServiceDescription serv = new ServiceDescription();
+ serv.getType().setName("SimpleCat");
+
+ List<InputParameterType> inputList = new ArrayList<InputParameterType>();
+ InputParameterType input = InputParameterType.Factory.newInstance();
+ input.setParameterName("echo_input");
+ input.setParameterType(StringParameterType.Factory.newInstance());
+ inputList.add(input);
+ InputParameterType[] inputParamList = inputList
+ .toArray(new InputParameterType[inputList.size()]);
+
+ List<OutputParameterType> outputList = new ArrayList<OutputParameterType>();
+ OutputParameterType output = OutputParameterType.Factory.newInstance();
+ output.setParameterName("echo_output");
+ output.setParameterType(StringParameterType.Factory.newInstance());
+ outputList.add(output);
+ OutputParameterType[] outputParamList = outputList
+ .toArray(new OutputParameterType[outputList.size()]);
+
+ serv.getType().setInputParametersArray(inputParamList);
+ serv.getType().setOutputParametersArray(outputParamList);
+
+
+ return serv;
+ }
+
+ protected MessageContext getInMessageContext() {
+ MessageContext inMessage = new MessageContext();
+
ActualParameter i1 = new ActualParameter();
i1.getType().changeType(URIParameterType.type);
- ((URIParameterType) i1.getType()).setValue("file:///tmp/ifile1");
+ ((URIParameterType)i1.getType()).setValue("file:///tmp/ifile1");
inMessage.addParameter("i1", i1);
-
+
ActualParameter i2 = new ActualParameter();
i2.getType().changeType(URIParameterType.type);
- ((URIParameterType) i2.getType()).setValue("file:///tmp/ifile2");
+ ((URIParameterType)i2.getType()).setValue("file:///tmp/ifile2");
inMessage.addParameter("i2", i2);
-
+
ActualParameter i3 = new ActualParameter();
i2.getType().changeType(URIParameterType.type);
- ((URIParameterType) i2.getType()).setValue("///tmp/ifile2");
+ ((URIParameterType)i2.getType()).setValue("///tmp/ifile2");
inMessage.addParameter("i3", i2);
ActualParameter simpleArg = new ActualParameter();
simpleArg.getType().changeType(StringParameterType.type);
- ((StringParameterType) simpleArg.getType()).setValue("argument1");
+ ((StringParameterType)simpleArg.getType()).setValue("argument1");
inMessage.addParameter("a1", simpleArg);
-
+
ActualParameter nameValueArg = new ActualParameter();
nameValueArg.getType().changeType(StringParameterType.type);
- ((StringParameterType) nameValueArg.getType()).setValue("name1=value1");
+ ((StringParameterType)nameValueArg.getType()).setValue("name1=value1");
inMessage.addParameter("nameValueArg", nameValueArg);
-
- ActualParameter echo_input = new ActualParameter();
- ((StringParameterType) echo_input.getType()).setValue("echo_output=hello");
- inMessage.addParameter("echo_input", echo_input);
-
- return inMessage;
- }
-
- protected MessageContext getOutMessageContext() {
- MessageContext om1 = new MessageContext();
-
- // TODO: Aint the output parameters are only the name of the files staged out to the gridftp endpoint?
- ActualParameter o1 = new ActualParameter();
- ((StringParameterType) o1.getType()).setValue("tempfile");
- om1.addParameter("o1", o1);
-
- ActualParameter o2 = new ActualParameter();
- o2.getType().changeType(URIParameterType.type);
-
- ((URIParameterType) o2.getType()).setValue("http://path/to/upload");
- om1.addParameter("o2", o2);
-
- return om1;
- }
-
- @Before
- public void initJobContext() throws Exception {
- PropertyConfigurator.configure("src/test/resources/logging.properties");
- jobExecutionContext = new JobExecutionContext(getGFACConfig(), getServiceDesc().getType().getName());
- jobExecutionContext.setApplicationContext(getApplicationContext());
- jobExecutionContext.setInMessageContext(getInMessageContext());
- jobExecutionContext.setOutMessageContext(getOutMessageContext());
- jobExecutionContext.addSecurityContext(GSISecurityContext.GSI_SECURITY_CONTEXT, getSecurityContext());
-
- }
-
+
+ ActualParameter echo_input = new ActualParameter();
+ ((StringParameterType) echo_input.getType())
+ .setValue("echo_output=hello");
+ inMessage.addParameter("echo_input", echo_input);
+
+ return inMessage;
+ }
+
+ protected MessageContext getOutMessageContext() {
+ MessageContext om1 = new MessageContext();
+
+ // TODO: Aint the output parameters are only the name of the files staged out to the gridftp endpoint?
+ ActualParameter o1 = new ActualParameter();
+ ((StringParameterType) o1.getType())
+ .setValue("tempfile");
+ om1.addParameter("o1", o1);
+
+ ActualParameter o2 = new ActualParameter();
+ o2.getType().changeType(URIParameterType.type);
+
+ ((URIParameterType)o2.getType()).setValue("http://path/to/upload");
+ om1.addParameter("o2", o2);
+
+
+
+ return om1;
+ }
+
+ @Before
+ public void initJobContext() throws Exception {
+ PropertyConfigurator.configure("src/test/resources/logging.properties");
+ jobExecutionContext = new JobExecutionContext(getGFACConfig(), getServiceDesc().getType().getName());
+ jobExecutionContext.setApplicationContext(getApplicationContext());
+ jobExecutionContext.setInMessageContext(getInMessageContext());
+ jobExecutionContext.setOutMessageContext(getOutMessageContext());
+ }
+
+
}
Modified: airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJob.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJob.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJob.java (original)
+++ airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJob.java Fri Dec 13 16:19:35 2013
@@ -68,8 +68,12 @@ public class ApplicationJob {
/**
* Application job is being executed.
*/
- EXECUTING,
- /**
+ EXECUTING,
+ /**
+ * Application job is being active.
+ */
+ ACTIVE,
+ /**
* Application job is paused/suspended
*/
SUSPENDED,
@@ -105,6 +109,10 @@ public class ApplicationJob {
* Execution of the application job was cancelled.
*/
CANCELLED,
+ /**
+ * Execution of the application job was cancelled.
+ */
+ CANCELED,
/**
* Unable to determine the current status of the application job. <br />
* <em><strong>Note: </strong>More information may be available on the application job
Modified: airavata/trunk/modules/test-suite/pom.xml
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/test-suite/pom.xml?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/test-suite/pom.xml (original)
+++ airavata/trunk/modules/test-suite/pom.xml Fri Dec 13 16:19:35 2013
@@ -33,7 +33,7 @@
<dependency>
<groupId>org.bouncycastle</groupId>
- <artifactId>bcprov-jdk16</artifactId>
+ <artifactId>bcprov-jdk15on</artifactId>
</dependency>
<dependency>
<groupId>commons-configuration</groupId>
Modified: airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java?rev=1550760&r1=1550759&r2=1550760&view=diff
==============================================================================
--- airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java (original)
+++ airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java Fri Dec 13 16:19:35 2013
@@ -412,17 +412,16 @@ public class EmbeddedGFacInvoker impleme
GSISecurityContext context;
- String gatewayId = contextHeader.getSecurityContext().getCredentialManagementService().getGatewayId();
if (credentialManagementService != null) {
+ String gatewayId = credentialManagementService.getGatewayId();
String tokenId
= credentialManagementService.getTokenId();
String portalUser = credentialManagementService.getPortalUser();
requestData = new RequestData(tokenId, portalUser, gatewayId);
} else {
-
- requestData = new RequestData(gatewayId);
+ requestData = new RequestData("default");
}
try {