Repository: airavata
Updated Branches:
  refs/heads/gfac_appcatalog_int 3eea1a309 -> d8176e813


Fixed NPE of scheduler and changed gfac-config.xml


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/d8176e81
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/d8176e81
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/d8176e81

Branch: refs/heads/gfac_appcatalog_int
Commit: d8176e813b6cf7bb0fe5ec118f502781c4615ff9
Parents: 3eea1a3
Author: shamrath <[email protected]>
Authored: Thu Nov 6 11:31:39 2014 -0500
Committer: shamrath <[email protected]>
Committed: Thu Nov 6 11:31:39 2014 -0500

----------------------------------------------------------------------
 .../tools/RegisterSampleApplications.java       |  8 +--
 .../server/src/main/resources/gfac-config.xml   |  6 +--
 .../org/apache/airavata/gfac/Constants.java     |  3 ++
 .../org/apache/airavata/gfac/Scheduler.java     | 56 ++++++++++++++++----
 .../airavata/gfac/core/utils/GFacUtils.java     | 26 ++++++++-
 5 files changed, 82 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/d8176e81/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
----------------------------------------------------------------------
diff --git 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
index bd4023b..b5fc2b2 100644
--- 
a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
+++ 
b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java
@@ -1092,12 +1092,12 @@ public class RegisterSampleApplications {
 
 
             ComputeResourcePreference stampedeResourcePreferences = 
RegisterSampleApplicationsUtils.
-                    createComputeResourcePreference(stampedeResourceId, 
"TG-STA110014S", false, null, null, null,
-                            "/scratch/01437/ogce/gta-work-dirs");
+                    createComputeResourcePreference(stampedeResourceId, 
"TG-STA110014S", false, null,
+                            JobSubmissionProtocol.SSH, 
DataMovementProtocol.SCP, "/scratch/01437/ogce/gta-work-dirs");
 
             ComputeResourcePreference trestlesResourcePreferences = 
RegisterSampleApplicationsUtils.
-                    createComputeResourcePreference(trestlesResourceId, 
"sds128", false, null, null, null,
-                            
"/oasis/scratch/trestles/ogce/temp_project/gta-work-dirs");
+                    createComputeResourcePreference(trestlesResourceId, 
"sds128", false, null, JobSubmissionProtocol.SSH,
+                            DataMovementProtocol.SCP, 
"/oasis/scratch/trestles/ogce/temp_project/gta-work-dirs");
 
             ComputeResourcePreference bigRedResourcePreferences = 
RegisterSampleApplicationsUtils.
                     createComputeResourcePreference(bigredResourceId, 
"TG-STA110014S", false, null, null, null,

http://git-wip-us.apache.org/repos/asf/airavata/blob/d8176e81/modules/configuration/server/src/main/resources/gfac-config.xml
----------------------------------------------------------------------
diff --git a/modules/configuration/server/src/main/resources/gfac-config.xml 
b/modules/configuration/server/src/main/resources/gfac-config.xml
index 85421c4..502192f 100644
--- a/modules/configuration/server/src/main/resources/gfac-config.xml
+++ b/modules/configuration/server/src/main/resources/gfac-config.xml
@@ -22,7 +22,7 @@
         </InHandlers>
         <OutHandlers></OutHandlers>
     </GlobalHandlers>
-    <Provider 
class="org.apache.airavata.gfac.local.provider.impl.LocalProvider" 
host="org.apache.airavata.schemas.gfac.impl.HostDescriptionTypeImpl">
+    <Provider 
class="org.apache.airavata.gfac.local.provider.impl.LocalProvider" 
submission="LOCAL">
         <InHandlers>
             <Handler 
class="org.apache.airavata.gfac.local.handler.LocalDirectorySetupHandler"/>
         </InHandlers>
@@ -65,7 +65,7 @@
         </OutHandlers>
     </Application>
 
-     <Provider class="org.apache.airavata.gfac.ssh.provider.impl.SSHProvider" 
host="org.apache.airavata.schemas.gfac.impl.SSHHostTypeImpl" 
executionMode="async">
+     <Provider class="org.apache.airavata.gfac.ssh.provider.impl.SSHProvider" 
submission="SSH" executionMode="async">
          <InHandlers>
             <Handler 
class="org.apache.airavata.gfac.ssh.handler.SSHDirectorySetupHandler"/>
             <Handler 
class="org.apache.airavata.gfac.ssh.handler.SSHInputHandler"/>
@@ -74,7 +74,7 @@
             <Handler 
class="org.apache.airavata.gfac.ssh.handler.SSHOutputHandler"/>
         </OutHandlers>
     </Provider>
-    <Provider 
class="org.apache.airavata.gfac.gsissh.provider.impl.GSISSHProvider" 
host="org.apache.airavata.schemas.gfac.impl.GsisshHostTypeImpl" 
executionMode="async">
+    <Provider 
class="org.apache.airavata.gfac.gsissh.provider.impl.GSISSHProvider" 
submission="SSH" security="GSI" executionMode="async">
              <InHandlers>
                 <Handler 
class="org.apache.airavata.gfac.gsissh.handler.GSISSHDirectorySetupHandler"/>
                  <!--Handler 
class="org.apache.airavata.gfac.ssh.handler.AdvancedSCPInputHandler">

http://git-wip-us.apache.org/repos/asf/airavata/blob/d8176e81/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Constants.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Constants.java 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Constants.java
index 69d4a4a..c1550df 100644
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Constants.java
+++ 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Constants.java
@@ -34,10 +34,13 @@ public class Constants {
 
        public static final String XPATH_EXPR_PROVIDER_HANDLERS_START = 
"/GFac/Provider[@class='";
     public static final String XPATH_EXPR_PROVIDER_ON_HOST = 
"/GFac/Provider[@host='";
+    public static final String XPATH_EXPR_PROVIDER_ON_SUBMISSION = 
"/GFac/Provider[@submission='";
        public static final String XPATH_EXPR_PROVIDER_INFLOW_HANDLERS_END = 
"']/InHandlers/Handler";
        public static final String XPATH_EXPR_PROVIDER_OUTFLOW_HANDLERS_END = 
"']/OutHandlers/Handler";
 
        public static final String GFAC_CONFIG_CLASS_ATTRIBUTE = "class";
+       public static final String GFAC_CONFIG_SECURITY_ATTRIBUTE = "security";
+       public static final String GFAC_CONFIG_SUBMISSION_ATTRIBUTE = 
"submission";
     public static final String GFAC_CONFIG_EXECUTION_MODE_ATTRIBUTE = 
"executionMode";
        public static final String GFAC_CONFIG_APPLICATION_NAME_ATTRIBUTE = 
"class";
        public static final String NEWLINE = 
System.getProperty("line.separator");

http://git-wip-us.apache.org/repos/asf/airavata/blob/d8176e81/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Scheduler.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Scheduler.java 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Scheduler.java
index 2bd612c..0dae029 100644
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Scheduler.java
+++ 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/Scheduler.java
@@ -21,15 +21,24 @@
 
 package org.apache.airavata.gfac;
 
+import org.airavata.appcatalog.cpi.AppCatalog;
+import org.airavata.appcatalog.cpi.AppCatalogException;
+import org.apache.aiaravata.application.catalog.data.impl.AppCatalogFactory;
 import org.apache.airavata.commons.gfac.type.HostDescription;
 import org.apache.airavata.gfac.core.context.JobExecutionContext;
 import org.apache.airavata.gfac.core.provider.GFacProvider;
 import org.apache.airavata.gfac.core.provider.GFacProviderConfig;
 import org.apache.airavata.gfac.core.provider.GFacProviderException;
+import org.apache.airavata.gfac.core.utils.GFacUtils;
 import 
org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface;
+import 
org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol;
+import org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission;
+import org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission;
+import org.apache.airavata.model.appcatalog.computeresource.SecurityProtocol;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 import org.xml.sax.SAXException;
 
 import javax.xml.parsers.DocumentBuilder;
@@ -109,15 +118,44 @@ public class Scheduler {
             if (provider == null) {
 
                 List<JobSubmissionInterface> jobSubmissionInterfaces = 
jobExecutionContext.getApplicationContext().getComputeResourceDescription().getJobSubmissionInterfaces();
-                String hostClass = 
jobExecutionContext.getPreferredJobSubmissionProtocol().toString();
-                providerClassName = 
GFacConfiguration.getAttributeValue(GFacConfiguration.getHandlerDoc(), 
Constants.XPATH_EXPR_PROVIDER_ON_HOST + hostClass + "']", 
Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
-                Class<? extends GFacProvider> aClass1 = 
Class.forName(providerClassName).asSubclass(GFacProvider.class);
-                provider = aClass1.newInstance();
-                //loading the provider properties
-                aClass = 
GFacConfiguration.getProviderConfig(GFacConfiguration.getHandlerDoc(), 
Constants.XPATH_EXPR_PROVIDER_HANDLERS_START +
-                        providerClassName + "']", 
Constants.GFAC_CONFIG_APPLICATION_NAME_ATTRIBUTE);
-                if(!aClass.isEmpty()){
-                    provider.initProperties(aClass.get(0).getProperties());
+                JobSubmissionProtocol jobSubmissionProtocol = 
jobExecutionContext.getPreferredJobSubmissionProtocol();
+                SSHJobSubmission sshJobSubmission;
+                LOCALSubmission localSubmission;
+                String securityProtocol = null;
+                try {
+                    AppCatalog appCatalog = AppCatalogFactory.getAppCatalog();
+                    if (jobSubmissionProtocol == JobSubmissionProtocol.SSH) {
+                        sshJobSubmission = 
appCatalog.getComputeResource().getSSHJobSubmission(
+                                
jobExecutionContext.getPreferredJobSubmissionInterface().getJobSubmissionInterfaceId());
+                        if (sshJobSubmission != null) {
+                            securityProtocol  = 
sshJobSubmission.getSecurityProtocol().toString();
+                        }
+                    }else if (jobSubmissionProtocol == 
JobSubmissionProtocol.LOCAL) {
+                        localSubmission = 
appCatalog.getComputeResource().getLocalJobSubmission(jobExecutionContext.getPreferredJobSubmissionInterface().getJobSubmissionInterfaceId());
+                    }
+                    List<Element> elements = 
GFacUtils.getElementList(GFacConfiguration.getHandlerDoc(), 
Constants.XPATH_EXPR_PROVIDER_ON_SUBMISSION + jobSubmissionProtocol + "']");
+                    for (Element element : elements) {
+                        String security = 
element.getAttribute(Constants.GFAC_CONFIG_SECURITY_ATTRIBUTE);
+                        if (securityProtocol == null && security == null) {
+                            providerClassName = 
element.getAttribute(Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
+                        }else if (securityProtocol.equals(security)) {
+                            providerClassName = 
element.getAttribute(Constants.GFAC_CONFIG_CLASS_ATTRIBUTE);
+                        }
+                    }
+                    if (providerClassName == null) {
+                        throw new GFacException("Couldn't find provider 
class");
+                    }
+
+                    Class<? extends GFacProvider> aClass1 = 
Class.forName(providerClassName).asSubclass(GFacProvider.class);
+                    provider = aClass1.newInstance();
+                    //loading the provider properties
+                    aClass = 
GFacConfiguration.getProviderConfig(GFacConfiguration.getHandlerDoc(), 
Constants.XPATH_EXPR_PROVIDER_HANDLERS_START +
+                            providerClassName + "']", 
Constants.GFAC_CONFIG_APPLICATION_NAME_ATTRIBUTE);
+                    if (!aClass.isEmpty()) {
+                        provider.initProperties(aClass.get(0).getProperties());
+                    }
+                } catch (AppCatalogException e) {
+                    throw new GFacException("Couldn't retrieve job submission 
protocol from app catalog ");
                 }
             }
         } catch (XPathExpressionException e) {

http://git-wip-us.apache.org/repos/asf/airavata/blob/d8176e81/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
----------------------------------------------------------------------
diff --git 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
index 6fb2115..c5a96f9 100644
--- 
a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
+++ 
b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/utils/GFacUtils.java
@@ -52,7 +52,16 @@ import org.apache.zookeeper.*;
 import org.apache.zookeeper.data.Stat;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpression;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
 import java.io.*;
 import java.net.InetAddress;
 import java.net.URISyntaxException;
@@ -151,6 +160,21 @@ public class GFacUtils {
                return name + "_" + date;
        }
 
+    public static List<Element> getElementList(Document doc, String 
expression) throws XPathExpressionException {
+        XPathFactory xPathFactory = XPathFactory.newInstance();
+        XPath xPath = xPathFactory.newXPath();
+        XPathExpression expr = xPath.compile(expression);
+        NodeList nodeList = (NodeList) expr.evaluate(doc, 
XPathConstants.NODESET);
+        List<Element> elementList = new ArrayList<Element>();
+        for (int i = 0; i < nodeList.getLength(); i++) {
+            Node item = nodeList.item(i);
+            if (item instanceof Element) {
+                elementList.add((Element) item);
+            }
+        }
+        return elementList;
+    }
+
        public static String createGsiftpURIAsString(String host, String 
localPath)
                        throws URISyntaxException {
                StringBuffer buf = new StringBuffer();

Reply via email to