You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by he...@apache.org on 2013/03/09 05:05:01 UTC
svn commit: r1454651 - in /airavata/trunk/modules/gfac-core/src:
main/java/org/apache/airavata/gfac/provider/impl/EC2Provider.java
test/java/org/apache/airavata/core/gfac/services/impl/EC2ProviderTest.java
Author: heshan
Date: Sat Mar 9 04:05:01 2013
New Revision: 1454651
URL: http://svn.apache.org/r1454651
Log:
AIRAVATA-202 Fixing an issue in the provider.
Modified:
airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/gfac/provider/impl/EC2Provider.java
airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/EC2ProviderTest.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=1454651&r1=1454650&r2=1454651&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 Sat Mar 9 04:05:01 2013
@@ -165,21 +165,38 @@ public class EC2Provider implements GFac
log.info("ssh client authentication is complete...");
}
- // Execute job
SessionChannelClient session = sshClient.openSessionChannel();
log.info("ssh session is open successfully...");
session.requestPseudoTerminal("vt100", 80, 25, 0, 0, "");
session.startShell();
session.getOutputStream().write(command2.getBytes());
- String executionResult = getResultFromStdOut(outParamName, session);
+ InputStream in = session.getInputStream();
+ byte buffer[] = new byte[255];
+ int read;
+ String executionResult = "";
+ while((read = in.read(buffer)) > 0) {
+ String out = new String(buffer, 0, read);
+
+ if(out.startsWith("distance")) {
+ executionResult = out.split("=")[1];
+ log.debug("Result found in the StandardOut ");
+ break;
+ }
+ }
+
+ executionResult = executionResult.replace("\r","").replace("\n","");
log.info("Result of the job : " + executionResult);
- // Set result
- ActualParameter outParam = new ActualParameter();
- outParam.getType().changeType(StringParameterType.type);
- ((StringParameterType) outParam.getType()).setValue(executionResult);
- jobExecutionContext.getOutMessageContext().addParameter(outParamName, outParam);
+ for(OutputParameterType outparamType : outputParametersArray){
+ /* Assuming that there is just a single result. If you want to add more results, update the necessary
+ logic below */
+ String paramName = outparamType.getParameterName();
+ ActualParameter outParam = new ActualParameter();
+ outParam.getType().changeType(StringParameterType.type);
+ ((StringParameterType) outParam.getType()).setValue(executionResult);
+ jobExecutionContext.getOutMessageContext().addParameter(paramName, outParam);
+ }
} catch (InvalidSshKeyException e) {
throw new GFacProviderException("Invalid SSH key", e);
@@ -191,21 +208,6 @@ public class EC2Provider implements GFac
}
- private String getResultFromStdOut(String outParamName, SessionChannelClient session) throws IOException {
- InputStream in = session.getInputStream();
- byte buffer[] = new byte[255];
- int read;
- String executionResult = "";
- while((read = in.read(buffer)) > 0) {
- String out = new String(buffer, 0, read);
- if(out.startsWith(outParamName)) {
- executionResult = out.split("=")[1].replace("\r","").replace("\n","");
- break;
- }
- }
- return executionResult;
- }
-
public void dispose(JobExecutionContext jobExecutionContext) throws GFacProviderException {
}
@@ -247,6 +249,7 @@ public class EC2Provider implements GFac
*/
private void initEc2Environment(JobExecutionContext jobExecutionContext, AmazonEC2Client ec2client)
throws GFacProviderException {
+// Instance instance;
try {
/* Build key pair before start instance */
buildKeyPair(ec2client);
@@ -281,7 +284,7 @@ public class EC2Provider implements GFac
} catch (Exception e) {
throw new GFacProviderException("Invalid Request",e,jobExecutionContext);
}
-
+// return instance;
}
private List<Instance> startInstances(AmazonEC2Client ec2, String amiId, String insType, JobExecutionContext jobExecutionContext)
Modified: airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/EC2ProviderTest.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/EC2ProviderTest.java?rev=1454651&r1=1454650&r2=1454651&view=diff
==============================================================================
--- airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/EC2ProviderTest.java (original)
+++ airavata/trunk/modules/gfac-core/src/test/java/org/apache/airavata/core/gfac/services/impl/EC2ProviderTest.java Sat Mar 9 04:05:01 2013
@@ -19,7 +19,7 @@ import java.util.ArrayList;
import java.util.List;
/**
- * As a pre-requisite for running this test is that your Amazon instance should be in a running state.
+ * Your Amazon instance should be in a running state before running this test.
*/
public class EC2ProviderTest {
private JobExecutionContext jobExecutionContext;
@@ -149,7 +149,7 @@ public class EC2ProviderTest {
gFacAPI.submitJob(jobExecutionContext);
MessageContext outMessageContext = jobExecutionContext.getOutMessageContext();
Assert.assertEquals(MappingFactory.
- toString((ActualParameter) outMessageContext.getParameter("genome_output")), "457");
+ toString((ActualParameter) outMessageContext.getParameter("genome_output")), "476");
}
}