Author: lahiru
Date: Tue Oct  8 20:19:30 2013
New Revision: 1530413

URL: http://svn.apache.org/r1530413
Log:
associate new changes with gfac-core.

Modified:
    
airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/invoker/EmbeddedGFacInvoker.java

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=1530413&r1=1530412&r2=1530413&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
 Tue Oct  8 20:19:30 2013
@@ -49,30 +49,17 @@ import org.apache.airavata.gfac.context.
 import org.apache.airavata.gfac.context.security.SSHSecurityContext;
 import org.apache.airavata.gfac.scheduler.HostScheduler;
 import org.apache.airavata.gfac.utils.GFacUtils;
+import org.apache.airavata.gsi.ssh.api.Cluster;
+import org.apache.airavata.gsi.ssh.api.SSHApiException;
+import org.apache.airavata.gsi.ssh.api.ServerInfo;
+import org.apache.airavata.gsi.ssh.api.authentication.AuthenticationInfo;
+import org.apache.airavata.gsi.ssh.api.authentication.GSIAuthenticationInfo;
+import org.apache.airavata.gsi.ssh.impl.PBSCluster;
+import 
org.apache.airavata.gsi.ssh.impl.authentication.DefaultPasswordAuthenticationInfo;
+import 
org.apache.airavata.gsi.ssh.impl.authentication.DefaultPublicKeyFileAuthentication;
+import 
org.apache.airavata.gsi.ssh.impl.authentication.MyProxyAuthenticationInfo;
 import org.apache.airavata.registry.api.exception.RegistryException;
-import org.apache.airavata.schemas.gfac.BooleanArrayType;
-import org.apache.airavata.schemas.gfac.BooleanParameterType;
-import org.apache.airavata.schemas.gfac.DoubleArrayType;
-import org.apache.airavata.schemas.gfac.DoubleParameterType;
-import org.apache.airavata.schemas.gfac.Ec2HostType;
-import org.apache.airavata.schemas.gfac.FileArrayType;
-import org.apache.airavata.schemas.gfac.FileParameterType;
-import org.apache.airavata.schemas.gfac.FloatArrayType;
-import org.apache.airavata.schemas.gfac.FloatParameterType;
-import org.apache.airavata.schemas.gfac.GlobusHostType;
-import org.apache.airavata.schemas.gfac.InputParameterType;
-import org.apache.airavata.schemas.gfac.IntegerArrayType;
-import org.apache.airavata.schemas.gfac.IntegerParameterType;
-import org.apache.airavata.schemas.gfac.OutputParameterType;
-import org.apache.airavata.schemas.gfac.SSHHostType;
-import org.apache.airavata.schemas.gfac.ServiceDescriptionType;
-import org.apache.airavata.schemas.gfac.StdErrParameterType;
-import org.apache.airavata.schemas.gfac.StdOutParameterType;
-import org.apache.airavata.schemas.gfac.StringArrayType;
-import org.apache.airavata.schemas.gfac.StringParameterType;
-import org.apache.airavata.schemas.gfac.URIArrayType;
-import org.apache.airavata.schemas.gfac.URIParameterType;
-import org.apache.airavata.schemas.gfac.UnicoreHostType;
+import org.apache.airavata.schemas.gfac.*;
 import org.apache.airavata.schemas.wec.ContextHeaderDocument;
 import org.apache.airavata.schemas.wec.SecurityContextDocument;
 import org.apache.airavata.workflow.model.exceptions.WorkflowException;
@@ -85,6 +72,7 @@ import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.axiom.om.impl.llom.util.AXIOMUtil;
+import org.jets3t.service.impl.rest.httpclient.GoogleStorageService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.xmlpull.v1.builder.XmlElement;
@@ -276,18 +264,18 @@ public class EmbeddedGFacInvoker impleme
      */
     public synchronized boolean invoke() throws WorkflowException {
         try {
-                ContextHeaderDocument.ContextHeader contextHeader =
-                     
WorkflowContextHeaderBuilder.removeOtherSchedulingConfig(nodeID,this.configuration.getContextHeader());
-             String hostName = null;
+            ContextHeaderDocument.ContextHeader contextHeader =
+                    
WorkflowContextHeaderBuilder.removeOtherSchedulingConfig(nodeID, 
this.configuration.getContextHeader());
+            String hostName = null;
             HostDescription registeredHost;
-             if(contextHeader != null){
-                if(contextHeader.getWorkflowSchedulingContext() != null &&
-                         
contextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray().length
 > 0 &&
-                         
contextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray(0).getHostName()
 != null){
-                 hostName = 
contextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray(0).getHostName();
-                 }
-             }
-               //todo This is the basic scheduling, have to do proper 
scheduling implementation by implementing HostScheduler interface
+            if (contextHeader != null) {
+                if (contextHeader.getWorkflowSchedulingContext() != null &&
+                        
contextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray().length
 > 0 &&
+                        
contextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray(0).getHostName()
 != null) {
+                    hostName = 
contextHeader.getWorkflowSchedulingContext().getApplicationSchedulingContextArray(0).getHostName();
+                }
+            }
+            //todo This is the basic scheduling, have to do proper scheduling 
implementation by implementing HostScheduler interface
             ServiceDescription serviceDescription = 
airavataAPI.getApplicationManager().getServiceDescription(serviceName);
             if (hostName == null) {
                 List<HostDescription> registeredHosts = new 
ArrayList<HostDescription>();
@@ -311,21 +299,21 @@ public class EmbeddedGFacInvoker impleme
             Object wsifMessageElement = new 
WSIFMessageElement(XMLUtil.stringToXmlElement3(inputMessage.toStringWithConsume()));
             this.notifier.invokingService(new WSIFMessageElement((XmlElement) 
wsifMessageElement));
             Properties configurationProperties = 
ServerSettings.getProperties();
-                       GFacConfiguration gFacConfiguration = 
GFacConfiguration.create(new File(resource.getPath()), airavataAPI, 
configurationProperties);
+            GFacConfiguration gFacConfiguration = GFacConfiguration.create(new 
File(resource.getPath()), airavataAPI, configurationProperties);
 
             JobExecutionContext jobExecutionContext = new 
JobExecutionContext(gFacConfiguration, serviceName);
             //Here we get only the contextheader information sent specific for 
this node
             //Add security context
-            
addSecurityContext(registeredHost,configurationProperties,jobExecutionContext,
+            addSecurityContext(registeredHost, configurationProperties, 
jobExecutionContext,
                     configuration.getContextHeader());
 
-            
jobExecutionContext.setContextHeader(WorkflowContextHeaderBuilder.removeOtherSchedulingConfig(nodeID,configuration.getContextHeader()));
+            
jobExecutionContext.setContextHeader(WorkflowContextHeaderBuilder.removeOtherSchedulingConfig(nodeID,
 configuration.getContextHeader()));
 
 
-            
jobExecutionContext.setProperty(Constants.PROP_WORKFLOW_NODE_ID,this.nodeID);
-            
jobExecutionContext.setProperty(Constants.PROP_TOPIC,this.configuration.getTopic());
-            
jobExecutionContext.setProperty(Constants.PROP_BROKER_URL,this.configuration.getBrokerURL().toASCIIString());
-            
jobExecutionContext.setProperty(Constants.PROP_WORKFLOW_INSTANCE_ID,this.configuration.getTopic());
+            jobExecutionContext.setProperty(Constants.PROP_WORKFLOW_NODE_ID, 
this.nodeID);
+            jobExecutionContext.setProperty(Constants.PROP_TOPIC, 
this.configuration.getTopic());
+            jobExecutionContext.setProperty(Constants.PROP_BROKER_URL, 
this.configuration.getBrokerURL().toASCIIString());
+            
jobExecutionContext.setProperty(Constants.PROP_WORKFLOW_INSTANCE_ID, 
this.configuration.getTopic());
 
 
             ApplicationContext applicationContext = new ApplicationContext();
@@ -411,15 +399,16 @@ public class EmbeddedGFacInvoker impleme
         return null;
     }
 
-       private void addSecurityContext(HostDescription registeredHost, 
Properties configurationProperties,
-                       JobExecutionContext jobExecutionContext, 
ContextHeaderDocument.ContextHeader contextHeader) throws WorkflowException {
-               if (registeredHost.getType() instanceof GlobusHostType || 
registeredHost.getType() instanceof UnicoreHostType) {
+    private void addSecurityContext(HostDescription registeredHost, Properties 
configurationProperties,
+                                    JobExecutionContext jobExecutionContext, 
ContextHeaderDocument.ContextHeader contextHeader) throws WorkflowException {
+        RequestData requestData;
+        if (registeredHost.getType() instanceof GlobusHostType || 
registeredHost.getType() instanceof UnicoreHostType
+                || registeredHost.getType() instanceof GsisshHostType) {
 
             
SecurityContextDocument.SecurityContext.CredentialManagementService 
credentialManagementService
                     = getCredentialManagementService(contextHeader);
 
             GSISecurityContext context;
-            RequestData requestData;
 
             String gatewayId = 
contextHeader.getSecurityContext().getCredentialManagementService().getGatewayId();
 
@@ -439,24 +428,68 @@ public class EmbeddedGFacInvoker impleme
             } catch (Exception e) {
                 throw new WorkflowException("An error occurred while creating 
GSI security context", e);
             }
+            if (registeredHost.getType() instanceof GsisshHostType) {
+                GSIAuthenticationInfo authenticationInfo
+                        = new 
MyProxyAuthenticationInfo(requestData.getMyProxyUserName(), 
requestData.getMyProxyPassword(), requestData.getMyProxyServerUrl(),
+                        requestData.getMyProxyPort(), 
requestData.getMyProxyLifeTime(), 
System.getProperty(Constants.TRUSTED_CERTIFICATE_SYSTEM_PROPERTY));
+                ServerInfo serverInfo = new 
ServerInfo(configurationProperties.getProperty("gsissh.user"), 
registeredHost.getType().getHostName());
+
+                Cluster pbsCluster = null;
+                try {
+                    pbsCluster = new PBSCluster(serverInfo, authenticationInfo,
+                            (((HpcApplicationDeploymentType) 
jobExecutionContext.getApplicationContext().getApplicationDeploymentDescription()).getInstalledParentPath()));
+                } catch (SSHApiException e) {
+                    e.printStackTrace();  //To change body of catch statement 
use File | Settings | File Templates.
+                }
+
+
+                SSHSecurityContext sshSecurityContext = new 
SSHSecurityContext();
+                sshSecurityContext.setPbsCluster(pbsCluster);
+                
sshSecurityContext.setUsername(requestData.getMyProxyUserName());
+                
jobExecutionContext.addSecurityContext(GSISecurityContext.GSI_SECURITY_CONTEXT, 
context);
+            }
+        } else if (registeredHost.getType() instanceof Ec2HostType) {
+            if (this.configuration.getAmazonSecurityContext() != null) {
+                
jobExecutionContext.addSecurityContext(AmazonSecurityContext.AMAZON_SECURITY_CONTEXT,
+                        this.configuration.getAmazonSecurityContext());
+            }
+        } else if (registeredHost.getType() instanceof SSHHostType) {
+            String sshUserName = 
configurationProperties.getProperty(Constants.SSH_USER_NAME);
+            String sshPrivateKey = 
configurationProperties.getProperty(Constants.SSH_PRIVATE_KEY);
+            String sshPrivateKeyPass = 
configurationProperties.getProperty(Constants.SSH_PRIVATE_KEY_PASS);
+            String sshPassword = 
configurationProperties.getProperty(Constants.SSH_PASSWORD);
+            String sshPublicKey = 
configurationProperties.getProperty(Constants.SSH_PUBLIC_KEY);
+            if (((SSHHostType) registeredHost.getType()).getHpcResource()) {
+                AuthenticationInfo authenticationInfo = null;
+                if(sshPassword != null){
+                    authenticationInfo = new 
DefaultPasswordAuthenticationInfo(sshPassword);
+                }else{
+                    authenticationInfo = new 
DefaultPublicKeyFileAuthentication(sshPublicKey, 
sshPrivateKey,sshPrivateKeyPass);
+                }
+                ServerInfo serverInfo = new ServerInfo(sshUserName, 
registeredHost.getType().getHostName());
 
+                Cluster pbsCluster = null;
+                try {
+                    pbsCluster = new PBSCluster(serverInfo, authenticationInfo,
+                            (((HpcApplicationDeploymentType) 
jobExecutionContext.getApplicationContext().getApplicationDeploymentDescription()).getInstalledParentPath()));
+                } catch (SSHApiException e) {
+                    e.printStackTrace();  //To change body of catch statement 
use File | Settings | File Templates.
+                }
 
-            
jobExecutionContext.addSecurityContext(GSISecurityContext.GSI_SECURITY_CONTEXT, 
context);
 
-               } else if (registeredHost.getType() instanceof Ec2HostType) {
-                       if (this.configuration.getAmazonSecurityContext() != 
null) {
-                               
jobExecutionContext.addSecurityContext(AmazonSecurityContext.AMAZON_SECURITY_CONTEXT,
-                                               
this.configuration.getAmazonSecurityContext());
-                       }
-               } else if (registeredHost.getType() instanceof SSHHostType) {
-                       SSHSecurityContext context = new SSHSecurityContext();
-                       
context.setUsername(configurationProperties.getProperty(Constants.SSH_USER_NAME));
-                       
context.setPrivateKeyLoc(configurationProperties.getProperty(Constants.SSH_PRIVATE_KEY));
-                       
context.setKeyPass(configurationProperties.getProperty(Constants.SSH_PRIVATE_KEY_PASS));
-                       
jobExecutionContext.addSecurityContext(SSHSecurityContext.SSH_SECURITY_CONTEXT, 
context);
+                SSHSecurityContext sshSecurityContext = new 
SSHSecurityContext();
+                sshSecurityContext.setPbsCluster(pbsCluster);
+                sshSecurityContext.setUsername(sshUserName);
+            } else {
+                SSHSecurityContext context = new SSHSecurityContext();
+                context.setUsername(sshUserName);
+                context.setPrivateKeyLoc(sshPrivateKey);
+                context.setKeyPass(sshPrivateKeyPass);
+                
jobExecutionContext.addSecurityContext(SSHSecurityContext.SSH_SECURITY_CONTEXT, 
context);
+            }
 
-               }
-       }
+        }
+    }
 
     /**
      * @throws WorkflowException
@@ -509,7 +542,7 @@ public class EmbeddedGFacInvoker impleme
                 while (children.hasNext()) {
                     Object next = children.next();
                     if (((XmlElement) next).getName().equals(name)) {
-                        return ((XmlElement)((XmlElement) 
next).children().next()).children().next();
+                        return ((XmlElement) ((XmlElement) 
next).children().next()).children().next();
                     }
                 }
             } else {


Reply via email to