You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sa...@apache.org on 2013/06/12 19:10:03 UTC
svn commit: r1492288 - in /airavata/trunk/modules:
airavata-client/src/main/java/org/apache/airavata/client/api/
airavata-client/src/main/java/org/apache/airavata/client/impl/
distribution/airavata-server/src/main/resources/conf/
registry/airavata-jpa-...
Author: samindaw
Date: Wed Jun 12 17:10:02 2013
New Revision: 1492288
URL: http://svn.apache.org/r1492288
Log:
API updates to saving the status history
Added:
airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJobStatusData.java (with props)
Modified:
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ProvenanceManager.java
airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ProvenanceManagerImpl.java
airavata/trunk/modules/distribution/airavata-server/src/main/resources/conf/airavata-server.properties
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java
airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java
airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/ProvenanceRegistry.java
airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistrySettings.java
airavata/trunk/modules/rest/client/src/main/java/org/apache/airavata/rest/client/RegistryClient.java
Modified: airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ProvenanceManager.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ProvenanceManager.java?rev=1492288&r1=1492287&r2=1492288&view=diff
==============================================================================
--- airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ProvenanceManager.java (original)
+++ airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ProvenanceManager.java Wed Jun 12 17:10:02 2013
@@ -27,6 +27,7 @@ import java.util.Map;
import org.apache.airavata.client.api.exception.AiravataAPIInvocationException;
import org.apache.airavata.registry.api.exception.RegistryException;
+import org.apache.airavata.registry.api.workflow.ApplicationJobStatusData;
import org.apache.airavata.registry.api.workflow.ExperimentData;
import org.apache.airavata.registry.api.workflow.ExperimentMetadata;
import org.apache.airavata.registry.api.workflow.ExperimentName;
@@ -466,4 +467,12 @@ public interface ProvenanceManager {
* @throws AiravataAPIInvocationException
*/
public List<ApplicationJob> getApplicationJobs(String experimentId, String workflowExecutionId, String nodeId) throws AiravataAPIInvocationException;
+
+ /**
+ * Retrieve the list all the status updates for an application job.
+ * @param jobId - Application job id
+ * @return
+ * @throws AiravataAPIInvocationException
+ */
+ public List<ApplicationJobStatusData> getApplicationJobStatusHistory(String jobId) throws AiravataAPIInvocationException;
}
Modified: airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ProvenanceManagerImpl.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ProvenanceManagerImpl.java?rev=1492288&r1=1492287&r2=1492288&view=diff
==============================================================================
--- airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ProvenanceManagerImpl.java (original)
+++ airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ProvenanceManagerImpl.java Wed Jun 12 17:10:02 2013
@@ -33,9 +33,22 @@ import org.apache.airavata.client.api.ex
import org.apache.airavata.common.exception.AiravataConfigurationException;
import org.apache.airavata.registry.api.AiravataExperiment;
import org.apache.airavata.registry.api.exception.RegistryException;
-import org.apache.airavata.registry.api.workflow.*;
+import org.apache.airavata.registry.api.workflow.ApplicationJob;
import org.apache.airavata.registry.api.workflow.ApplicationJob.ApplicationJobStatus;
+import org.apache.airavata.registry.api.workflow.ApplicationJobStatusData;
+import org.apache.airavata.registry.api.workflow.ExperimentData;
+import org.apache.airavata.registry.api.workflow.ExperimentMetadata;
+import org.apache.airavata.registry.api.workflow.ExperimentName;
+import org.apache.airavata.registry.api.workflow.ExperimentUser;
+import org.apache.airavata.registry.api.workflow.NodeExecutionStatus;
+import org.apache.airavata.registry.api.workflow.WorkflowExecution;
+import org.apache.airavata.registry.api.workflow.WorkflowExecutionData;
+import org.apache.airavata.registry.api.workflow.WorkflowExecutionStatus;
import org.apache.airavata.registry.api.workflow.WorkflowExecutionStatus.State;
+import org.apache.airavata.registry.api.workflow.WorkflowInstanceNode;
+import org.apache.airavata.registry.api.workflow.WorkflowNodeGramData;
+import org.apache.airavata.registry.api.workflow.WorkflowNodeIOData;
+import org.apache.airavata.registry.api.workflow.WorkflowNodeType;
public class ProvenanceManagerImpl implements ProvenanceManager {
private AiravataClient client;
@@ -609,4 +622,14 @@ public class ProvenanceManagerImpl imple
updateApplicationJobStatus(jobId, status, Calendar.getInstance().getTime());
}
+ @Override
+ public List<ApplicationJobStatusData> getApplicationJobStatusHistory(
+ String jobId) throws AiravataAPIInvocationException {
+ try {
+ return client.getRegistryClient().getApplicationJobStatusHistory(jobId);
+ } catch (Exception e) {
+ throw new AiravataAPIInvocationException(e);
+ }
+ }
+
}
Modified: airavata/trunk/modules/distribution/airavata-server/src/main/resources/conf/airavata-server.properties
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/distribution/airavata-server/src/main/resources/conf/airavata-server.properties?rev=1492288&r1=1492287&r2=1492288&view=diff
==============================================================================
--- airavata/trunk/modules/distribution/airavata-server/src/main/resources/conf/airavata-server.properties (original)
+++ airavata/trunk/modules/distribution/airavata-server/src/main/resources/conf/airavata-server.properties Wed Jun 12 17:10:02 2013
@@ -216,5 +216,7 @@ messagePerservationIntervalMinutes=0
class.registry.accessor=org.apache.airavata.persistance.registry.jpa.impl.AiravataJPARegistry
#class.registry.accessor=org.apache.airavata.rest.client.RegistryClient
+###---------------------------Computational Middleware Configurations---------------------------###
+#enable.application.job.status.history=true
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java?rev=1492288&r1=1492287&r2=1492288&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/AiravataJPARegistry.java Wed Jun 12 17:10:02 2013
@@ -39,6 +39,7 @@ import org.apache.airavata.commons.gfac.
import org.apache.airavata.commons.gfac.type.ServiceDescription;
import org.apache.airavata.persistance.registry.jpa.JPAResourceAccessor;
import org.apache.airavata.persistance.registry.jpa.Resource;
+import org.apache.airavata.persistance.registry.jpa.ResourceType;
import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
import org.apache.airavata.persistance.registry.jpa.resources.ApplicationDescriptorResource;
import org.apache.airavata.persistance.registry.jpa.resources.ConfigurationResource;
@@ -48,6 +49,7 @@ import org.apache.airavata.persistance.r
import org.apache.airavata.persistance.registry.jpa.resources.ExperimentMetadataResource;
import org.apache.airavata.persistance.registry.jpa.resources.ExperimentResource;
import org.apache.airavata.persistance.registry.jpa.resources.GFacJobDataResource;
+import org.apache.airavata.persistance.registry.jpa.resources.GFacJobStatusResource;
import org.apache.airavata.persistance.registry.jpa.resources.GatewayResource;
import org.apache.airavata.persistance.registry.jpa.resources.HostDescriptorResource;
import org.apache.airavata.persistance.registry.jpa.resources.NodeDataResource;
@@ -101,6 +103,8 @@ import org.apache.airavata.registry.api.
import org.apache.airavata.registry.api.exception.worker.WorkspaceProjectDoesNotExistsException;
import org.apache.airavata.registry.api.impl.WorkflowExecutionDataImpl;
import org.apache.airavata.registry.api.util.RegistryConstants;
+import org.apache.airavata.registry.api.util.RegistrySettings;
+import org.apache.airavata.registry.api.workflow.ApplicationJobStatusData;
import org.apache.airavata.registry.api.workflow.ExecutionError;
import org.apache.airavata.registry.api.workflow.ExperimentData;
import org.apache.airavata.registry.api.workflow.ExperimentExecutionError;
@@ -2264,6 +2268,7 @@ public class AiravataJPARegistry extends
gfacJob.setNodeID(job.getNodeId());
setupValues(job, gfacJob);
gfacJob.save();
+ addApplicationJobStatusData(job.getJobId(), job.getStatus(), job.getStatusUpdateTime(),gfacJob);
}
private void setupValues(ApplicationJob job, GFacJobDataResource gfacJob) {
@@ -2304,6 +2309,7 @@ public class AiravataJPARegistry extends
gFacJob.setStatus(status.toString());
gFacJob.setStatusUpdateTime(new Timestamp(statusUpdateTime.getTime()));
gFacJob.save();
+ addApplicationJobStatusData(gfacJobId, status, statusUpdateTime, null);
}
@Override
@@ -2409,4 +2415,27 @@ public class AiravataJPARegistry extends
return jpa.getWorker().isGFacJobExists(gfacJobId);
}
+ @Override
+ public List<ApplicationJobStatusData> getApplicationJobStatusHistory(
+ String jobId) throws RegistryException {
+ List<ApplicationJobStatusData> statusData=new ArrayList<ApplicationJobStatusData>();
+ List<GFacJobStatusResource> statuses = jpa.getWorker().getGFacJobStatuses(jobId);
+ for (GFacJobStatusResource resource : statuses) {
+ statusData.add(new ApplicationJobStatusData(resource.getLocalJobID(),ApplicationJobStatus.valueOf(resource.getStatus()),resource.getStatusUpdateTime()));
+ }
+ return statusData;
+ }
+
+ private void addApplicationJobStatusData(String jobId, ApplicationJobStatus status, Date updatedTime, GFacJobDataResource dataResource) throws RegistryException {
+ if (RegistrySettings.isApplicationJobStatusHistoryEnabled()){
+ if (dataResource==null){
+ dataResource = jpa.getWorker().getGFacJob(jobId);
+ }
+ GFacJobStatusResource s = (GFacJobStatusResource)dataResource.create(ResourceType.GFAC_JOB_STATUS);
+ s.setStatus(status.toString());
+ s.setStatusUpdateTime(new Timestamp(updatedTime.getTime()));
+ s.save();
+ }
+ }
+
}
Modified: airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java?rev=1492288&r1=1492287&r2=1492288&view=diff
==============================================================================
--- airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java (original)
+++ airavata/trunk/modules/registry/airavata-jpa-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/resources/WorkerResource.java Wed Jun 12 17:10:02 2013
@@ -31,6 +31,7 @@ import org.apache.airavata.persistance.r
import org.apache.airavata.persistance.registry.jpa.ResourceType;
import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
import org.apache.airavata.persistance.registry.jpa.model.*;
+import org.apache.airavata.persistance.registry.jpa.resources.AbstractResource.GFacJobStatusConstants;
import org.apache.airavata.persistance.registry.jpa.resources.AbstractResource.WorkflowDataConstants;
import org.apache.airavata.persistance.registry.jpa.utils.QueryGenerator;
import org.slf4j.Logger;
@@ -218,6 +219,24 @@ public class WorkerResource extends Abst
em.close();
return result;
}
+
+ public List<GFacJobStatusResource> getGFacJobStatuses(String jobId){
+ List<GFacJobStatusResource> resourceList = new ArrayList<GFacJobStatusResource>();
+ EntityManager em = ResourceUtils.getEntityManager();
+ em.getTransaction().begin();
+ QueryGenerator generator;
+ Query q;
+ generator = new QueryGenerator(GFAC_JOB_STATUS);
+ generator.setParameter(GFacJobStatusConstants.LOCAL_JOB_ID, jobId);
+ q = generator.selectQuery(em);
+ for (Object result : q.getResultList()) {
+ GFac_Job_Status gFacJobStatus = (GFac_Job_Status) result;
+ GFacJobStatusResource gFacJobStatusResource =
+ (GFacJobStatusResource)Utils.getResource(ResourceType.GFAC_JOB_STATUS, gFacJobStatus);
+ resourceList.add(gFacJobStatusResource);
+ }
+ return resourceList;
+ }
/**
*
Modified: airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/ProvenanceRegistry.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/ProvenanceRegistry.java?rev=1492288&r1=1492287&r2=1492288&view=diff
==============================================================================
--- airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/ProvenanceRegistry.java (original)
+++ airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/ProvenanceRegistry.java Wed Jun 12 17:10:02 2013
@@ -514,4 +514,12 @@ public interface ProvenanceRegistry exte
* @throws RegistryException
*/
public List<ApplicationJob> getApplicationJobs(String experimentId, String workflowExecutionId, String nodeId) throws RegistryException;
+
+ /**
+ * Retrieve the list all the status updates for an application job.
+ * @param jobId - Application job id
+ * @return
+ * @throws RegistryException
+ */
+ public List<ApplicationJobStatusData> getApplicationJobStatusHistory(String jobId) throws RegistryException;
}
\ No newline at end of file
Modified: airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistrySettings.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistrySettings.java?rev=1492288&r1=1492287&r2=1492288&view=diff
==============================================================================
--- airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistrySettings.java (original)
+++ airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/util/RegistrySettings.java Wed Jun 12 17:10:02 2013
@@ -34,6 +34,7 @@ public class RegistrySettings {
private static Properties properties = new Properties();
private static Exception propertyLoadException;
private static final String REGISTRY_ACCESSOR_CLASS = "class.registry.accessor";
+ private static final String SAVE_APPLICATION_JOB_STATUS_HISTORY="enable.application.job.status.history";
static{
URL url = RegistrySettings.class.getClassLoader()
@@ -88,4 +89,8 @@ public class RegistrySettings {
public static String getRegistryAccessorClass() throws RegistrySettingsException{
return getSetting(REGISTRY_ACCESSOR_CLASS);
}
+
+ public static boolean isApplicationJobStatusHistoryEnabled(){
+ return "true".equalsIgnoreCase(getSetting(SAVE_APPLICATION_JOB_STATUS_HISTORY, "false"));
+ }
}
Added: airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJobStatusData.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJobStatusData.java?rev=1492288&view=auto
==============================================================================
--- airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJobStatusData.java (added)
+++ airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJobStatusData.java Wed Jun 12 17:10:02 2013
@@ -0,0 +1,57 @@
+/*
+ *
+ * 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.registry.api.workflow;
+
+import java.util.Date;
+
+import org.apache.airavata.registry.api.workflow.ApplicationJob.ApplicationJobStatus;
+
+public class ApplicationJobStatusData {
+ private String jobId;
+ private ApplicationJobStatus status;
+ private Date time;
+
+ public ApplicationJobStatusData(String jobId, ApplicationJobStatus status, Date time) {
+ setJobId(jobId);
+ setStatus(status);
+ setTime(time);
+ }
+
+ public String getJobId() {
+ return jobId;
+ }
+ private void setJobId(String jobId) {
+ this.jobId = jobId;
+ }
+ public ApplicationJobStatus getStatus() {
+ return status;
+ }
+ private void setStatus(ApplicationJobStatus status) {
+ this.status = status;
+ }
+ public Date getTime() {
+ return time;
+ }
+ private void setTime(Date time) {
+ this.time = time;
+ }
+}
Propchange: airavata/trunk/modules/registry/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/ApplicationJobStatusData.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: airavata/trunk/modules/rest/client/src/main/java/org/apache/airavata/rest/client/RegistryClient.java
URL: http://svn.apache.org/viewvc/airavata/trunk/modules/rest/client/src/main/java/org/apache/airavata/rest/client/RegistryClient.java?rev=1492288&r1=1492287&r2=1492288&view=diff
==============================================================================
--- airavata/trunk/modules/rest/client/src/main/java/org/apache/airavata/rest/client/RegistryClient.java (original)
+++ airavata/trunk/modules/rest/client/src/main/java/org/apache/airavata/rest/client/RegistryClient.java Wed Jun 12 17:10:02 2013
@@ -970,4 +970,11 @@ public class RegistryClient extends Aira
public boolean isApplicationJobExists(String gfacJobId) throws RegistryException {
return getProvenanceResourceClient().isApplicationJobExists(gfacJobId);
}
+
+ @Override
+ public List<ApplicationJobStatusData> getApplicationJobStatusHistory(
+ String jobId) throws RegistryException {
+ // TODO Auto-generated method stub
+ return null;
+ }
}