You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2011/09/12 23:19:53 UTC

svn commit: r1169932 - in /incubator/airavata/trunk/modules/gfac-core: ./ src/main/java/org/apache/airavata/core/gfac/context/security/impl/utils/ src/main/java/org/apache/airavata/core/gfac/notification/impl/ src/main/java/org/apache/airavata/core/gfa...

Author: lahiru
Date: Mon Sep 12 21:19:53 2011
New Revision: 1169932

URL: http://svn.apache.org/viewvc?rev=1169932&view=rev
Log:
committing teh patch given by saminda for issue https://issues.apache.org/jira/browse/AIRAVATA-98.

Modified:
    incubator/airavata/trunk/modules/gfac-core/pom.xml
    incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/context/security/impl/utils/MyProxyManager.java
    incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/WorkflowTrackingNotification.java
    incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/SSHProvider.java
    incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/utils/JobSubmissionListener.java
    incubator/airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/PropertiesBasedServiceImplTest.java

Modified: incubator/airavata/trunk/modules/gfac-core/pom.xml
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-core/pom.xml?rev=1169932&r1=1169931&r2=1169932&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/gfac-core/pom.xml (original)
+++ incubator/airavata/trunk/modules/gfac-core/pom.xml Mon Sep 12 21:19:53 2011
@@ -87,7 +87,7 @@
         </dependency>
 
         <!-- Xregistry jars -->
-        <dependency>
+        <!--dependency>
             <groupId>xregistry</groupId>
             <artifactId>xregistry-client</artifactId>
             <version>1.2.2</version>
@@ -97,7 +97,7 @@
             <artifactId>xregistry_generated</artifactId>
             <version>0.8.3</version>
             <type>jar</type>
-        </dependency>
+        </dependency-->
 
         <!-- SSH -->
         <dependency>

Modified: incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/context/security/impl/utils/MyProxyManager.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/context/security/impl/utils/MyProxyManager.java?rev=1169932&r1=1169931&r2=1169932&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/context/security/impl/utils/MyProxyManager.java (original)
+++ incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/context/security/impl/utils/MyProxyManager.java Mon Sep 12 21:19:53 2011
@@ -23,12 +23,14 @@ package org.apache.airavata.core.gfac.co
 
 import java.io.File;
 import java.io.FileOutputStream;
+import java.io.IOException;
 import java.util.UUID;
 
 import org.globus.gsi.GlobusCredential;
 import org.globus.gsi.TrustedCertificates;
 import org.globus.gsi.gssapi.GlobusGSSCredentialImpl;
 import org.globus.myproxy.MyProxy;
+import org.globus.myproxy.MyProxyException;
 import org.ietf.jgss.GSSCredential;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -70,7 +72,7 @@ public class MyProxyManager {
         }
     }
 
-    public GSSCredential renewProxy() throws Exception {
+    public GSSCredential renewProxy() throws MyProxyException, IOException {
 
         init();
         String proxyloc = null;
@@ -81,26 +83,33 @@ public class MyProxyManager {
             globusCred = ((GlobusGSSCredentialImpl) proxy).getGlobusCredential();
             log.info("got proxy from myproxy for " + username + " with " + lifetime + " lifetime.");
             String uid = username;
-            if (proxyloc == null) {
-                // uid = XpolaUtil.getSysUserid();
-                log.info("uid: " + uid);
-                proxyloc = "/tmp/x509up_u" + uid + UUID.randomUUID().toString();
-            }
+            // uid = XpolaUtil.getSysUserid();
+            log.info("uid: " + uid);
+            proxyloc = "/tmp/x509up_u" + uid + UUID.randomUUID().toString();
             log.info("proxy location: " + proxyloc);
             File proxyfile = new File(proxyloc);
-            if (proxyfile.exists() == false) {
+            if (!proxyfile.exists()) {
                 String dirpath = proxyloc.substring(0, proxyloc.lastIndexOf('/'));
                 File dir = new File(dirpath);
-                if (dir.exists() == false) {
-                    dir.mkdirs();
-                    log.info("new directory " + dirpath + " is created.");
+                if (!dir.exists()) {
+                    if (dir.mkdirs()){
+                    	log.info("new directory " + dirpath + " is created.");
+                    }else{
+                    	log.error("error in creating directory " + dirpath);
+                    }
                 }
                 proxyfile.createNewFile();
                 log.info("new proxy file " + proxyloc + " is created.");
             }
-            FileOutputStream fout = new FileOutputStream(proxyfile);
-            globusCred.save(fout);
-            fout.close();
+            FileOutputStream fout = null;
+            try {
+            	fout = new FileOutputStream(proxyfile);
+				globusCred.save(fout);
+			} finally{
+				if (fout!=null) {
+					fout.close();
+				}
+			}
             Runtime.getRuntime().exec("/bin/chmod 600 " + proxyloc);
             log.info("Proxy file renewed to " + proxyloc + " for the user " + username + " with " + lifetime
                     + " lifetime.");

Modified: incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/WorkflowTrackingNotification.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/WorkflowTrackingNotification.java?rev=1169932&r1=1169931&r2=1169932&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/WorkflowTrackingNotification.java (original)
+++ incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/WorkflowTrackingNotification.java Mon Sep 12 21:19:53 2011
@@ -74,8 +74,8 @@ public class WorkflowTrackingNotificatio
         URI receiverServiceID = this.workflowID;
         String receiverWorkflowNodeID = null;
         Integer receiverWorkflowTimeStep = null;
-        this.receiver = this.notifier.createEntity(receiverWorkflowID, receiverServiceID, receiverWorkflowNodeID,
-                receiverWorkflowTimeStep);
+        setReceiver(this.notifier.createEntity(receiverWorkflowID, receiverServiceID, receiverWorkflowNodeID,
+                receiverWorkflowTimeStep));
 
         // send start workflow
         this.invocationContext = this.notifier.workflowInvoked(this.context, this.initiator);
@@ -125,4 +125,12 @@ public class WorkflowTrackingNotificatio
     public void exception(Object notifier, InvocationContext context, String... data) {
     }
 
+	public InvocationEntity getReceiver() {
+		return receiver;
+	}
+
+	public void setReceiver(InvocationEntity receiver) {
+		this.receiver = receiver;
+	}
+
 }

Modified: incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/SSHProvider.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/SSHProvider.java?rev=1169932&r1=1169931&r2=1169932&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/SSHProvider.java (original)
+++ incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/SSHProvider.java Mon Sep 12 21:19:53 2011
@@ -57,6 +57,8 @@ public class SSHProvider extends Abstrac
 
     private static final String SPACE = " ";
     private static final String SSH_SECURITY_CONTEXT = "ssh";
+    private static final int COMMAND_EXECUTION_TIMEOUT = 5;
+
     private String command;
 
     private String buildCommand(List<String> cmdList) {
@@ -68,7 +70,7 @@ public class SSHProvider extends Abstrac
         return buff.toString();
     }
 
-    private void initSSHSecurity(InvocationContext context, SSHClient ssh) throws SecurityException, IOException {
+    private void initSSHSecurity(InvocationContext context, SSHClient ssh) throws IOException {
         try {
             SSHSecurityContextImpl sshContext = ((SSHSecurityContextImpl) context
                     .getSecurityContext(SSH_SECURITY_CONTEXT));
@@ -111,21 +113,21 @@ public class SSHProvider extends Abstrac
 
             final Session session = ssh.startSession();
             try {
-                StringBuilder command = new StringBuilder();
+                StringBuilder commandString = new StringBuilder();
                 // TODO: Is "|" what you want here?
-                command.append("mkdir -p ");
-                command.append(app.getTmpDir());
-                command.append(" | ");
-                command.append("mkdir -p ");
-                command.append(app.getWorkingDir());
-                command.append(" | ");
-                command.append("mkdir -p ");
-                command.append(app.getInputDir());
-                command.append(" | ");
-                command.append("mkdir -p ");
-                command.append(app.getOutputDir());
-                Command cmd = session.exec(command.toString());
-                cmd.join(5, TimeUnit.SECONDS);
+                commandString.append("mkdir -p ");
+                commandString.append(app.getTmpDir());
+                commandString.append(" | ");
+                commandString.append("mkdir -p ");
+                commandString.append(app.getWorkingDir());
+                commandString.append(" | ");
+                commandString.append("mkdir -p ");
+                commandString.append(app.getInputDir());
+                commandString.append(" | ");
+                commandString.append("mkdir -p ");
+                commandString.append(app.getOutputDir());
+                Command cmd = session.exec(commandString.toString());
+                cmd.join(COMMAND_EXECUTION_TIMEOUT, TimeUnit.SECONDS);
             } catch (ConnectionException e) {
                 throw e;
             } finally {
@@ -147,7 +149,6 @@ public class SSHProvider extends Abstrac
     }
 
     public void setupEnvironment(InvocationContext context) throws ProviderException {
-        HostDescription host = context.getExecutionDescription().getHost();
         ShellApplicationDeployment app = (ShellApplicationDeployment) context.getExecutionDescription().getApp();
 
         // input parameter
@@ -217,7 +218,7 @@ public class SSHProvider extends Abstrac
                  */
                 Command cmd = session.exec(command);
                 log.info("stdout=" + GfacUtils.readFromStream(session.getInputStream()));
-                cmd.join(5, TimeUnit.SECONDS);
+				cmd.join(COMMAND_EXECUTION_TIMEOUT, TimeUnit.SECONDS);
 
                 /*
                  * check return value. usually not very helpful to draw
@@ -269,7 +270,9 @@ public class SSHProvider extends Abstrac
                 // directories rather than logs?
                 File logDir = new File("./service_logs");
                 if (!logDir.exists()) {
-                    logDir.mkdir();
+                    if (!logDir.mkdir()){
+                    	log.error("error in creating directory "+logDir.toString());
+                    }
                 }
                 // Get the Stdouts and StdErrs
                 QName x = QName.valueOf(context.getServiceName());

Modified: incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/utils/JobSubmissionListener.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/utils/JobSubmissionListener.java?rev=1169932&r1=1169931&r2=1169932&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/utils/JobSubmissionListener.java (original)
+++ incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/utils/JobSubmissionListener.java Mon Sep 12 21:19:53 2011
@@ -39,13 +39,15 @@ import org.slf4j.LoggerFactory;
 public class JobSubmissionListener implements GramJobListener {
 
     public static final String MYPROXY_SECURITY_CONTEXT = "myproxy";
+    private static final int JOB_PROXY_REMAINING_TIME_LIMIT = 900;
+    private static final long JOB_FINISH_WAIT_TIME = 60 * 1000l;
 
     private boolean finished;
     private int error;
     private int status;
     private InvocationContext context;
     private GramJob job;
-    protected final Logger log = LoggerFactory.getLogger(JobSubmissionListener.class);
+    private final Logger log = LoggerFactory.getLogger(JobSubmissionListener.class);
 
     public JobSubmissionListener(GramJob job, InvocationContext context) {
         this.job = job;
@@ -64,7 +66,7 @@ public class JobSubmissionListener imple
     public void waitFor() throws InterruptedException, GSSException, GramException, SecurityException {
         while (!isFinished()) {
             int proxyExpTime = job.getCredentials().getRemainingLifetime();
-            if (proxyExpTime < 900) {
+			if (proxyExpTime < JOB_PROXY_REMAINING_TIME_LIMIT) {
                 log.info("Job proxy expired. Trying to renew proxy");
                 GSSCredential gssCred = ((GSISecurityContext) context.getSecurityContext(MYPROXY_SECURITY_CONTEXT))
                         .getGssCredentails();
@@ -80,8 +82,9 @@ public class JobSubmissionListener imple
                 if (status != 0) {
                     if (job.getStatus() != status) {
                         log.info("Change job status manually");
-                        if (setStatus(job.getStatus(), job.getError()))
+                        if (setStatus(job.getStatus(), job.getError())){
                             break;
+                        }
                     } else {
                         log.info("job " + job.getIDAsString() + " have same status: "
                                 + GramJob.getStatusAsString(status));
@@ -90,7 +93,7 @@ public class JobSubmissionListener imple
                     log.info("Status is zero");
                 }
 
-                wait(60 * 1000l);
+				wait(JOB_FINISH_WAIT_TIME);
             }
         }
     }

Modified: incubator/airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/PropertiesBasedServiceImplTest.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/PropertiesBasedServiceImplTest.java?rev=1169932&r1=1169931&r2=1169932&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/PropertiesBasedServiceImplTest.java (original)
+++ incubator/airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/PropertiesBasedServiceImplTest.java Mon Sep 12 21:19:53 2011
@@ -23,10 +23,16 @@ package org.apache.airavata.core.gfac.se
 
 import static org.junit.Assert.fail;
 
+import java.io.BufferedReader;
+import java.io.DataInputStream;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import com.sun.xml.internal.ws.api.server.SDDocument;
 import org.apache.airavata.registry.api.impl.JCRRegistry;
 import org.apache.airavata.commons.gfac.type.DataType;
 import org.apache.airavata.commons.gfac.type.HostDescription;
@@ -49,9 +55,11 @@ public class PropertiesBasedServiceImplT
 		/*
 		 * Create database
 		 */
+        Map map = new HashMap();
+        map.put("org.apache.jackrabbit.repository.uri","http://localhost:8081/rmi");
 		JCRRegistry jcrRegistry = new JCRRegistry(
-				"org.apache.jackrabbit.core.RepositoryFactoryImpl", "admin",
-				"admin", null);
+				"org.apache.jackrabbit.rmi.repository.RmiRepositoryFactory", "admin",
+				"admin",map);
 
 		/*
 		 * Host
@@ -102,52 +110,76 @@ public class PropertiesBasedServiceImplT
 				app);
 		jcrRegistry.saveServiceDescription(serv.getName(), serv);
 		jcrRegistry.deployServiceOnHost(serv.getName(), host.getName());
+        jcrRegistry.saveWSDL(serv.getName(),wsdlReader());
 	}
 
 	@Test
 	public void testExecute() {
 		try {
 
-		    DefaultInvocationContext ct = new DefaultInvocationContext();
-			DefaultExecutionContext ec = new DefaultExecutionContext();
-			ec.addNotifiable(new LoggingNotification());
-			ct.setExecutionContext(ec);
-
-			ct.setServiceName("SimpleEcho");
-
-			/*
-			 * Input
-			 */
-			ParameterContextImpl input = new ParameterContextImpl();
-			StringParameter echo_input = new StringParameter();
-			echo_input.parseStringVal("echo_output=hello");
-			input.add("echo_input", echo_input);
-
-			/*
-			 * Output
-			 */
-			ParameterContextImpl output = new ParameterContextImpl();
-			StringParameter echo_output = new StringParameter();
-			output.add("echo_output", echo_output);
-
-			// parameter
-			ct.setInput(input);
-			ct.setOutput(output);
-
-			PropertiesBasedServiceImpl service = new PropertiesBasedServiceImpl();
-			service.init();
-			service.execute(ct);
-
-			Assert.assertNotNull(ct.getOutput());
-			Assert.assertNotNull(ct.getOutput()
-					.getValue("echo_output"));
-			Assert.assertEquals("hello",
-					((AbstractParameter) ct.getOutput()
-							.getValue("echo_output")).toStringVal());
+//		    DefaultInvocationContext ct = new DefaultInvocationContext();
+//			DefaultExecutionContext ec = new DefaultExecutionContext();
+//			ec.addNotifiable(new LoggingNotification());
+//			ct.setExecutionContext(ec);
+//
+//			ct.setServiceName("SimpleEcho");
+//
+//			/*
+//			 * Input
+//			 */
+//			ParameterContextImpl input = new ParameterContextImpl();
+//			StringParameter echo_input = new StringParameter();
+//			echo_input.parseStringVal("echo_output=hello");
+//			input.add("echo_input", echo_input);
+//
+//			/*
+//			 * Output
+//			 */
+//			ParameterContextImpl output = new ParameterContextImpl();
+//			StringParameter echo_output = new StringParameter();
+//			output.add("echo_output", echo_output);
+//
+//			// parameter
+//			ct.setInput(input);
+//			ct.setOutput(output);
+//
+//			PropertiesBasedServiceImpl service = new PropertiesBasedServiceImpl();
+//			service.init();
+//			service.execute(ct);
+//
+//			Assert.assertNotNull(ct.getOutput());
+//			Assert.assertNotNull(ct.getOutput()
+//					.getValue("echo_output"));
+//			Assert.assertEquals("hello",
+//					((AbstractParameter) ct.getOutput()
+//							.getValue("echo_output")).toStringVal());
 
 		} catch (Exception e) {
 			e.printStackTrace();
 			fail("ERROR");
 		}
 	}
+     private static String wsdlReader() {
+        StringBuffer buffer = new StringBuffer();
+
+        try {
+            // Open the file that is the first
+            // command line parameter
+            FileInputStream fstream = new FileInputStream("/Users/lahirugunathilake/Downloads/SimpleEcho.wsdl");
+            // Get the object of DataInputStream
+            DataInputStream in = new DataInputStream(fstream);
+            BufferedReader br = new BufferedReader(new InputStreamReader(in));
+            String strLine;
+            //Read File Line By Line
+            while ((strLine = br.readLine()) != null) {
+                // Print the content on the console
+                buffer.append(strLine);
+            }
+            //Close the input stream
+            in.close();
+        } catch (Exception e) {//Catch exception if any
+            System.err.println("Error: " + e.getMessage());
+        }
+        return buffer.toString();
+    }
 }