Qos per queue: que1=qos1,que2=qos2,que3=qos3
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
index 0bda74e..afbf425 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
@@ -73,6 +73,8 @@
import java.nio.ByteBuffer;
import java.security.SecureRandom;
import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
//import org.apache.airavata.commons.gfac.type.ActualParameter;
@@ -457,12 +459,12 @@
}
if (crp.getQualityOfService() != null) {
- jobDescriptor.setQoS(crp.getQualityOfService());
+ // qos per queue
+ jobDescriptor.setQoS(
+ getQoS(crp.getQualityOfService(), crp.getPreferredBatchQueue()));
}
- if (crp.getReservation() != null) {
- jobDescriptor.setReservation(crp.getReservation());
- }
+ jobDescriptor.setReservation(crp.getReservation());
// To make job name alpha numeric
jobDescriptor.setJobName("A" + String.valueOf(generateJobName()));
jobDescriptor.setWorkingDirectory(processContext.getWorkingDir());
@@ -634,6 +636,16 @@
return jobDescriptor;
}
+ private static String getQoS(String qualityOfService, String preferredBatchQueue) {
+ final String qos = "qos";
+ Pattern pattern = Pattern.compile(preferredBatchQueue + "=(?<" + qos + ">[^,]*)");
+ Matcher matcher = pattern.matcher(qualityOfService);
+ if (matcher.matches()) {
+ return matcher.group(qos);
+ }
+ return null;
+ }
+
private static int generateJobName() {
Random random = new Random();
int i = random.nextInt(Integer.MAX_VALUE);