Improving Batch Queue Validations
diff --git a/modules/configuration/server/src/main/resources/airavata-server.properties b/modules/configuration/server/src/main/resources/airavata-server.properties
index e604bd3..2df1531 100644
--- a/modules/configuration/server/src/main/resources/airavata-server.properties
+++ b/modules/configuration/server/src/main/resources/airavata-server.properties
@@ -247,7 +247,7 @@
#job.submitter=org.apache.airavata.orchestrator.core.impl.GFACEmbeddedJobSubmitter
job.submitter=org.apache.airavata.orchestrator.core.impl.GFACPassiveJobSubmitter
#job.submitter=org.apache.airavata.orchestrator.core.impl.GFACRPCJobSubmitter
-job.validators=org.apache.airavata.orchestrator.core.validator.impl.SimpleAppDataValidator,org.apache.airavata.orchestrator.core.validator.impl.ExperimentStatusValidator
+job.validators=org.apache.airavata.orchestrator.core.validator.impl.BatchQueueValidator,org.apache.airavata.orchestrator.core.validator.impl.ExperimentStatusValidator
submitter.interval=10000
threadpool.size=10
start.submitter=true
diff --git a/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties b/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties
index 37209a8..197d4e4 100644
--- a/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties
+++ b/modules/credential-store/credential-store-service/src/test/resources/airavata-server.properties
@@ -235,7 +235,7 @@
#job.submitter=org.apache.airavata.orchestrator.core.impl.GFACEmbeddedJobSubmitter
#job.submitter=org.apache.airavata.orchestrator.core.impl.GFACPassiveJobSubmitter
job.submitter=org.apache.airavata.orchestrator.core.impl.GFACRPCJobSubmitter
-job.validators=org.apache.airavata.orchestrator.core.validator.impl.SimpleAppDataValidator,org.apache.airavata.orchestrator.core.validator.impl.ExperimentStatusValidator
+job.validators=org.apache.airavata.orchestrator.core.validator.impl.BatchQueueValidator,org.apache.airavata.orchestrator.core.validator.impl.ExperimentStatusValidator
submitter.interval=10000
threadpool.size=10
start.submitter=true
diff --git a/modules/credential-store/credential-store-webapp/src/main/resources/airavata-server.properties b/modules/credential-store/credential-store-webapp/src/main/resources/airavata-server.properties
index 39f827d..580f598 100644
--- a/modules/credential-store/credential-store-webapp/src/main/resources/airavata-server.properties
+++ b/modules/credential-store/credential-store-webapp/src/main/resources/airavata-server.properties
@@ -218,7 +218,7 @@
#job.submitter=org.apache.airavata.orchestrator.core.impl.GFACEmbeddedJobSubmitter
#job.submitter=org.apache.airavata.orchestrator.core.impl.GFACPassiveJobSubmitter
job.submitter=org.apache.airavata.orchestrator.core.impl.GFACRPCJobSubmitter
-job.validators=org.apache.airavata.orchestrator.core.validator.impl.SimpleAppDataValidator,org.apache.airavata.orchestrator.core.validator.impl.ExperimentStatusValidator
+job.validators=org.apache.airavata.orchestrator.core.validator.impl.BatchQueueValidator,org.apache.airavata.orchestrator.core.validator.impl.ExperimentStatusValidator
submitter.interval=10000
threadpool.size=10
start.submitter=true
diff --git a/modules/gfac/airavata-gfac-service/src/test/resources/orchestrator.properties b/modules/gfac/airavata-gfac-service/src/test/resources/orchestrator.properties
index 5ebfe4f..35c0427 100644
--- a/modules/gfac/airavata-gfac-service/src/test/resources/orchestrator.properties
+++ b/modules/gfac/airavata-gfac-service/src/test/resources/orchestrator.properties
@@ -18,7 +18,7 @@
# under the License.
#
job.submitter=org.apache.airavata.orchestrator.core.impl.EmbeddedGFACJobSubmitter
-job.validators=org.apache.airavata.orchestrator.core.validator.impl.SimpleAppDataValidator
+job.validators=org.apache.airavata.orchestrator.core.validator.impl.BatchQueueValidator
submitter.interval=10000
threadpool.size=0
start.submitter=true
diff --git a/modules/orchestrator/airavata-orchestrator-service/src/test/resources/orchestrator.properties b/modules/orchestrator/airavata-orchestrator-service/src/test/resources/orchestrator.properties
index a1f0169..e84c429 100644
--- a/modules/orchestrator/airavata-orchestrator-service/src/test/resources/orchestrator.properties
+++ b/modules/orchestrator/airavata-orchestrator-service/src/test/resources/orchestrator.properties
@@ -18,7 +18,7 @@
# under the License.
#
job.submitter=org.apache.airavata.orchestrator.core.impl.GFACEmbeddedJobSubmitter
-job.validators=org.apache.airavata.orchestrator.core.validator.impl.SimpleAppDataValidator
+job.validators=org.apache.airavata.orchestrator.core.validator.impl.BatchQueueValidator
submitter.interval=10000
threadpool.size=0
start.submitter=true
diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/SimpleAppDataValidator.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/BatchQueueValidator.java
similarity index 71%
rename from modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/SimpleAppDataValidator.java
rename to modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/BatchQueueValidator.java
index 21e2ac7..8cd88fa 100644
--- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/SimpleAppDataValidator.java
+++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/BatchQueueValidator.java
@@ -38,13 +38,13 @@
import java.util.ArrayList;
import java.util.List;
-public class SimpleAppDataValidator implements JobMetadataValidator {
- private final static Logger logger = LoggerFactory.getLogger(SimpleAppDataValidator.class);
+public class BatchQueueValidator implements JobMetadataValidator {
+ private final static Logger logger = LoggerFactory.getLogger(BatchQueueValidator.class);
private Registry registry;
private AppCatalog appCatalog;
- public SimpleAppDataValidator() {
+ public BatchQueueValidator() {
try {
this.registry = RegistryFactory.getDefaultRegistry();
this.appCatalog = AppCatalogFactory.getAppCatalog();
@@ -79,7 +79,7 @@
UserConfigurationData userConfigurationData = experiment.getUserConfigurationData();
ComputationalResourceScheduling computationalResourceScheduling = userConfigurationData.getComputationalResourceScheduling();
if (userConfigurationData.isAiravataAutoSchedule()) {
- logger.error("We dont' support auto scheduling at this point, We will simply use user data as it is");
+ logger.error("Auto-Schedule is not yet supported. Experiment will proceed with provided scheduling information");
ValidatorResult validatorResult = new ValidatorResult();
validatorResult.setResult(false);
validatorResultList.add(validatorResult);
@@ -89,25 +89,39 @@
if (batchQueues != null && !batchQueues.isEmpty()){
if (computationalResourceScheduling != null){
- String queueName = computationalResourceScheduling.getQueueName().trim();
- int wallTimeLimit = computationalResourceScheduling.getWallTimeLimit();
+ String experimentQueueName = computationalResourceScheduling.getQueueName().trim();
+ int experimentWallTimeLimit = computationalResourceScheduling.getWallTimeLimit();
ValidatorResult queueNameResult = new ValidatorResult();
+ //Set the validation to false. Once all the queue's are looped, if nothing matches, then this gets passed.
queueNameResult.setResult(false);
- queueNameResult.setErrorDetails("Unable to find queue name from appcatalog configured queues.. Either you " +
- "specified a wrong queue name or you did not configure app catalog correctly...");
+ queueNameResult.setErrorDetails("The specified queue" + experimentQueueName +
+ "does not exist. If you believe this is an error, contact the administrator to verify App-Catalog Configurations");
for (BatchQueue queue : batchQueues){
- String configuredQname = queue.getQueueName();
- int maxRunTime = queue.getMaxRunTime();
- if (configuredQname != null && configuredQname.equals(queueName)){
- ValidatorResult wallTimeResult = new ValidatorResult();
- wallTimeResult.setResult(false);
- wallTimeResult.setErrorDetails("Provided walltime period exceeds max walltime configured..");
+ String resourceQueueName = queue.getQueueName();
+ int maxQueueRunTime = queue.getMaxRunTime();
+ if (resourceQueueName != null && resourceQueueName.equals(experimentQueueName)){
queueNameResult.setResult(true);
queueNameResult.setErrorDetails("");
- if (maxRunTime != 0 && maxRunTime > wallTimeLimit){
+
+ //Validate if the specified wall time is within allowable limit
+ ValidatorResult wallTimeResult = new ValidatorResult();
+ if (maxQueueRunTime == 0) {
wallTimeResult.setResult(true);
- wallTimeResult.setErrorDetails("");
+ wallTimeResult.setErrorDetails("Maximum wall time is not configured for the queue," +
+ "Validation is being skipped");
+ logger.info("Maximum wall time is not configured for the queue" +
+ "Validation is being skipped");
+ } else {
+ if (maxQueueRunTime < experimentWallTimeLimit){
+ wallTimeResult.setResult(false);
+ wallTimeResult.setErrorDetails("Job Execution walltime " + experimentWallTimeLimit +
+ "exceeds the allowable walltime" + maxQueueRunTime +
+ "for queue " + resourceQueueName);
+ } else {
+ wallTimeResult.setResult(true);
+ wallTimeResult.setErrorDetails("");
+ }
}
validatorResultList.add(wallTimeResult);
}