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 06EC718FEE for ; Fri, 30 Oct 2015 18:09:41 +0000 (UTC) Received: (qmail 54065 invoked by uid 500); 30 Oct 2015 18:09:40 -0000 Delivered-To: apmail-airavata-commits-archive@airavata.apache.org Received: (qmail 54020 invoked by uid 500); 30 Oct 2015 18:09:40 -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 54011 invoked by uid 99); 30 Oct 2015 18:09:40 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 30 Oct 2015 18:09:40 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id B3D81DFC3B; Fri, 30 Oct 2015 18:09:40 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: chathuri@apache.org To: commits@airavata.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: airavata git commit: changing primary key of job model and job status Date: Fri, 30 Oct 2015 18:09:40 +0000 (UTC) Repository: airavata Updated Branches: refs/heads/orchestratorTaskBreakdown b57a5015d -> b442e0c35 changing primary key of job model and job status Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/b442e0c3 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/b442e0c3 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/b442e0c3 Branch: refs/heads/orchestratorTaskBreakdown Commit: b442e0c351a4e48f9c7c2733f0a88947a24c6272 Parents: b57a501 Author: Chathuri Wimalasena Authored: Fri Oct 30 14:09:29 2015 -0400 Committer: Chathuri Wimalasena Committed: Fri Oct 30 14:09:29 2015 -0400 ---------------------------------------------------------------------- .../server/handler/AiravataServerHandler.java | 31 +++++++---- .../apache/airavata/gfac/core/GFacUtils.java | 2 +- .../catalog/impl/ExperimentRegistry.java | 49 ++++++++++++----- .../core/experiment/catalog/model/Job.java | 2 +- .../core/experiment/catalog/model/JobPK.java | 16 +++--- .../experiment/catalog/model/JobStatus.java | 12 ++++- .../experiment/catalog/model/JobStatusPK.java | 14 ++--- .../resources/AbstractExpCatResource.java | 1 + .../catalog/resources/JobResource.java | 2 +- .../catalog/resources/JobStatusResource.java | 12 ++++- .../catalog/resources/TaskResource.java | 55 +++++++++++++++++++- .../experiment/catalog/resources/Utils.java | 1 + .../src/main/resources/expcatalog-derby.sql | 9 ++-- .../src/main/resources/expcatalog-mysql.sql | 9 ++-- .../src/test/resources/expcatalog-derby.sql | 9 ++-- .../airavata/registry/cpi/utils/Constants.java | 1 + 16 files changed, 171 insertions(+), 54 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/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 15f930b..af0372e 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 @@ -56,6 +56,7 @@ import org.apache.airavata.model.security.AuthzToken; import org.apache.airavata.model.status.ExperimentState; import org.apache.airavata.model.status.ExperimentStatus; import org.apache.airavata.model.status.JobStatus; +import org.apache.airavata.model.task.TaskModel; import org.apache.airavata.model.workspace.Gateway; import org.apache.airavata.model.workspace.Project; import org.apache.airavata.orchestrator.client.OrchestratorClientFactory; @@ -1568,11 +1569,17 @@ public class AiravataServerHandler implements Airavata.Iface { Map jobStatus = new HashMap(); if (processModels != null && !processModels.isEmpty()){ for (Object process : processModels) { - String processId = ((ProcessModel)process).getProcessId(); - List jobs = experimentCatalog.get(ExperimentCatalogModelType.JOB, Constants.FieldConstants.JobConstants.PROCESS_ID, processId); - for (Object jobObject : jobs) { - String jobID = ((JobModel)jobObject).getJobId(); - jobStatus.put(jobID, ((JobModel)jobObject).getJobStatus()); + ProcessModel processModel = (ProcessModel) process; + List tasks = processModel.getTasks(); + if (tasks != null && !tasks.isEmpty()){ + for (TaskModel task : tasks){ + String taskId = task.getTaskId(); + List jobs = experimentCatalog.get(ExperimentCatalogModelType.JOB, Constants.FieldConstants.JobConstants.TASK_ID, taskId); + for (Object jobObject : jobs) { + String jobID = ((JobModel)jobObject).getJobId(); + jobStatus.put(jobID, ((JobModel)jobObject).getJobStatus()); + } + } } } } @@ -1600,10 +1607,16 @@ public class AiravataServerHandler implements Airavata.Iface { List jobList = new ArrayList<>(); if (processModels != null && !processModels.isEmpty()){ for (Object process : processModels) { - String processId = ((ProcessModel)process).getProcessId(); - List jobs = experimentCatalog.get(ExperimentCatalogModelType.JOB, Constants.FieldConstants.JobConstants.PROCESS_ID, processId); - for (Object jobObject : jobs) { - jobList.add ((JobModel)jobObject); + ProcessModel processModel = (ProcessModel) process; + List tasks = processModel.getTasks(); + if (tasks != null && !tasks.isEmpty()){ + for (TaskModel taskModel : tasks){ + String taskId = taskModel.getTaskId(); + List jobs = experimentCatalog.get(ExperimentCatalogModelType.JOB, Constants.FieldConstants.JobConstants.TASK_ID, taskId); + for (Object jobObject : jobs) { + jobList.add ((JobModel)jobObject); + } + } } } } http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java index 52f8e61..f40e8ae 100644 --- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java +++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java @@ -215,7 +215,7 @@ public class GFacUtils { }else { jobStatus.setTimeOfStateChange(jobStatus.getTimeOfStateChange()); } - CompositeIdentifier ids = new CompositeIdentifier(jobModel.getProcessId(), jobModel.getJobId()); + CompositeIdentifier ids = new CompositeIdentifier(jobModel.getTaskId(), jobModel.getJobId()); experimentCatalog.add(ExpCatChildDataType.JOB_STATUS, jobStatus, ids); JobIdentifier identifier = new JobIdentifier(jobModel.getJobId(), jobModel.getTaskId(), processContext.getProcessId(), processContext.getProcessModel().getExperimentId(), http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java index 077b8e1..3a36f61 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java @@ -535,7 +535,7 @@ public class ExperimentRegistry { } public String addJobStatus(JobStatus jobStatus, CompositeIdentifier cis) throws RegistryException { - String processId = (String)cis.getTopLevelIdentifier(); + String taskId = (String)cis.getTopLevelIdentifier(); String jobID = (String)cis.getSecondLevelIdentifier(); try { JobResource jobResource = new JobResource(); @@ -546,7 +546,7 @@ public class ExperimentRegistry { } status.setStatusId(getStatusID(jobID)); status.setJobId(jobID); - status.setProcessId(processId); + status.setTaskId(taskId); status.setTimeOfStateChange(AiravataUtils.getTime(jobStatus.getTimeOfStateChange())); status.setState(jobStatus.getJobState().toString()); status.setReason(jobStatus.getReason()); @@ -876,15 +876,15 @@ public class ExperimentRegistry { } public String updateJob(JobModel job, CompositeIdentifier cis) throws RegistryException { - String processId = (String) cis.getTopLevelIdentifier(); + String taskId = (String) cis.getTopLevelIdentifier(); String jobId = (String) cis.getSecondLevelIdentifier(); try { - ProcessResource processResource = new ProcessResource(); - processResource.setProcessId(processId); - JobResource jobResource = processResource.getJob(jobId); + TaskResource taskResource = new TaskResource(); + taskResource.setTaskId(taskId); + JobResource jobResource = taskResource.getJob(jobId); jobResource.setJobId(jobId); jobResource.setTaskId(job.getTaskId()); - jobResource.setProcessId(processId); + jobResource.setProcessId(job.getProcessId()); jobResource.setJobDescription(job.getJobDescription()); jobResource.setCreationTime(AiravataUtils.getTime(job.getCreationTime())); jobResource.setComputeResourceConsumed(job.getComputeResourceConsumed()); @@ -1104,12 +1104,12 @@ public class ExperimentRegistry { } public Object getJob(CompositeIdentifier cis, String fieldName) throws RegistryException { - String processId = (String) cis.getTopLevelIdentifier(); + String taskId = (String) cis.getTopLevelIdentifier(); String jobId = (String) cis.getSecondLevelIdentifier(); try { - ProcessResource processResource = new ProcessResource(); - processResource.setProcessId(processId); - JobResource resource = processResource.getJob(jobId); + TaskResource taskResource = new TaskResource(); + taskResource.setTaskId(taskId); + JobResource resource = taskResource.getJob(jobId); if (fieldName == null) { return ThriftDataModelConversion.getJobModel(resource); } else if (fieldName.equals(Constants.FieldConstants.JobConstants.JOB_STATUS)) { @@ -1238,7 +1238,32 @@ public class ExperimentRegistry { jobs.add(jobModel); } return jobs; - } else { + }else if (fieldName.equals(Constants.FieldConstants.JobConstants.TASK_ID)) { + TaskResource taskResource = new TaskResource(); + taskResource.setTaskId((String) value); + List resources = taskResource.getJobList(); + for (JobResource jobResource : resources) { + JobModel jobModel = ThriftDataModelConversion.getJobModel(jobResource); + List jobStatuses = jobResource.get(ResourceType.JOB_STATUS); + JobStatusResource latestSR = null; + for (ExperimentCatResource jobStatuse : jobStatuses) { + JobStatusResource jobSR = (JobStatusResource) jobStatuse; + if (latestSR == null) { + latestSR = jobSR; + } else { + latestSR = (jobSR.getTimeOfStateChange().after(latestSR.getTimeOfStateChange()) ? jobSR : + latestSR); + } + } + if (latestSR != null) { + JobStatus jobStatus = new JobStatus(JobState.valueOf(latestSR.getState())); + jobStatus.setReason(latestSR.getReason()); + jobModel.setJobStatus(jobStatus); + } + jobs.add(jobModel); + } + return jobs; + }else { logger.error("Unsupported field name to retrieve job list..."); } } catch (Exception e) { http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Job.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Job.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Job.java index 5827863..84f12d4 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Job.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/Job.java @@ -56,7 +56,6 @@ public class Job { this.jobId = jobId; } - @Id @Column(name = "PROCESS_ID") public String getProcessId() { return processId; @@ -66,6 +65,7 @@ public class Job { this.processId = processId; } + @Id @Column(name = "TASK_ID") public String getTaskId() { return taskId; http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobPK.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobPK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobPK.java index e1f8da2..eb704d5 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobPK.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobPK.java @@ -30,7 +30,7 @@ import java.io.Serializable; public class JobPK implements Serializable { private final static Logger logger = LoggerFactory.getLogger(JobPK.class); private String jobId; - private String processId; + private String taskId; @Id @Column(name = "JOB_ID") @@ -43,13 +43,13 @@ public class JobPK implements Serializable { } @Id - @Column(name = "PROCESS_ID") - public String getProcessId() { - return processId; + @Column(name = "TASK_ID") + public String getTaskId() { + return taskId; } - public void setProcessId(String processId) { - this.processId = processId; + public void setTaskId(String taskId) { + this.taskId = taskId; } @Override @@ -60,7 +60,7 @@ public class JobPK implements Serializable { JobPK that = (JobPK) o; if (getJobId() != null ? !getJobId().equals(that.getJobId()) : that.getJobId() != null) return false; - if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false; + if (getTaskId() != null ? !getTaskId().equals(that.getTaskId()) : that.getTaskId() != null) return false; return true; } @@ -68,7 +68,7 @@ public class JobPK implements Serializable { @Override public int hashCode() { int result = getJobId() != null ? getJobId().hashCode() : 0; - result = 31 * result + (getProcessId() != null ? getProcessId().hashCode() : 0); + result = 31 * result + (getTaskId() != null ? getTaskId().hashCode() : 0); return result; } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatus.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatus.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatus.java index 2dd6d35..0aafa35 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatus.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatus.java @@ -34,6 +34,7 @@ public class JobStatus { private String statusId; private String jobId; private String processId; + private String taskId; private String state; private Timestamp timeOfStateChange; private String reason; @@ -59,12 +60,17 @@ public class JobStatus { this.jobId = jobId; } - @Id @Column(name = "PROCESS_ID") public String getProcessId() { return processId; } + @Id + @Column(name = "TASK_ID") + public String getTaskId() { + return taskId; + } + public void setProcessId(String processId) { this.processId = processId; } @@ -93,6 +99,10 @@ public class JobStatus { return reason; } + public void setTaskId(String taskId) { + this.taskId = taskId; + } + public void setReason(String reason) { this.reason = reason; } http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatusPK.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatusPK.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatusPK.java index f63cbfa..7ca1636 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatusPK.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/model/JobStatusPK.java @@ -31,7 +31,7 @@ public class JobStatusPK implements Serializable { private final static Logger logger = LoggerFactory.getLogger(JobStatusPK.class); private String statusId; private String jobId; - private String processId; + private String taskId; @Id @Column(name = "STATUS_ID") @@ -55,12 +55,12 @@ public class JobStatusPK implements Serializable { @Id @Column(name = "PROCESS_ID") - public String getProcessId() { - return processId; + public String getTaskId() { + return taskId; } - public void setProcessId(String processId) { - this.processId = processId; + public void setTaskId(String taskId) { + this.taskId = taskId; } @Override @@ -72,7 +72,7 @@ public class JobStatusPK implements Serializable { if (getStatusId() != null ? !getStatusId().equals(that.getStatusId()) : that.getStatusId() != null) return false; if (getJobId() != null ? !getJobId().equals(that.getJobId()) : that.getJobId() != null) return false; - if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false; + if (getTaskId() != null ? !getTaskId().equals(that.getTaskId()) : that.getTaskId() != null) return false; return true; } @@ -81,7 +81,7 @@ public class JobStatusPK implements Serializable { public int hashCode() { int result = getStatusId() != null ? getStatusId().hashCode() : 0; result = 31 * result + (getJobId() != null ? getJobId().hashCode() : 0); - result = 31 * result + (getProcessId() != null ? getProcessId().hashCode() : 0); + result = 31 * result + (getTaskId() != null ? getTaskId().hashCode() : 0); return result; } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/AbstractExpCatResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/AbstractExpCatResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/AbstractExpCatResource.java index b9bdf4b..5135a9f 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/AbstractExpCatResource.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/AbstractExpCatResource.java @@ -221,6 +221,7 @@ public abstract class AbstractExpCatResource implements ExperimentCatResource { public final class JobConstants { public static final String JOB_ID = "jobId"; public static final String PROCESS_ID = "processId"; + public static final String TASK_ID = "taskId"; } // Job Status table http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java index 5c90455..8855370 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobResource.java @@ -296,7 +296,7 @@ public class JobResource extends AbstractExpCatResource { em = ExpCatResourceUtils.getEntityManager(); JobPK jobPK = new JobPK(); jobPK.setJobId(jobId); - jobPK.setProcessId(processId); + jobPK.setTaskId(taskId); Job existingJob = em.find(Job.class, jobPK); if (em.isOpen()) { if (em.getTransaction().isActive()){ http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobStatusResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobStatusResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobStatusResource.java index 97f2973..579219c 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobStatusResource.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/JobStatusResource.java @@ -39,6 +39,7 @@ public class JobStatusResource extends AbstractExpCatResource { private String statusId; private String jobId; private String processId; + private String taskId; private String state; private Timestamp timeOfStateChange; private String reason; @@ -91,6 +92,14 @@ public class JobStatusResource extends AbstractExpCatResource { this.reason = reason; } + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + public ExperimentCatResource create(ResourceType type) throws RegistryException { logger.error("Unsupported resource type for task status data resource.", new UnsupportedOperationException()); throw new UnsupportedOperationException(); @@ -126,7 +135,7 @@ public class JobStatusResource extends AbstractExpCatResource { JobStatusPK jobStatusPK = new JobStatusPK(); jobStatusPK.setJobId(jobId); jobStatusPK.setStatusId(statusId); - jobStatusPK.setProcessId(processId); + jobStatusPK.setTaskId(taskId); JobStatus existingJobStatus = em.find(JobStatus.class, jobStatusPK); if (em.isOpen()) { if (em.getTransaction().isActive()){ @@ -145,6 +154,7 @@ public class JobStatusResource extends AbstractExpCatResource { jobStatus.setStatusId(statusId); jobStatus.setJobId(jobId); jobStatus.setProcessId(processId); + jobStatus.setTaskId(taskId); jobStatus.setState(state); jobStatus.setReason(reason); if (existingJobStatus == null){ http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java index 926f4ba..0381f90 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java @@ -115,7 +115,10 @@ public class TaskResource extends AbstractExpCatResource { TaskErrorResource taskErrorResource = new TaskErrorResource(); taskErrorResource.setTaskId(taskId); return taskErrorResource; - + case JOB: + JobResource jobResource = new JobResource(); + jobResource.setTaskId(taskId); + return jobResource; default: logger.error("Unsupported resource type for task data resource.", new UnsupportedOperationException()); throw new UnsupportedOperationException(); @@ -143,6 +146,13 @@ public class TaskResource extends AbstractExpCatResource { q = generator.deleteQuery(em); q.executeUpdate(); break; + case JOB: + generator = new QueryGenerator(JOB); + generator.setParameter(JobConstants.JOB_ID, name); + generator.setParameter(JobConstants.TASK_ID, taskId); + q = generator.deleteQuery(em); + q.executeUpdate(); + break; default: logger.error("Unsupported resource type for job details resource.", new IllegalArgumentException()); break; @@ -206,6 +216,21 @@ public class TaskResource extends AbstractExpCatResource { em.close(); } return errorResource; + case JOB: + generator = new QueryGenerator(JOB); + generator.setParameter(JobConstants.JOB_ID, name); + generator.setParameter(JobConstants.TASK_ID, taskId); + q = generator.selectQuery(em); + Job job = (Job) q.getSingleResult(); + JobResource jobResource = (JobResource) Utils.getResource(ResourceType.JOB, job); + em.getTransaction().commit(); + if (em.isOpen()) { + if (em.getTransaction().isActive()){ + em.getTransaction().rollback(); + } + em.close(); + } + return jobResource; default: em.getTransaction().commit(); if (em.isOpen()) { @@ -269,6 +294,20 @@ public class TaskResource extends AbstractExpCatResource { } } break; + case JOB: + generator = new QueryGenerator(JOB); + generator.setParameter(JobConstants.TASK_ID, taskId); + q = generator.selectQuery(em); + results = q.getResultList(); + if (results.size() != 0) { + for (Object result : results) { + Job job = (Job) result; + JobResource jobResource = + (JobResource) Utils.getResource(ResourceType.JOB, job); + resourceList.add(jobResource); + } + } + break; default: logger.error("Unsupported resource type for task resource.", new UnsupportedOperationException()); throw new UnsupportedOperationException(); @@ -397,4 +436,18 @@ public class TaskResource extends AbstractExpCatResource { return max; } } + + public JobResource getJob(String jobId) throws RegistryException { + return (JobResource) get(ResourceType.JOB, jobId); + } + + public List getJobList() throws RegistryException { + List jobResources = new ArrayList(); + List resources = get(ResourceType.JOB); + for (ExperimentCatResource resource : resources) { + JobResource jobResource = (JobResource) resource; + jobResources.add(jobResource); + } + return jobResources; + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java index 6e27462..8a1a79e 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/Utils.java @@ -682,6 +682,7 @@ public class Utils { jobStatusResource.setJobId(o.getJobId()); jobStatusResource.setStatusId(o.getStatusId()); jobStatusResource.setProcessId(o.getProcessId()); + jobStatusResource.setTaskId(o.getTaskId()); jobStatusResource.setState(o.getState()); jobStatusResource.setTimeOfStateChange(o.getTimeOfStateChange()); jobStatusResource.setReason(o.getReason()); http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql index 02d02fb..0e91c7b 100644 --- a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql +++ b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql @@ -311,19 +311,20 @@ CREATE TABLE JOB ( STD_OUT CLOB, STD_ERR CLOB, EXIT_CODE INT, - PRIMARY KEY (JOB_ID, PROCESS_ID), - FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE + PRIMARY KEY (JOB_ID, TASK_ID), + FOREIGN KEY (TASK_ID) REFERENCES TASK(TASK_ID) ON DELETE CASCADE ); CREATE TABLE JOB_STATUS ( STATUS_ID varchar(255), JOB_ID varchar(255), PROCESS_ID varchar(255), + TASK_ID varchar(255), STATE varchar(255), TIME_OF_STATE_CHANGE timestamp DEFAULT '0000-00-00 00:00:00', REASON CLOB, - PRIMARY KEY (STATUS_ID, JOB_ID, PROCESS_ID), - FOREIGN KEY (JOB_ID, PROCESS_ID) REFERENCES JOB(JOB_ID, PROCESS_ID) ON DELETE CASCADE + PRIMARY KEY (STATUS_ID, JOB_ID, TASK_ID), + FOREIGN KEY (JOB_ID, TASK_ID) REFERENCES JOB(JOB_ID, TASK_ID) ON DELETE CASCADE ); CREATE TABLE CONFIGURATION http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql index 629745d..b2795c8 100644 --- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql +++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql @@ -311,19 +311,20 @@ CREATE TABLE JOB ( STD_OUT LONGTEXT, STD_ERR LONGTEXT, EXIT_CODE INT(11), - PRIMARY KEY (JOB_ID, PROCESS_ID), - FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE + PRIMARY KEY (JOB_ID, TASK_ID), + FOREIGN KEY (TASK_ID) REFERENCES TASK(TASK_ID) ON DELETE CASCADE ); CREATE TABLE JOB_STATUS ( STATUS_ID varchar(255), JOB_ID varchar(255), PROCESS_ID varchar(255), + TASK_ID varchar(255), STATE varchar(255), TIME_OF_STATE_CHANGE timestamp DEFAULT '0000-00-00 00:00:00', REASON LONGTEXT, - PRIMARY KEY (STATUS_ID, JOB_ID, PROCESS_ID), - FOREIGN KEY (JOB_ID, PROCESS_ID) REFERENCES JOB(JOB_ID, PROCESS_ID) ON DELETE CASCADE + PRIMARY KEY (STATUS_ID, JOB_ID, TASK_ID), + FOREIGN KEY (JOB_ID, TASK_ID) REFERENCES JOB(JOB_ID, TASK_ID) ON DELETE CASCADE ); http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/modules/registry/registry-core/src/test/resources/expcatalog-derby.sql ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/test/resources/expcatalog-derby.sql b/modules/registry/registry-core/src/test/resources/expcatalog-derby.sql index 02d02fb..0e91c7b 100644 --- a/modules/registry/registry-core/src/test/resources/expcatalog-derby.sql +++ b/modules/registry/registry-core/src/test/resources/expcatalog-derby.sql @@ -311,19 +311,20 @@ CREATE TABLE JOB ( STD_OUT CLOB, STD_ERR CLOB, EXIT_CODE INT, - PRIMARY KEY (JOB_ID, PROCESS_ID), - FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE + PRIMARY KEY (JOB_ID, TASK_ID), + FOREIGN KEY (TASK_ID) REFERENCES TASK(TASK_ID) ON DELETE CASCADE ); CREATE TABLE JOB_STATUS ( STATUS_ID varchar(255), JOB_ID varchar(255), PROCESS_ID varchar(255), + TASK_ID varchar(255), STATE varchar(255), TIME_OF_STATE_CHANGE timestamp DEFAULT '0000-00-00 00:00:00', REASON CLOB, - PRIMARY KEY (STATUS_ID, JOB_ID, PROCESS_ID), - FOREIGN KEY (JOB_ID, PROCESS_ID) REFERENCES JOB(JOB_ID, PROCESS_ID) ON DELETE CASCADE + PRIMARY KEY (STATUS_ID, JOB_ID, TASK_ID), + FOREIGN KEY (JOB_ID, TASK_ID) REFERENCES JOB(JOB_ID, TASK_ID) ON DELETE CASCADE ); CREATE TABLE CONFIGURATION http://git-wip-us.apache.org/repos/asf/airavata/blob/b442e0c3/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java index c4f4d15..581cdae 100644 --- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java +++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java @@ -82,6 +82,7 @@ public class Constants { public final class JobConstants { public static final String JOB_ID = "jobId"; public static final String PROCESS_ID = "processId"; + public static final String TASK_ID = "taskId"; public static final String JOB_STATUS = "taskStatus"; } }