You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by pa...@apache.org on 2011/08/31 22:17:34 UTC
svn commit: r1163789 - in /incubator/airavata/trunk/modules/gfac-core/src:
main/java/org/apache/airavata/core/gfac/notification/
main/java/org/apache/airavata/core/gfac/notification/impl/
main/java/org/apache/airavata/core/gfac/provider/ main/java/org/...
Author: patanachai
Date: Wed Aug 31 20:17:34 2011
New Revision: 1163789
URL: http://svn.apache.org/viewvc?rev=1163789&view=rev
Log:
prototype Notification Interface
Added:
incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/
incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/DummyNotification.java
incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/StandardOutNotification.java
Modified:
incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/DummyNotification.java
incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/NotificationService.java
incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/EC2Provider.java
incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/GramProvider.java
incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/LocalProvider.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/main/java/org/apache/airavata/core/gfac/services/impl/AbstractSimpleService.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/src/main/java/org/apache/airavata/core/gfac/notification/NotificationService.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/NotificationService.java?rev=1163789&r1=1163788&r2=1163789&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/NotificationService.java (original)
+++ incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/NotificationService.java Wed Aug 31 20:17:34 2011
@@ -21,56 +21,37 @@
package org.apache.airavata.core.gfac.notification;
-import java.net.URI;
-
-import org.apache.airavata.core.gfac.context.MessageContext;
-import org.apache.airavata.core.gfac.exception.GfacException;
-
-import edu.indiana.extreme.lead.workflow_tracking.common.DataDurationObj;
-import edu.indiana.extreme.lead.workflow_tracking.common.DataObj;
-import edu.indiana.extreme.lead.workflow_tracking.common.DurationObj;
+import org.apache.airavata.core.gfac.context.InvocationContext;
+import org.apache.airavata.core.gfac.provider.Provider;
+import org.apache.airavata.core.gfac.scheduler.Scheduler;
public interface NotificationService {
-
- DataDurationObj dataReceiveFinished(DataDurationObj dataObj, String... descriptionAndAnnotation);
-
- DataDurationObj dataReceiveStarted(URI dataID, URI remoteLocation, URI localLocation);
-
- DataDurationObj dataSendFinished(DataDurationObj dataObj, String... descriptionAndAnnotation);
-
- DataDurationObj dataSendStarted(DataObj dataObj, URI remoteLocation);
-
- void dataConsumed(URI dataID, URI replica, String type, String soapElementName);
-
- void dataProduced(URI dataID, URI replica, String type, String soapElementName);
-
- DurationObj computationDuration(long durationMillis);
-
- DurationObj computationFinished(DurationObj compObj);
-
- DurationObj computationStarted();
-
- void exception(String... descriptionAndAnnotation);
-
- void flush();
-
- void info(String... descriptionAndAnnotation);
-
- void sendingResponseFailed(Throwable trace, String... descriptionAndAnnotation);
-
- void sendingResponseSucceeded(String... descriptionAndAnnotation);
-
- void sendingResult(MessageContext messageContext) throws GfacException;
-
- void warning(String... descriptionAndAnnotation);
-
- void sendingFault(String... descriptionAndAnnotation);
-
- void publishURL(String title, String url, String... descriptionAndAnnotation);
-
- void appAudit(String name, URI jobHandle, String host, String queueName, String jobId, String dName,
- String projectId, String rsl, String... descriptionAndAnnotation);
-
- void sendResourceMappingNotifications(String hostName, String... descriptionAndAnnotation);
-
+ /*
+ *
+ */
+ void startSchedule(Object notifer, InvocationContext context, Scheduler scheduler);
+ void finishSchedule(Object notifer, InvocationContext context, Scheduler scheduler, Provider provider);
+
+ /*
+ *
+ */
+ void input(Object notifier, InvocationContext context, String... data);
+ void output(Object notifier, InvocationContext context, String... data);
+
+ /*
+ *
+ */
+ void startExecution(Object notifer, InvocationContext context);
+ void applicationInfo(Object notifier, InvocationContext context, String... data);
+ void finishExecution(Object notifer, InvocationContext context);
+ void statusChanged(Object notifer, InvocationContext context, String... data);
+ void executionFail(Object notifer, InvocationContext context, Exception e, String... data);
+
+ /*
+ * Interface for developer to use
+ */
+ void debug(Object notifer, InvocationContext context, String... data);
+ void info(Object notifer, InvocationContext context, String... data);
+ void warning(Object notifer, InvocationContext context, String... data);
+ void exception(Object notifer, InvocationContext context, String... data);
}
Added: incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/DummyNotification.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/DummyNotification.java?rev=1163789&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/DummyNotification.java (added)
+++ incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/DummyNotification.java Wed Aug 31 20:17:34 2011
@@ -0,0 +1,49 @@
+package org.apache.airavata.core.gfac.notification.impl;
+
+import org.apache.airavata.core.gfac.context.InvocationContext;
+import org.apache.airavata.core.gfac.notification.NotificationService;
+import org.apache.airavata.core.gfac.provider.Provider;
+import org.apache.airavata.core.gfac.scheduler.Scheduler;
+
+public class DummyNotification implements NotificationService {
+
+ public void startSchedule(Object notifer, InvocationContext context, Scheduler scheduler) {
+ }
+
+ public void finishSchedule(Object notifer, InvocationContext context, Scheduler scheduler, Provider provider) {
+ }
+
+ public void input(Object notifier, InvocationContext context, String... data) {
+ }
+
+ public void output(Object notifier, InvocationContext context, String... data) {
+ }
+
+ public void startExecution(Object notifer, InvocationContext context) {
+ }
+
+ public void applicationInfo(Object notifier, InvocationContext context, String... data) {
+ }
+
+ public void finishExecution(Object notifer, InvocationContext context) {
+ }
+
+ public void statusChanged(Object notifer, InvocationContext context, String... data) {
+ }
+
+ public void executionFail(Object notifer, InvocationContext context, Exception e, String... data) {
+ }
+
+ public void debug(Object notifer, InvocationContext context, String... data) {
+ }
+
+ public void info(Object notifer, InvocationContext context, String... data) {
+ }
+
+ public void warning(Object notifer, InvocationContext context, String... data) {
+ }
+
+ public void exception(Object notifer, InvocationContext context, String... data) {
+ }
+
+}
Added: incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/StandardOutNotification.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/StandardOutNotification.java?rev=1163789&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/StandardOutNotification.java (added)
+++ incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/notification/impl/StandardOutNotification.java Wed Aug 31 20:17:34 2011
@@ -0,0 +1,49 @@
+package org.apache.airavata.core.gfac.notification.impl;
+
+import org.apache.airavata.core.gfac.context.InvocationContext;
+import org.apache.airavata.core.gfac.notification.NotificationService;
+import org.apache.airavata.core.gfac.provider.Provider;
+import org.apache.airavata.core.gfac.scheduler.Scheduler;
+
+public class StandardOutNotification implements NotificationService {
+
+ public void startSchedule(Object notifer, InvocationContext context, Scheduler scheduler) {
+ }
+
+ public void finishSchedule(Object notifer, InvocationContext context, Scheduler scheduler, Provider provider) {
+ }
+
+ public void input(Object notifier, InvocationContext context, String... data) {
+ }
+
+ public void output(Object notifier, InvocationContext context, String... data) {
+ }
+
+ public void startExecution(Object notifer, InvocationContext context) {
+ }
+
+ public void applicationInfo(Object notifier, InvocationContext context, String... data) {
+ }
+
+ public void finishExecution(Object notifer, InvocationContext context) {
+ }
+
+ public void statusChanged(Object notifer, InvocationContext context, String... data) {
+ }
+
+ public void executionFail(Object notifer, InvocationContext context, Exception e, String... data) {
+ }
+
+ public void debug(Object notifer, InvocationContext context, String... data) {
+ }
+
+ public void info(Object notifer, InvocationContext context, String... data) {
+ }
+
+ public void warning(Object notifer, InvocationContext context, String... data) {
+ }
+
+ public void exception(Object notifer, InvocationContext context, String... data) {
+ }
+
+}
Modified: incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/EC2Provider.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/EC2Provider.java?rev=1163789&r1=1163788&r2=1163789&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/EC2Provider.java (original)
+++ incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/EC2Provider.java Wed Aug 31 20:17:34 2011
@@ -45,7 +45,6 @@ import net.schmizz.sshj.connection.chann
import net.schmizz.sshj.connection.channel.direct.Session.Command;
import net.schmizz.sshj.xfer.scp.SCPFileTransfer;
-import org.apache.airavata.core.gfac.context.ExecutionContext;
import org.apache.airavata.core.gfac.context.InvocationContext;
import org.apache.airavata.core.gfac.context.impl.AmazonSecurityContext;
import org.apache.airavata.core.gfac.exception.GfacException;
@@ -76,8 +75,6 @@ import com.amazonaws.services.ec2.model.
import com.amazonaws.services.ec2.model.RunInstancesRequest;
import com.amazonaws.services.ec2.model.RunInstancesResult;
-import edu.indiana.extreme.lead.workflow_tracking.common.DurationObj;
-
public class EC2Provider extends AbstractProvider {
public static final String AMAZON_SECURITY_CONTEXT = "amazon";
@@ -156,7 +153,7 @@ public class EC2Provider extends Abstrac
context
.getExecutionContext()
.getNotificationService()
- .sendResourceMappingNotifications(
+ .info(this, null,
this.instance.getPublicDnsName(),
"EC2 Instance " + this.instance.getInstanceId() + " is running with public name "
+ this.instance.getPublicDnsName(), this.instance.getInstanceId());
@@ -284,7 +281,7 @@ public class EC2Provider extends Abstrac
}
// notify start
- DurationObj compObj = notifier.computationStarted();
+ notifier.startExecution(this, context);
/*
* Create ssh connection
@@ -317,7 +314,7 @@ public class EC2Provider extends Abstrac
cmd.join(5, TimeUnit.SECONDS);
// notify end
- notifier.computationFinished(compObj);
+ notifier.finishExecution(this, context);
/*
* check return value. usually not very helpful to draw conclusions based on return values so don't
@@ -398,7 +395,7 @@ public class EC2Provider extends Abstrac
// notify the status
for (Instance ins : instances) {
- notifier.info("EC2 Instance " + ins.getInstanceId() + " is " + ins.getState().getName().toString());
+ notifier.info(this, null, "EC2 Instance " + ins.getInstanceId() + " is " + ins.getState().getName().toString());
}
try {
Modified: incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/GramProvider.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/GramProvider.java?rev=1163789&r1=1163788&r2=1163789&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/GramProvider.java (original)
+++ incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/GramProvider.java Wed Aug 31 20:17:34 2011
@@ -23,7 +23,6 @@ package org.apache.airavata.core.gfac.pr
import java.io.File;
import java.net.URI;
-import java.net.URISyntaxException;
import javax.xml.namespace.QName;
@@ -49,8 +48,6 @@ import org.globus.gram.GramJob;
import org.ietf.jgss.GSSCredential;
import org.ietf.jgss.GSSException;
-import edu.indiana.extreme.lead.workflow_tracking.common.DurationObj;
-
public class GramProvider extends AbstractProvider {
public static final String MYPROXY_SECURITY_CONTEXT = "myproxy";
@@ -120,7 +117,7 @@ public class GramProvider extends Abstra
log.info("RSL = " + rsl);
NotificationService notifier = invocationContext.getExecutionContext().getNotificationService();
- DurationObj compObj = notifier.computationStarted();
+ notifier.startExecution(this, invocationContext);
StringBuffer buf = new StringBuffer();
JobSubmissionListener listener = new JobSubmissionListener(job, invocationContext);
@@ -146,12 +143,12 @@ public class GramProvider extends Abstra
.append(app.getTmpDir())
.append(" Globus GateKeeper cantact = ")
.append(gatekeeper);
- invocationContext.getExecutionContext().getNotificationService().info(buf.toString());
+ notifier.info(this, invocationContext, buf.toString());
String gramJobid = job.getIDAsString();
- invocationContext.getExecutionContext().getNotificationService().info("JobID=" + gramJobid);
+ notifier.info(this, invocationContext, "JobID=" + gramJobid);
log.info(buf.toString());
- // Send Audit Notifications
- notifier.appAudit(invocationContext.getServiceName(), new URI(job.getIDAsString()), gatekeeper, null, null,
+
+ notifier.applicationInfo(this, invocationContext, gramJobid, gatekeeper, null, null,
gssCred.getName().toString(), null, job.getRSL());
listener.waitFor();
@@ -169,7 +166,7 @@ public class GramProvider extends Abstra
}
throw error;
}
- notifier.computationFinished(compObj);
+ notifier.finishExecution(this, invocationContext);
/*
* Stdout and Stderror
@@ -215,9 +212,7 @@ public class GramProvider extends Abstra
}
throw error;
} catch (GSSException e) {
- throw new JobSubmissionFault(e, "GFAC HOST", gatekeeper, rsl, this);
- } catch (URISyntaxException e) {
- throw new GfacException(e, FaultCode.ErrorAtDependentService);
+ throw new JobSubmissionFault(e, "GFAC HOST", gatekeeper, rsl, this);
} catch (InterruptedException e) {
throw new GfacException(e, FaultCode.ErrorAtDependentService);
} finally {
Modified: incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/LocalProvider.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/LocalProvider.java?rev=1163789&r1=1163788&r2=1163789&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/LocalProvider.java (original)
+++ incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/provider/LocalProvider.java Wed Aug 31 20:17:34 2011
@@ -35,6 +35,7 @@ import java.util.Map;
import org.apache.airavata.core.gfac.context.InvocationContext;
import org.apache.airavata.core.gfac.exception.GfacException;
import org.apache.airavata.core.gfac.exception.GfacException.FaultCode;
+import org.apache.airavata.core.gfac.notification.NotificationService;
import org.apache.airavata.core.gfac.type.ApplicationDeploymentDescription;
import org.apache.airavata.core.gfac.type.HostDescription;
import org.apache.airavata.core.gfac.type.ServiceDescription;
@@ -109,6 +110,9 @@ public class LocalProvider extends Abstr
log.info("Env[" + key + "] = " + builder.environment().get(key));
}
+ NotificationService notifier = context.getExecutionContext().getNotificationService();
+ notifier.startExecution(this, context);
+
// running cmd
Process process = builder.start();
@@ -190,6 +194,8 @@ public class LocalProvider extends Abstr
// wait for the process (application) to finish executing
int returnValue = process.waitFor();
+
+ notifier.finishExecution(this, context);
// make sure other two threads are done
t1.join();
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=1163789&r1=1163788&r2=1163789&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 Wed Aug 31 20:17:34 2011
@@ -138,12 +138,7 @@ public class SSHProvider extends Abstrac
List<String> cmdList = new ArrayList<String>();
SSHClient ssh = new SSHClient();
- try {
-
- /*
- * Notifier
- */
- NotificationService notifier = context.getExecutionContext().getNotificationService();
+ try {
/*
* Builder Command
@@ -172,7 +167,8 @@ public class SSHProvider extends Abstrac
}
// notify start
- DurationObj compObj = notifier.computationStarted();
+ NotificationService notifier = context.getExecutionContext().getNotificationService();
+ notifier.startExecution(this, context);
initSSHSecurity(context, ssh);
ssh.connect(host.getName());
@@ -200,7 +196,7 @@ public class SSHProvider extends Abstrac
cmd.join(5, TimeUnit.SECONDS);
// notify end
- notifier.computationFinished(compObj);
+ notifier.finishExecution(this, context);
/*
* check return value. usually not very helpful to draw
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=1163789&r1=1163788&r2=1163789&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 Wed Aug 31 20:17:34 2011
@@ -86,7 +86,7 @@ public class JobSubmissionListener imple
String jobStatusMessage = GfacUtils.formatJobStatus(jobId, statusString);
log.info(jobStatusMessage);
status = jobStatus;
- context.getExecutionContext().getNotificationService().info(jobStatusMessage);
+ context.getExecutionContext().getNotificationService().statusChanged(this, this.context, jobStatusMessage);
if (jobStatus == GramJob.STATUS_DONE) {
finished = true;
} else if (jobStatus == GramJob.STATUS_FAILED) {
Modified: incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/services/impl/AbstractSimpleService.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/services/impl/AbstractSimpleService.java?rev=1163789&r1=1163788&r2=1163789&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/services/impl/AbstractSimpleService.java (original)
+++ incubator/airavata/trunk/modules/gfac-core/src/main/java/org/apache/airavata/core/gfac/services/impl/AbstractSimpleService.java Wed Aug 31 20:17:34 2011
@@ -62,8 +62,11 @@ public abstract class AbstractSimpleServ
/*
* Determine provider
- */
- Provider provider = getScheduler(context).schedule(context);
+ */
+ Scheduler scheduler = getScheduler(context);
+ context.getExecutionContext().getNotificationService().startSchedule(this, context, scheduler);
+ Provider provider = scheduler.schedule(context);
+ context.getExecutionContext().getNotificationService().finishSchedule(this, context, scheduler, provider);
log.debug("After scheduling, try to run data chain");
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=1163789&r1=1163788&r2=1163789&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 Wed Aug 31 20:17:34 2011
@@ -31,7 +31,7 @@ import org.apache.airavata.core.gfac.api
import org.apache.airavata.core.gfac.context.InvocationContext;
import org.apache.airavata.core.gfac.context.impl.ExecutionContextImpl;
import org.apache.airavata.core.gfac.context.impl.ParameterContextImpl;
-import org.apache.airavata.core.gfac.notification.DummyNotification;
+import org.apache.airavata.core.gfac.notification.impl.DummyNotification;
import org.apache.airavata.core.gfac.type.DataType;
import org.apache.airavata.core.gfac.type.HostDescription;
import org.apache.airavata.core.gfac.type.Parameter;