Author: heshan
Date: Tue Apr 2 00:22:41 2013
New Revision: 1463339
URL: http://svn.apache.org/r1463339
Log:
AIRAVATA-803 Fixing some issues when extracting the result from the remote
shell. TODO: Have a timeout just in case if the user forgets to properly
configure the application descriptor. In that case job should return with an
error.
Modified:
airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/EC2Provider.java
Modified:
airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/EC2Provider.java
URL:
http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/EC2Provider.java?rev=1463339&r1=1463338&r2=1463339&view=diff
==============================================================================
---
airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/EC2Provider.java
(original)
+++
airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/EC2Provider.java
Tue Apr 2 00:22:41 2013
@@ -48,6 +48,7 @@ import org.apache.airavata.gfac.notifica
import org.apache.airavata.gfac.provider.GFacProvider;
import org.apache.airavata.gfac.provider.GFacProviderException;
import org.apache.airavata.gfac.provider.utils.ProviderUtils;
+import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType;
import org.apache.airavata.schemas.gfac.Ec2ApplicationDeploymentType;
import org.apache.airavata.schemas.gfac.OutputParameterType;
import org.apache.airavata.schemas.gfac.StringParameterType;
@@ -72,8 +73,6 @@ public class EC2Provider implements GFac
public static final int SSH_PORT = 22;
- public static final String KEY_PAIR_NAME = "gfac";
-
public static final String KEY_PAIR_FILE = "ec2_rsa";
private static final String PRIVATE_KEY_FILE_PATH =
System.getProperty("user.home") + "/.ssh/" + KEY_PAIR_FILE;
@@ -184,7 +183,7 @@ public class EC2Provider implements GFac
while((read = in.read(buffer)) > 0) {
String out = new String(buffer, 0, read);
- if(out.startsWith("distance")) {
+ if(out.startsWith(outParamName)) {
executionResult = out.split("=")[1];
log.debug("Result found in the StandardOut ");
break;
@@ -214,6 +213,13 @@ public class EC2Provider implements GFac
}
+ /**
+ * Creates the command to be executed in the remote shell.
+ *
+ * @param jobExecutionContext JobExecutionContext for the cloud job
+ * @return shell command to be executed
+ * @throws GFacProviderException GFacProviderException
+ */
private String createShellCmd(JobExecutionContext jobExecutionContext)
throws GFacProviderException {
String command = "";
ApplicationDescription appDesc =
jobExecutionContext.getApplicationContext().getApplicationDeploymentDescription();
@@ -239,9 +245,28 @@ public class EC2Provider implements GFac
}
log.info("Command to be executed on EC2 : " + command);
+
+ } else {
+ ApplicationDeploymentDescriptionType type = appDesc.getType();
+
+ command = "sh" + " " + type.getExecutableLocation();
+
+ List<String> inputParams = null;
+ try {
+ inputParams =
ProviderUtils.getInputParameters(jobExecutionContext);
+ } catch (GFacProviderException e) {
+ throw new GFacProviderException("Error in extracting input
values from JobExecutionContext");
+ }
+
+ for(String param : inputParams){
+ command = " " + command + " " + param;
+ }
+
+ log.info("Command to be executed on EC2 : " + command);
+
}
- return command;
+ return command + '\n';
}
public void dispose(JobExecutionContext jobExecutionContext) throws
GFacProviderException {