Return-Path: X-Original-To: apmail-airavata-commits-archive@www.apache.org Delivered-To: apmail-airavata-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id BE71B11172 for ; Sat, 19 Jul 2014 14:08:30 +0000 (UTC) Received: (qmail 97509 invoked by uid 500); 19 Jul 2014 14:08:30 -0000 Delivered-To: apmail-airavata-commits-archive@airavata.apache.org Received: (qmail 97458 invoked by uid 500); 19 Jul 2014 14:08:30 -0000 Mailing-List: contact commits-help@airavata.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@airavata.apache.org Delivered-To: mailing list commits@airavata.apache.org Received: (qmail 97449 invoked by uid 99); 19 Jul 2014 14:08:30 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 19 Jul 2014 14:08:30 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 397FB94FD10; Sat, 19 Jul 2014 14:08:30 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: samindaw@apache.org To: commits@airavata.apache.org Date: Sat, 19 Jul 2014 14:08:31 -0000 Message-Id: <2aee9574424a4c11bb30300c73a66ed1@git.apache.org> In-Reply-To: <8d17a729976144f3b4176ede33f75636@git.apache.org> References: <8d17a729976144f3b4176ede33f75636@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [3/3] git commit: moving about status listener classes out of hte gfac moving about status listener classes out of hte gfac Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/92838e4a Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/92838e4a Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/92838e4a Branch: refs/heads/workflow-support Commit: 92838e4a8d9a678e795c9deedaba76aeac652dc3 Parents: 601d5ad Author: Saminda Wijeratne Authored: Sat Jul 19 09:23:19 2014 -0400 Committer: Saminda Wijeratne Committed: Sat Jul 19 09:23:19 2014 -0400 ---------------------------------------------------------------------- .../server/handler/AiravataServerHandler.java | 98 ++++--- .../util/AiravataExperimentStatusUpdator.java | 117 ++++++++ .../api/server/util/DataModelUtils.java | 56 ++++ .../tools/RegisterSampleApplications.java | 207 +++++++++++--- .../airavata/model/util/ExecutionType.java | 28 ++ .../model/util/ExperimentModelUtil.java | 16 +- .../experimentModel.thrift | 3 +- modules/commons/utils/pom.xml | 7 +- .../common/utils/AbstractActivityListener.java | 27 ++ .../airavata/common/utils/MonitorPublisher.java | 47 ++++ .../main/resources/airavata-server.properties | 2 +- modules/distribution/server/pom.xml | 5 + .../server/src/main/assembly/bin-assembly.xml | 1 + .../airavata/gfac/server/GfacServerHandler.java | 20 +- .../airavata/gfac/core/cpi/BetterGfacImpl.java | 34 ++- .../apache/airavata/gfac/core/cpi/GFacImpl.java | 33 ++- .../gfac/core/handler/AbstractHandler.java | 2 +- .../handler/AbstractRecoverableHandler.java | 2 +- .../core/monitor/AbstractActivityListener.java | 54 ++-- .../AiravataExperimentStatusUpdator.java | 232 ++++++++-------- .../core/monitor/AiravataJobStatusUpdator.java | 3 +- .../core/monitor/AiravataTaskStatusUpdator.java | 3 +- .../AiravataWorkflowNodeStatusUpdator.java | 3 +- .../core/monitor/GfacInternalStatusUpdator.java | 17 +- .../core/notification/MonitorPublisher.java | 94 +++---- .../gfac/core/provider/AbstractProvider.java | 3 +- .../provider/AbstractRecoverableProvider.java | 2 +- .../gfac/services/impl/LocalProviderTest.java | 17 +- .../monitor/core/AiravataAbstractMonitor.java | 2 +- .../handlers/GridPushMonitorHandler.java | 13 +- .../monitor/impl/pull/qstat/HPCPullMonitor.java | 22 +- .../monitor/impl/push/amqp/AMQPMonitor.java | 21 +- .../monitor/impl/push/amqp/BasicConsumer.java | 11 +- .../apache/airavata/job/AMQPMonitorTest.java | 21 +- .../job/QstatMonitorTestWithMyProxyAuth.java | 21 +- .../airavata/workflow/engine/WorkflowUtils.java | 56 ++++ .../engine/interpretor/WorkflowInterpreter.java | 267 ++++++++++--------- .../engine/util/ProxyMonitorPublisher.java | 62 +++++ .../model/component/ws/WSComponent.java | 2 +- .../ui/dialogs/registry/RegistryWindow.java | 4 +- .../WorkflowInterpreterLaunchWindow.java | 127 +++++---- 41 files changed, 1190 insertions(+), 572 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java index 58d8acf..3c610f0 100644 --- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java +++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java @@ -33,7 +33,6 @@ import java.util.Random; import org.airavata.appcatalog.cpi.AppCatalog; import org.airavata.appcatalog.cpi.AppCatalogException; import org.airavata.appcatalog.cpi.ApplicationDeployment; -import org.airavata.appcatalog.cpi.ApplicationInterface; import org.airavata.appcatalog.cpi.ComputeResource; import org.airavata.appcatalog.cpi.GwyResourceProfile; import org.apache.aiaravata.application.catalog.data.impl.AppCatalogFactory; @@ -46,6 +45,7 @@ import org.apache.aiaravata.application.catalog.data.resources.SshJobSubmissionR import org.apache.aiaravata.application.catalog.data.util.AppCatalogThriftConversion; import org.apache.airavata.api.Airavata; import org.apache.airavata.api.airavataAPIConstants; +import org.apache.airavata.api.server.util.DataModelUtils; import org.apache.airavata.common.exception.ApplicationSettingsException; import org.apache.airavata.common.utils.ServerSettings; import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentDescription; @@ -53,7 +53,16 @@ import org.apache.airavata.model.appcatalog.appdeployment.ApplicationModule; import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription; import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType; import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType; -import org.apache.airavata.model.appcatalog.computeresource.*; +import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription; +import org.apache.airavata.model.appcatalog.computeresource.DataMovementInterface; +import org.apache.airavata.model.appcatalog.computeresource.DataMovementProtocol; +import org.apache.airavata.model.appcatalog.computeresource.GridFTPDataMovement; +import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface; +import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionProtocol; +import org.apache.airavata.model.appcatalog.computeresource.LOCALDataMovement; +import org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission; +import org.apache.airavata.model.appcatalog.computeresource.SCPDataMovement; +import org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission; import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference; import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile; import org.apache.airavata.model.error.AiravataClientException; @@ -63,6 +72,7 @@ import org.apache.airavata.model.error.ExperimentNotFoundException; import org.apache.airavata.model.error.InvalidRequestException; import org.apache.airavata.model.error.LaunchValidationException; import org.apache.airavata.model.error.ProjectNotFoundException; +import org.apache.airavata.model.util.ExecutionType; import org.apache.airavata.model.workspace.Project; import org.apache.airavata.model.workspace.experiment.ComputationalResourceScheduling; import org.apache.airavata.model.workspace.experiment.DataObjectType; @@ -88,8 +98,6 @@ import org.apache.airavata.registry.cpi.RegistryModelType; import org.apache.airavata.registry.cpi.utils.Constants; import org.apache.airavata.registry.cpi.utils.Constants.FieldConstants.TaskDetailConstants; import org.apache.airavata.registry.cpi.utils.Constants.FieldConstants.WorkflowNodeConstants; -import org.apache.airavata.workflow.catalog.WorkflowCatalogException; -import org.apache.airavata.workflow.catalog.WorkflowCatalogFactory; import org.apache.airavata.workflow.engine.WorkflowEngine; import org.apache.airavata.workflow.engine.WorkflowEngineException; import org.apache.airavata.workflow.engine.WorkflowEngineFactory; @@ -1027,55 +1035,41 @@ public class AiravataServerHandler implements Airavata.Iface, Watcher { final String expID = airavataExperimentId; final String token = airavataCredStoreToken; synchronized (this) { - try { - ApplicationInterface applicationInterface = AppCatalogFactory.getAppCatalog().getApplicationInterface(); - List allApplicationInterfaceIds = applicationInterface.getAllApplicationInterfaceIds(); - Experiment experiment = getExperiment(expID); - String applicationId = experiment.getApplicationId(); - Thread thread = null; - if (allApplicationInterfaceIds.contains(applicationId)){ - //its an single application execution experiment - final OrchestratorService.Client orchestratorClient = getOrchestratorClient(); - if (orchestratorClient.validateExperiment(expID)) { - thread = new Thread() { - public void run() { - try { - launchSingleAppExperiment(expID, token, orchestratorClient); - } catch (TException e) { - e.printStackTrace(); - } - } - }; - } else { - throw new InvalidRequestException("Experiment Validation Failed, please check the configuration"); - } - - } else { - List allWorkflows = WorkflowCatalogFactory.getWorkflowCatalog().getAllWorkflows(); - if (allWorkflows.contains(applicationId)){ - //its a workflow execution experiment - thread = new Thread() { - public void run() { - try { - launchWorkflowExperiment(expID, token); - } catch (TException e) { - e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. - } - } - }; - } else { - throw new InvalidRequestException("Experiment '"+expID+"' launch failed. Unable to locate an application or a workflow with the id "+applicationId); - } - } - thread.start(); - } catch (AppCatalogException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (WorkflowCatalogException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); + Experiment experiment = getExperiment(expID); + ExecutionType executionType = DataModelUtils.getExecutionType(experiment); + Thread thread = null; + if (executionType==ExecutionType.SINGLE_APP){ + //its an single application execution experiment + final OrchestratorService.Client orchestratorClient = getOrchestratorClient(); + if (orchestratorClient.validateExperiment(expID)) { + thread = new Thread() { + public void run() { + try { + launchSingleAppExperiment(expID, token, orchestratorClient); + } catch (TException e) { + e.printStackTrace(); + } + } + }; + } else { + throw new InvalidRequestException("Experiment Validation Failed, please check the configuration"); + } + + } else if (executionType == ExecutionType.WORKFLOW){ + //its a workflow execution experiment + thread = new Thread() { + public void run() { + try { + launchWorkflowExperiment(expID, token); + } catch (TException e) { + e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. + } + } + }; + } else { + throw new InvalidRequestException("Experiment '"+expID+"' launch failed. Unable to figureout execution type for application "+experiment.getApplicationId()); } - + thread.start(); } } http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/AiravataExperimentStatusUpdator.java ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/AiravataExperimentStatusUpdator.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/AiravataExperimentStatusUpdator.java new file mode 100644 index 0000000..f75d95c --- /dev/null +++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/AiravataExperimentStatusUpdator.java @@ -0,0 +1,117 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.api.server.util; + +import java.util.Calendar; + +import org.apache.airavata.common.utils.AbstractActivityListener; +import org.apache.airavata.common.utils.MonitorPublisher; +import org.apache.airavata.gfac.core.monitor.state.ExperimentStatusChangedEvent; +import org.apache.airavata.gfac.core.monitor.state.WorkflowNodeStatusChangedEvent; +import org.apache.airavata.model.util.ExecutionType; +import org.apache.airavata.model.workspace.experiment.Experiment; +import org.apache.airavata.model.workspace.experiment.ExperimentState; +import org.apache.airavata.registry.cpi.Registry; +import org.apache.airavata.registry.cpi.RegistryException; +import org.apache.airavata.registry.cpi.RegistryModelType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.common.eventbus.Subscribe; + +public class AiravataExperimentStatusUpdator implements AbstractActivityListener { + private final static Logger logger = LoggerFactory.getLogger(AiravataExperimentStatusUpdator.class); + + private Registry airavataRegistry; + private MonitorPublisher monitorPublisher; + + public Registry getAiravataRegistry() { + return airavataRegistry; + } + + public void setAiravataRegistry(Registry airavataRegistry) { + this.airavataRegistry = airavataRegistry; + } + + @Subscribe + public void setupExperimentStatus(WorkflowNodeStatusChangedEvent nodeStatus) { + try { + boolean updateExperimentStatus=true; + ExperimentState state = ExperimentState.UNKNOWN; + switch (nodeStatus.getState()) { + case CANCELED: + state = ExperimentState.CANCELED; updateExperimentStatus = true; + break; + case COMPLETED: + state = ExperimentState.COMPLETED; updateExperimentStatus = false; + break; + case INVOKED: + state = ExperimentState.LAUNCHED; updateExperimentStatus = false; + break; + case FAILED: + state = ExperimentState.FAILED; updateExperimentStatus = true; + break; + case EXECUTING: + state = ExperimentState.EXECUTING; updateExperimentStatus = true; + break; + case CANCELING: + state = ExperimentState.CANCELING; updateExperimentStatus = true; + break; + default: + break; + } + if (!updateExperimentStatus){ + ExecutionType executionType = DataModelUtils.getExecutionType((Experiment) airavataRegistry.get(RegistryModelType.EXPERIMENT, nodeStatus.getIdentity().getExperimentID())); + updateExperimentStatus=(executionType==ExecutionType.SINGLE_APP); + } + updateExperimentStatus(nodeStatus.getIdentity().getExperimentID(), state); + logger.debug("Publishing experiment status for "+nodeStatus.getIdentity().getExperimentID()+":"+state.toString()); + monitorPublisher.publish(new ExperimentStatusChangedEvent(nodeStatus.getIdentity(), state)); + } catch (Exception e) { + logger.error("Error persisting data" + e.getLocalizedMessage(), e); + } + } + + public void updateExperimentStatus(String experimentId, ExperimentState state) throws Exception { + logger.info("Updating the experiment status of experiment: " + experimentId + " to " + state.toString()); + Experiment details = (Experiment)airavataRegistry.get(RegistryModelType.EXPERIMENT, experimentId); + if(details == null) { + details = new Experiment(); + details.setExperimentID(experimentId); + } + org.apache.airavata.model.workspace.experiment.ExperimentStatus status = new org.apache.airavata.model.workspace.experiment.ExperimentStatus(); + status.setExperimentState(state); + status.setTimeOfStateChange(Calendar.getInstance().getTimeInMillis()); + details.setExperimentStatus(status); + airavataRegistry.update(RegistryModelType.EXPERIMENT_STATUS, status, experimentId); + + } + + public void setup(Object... configurations) { + for (Object configuration : configurations) { + if (configuration instanceof Registry){ + this.airavataRegistry=(Registry)configuration; + } else if (configuration instanceof MonitorPublisher){ + this.monitorPublisher=(MonitorPublisher) configuration; + } + } + } +} http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/DataModelUtils.java ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/DataModelUtils.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/DataModelUtils.java new file mode 100644 index 0000000..9a0536c --- /dev/null +++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/util/DataModelUtils.java @@ -0,0 +1,56 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ + +package org.apache.airavata.api.server.util; + +import java.util.List; + +import org.airavata.appcatalog.cpi.AppCatalogException; +import org.airavata.appcatalog.cpi.ApplicationInterface; +import org.apache.aiaravata.application.catalog.data.impl.AppCatalogFactory; +import org.apache.airavata.model.util.ExecutionType; +import org.apache.airavata.model.workspace.experiment.Experiment; +import org.apache.airavata.workflow.catalog.WorkflowCatalogException; +import org.apache.airavata.workflow.catalog.WorkflowCatalogFactory; + +public class DataModelUtils { + + public static ExecutionType getExecutionType(Experiment experiment){ + try { + ApplicationInterface applicationInterface = AppCatalogFactory.getAppCatalog().getApplicationInterface(); + List allApplicationInterfaceIds = applicationInterface.getAllApplicationInterfaceIds(); + String applicationId = experiment.getApplicationId(); + if (allApplicationInterfaceIds.contains(applicationId)){ + return ExecutionType.SINGLE_APP; + } else { + List allWorkflows = WorkflowCatalogFactory.getWorkflowCatalog().getAllWorkflows(); + if (allWorkflows.contains(applicationId)){ + return ExecutionType.WORKFLOW; + } + } + } catch (AppCatalogException e) { + e.printStackTrace(); + } catch (WorkflowCatalogException e) { + e.printStackTrace(); + } + return ExecutionType.UNKNOWN; + } +} http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java index e991b06..1374f9f 100644 --- a/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java +++ b/airavata-api/airavata-client-sdks/java-client-samples/src/main/java/org/apache/airavata/client/tools/RegisterSampleApplications.java @@ -47,10 +47,10 @@ import org.apache.thrift.TException; public class RegisterSampleApplications { - public static final String THRIFT_SERVER_HOST = "gw111.iu.xsede.org"; -// public static final String THRIFT_SERVER_HOST = "localhost"; - public static final int THRIFT_SERVER_PORT = 9930; -// public static final int THRIFT_SERVER_PORT = 8930; +// public static final String THRIFT_SERVER_HOST = "gw111.iu.xsede.org"; + public static final String THRIFT_SERVER_HOST = "localhost"; +// public static final int THRIFT_SERVER_PORT = 9930; + public static final int THRIFT_SERVER_PORT = 8930; private final static Logger logger = LoggerFactory.getLogger(RegisterSampleApplications.class); private static final String DEFAULT_GATEWAY = "default"; private static Airavata.Client airavataClient; @@ -110,22 +110,22 @@ public class RegisterSampleApplications { System.out.println("API version is " + airavataClient.getAPIVersion()); //Register all compute hosts - registerXSEDEHosts(); +// registerXSEDEHosts(); //Register Gateway Resource Preferences - registerGatewayResourceProfile(); +// registerGatewayResourceProfile(); //Register all application modules registerAppModules(); //Register all application deployments - registerAppDeployments(); +// registerAppDeployments(); //Register all application interfaces registerAppInterfaces(); //write output into propertiesFile - writeIdPropertyFile(); +// writeIdPropertyFile(); } catch (Exception e) { logger.error("Error while connecting with server", e.getMessage()); @@ -237,12 +237,13 @@ public class RegisterSampleApplications { public static void registerAppInterfaces() { System.out.println("\n #### Registering Application Interfaces #### \n"); - + registerGromaxWorkflowInterfaces(); + //Registering Echo - registerEchoInterface(); +// registerEchoInterface(); //Registering Amber - registerAmberInterface(); +// registerAmberInterface(); //Registering AutoDock // registerAutoDockInterface(); @@ -263,10 +264,152 @@ public class RegisterSampleApplications { // registerTrinityInterface(); //Registering WRF - registerWRFInterface(); +// registerWRFInterface(); + + } + + public static void registerGromaxWorkflowInterfaces() { + try { + System.out.println("#### Registering Echo Interface #### \n"); + + List appModules = new ArrayList(); + appModules.add(echoModuleId); + + + List applicationInputs = new ArrayList(); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("s_struct", "", + DataType.URI, null, false, "Starting Structure File", null)); + + + List applicationOutputs = new ArrayList(); + applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("ffcomplient_struct", + "", DataType.URI)); + applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("topology", + "", DataType.URI)); + + echoInterfaceId = airavataClient.registerApplicationInterface( + RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("pb2gmx", "pb2gmx", + appModules, applicationInputs, applicationOutputs)); + + + applicationInputs.clear(); + applicationInputs = new ArrayList(); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("ffcomplient_struct", "", + DataType.URI, null, false, "FFComplient Structure File", null)); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("topology", "", + DataType.URI, null, false, "Topology File", null)); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("control_param_emv", "", + DataType.URI, null, false, "Controlled parameters array of EM Vacuum", null)); + + + applicationOutputs.clear(); + applicationOutputs = new ArrayList(); + applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("energy_min_struct", + "", DataType.URI)); + + echoInterfaceId = airavataClient.registerApplicationInterface( + RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("simulation1", "simulation1", + appModules, applicationInputs, applicationOutputs)); + applicationInputs.clear(); + applicationInputs = new ArrayList(); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("energy_min_struct", "", + DataType.URI, null, false, "Energy Minimized Structure File", null)); + + applicationOutputs.clear(); + applicationOutputs = new ArrayList(); + applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("struct_with_pbc", + "", DataType.URI)); + + echoInterfaceId = airavataClient.registerApplicationInterface( + RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("editconf", "Edit configuration", + appModules, applicationInputs, applicationOutputs)); + + applicationInputs.clear(); + applicationInputs = new ArrayList(); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("struct_with_pbc", "", + DataType.URI, null, false, "Structure with PBC File", null)); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("solvent_struct", "", + DataType.URI, null, false, "Solvent Structure File", null)); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("topology", "", + DataType.URI, null, false, "Topology File", null)); + + applicationOutputs.clear(); + applicationOutputs = new ArrayList(); + applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("struct_with_water", + "", DataType.URI)); + applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("topology_with_water", + "", DataType.URI)); + + + echoInterfaceId = airavataClient.registerApplicationInterface( + RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("genbox", "genbox", + appModules, applicationInputs, applicationOutputs)); + + applicationInputs.clear(); + applicationInputs = new ArrayList(); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("struct_with_water", "", + DataType.URI, null, false, "Structure with water File", null)); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("topology_with_water", "", + DataType.URI, null, false, "Topology including water File", null)); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("control_param_emv", "", + DataType.URI, null, false, "Controlled parameters array of EM Vacuum", null)); + + applicationOutputs.clear(); + applicationOutputs = new ArrayList(); + applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("struct_topoogy", + "", DataType.URI)); + + + echoInterfaceId = airavataClient.registerApplicationInterface( + RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("grompp", "grompp", + appModules, applicationInputs, applicationOutputs)); + + applicationInputs.clear(); + applicationInputs = new ArrayList(); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("struct_topoogy", "", + DataType.URI, null, false, "Structure and Topology File", null)); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("topology_with_water", "", + DataType.URI, null, false, "Topology including water File", null)); + + applicationOutputs.clear(); + applicationOutputs = new ArrayList(); + applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("sys_topoogy", + "", DataType.URI)); + + applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("sys_config", + "", DataType.URI)); + + echoInterfaceId = airavataClient.registerApplicationInterface( + RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("genion", "grompp", + appModules, applicationInputs, applicationOutputs)); + + applicationInputs.clear(); + applicationInputs = new ArrayList(); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("sys_topoogy", "", + DataType.URI, null, false, "Structure and Topology File", null)); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("sys_config", "", + DataType.URI, null, false, "Topology including water File", null)); + applicationInputs.add(RegisterSampleApplicationsUtils.createAppInput("control_param_ems", "", + DataType.URI, null, false, "Controlled parameters array of EM Solvent", null)); + + applicationOutputs.clear(); + applicationOutputs = new ArrayList(); + applicationOutputs.add(RegisterSampleApplicationsUtils.createAppOutput("energymin_sys", + "", DataType.URI)); + + echoInterfaceId = airavataClient.registerApplicationInterface( + RegisterSampleApplicationsUtils.createApplicationInterfaceDescription("simulation2", "simulation2", + appModules, applicationInputs, applicationOutputs)); + + System.out.println("Echo Application Interface Id " + echoInterfaceId); + + } catch (TException e) { + e.printStackTrace(); + } } + public static void registerEchoInterface() { try { System.out.println("#### Registering Echo Interface #### \n"); @@ -787,26 +930,26 @@ public class RegisterSampleApplications { } public static void writeIdPropertyFile() { - - try { - Properties properties = new Properties(); - properties.setProperty("stampedeResourceId", stampedeResourceId); - properties.setProperty("trestlesResourceId", trestlesResourceId); - properties.setProperty("bigredResourceId", bigredResourceId); - - properties.setProperty("echoInterfaceId", echoInterfaceId); - properties.setProperty("amberInterfaceId", amberInterfaceId); - properties.setProperty("wrfInterfaceId", wrfInterfaceId); - - File file = new File("airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/conf/app-catalog-identifiers.ini"); - FileOutputStream fileOut = new FileOutputStream(file); - properties.store(fileOut, "Apache Airavata Gateway to Airavata Deployment Identifiers"); - fileOut.close(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } +// +// try { +// Properties properties = new Properties(); +// properties.setProperty("stampedeResourceId", stampedeResourceId); +// properties.setProperty("trestlesResourceId", trestlesResourceId); +// properties.setProperty("bigredResourceId", bigredResourceId); +// +// properties.setProperty("echoInterfaceId", echoInterfaceId); +// properties.setProperty("amberInterfaceId", amberInterfaceId); +// properties.setProperty("wrfInterfaceId", wrfInterfaceId); +// +// File file = new File("airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/conf/app-catalog-identifiers.ini"); +// FileOutputStream fileOut = new FileOutputStream(file); +// properties.store(fileOut, "Apache Airavata Gateway to Airavata Deployment Identifiers"); +// fileOut.close(); +// } catch (FileNotFoundException e) { +// e.printStackTrace(); +// } catch (IOException e) { +// e.printStackTrace(); +// } } } http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExecutionType.java ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExecutionType.java b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExecutionType.java new file mode 100644 index 0000000..87fcec4 --- /dev/null +++ b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExecutionType.java @@ -0,0 +1,28 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ + +package org.apache.airavata.model.util; + +public enum ExecutionType { + UNKNOWN, + SINGLE_APP, + WORKFLOW +} http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java index 1b53d38..7b08bcd 100644 --- a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java +++ b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java @@ -22,14 +22,24 @@ package org.apache.airavata.model.util; -import org.apache.airavata.model.workspace.experiment.*; - import java.util.Calendar; import java.util.List; +import org.apache.airavata.model.workspace.experiment.AdvancedInputDataHandling; +import org.apache.airavata.model.workspace.experiment.AdvancedOutputDataHandling; +import org.apache.airavata.model.workspace.experiment.ComputationalResourceScheduling; +import org.apache.airavata.model.workspace.experiment.DataObjectType; +import org.apache.airavata.model.workspace.experiment.Experiment; +import org.apache.airavata.model.workspace.experiment.QualityOfServiceParams; +import org.apache.airavata.model.workspace.experiment.TaskDetails; +import org.apache.airavata.model.workspace.experiment.UserConfigurationData; +import org.apache.airavata.model.workspace.experiment.WorkflowNodeDetails; +import org.apache.airavata.model.workspace.experiment.WorkflowNodeState; +import org.apache.airavata.model.workspace.experiment.WorkflowNodeStatus; -public class ExperimentModelUtil { +public class ExperimentModelUtil { + public static WorkflowNodeStatus createWorkflowNodeStatus(WorkflowNodeState state){ WorkflowNodeStatus status = new WorkflowNodeStatus(); status.setWorkflowNodeState(state); http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/airavata-api/thrift-interface-descriptions/experimentModel.thrift ---------------------------------------------------------------------- diff --git a/airavata-api/thrift-interface-descriptions/experimentModel.thrift b/airavata-api/thrift-interface-descriptions/experimentModel.thrift index 5338d2b..7943ecd 100644 --- a/airavata-api/thrift-interface-descriptions/experimentModel.thrift +++ b/airavata-api/thrift-interface-descriptions/experimentModel.thrift @@ -319,7 +319,8 @@ struct TaskDetails { enum ExecutionUnit { INPUT, APPLICATION, - OUTPUT + OUTPUT, + OTHER } http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/commons/utils/pom.xml ---------------------------------------------------------------------- diff --git a/modules/commons/utils/pom.xml b/modules/commons/utils/pom.xml index aca8fea..5d92f1a 100644 --- a/modules/commons/utils/pom.xml +++ b/modules/commons/utils/pom.xml @@ -65,7 +65,12 @@ commons-dbcp 1.4 - + + com.google.guava + guava + 12.0 + + org.slf4j http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/AbstractActivityListener.java ---------------------------------------------------------------------- diff --git a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/AbstractActivityListener.java b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/AbstractActivityListener.java new file mode 100644 index 0000000..51922a0 --- /dev/null +++ b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/AbstractActivityListener.java @@ -0,0 +1,27 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ + +package org.apache.airavata.common.utils; + + +public interface AbstractActivityListener { + public void setup(Object... configurations); +} http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/MonitorPublisher.java ---------------------------------------------------------------------- diff --git a/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/MonitorPublisher.java b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/MonitorPublisher.java new file mode 100644 index 0000000..7f64e86 --- /dev/null +++ b/modules/commons/utils/src/main/java/org/apache/airavata/common/utils/MonitorPublisher.java @@ -0,0 +1,47 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * +*/ +package org.apache.airavata.common.utils; + +import com.google.common.eventbus.EventBus; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class MonitorPublisher{ + private final static Logger logger = LoggerFactory.getLogger(MonitorPublisher.class); + private EventBus eventBus; + + public MonitorPublisher(EventBus eventBus) { + this.eventBus = eventBus; + } + + public void registerListener(Object listener) { + eventBus.register(listener); + } + + public void unregisterListener(Object listener) { + eventBus.unregister(listener); + } + + public void publish(Object o) { + eventBus.post(o); + } + +} http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/configuration/server/src/main/resources/airavata-server.properties ---------------------------------------------------------------------- diff --git a/modules/configuration/server/src/main/resources/airavata-server.properties b/modules/configuration/server/src/main/resources/airavata-server.properties index 6a8367d..166741f 100644 --- a/modules/configuration/server/src/main/resources/airavata-server.properties +++ b/modules/configuration/server/src/main/resources/airavata-server.properties @@ -276,7 +276,7 @@ monitors=org.apache.airavata.gfac.monitor.impl.pull.qstat.QstatMonitor,org.apach amqp.hosts=info1.dyn.teragrid.org,info2.dyn.teragrid.org proxy.file.path=/Users/lahirugunathilake/Downloads/x509up_u503876 connection.name=xsede -activity.listeners=org.apache.airavata.gfac.core.monitor.AiravataJobStatusUpdator,org.apache.airavata.gfac.core.monitor.AiravataTaskStatusUpdator,org.apache.airavata.gfac.core.monitor.AiravataWorkflowNodeStatusUpdator,org.apache.airavata.gfac.core.monitor.AiravataExperimentStatusUpdator,org.apache.airavata.gfac.core.monitor.GfacInternalStatusUpdator +activity.listeners=org.apache.airavata.gfac.core.monitor.AiravataJobStatusUpdator,org.apache.airavata.gfac.core.monitor.AiravataTaskStatusUpdator,org.apache.airavata.gfac.core.monitor.AiravataWorkflowNodeStatusUpdator,org.apache.airavata.api.server.util.AiravataExperimentStatusUpdator,org.apache.airavata.gfac.core.monitor.GfacInternalStatusUpdator,org.apache.airavata.workflow.engine.util.ProxyMonitorPublisher ###---------------------------Orchestrator module Configurations---------------------------### #job.submitter=org.apache.airavata.orchestrator.core.impl.GFACEmbeddedJobSubmitter http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/distribution/server/pom.xml ---------------------------------------------------------------------- diff --git a/modules/distribution/server/pom.xml b/modules/distribution/server/pom.xml index e7ccde2..5328ef9 100644 --- a/modules/distribution/server/pom.xml +++ b/modules/distribution/server/pom.xml @@ -238,6 +238,11 @@ 2.4 + commons-codec + commons-codec + 1.6 + + org.apache.airavata airavata-standalone-server ${project.version} http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/distribution/server/src/main/assembly/bin-assembly.xml ---------------------------------------------------------------------- diff --git a/modules/distribution/server/src/main/assembly/bin-assembly.xml b/modules/distribution/server/src/main/assembly/bin-assembly.xml index 39ebbbb..75f941d 100644 --- a/modules/distribution/server/src/main/assembly/bin-assembly.xml +++ b/modules/distribution/server/src/main/assembly/bin-assembly.xml @@ -251,6 +251,7 @@ org.apache.xmlbeans:xmlbeans org.apache.thrift:libthrift:jar:0.9.1 commons-cli:commons-cli + commons-codec:commons-codec com.rabbitmq:amqp-client com.fasterxml.jackson.core:jackson-databind com.fasterxml.jackson.core:jackson-core http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/gfac/airavata-gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java ---------------------------------------------------------------------- diff --git a/modules/gfac/airavata-gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java b/modules/gfac/airavata-gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java index ea6fd0e..6f3247c 100644 --- a/modules/gfac/airavata-gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java +++ b/modules/gfac/airavata-gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java @@ -20,17 +20,18 @@ */ package org.apache.airavata.gfac.server; -import com.google.common.eventbus.EventBus; +import java.io.File; +import java.io.IOException; + import org.apache.airavata.common.exception.AiravataConfigurationException; import org.apache.airavata.common.exception.ApplicationSettingsException; import org.apache.airavata.common.utils.AiravataZKUtils; import org.apache.airavata.common.utils.Constants; +import org.apache.airavata.common.utils.MonitorPublisher; import org.apache.airavata.common.utils.ServerSettings; import org.apache.airavata.gfac.GFacException; import org.apache.airavata.gfac.core.cpi.BetterGfacImpl; import org.apache.airavata.gfac.core.cpi.GFac; -import org.apache.airavata.gfac.core.cpi.GFacImpl; -import org.apache.airavata.gfac.core.notification.MonitorPublisher; import org.apache.airavata.gfac.cpi.GfacService; import org.apache.airavata.gfac.cpi.gfac_cpi_serviceConstants; import org.apache.airavata.persistance.registry.jpa.impl.RegistryFactory; @@ -40,16 +41,17 @@ import org.apache.airavata.registry.api.Gateway; import org.apache.airavata.registry.api.exception.RegException; import org.apache.airavata.registry.cpi.Registry; import org.apache.thrift.TException; -import org.apache.thrift.transport.TTransport; -import org.apache.thrift.transport.TTransportException; -import org.apache.zookeeper.*; +import org.apache.zookeeper.CreateMode; +import org.apache.zookeeper.KeeperException; +import org.apache.zookeeper.WatchedEvent; +import org.apache.zookeeper.Watcher; +import org.apache.zookeeper.ZooDefs; +import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.Stat; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.File; -import java.io.IOException; -import java.util.Random; +import com.google.common.eventbus.EventBus; public class GfacServerHandler implements GfacService.Iface, Watcher{ http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java index 62c44ab..30e5c0a 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/BetterGfacImpl.java @@ -34,7 +34,9 @@ import org.airavata.appcatalog.cpi.AppCatalog; import org.apache.aiaravata.application.catalog.data.impl.AppCatalogFactory; import org.apache.airavata.client.api.AiravataAPI; import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.common.utils.AbstractActivityListener; import org.apache.airavata.common.utils.AiravataZKUtils; +import org.apache.airavata.common.utils.MonitorPublisher; import org.apache.airavata.common.utils.ServerSettings; import org.apache.airavata.commons.gfac.type.ApplicationDescription; import org.apache.airavata.commons.gfac.type.HostDescription; @@ -51,17 +53,13 @@ import org.apache.airavata.gfac.core.handler.GFacHandlerConfig; import org.apache.airavata.gfac.core.handler.GFacHandlerException; import org.apache.airavata.gfac.core.handler.GFacRecoverableHandler; import org.apache.airavata.gfac.core.handler.ThreadedHandler; -import org.apache.airavata.gfac.core.monitor.AbstractActivityListener; -import org.apache.airavata.gfac.core.monitor.ExperimentIdentity; import org.apache.airavata.gfac.core.monitor.JobIdentity; import org.apache.airavata.gfac.core.monitor.MonitorID; import org.apache.airavata.gfac.core.monitor.TaskIdentity; -import org.apache.airavata.gfac.core.monitor.state.ExperimentStatusChangedEvent; import org.apache.airavata.gfac.core.monitor.state.GfacExperimentStateChangeRequest; import org.apache.airavata.gfac.core.monitor.state.JobStatusChangeRequest; import org.apache.airavata.gfac.core.monitor.state.TaskStatusChangeRequest; import org.apache.airavata.gfac.core.monitor.state.TaskStatusChangedEvent; -import org.apache.airavata.gfac.core.notification.MonitorPublisher; import org.apache.airavata.gfac.core.notification.events.ExecutionFailEvent; import org.apache.airavata.gfac.core.notification.listeners.LoggingListener; import org.apache.airavata.gfac.core.notification.listeners.WorkflowTrackingListener; @@ -75,18 +73,38 @@ import org.apache.airavata.model.appcatalog.appdeployment.ApplicationDeploymentD import org.apache.airavata.model.appcatalog.appinterface.ApplicationInterfaceDescription; import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType; import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType; -import org.apache.airavata.model.appcatalog.computeresource.*; +import org.apache.airavata.model.appcatalog.computeresource.ComputeResourceDescription; +import org.apache.airavata.model.appcatalog.computeresource.JobManagerCommand; +import org.apache.airavata.model.appcatalog.computeresource.JobSubmissionInterface; +import org.apache.airavata.model.appcatalog.computeresource.LOCALSubmission; +import org.apache.airavata.model.appcatalog.computeresource.ResourceJobManager; +import org.apache.airavata.model.appcatalog.computeresource.SSHJobSubmission; import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePreference; -import org.apache.airavata.model.workspace.experiment.*; +import org.apache.airavata.model.workspace.experiment.ComputationalResourceScheduling; +import org.apache.airavata.model.workspace.experiment.DataObjectType; +import org.apache.airavata.model.workspace.experiment.Experiment; +import org.apache.airavata.model.workspace.experiment.JobState; +import org.apache.airavata.model.workspace.experiment.TaskDetails; +import org.apache.airavata.model.workspace.experiment.TaskState; import org.apache.airavata.registry.api.AiravataRegistry2; import org.apache.airavata.registry.cpi.Registry; import org.apache.airavata.registry.cpi.RegistryModelType; -import org.apache.airavata.schemas.gfac.*; +import org.apache.airavata.schemas.gfac.ApplicationDeploymentDescriptionType; import org.apache.airavata.schemas.gfac.DataType; +import org.apache.airavata.schemas.gfac.GsisshHostType; +import org.apache.airavata.schemas.gfac.HostDescriptionType; +import org.apache.airavata.schemas.gfac.HpcApplicationDeploymentType; +import org.apache.airavata.schemas.gfac.InputParameterType; +import org.apache.airavata.schemas.gfac.JobTypeType; +import org.apache.airavata.schemas.gfac.OutputParameterType; +import org.apache.airavata.schemas.gfac.ParameterType; +import org.apache.airavata.schemas.gfac.ProjectAccountType; +import org.apache.airavata.schemas.gfac.QueueType; +import org.apache.airavata.schemas.gfac.SSHHostType; +import org.apache.airavata.schemas.gfac.ServiceDescriptionType; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.ZKUtil; import org.apache.zookeeper.ZooKeeper; -import org.ogf.schemas.jsdl.hpcpa.HPCProfileApplicationDocument; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xml.sax.SAXException; http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/GFacImpl.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/GFacImpl.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/GFacImpl.java index 2065cee..83fb43a 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/GFacImpl.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/cpi/GFacImpl.java @@ -28,10 +28,13 @@ import java.util.List; import java.util.Map; import java.util.Properties; -import com.google.common.eventbus.EventBus; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.xpath.XPathExpressionException; import org.apache.airavata.client.api.AiravataAPI; import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.common.utils.AbstractActivityListener; +import org.apache.airavata.common.utils.MonitorPublisher; import org.apache.airavata.common.utils.ServerSettings; import org.apache.airavata.commons.gfac.type.ApplicationDescription; import org.apache.airavata.commons.gfac.type.HostDescription; @@ -43,34 +46,36 @@ import org.apache.airavata.gfac.Scheduler; import org.apache.airavata.gfac.core.context.ApplicationContext; import org.apache.airavata.gfac.core.context.JobExecutionContext; import org.apache.airavata.gfac.core.context.MessageContext; -import org.apache.airavata.gfac.core.monitor.*; -import org.apache.airavata.gfac.core.monitor.state.ExperimentStatusChangedEvent; +import org.apache.airavata.gfac.core.handler.GFacHandler; +import org.apache.airavata.gfac.core.handler.GFacHandlerConfig; +import org.apache.airavata.gfac.core.handler.GFacHandlerException; +import org.apache.airavata.gfac.core.handler.ThreadedHandler; +import org.apache.airavata.gfac.core.monitor.JobIdentity; +import org.apache.airavata.gfac.core.monitor.MonitorID; +import org.apache.airavata.gfac.core.monitor.TaskIdentity; import org.apache.airavata.gfac.core.monitor.state.JobStatusChangeRequest; import org.apache.airavata.gfac.core.monitor.state.TaskStatusChangeRequest; -import org.apache.airavata.gfac.core.monitor.state.TaskStatusChangedEvent; -import org.apache.airavata.gfac.core.notification.MonitorPublisher; import org.apache.airavata.gfac.core.notification.events.ExecutionFailEvent; import org.apache.airavata.gfac.core.notification.listeners.LoggingListener; import org.apache.airavata.gfac.core.notification.listeners.WorkflowTrackingListener; -import org.apache.airavata.gfac.core.handler.GFacHandler; import org.apache.airavata.gfac.core.provider.GFacProvider; import org.apache.airavata.gfac.core.scheduler.HostScheduler; -import org.apache.airavata.gfac.core.handler.GFacHandlerConfig; -import org.apache.airavata.gfac.core.handler.GFacHandlerException; -import org.apache.airavata.gfac.core.handler.ThreadedHandler; -import org.apache.airavata.gfac.core.utils.GFacUtils; import org.apache.airavata.gfac.core.states.GfacExperimentState; -import org.apache.airavata.model.workspace.experiment.*; +import org.apache.airavata.gfac.core.utils.GFacUtils; +import org.apache.airavata.model.workspace.experiment.DataObjectType; +import org.apache.airavata.model.workspace.experiment.Experiment; +import org.apache.airavata.model.workspace.experiment.JobState; +import org.apache.airavata.model.workspace.experiment.TaskDetails; +import org.apache.airavata.model.workspace.experiment.TaskState; import org.apache.airavata.registry.api.AiravataRegistry2; -import org.apache.airavata.registry.cpi.RegistryModelType; import org.apache.airavata.registry.cpi.Registry; +import org.apache.airavata.registry.cpi.RegistryModelType; import org.apache.zookeeper.ZooKeeper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xml.sax.SAXException; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.xpath.XPathExpressionException; +import com.google.common.eventbus.EventBus; /** * This is the GFac CPI class for external usage, this simply have a single method to submit a job to http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java index 81d2072..b0383c0 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractHandler.java @@ -20,9 +20,9 @@ */ package org.apache.airavata.gfac.core.handler; +import org.apache.airavata.common.utils.MonitorPublisher; import org.apache.airavata.gfac.core.context.JobExecutionContext; import org.apache.airavata.gfac.core.cpi.GFacImpl; -import org.apache.airavata.gfac.core.notification.MonitorPublisher; import org.apache.airavata.persistance.registry.jpa.impl.RegistryFactory; import org.apache.airavata.registry.cpi.Registry; import org.apache.airavata.registry.cpi.RegistryException; http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractRecoverableHandler.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractRecoverableHandler.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractRecoverableHandler.java index 431c202..423b5d9 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractRecoverableHandler.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/handler/AbstractRecoverableHandler.java @@ -20,9 +20,9 @@ */ package org.apache.airavata.gfac.core.handler; +import org.apache.airavata.common.utils.MonitorPublisher; import org.apache.airavata.gfac.core.context.JobExecutionContext; import org.apache.airavata.gfac.core.cpi.GFacImpl; -import org.apache.airavata.gfac.core.notification.MonitorPublisher; import org.apache.airavata.gfac.core.states.GfacPluginState; import org.apache.airavata.gfac.core.utils.GFacUtils; import org.apache.airavata.persistance.registry.jpa.impl.RegistryFactory; http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AbstractActivityListener.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AbstractActivityListener.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AbstractActivityListener.java index d642154..6eb1067 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AbstractActivityListener.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AbstractActivityListener.java @@ -1,27 +1,27 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ - -package org.apache.airavata.gfac.core.monitor; - - -public interface AbstractActivityListener { - public void setup(Object... configurations); -} +///* +// * +// * Licensed to the Apache Software Foundation (ASF) under one +// * or more contributor license agreements. See the NOTICE file +// * distributed with this work for additional information +// * regarding copyright ownership. The ASF licenses this file +// * to you under the Apache License, Version 2.0 (the +// * "License"); you may not use this file except in compliance +// * with the License. You may obtain a copy of the License at +// * +// * http://www.apache.org/licenses/LICENSE-2.0 +// * +// * Unless required by applicable law or agreed to in writing, +// * software distributed under the License is distributed on an +// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// * KIND, either express or implied. See the License for the +// * specific language governing permissions and limitations +// * under the License. +// * +// */ +// +//package org.apache.airavata.gfac.core.monitor; +// +// +//public interface AbstractActivityListener { +// public void setup(Object... configurations); +//} http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataExperimentStatusUpdator.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataExperimentStatusUpdator.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataExperimentStatusUpdator.java index 664f237..7feac06 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataExperimentStatusUpdator.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataExperimentStatusUpdator.java @@ -1,123 +1,109 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ -package org.apache.airavata.gfac.core.monitor; - -import com.google.common.eventbus.Subscribe; - -import org.apache.airavata.gfac.core.monitor.state.ExperimentStatusChangedEvent; -import org.apache.airavata.gfac.core.monitor.state.WorkflowNodeStatusChangedEvent; -import org.apache.airavata.gfac.core.notification.MonitorPublisher; -import org.apache.airavata.model.workspace.experiment.Experiment; -import org.apache.airavata.model.workspace.experiment.ExperimentState; -import org.apache.airavata.registry.cpi.RegistryModelType; -import org.apache.airavata.registry.cpi.Registry; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Calendar; - -public class AiravataExperimentStatusUpdator implements AbstractActivityListener { - private final static Logger logger = LoggerFactory.getLogger(AiravataExperimentStatusUpdator.class); - - private Registry airavataRegistry; - private MonitorPublisher monitorPublisher; - - public Registry getAiravataRegistry() { - return airavataRegistry; - } - - public void setAiravataRegistry(Registry airavataRegistry) { - this.airavataRegistry = airavataRegistry; - } - - @Subscribe - public void updateRegistry(ExperimentStatusChangedEvent experimentStatus) { - ExperimentState state = experimentStatus.getState(); - if (state != null) { - try { - String experimentID = experimentStatus.getIdentity().getExperimentID(); - updateExperimentStatus(experimentID, state); - } catch (Exception e) { - logger.error("Error persisting data" + e.getLocalizedMessage(), e); - } - } - } - - - @Subscribe - public void setupExperimentStatus(WorkflowNodeStatusChangedEvent nodeStatus) { - ExperimentState state = ExperimentState.UNKNOWN; - switch (nodeStatus.getState()) { - case CANCELED: - state = ExperimentState.CANCELED; - break; - case COMPLETED: - state = ExperimentState.COMPLETED; - break; - case INVOKED: - state = ExperimentState.LAUNCHED; - break; - case FAILED: - state = ExperimentState.FAILED; - break; - case EXECUTING: - state = ExperimentState.EXECUTING; - break; - case CANCELING: - state = ExperimentState.CANCELING; - break; - default: - break; - } - try { - updateExperimentStatus(nodeStatus.getIdentity().getExperimentID(), state); - logger.debug("Publishing experiment status for "+nodeStatus.getIdentity().getExperimentID()+":"+state.toString()); - monitorPublisher.publish(new ExperimentStatusChangedEvent(nodeStatus.getIdentity(), state)); - } catch (Exception e) { - logger.error("Error persisting data" + e.getLocalizedMessage(), e); - } - } - - public void updateExperimentStatus(String experimentId, ExperimentState state) throws Exception { - logger.info("Updating the experiment status of experiment: " + experimentId + " to " + state.toString()); - Experiment details = (Experiment)airavataRegistry.get(RegistryModelType.EXPERIMENT, experimentId); - if(details == null) { - details = new Experiment(); - details.setExperimentID(experimentId); - } - org.apache.airavata.model.workspace.experiment.ExperimentStatus status = new org.apache.airavata.model.workspace.experiment.ExperimentStatus(); - status.setExperimentState(state); - status.setTimeOfStateChange(Calendar.getInstance().getTimeInMillis()); - details.setExperimentStatus(status); - airavataRegistry.update(RegistryModelType.EXPERIMENT_STATUS, status, experimentId); - - } - - public void setup(Object... configurations) { - for (Object configuration : configurations) { - if (configuration instanceof Registry){ - this.airavataRegistry=(Registry)configuration; - } else if (configuration instanceof MonitorPublisher){ - this.monitorPublisher=(MonitorPublisher) configuration; - } - } - } -} +///* +// * +// * Licensed to the Apache Software Foundation (ASF) under one +// * or more contributor license agreements. See the NOTICE file +// * distributed with this work for additional information +// * regarding copyright ownership. The ASF licenses this file +// * to you under the Apache License, Version 2.0 (the +// * "License"); you may not use this file except in compliance +// * with the License. You may obtain a copy of the License at +// * +// * http://www.apache.org/licenses/LICENSE-2.0 +// * +// * Unless required by applicable law or agreed to in writing, +// * software distributed under the License is distributed on an +// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// * KIND, either express or implied. See the License for the +// * specific language governing permissions and limitations +// * under the License. +// * +//*/ +//package org.apache.airavata.gfac.core.monitor; +// +//import com.google.common.eventbus.Subscribe; +// +//import org.apache.airavata.gfac.core.monitor.state.ExperimentStatusChangedEvent; +//import org.apache.airavata.gfac.core.monitor.state.WorkflowNodeStatusChangedEvent; +//import org.apache.airavata.gfac.core.notification.MonitorPublisher; +//import org.apache.airavata.model.workspace.experiment.Experiment; +//import org.apache.airavata.model.workspace.experiment.ExperimentState; +//import org.apache.airavata.registry.cpi.RegistryModelType; +//import org.apache.airavata.registry.cpi.Registry; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +// +//import java.util.Calendar; +// +//public class AiravataExperimentStatusUpdator implements AbstractActivityListener { +// private final static Logger logger = LoggerFactory.getLogger(AiravataExperimentStatusUpdator.class); +// +// private Registry airavataRegistry; +// private MonitorPublisher monitorPublisher; +// +// public Registry getAiravataRegistry() { +// return airavataRegistry; +// } +// +// public void setAiravataRegistry(Registry airavataRegistry) { +// this.airavataRegistry = airavataRegistry; +// } +// +// @Subscribe +// public void setupExperimentStatus(WorkflowNodeStatusChangedEvent nodeStatus) { +// ExperimentState state = ExperimentState.UNKNOWN; +// switch (nodeStatus.getState()) { +// case CANCELED: +// state = ExperimentState.CANCELED; +// break; +// case COMPLETED: +// state = ExperimentState.COMPLETED; +// break; +// case INVOKED: +// state = ExperimentState.LAUNCHED; +// break; +// case FAILED: +// state = ExperimentState.FAILED; +// break; +// case EXECUTING: +// state = ExperimentState.EXECUTING; +// break; +// case CANCELING: +// state = ExperimentState.CANCELING; +// break; +// default: +// break; +// } +// try { +// updateExperimentStatus(nodeStatus.getIdentity().getExperimentID(), state); +// logger.debug("Publishing experiment status for "+nodeStatus.getIdentity().getExperimentID()+":"+state.toString()); +// monitorPublisher.publish(new ExperimentStatusChangedEvent(nodeStatus.getIdentity(), state)); +// } catch (Exception e) { +// logger.error("Error persisting data" + e.getLocalizedMessage(), e); +// } +// } +// +// public void updateExperimentStatus(String experimentId, ExperimentState state) throws Exception { +// logger.info("Updating the experiment status of experiment: " + experimentId + " to " + state.toString()); +// Experiment details = (Experiment)airavataRegistry.get(RegistryModelType.EXPERIMENT, experimentId); +// if(details == null) { +// details = new Experiment(); +// details.setExperimentID(experimentId); +// } +// org.apache.airavata.model.workspace.experiment.ExperimentStatus status = new org.apache.airavata.model.workspace.experiment.ExperimentStatus(); +// status.setExperimentState(state); +// status.setTimeOfStateChange(Calendar.getInstance().getTimeInMillis()); +// details.setExperimentStatus(status); +// airavataRegistry.update(RegistryModelType.EXPERIMENT_STATUS, status, experimentId); +// +// } +// +// public void setup(Object... configurations) { +// for (Object configuration : configurations) { +// if (configuration instanceof Registry){ +// this.airavataRegistry=(Registry)configuration; +// } else if (configuration instanceof MonitorPublisher){ +// this.monitorPublisher=(MonitorPublisher) configuration; +// } +// } +// } +//} http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataJobStatusUpdator.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataJobStatusUpdator.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataJobStatusUpdator.java index 6ad55d2..84541fc 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataJobStatusUpdator.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataJobStatusUpdator.java @@ -22,9 +22,10 @@ package org.apache.airavata.gfac.core.monitor; import java.util.Calendar; +import org.apache.airavata.common.utils.AbstractActivityListener; +import org.apache.airavata.common.utils.MonitorPublisher; import org.apache.airavata.gfac.core.monitor.state.JobStatusChangeRequest; import org.apache.airavata.gfac.core.monitor.state.JobStatusChangedEvent; -import org.apache.airavata.gfac.core.notification.MonitorPublisher; import org.apache.airavata.model.workspace.experiment.JobDetails; import org.apache.airavata.model.workspace.experiment.JobState; import org.apache.airavata.registry.cpi.CompositeIdentifier; http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataTaskStatusUpdator.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataTaskStatusUpdator.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataTaskStatusUpdator.java index 26d49c0..5d8cc33 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataTaskStatusUpdator.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataTaskStatusUpdator.java @@ -22,10 +22,11 @@ package org.apache.airavata.gfac.core.monitor; import java.util.Calendar; +import org.apache.airavata.common.utils.AbstractActivityListener; +import org.apache.airavata.common.utils.MonitorPublisher; import org.apache.airavata.gfac.core.monitor.state.JobStatusChangedEvent; import org.apache.airavata.gfac.core.monitor.state.TaskStatusChangeRequest; import org.apache.airavata.gfac.core.monitor.state.TaskStatusChangedEvent; -import org.apache.airavata.gfac.core.notification.MonitorPublisher; import org.apache.airavata.model.workspace.experiment.TaskDetails; import org.apache.airavata.model.workspace.experiment.TaskState; import org.apache.airavata.registry.cpi.Registry; http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataWorkflowNodeStatusUpdator.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataWorkflowNodeStatusUpdator.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataWorkflowNodeStatusUpdator.java index 5f6629c..cf88793 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataWorkflowNodeStatusUpdator.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/AiravataWorkflowNodeStatusUpdator.java @@ -22,9 +22,10 @@ package org.apache.airavata.gfac.core.monitor; import java.util.Calendar; +import org.apache.airavata.common.utils.AbstractActivityListener; +import org.apache.airavata.common.utils.MonitorPublisher; import org.apache.airavata.gfac.core.monitor.state.TaskStatusChangedEvent; import org.apache.airavata.gfac.core.monitor.state.WorkflowNodeStatusChangedEvent; -import org.apache.airavata.gfac.core.notification.MonitorPublisher; import org.apache.airavata.model.workspace.experiment.WorkflowNodeDetails; import org.apache.airavata.model.workspace.experiment.WorkflowNodeState; import org.apache.airavata.model.workspace.experiment.WorkflowNodeStatus; http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/GfacInternalStatusUpdator.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/GfacInternalStatusUpdator.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/GfacInternalStatusUpdator.java index 97bb49d..870ba26 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/GfacInternalStatusUpdator.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/monitor/GfacInternalStatusUpdator.java @@ -20,22 +20,29 @@ */ package org.apache.airavata.gfac.core.monitor; -import com.google.common.eventbus.Subscribe; +import java.io.File; +import java.io.IOException; + import org.apache.airavata.common.exception.ApplicationSettingsException; +import org.apache.airavata.common.utils.AbstractActivityListener; import org.apache.airavata.common.utils.AiravataZKUtils; import org.apache.airavata.common.utils.Constants; import org.apache.airavata.common.utils.ServerSettings; import org.apache.airavata.gfac.core.monitor.state.GfacExperimentStateChangeRequest; -import org.apache.zookeeper.*; +import org.apache.zookeeper.CreateMode; +import org.apache.zookeeper.KeeperException; +import org.apache.zookeeper.WatchedEvent; +import org.apache.zookeeper.Watcher; +import org.apache.zookeeper.ZooDefs; +import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.Stat; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.File; -import java.io.IOException; +import com.google.common.eventbus.Subscribe; public class GfacInternalStatusUpdator implements AbstractActivityListener, Watcher { - private final static Logger logger = LoggerFactory.getLogger(AiravataWorkflowNodeStatusUpdator.class); + private final static Logger logger = LoggerFactory.getLogger(GfacInternalStatusUpdator.class); private ZooKeeper zk; http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/notification/MonitorPublisher.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/notification/MonitorPublisher.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/notification/MonitorPublisher.java index e44974b..98fdc19 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/notification/MonitorPublisher.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/notification/MonitorPublisher.java @@ -1,47 +1,47 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * -*/ -package org.apache.airavata.gfac.core.notification; - -import com.google.common.eventbus.EventBus; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class MonitorPublisher{ - private final static Logger logger = LoggerFactory.getLogger(MonitorPublisher.class); - private EventBus eventBus; - - public MonitorPublisher(EventBus eventBus) { - this.eventBus = eventBus; - } - - public void registerListener(Object listener) { - eventBus.register(listener); - } - - public void unregisterListener(Object listener) { - eventBus.unregister(listener); - } - - public void publish(Object o) { - eventBus.post(o); - } - -} +///* +// * +// * Licensed to the Apache Software Foundation (ASF) under one +// * or more contributor license agreements. See the NOTICE file +// * distributed with this work for additional information +// * regarding copyright ownership. The ASF licenses this file +// * to you under the Apache License, Version 2.0 (the +// * "License"); you may not use this file except in compliance +// * with the License. You may obtain a copy of the License at +// * +// * http://www.apache.org/licenses/LICENSE-2.0 +// * +// * Unless required by applicable law or agreed to in writing, +// * software distributed under the License is distributed on an +// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// * KIND, either express or implied. See the License for the +// * specific language governing permissions and limitations +// * under the License. +// * +//*/ +//package org.apache.airavata.gfac.core.notification; +// +//import com.google.common.eventbus.EventBus; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +// +//public class MonitorPublisher{ +// private final static Logger logger = LoggerFactory.getLogger(MonitorPublisher.class); +// private EventBus eventBus; +// +// public MonitorPublisher(EventBus eventBus) { +// this.eventBus = eventBus; +// } +// +// public void registerListener(Object listener) { +// eventBus.register(listener); +// } +// +// public void unregisterListener(Object listener) { +// eventBus.unregister(listener); +// } +// +// public void publish(Object o) { +// eventBus.post(o); +// } +// +//} http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/AbstractProvider.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/AbstractProvider.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/AbstractProvider.java index 6e3f59e..5dbb9d3 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/AbstractProvider.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/AbstractProvider.java @@ -21,12 +21,11 @@ package org.apache.airavata.gfac.core.provider; -import com.google.common.eventbus.EventBus; +import org.apache.airavata.common.utils.MonitorPublisher; import org.apache.airavata.gfac.GFacException; import org.apache.airavata.gfac.core.context.JobExecutionContext; import org.apache.airavata.gfac.core.cpi.BetterGfacImpl; import org.apache.airavata.gfac.core.cpi.GFacImpl; -import org.apache.airavata.gfac.core.notification.MonitorPublisher; import org.apache.airavata.model.workspace.experiment.JobDetails; import org.apache.airavata.model.workspace.experiment.JobStatus; import org.apache.airavata.persistance.registry.jpa.impl.RegistryFactory; http://git-wip-us.apache.org/repos/asf/airavata/blob/92838e4a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/AbstractRecoverableProvider.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/AbstractRecoverableProvider.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/AbstractRecoverableProvider.java index 4d4a58e..daed08e 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/AbstractRecoverableProvider.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/provider/AbstractRecoverableProvider.java @@ -20,11 +20,11 @@ */ package org.apache.airavata.gfac.core.provider; +import org.apache.airavata.common.utils.MonitorPublisher; import org.apache.airavata.gfac.GFacException; import org.apache.airavata.gfac.core.context.JobExecutionContext; import org.apache.airavata.gfac.core.cpi.BetterGfacImpl; import org.apache.airavata.gfac.core.cpi.GFacImpl; -import org.apache.airavata.gfac.core.notification.MonitorPublisher; import org.apache.airavata.model.workspace.experiment.JobDetails; import org.apache.airavata.model.workspace.experiment.JobStatus; import org.apache.airavata.persistance.registry.jpa.impl.RegistryFactory;