You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2015/06/07 19:01:22 UTC
[41/44] airavata git commit: Mongo Registry WIP
http://git-wip-us.apache.org/repos/asf/airavata/blob/801489bf/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
deleted file mode 100644
index e6f7c4c..0000000
--- a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/ExperimentRegistry.java
+++ /dev/null
@@ -1,1643 +0,0 @@
-/*
- *
- * 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.persistance.registry.jpa.impl;
-
-import org.apache.airavata.common.logger.AiravataLogger;
-import org.apache.airavata.common.logger.AiravataLoggerFactory;
-import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
-import org.apache.airavata.model.workspace.experiment.*;
-import org.apache.airavata.persistance.registry.jpa.ResourceType;
-import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
-import org.apache.airavata.persistance.registry.jpa.mongo.dao.ExperimentDao;
-import org.apache.airavata.persistance.registry.jpa.resources.*;
-import org.apache.airavata.persistance.registry.jpa.utils.ThriftDataModelConversion;
-import org.apache.airavata.registry.cpi.CompositeIdentifier;
-import org.apache.airavata.registry.cpi.RegistryException;
-import org.apache.airavata.registry.cpi.RegistryModelType;
-import org.apache.airavata.registry.cpi.ResultOrderType;
-import org.apache.airavata.registry.cpi.utils.Constants;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-public class ExperimentRegistry {
- private GatewayResource gatewayResource;
- private WorkerResource workerResource;
- private final static AiravataLogger logger = AiravataLoggerFactory.getLogger(ExperimentRegistry.class);
-
- private ExperimentDao experimentDao;
-
- public ExperimentRegistry(GatewayResource gateway, UserResource user) throws RegistryException {
- gatewayResource = gateway;
- if (!gatewayResource.isExists(ResourceType.GATEWAY_WORKER, user.getUserName())) {
- workerResource = ResourceUtils.addGatewayWorker(gateway, user);
- } else {
- workerResource = (WorkerResource) ResourceUtils.getWorker(gateway.getGatewayId(), user.getUserName());
- }
-
- this.experimentDao = new ExperimentDao();
- }
-
- public String addExperiment(Experiment experiment, String gatewayId) throws RegistryException {
- try {
- if (!ResourceUtils.isUserExist(experiment.getUserName())) {
- ResourceUtils.addUser(experiment.getUserName(), null);
- }
- if (!workerResource.isProjectExists(experiment.getProjectId())) {
- logger.error("Project does not exist in the system..");
- throw new Exception("Project does not exist in the system, Please" +
- " create the project first...");
- }
- //setting up unique ids
- experiment.setExperimentId(getExperimentId(experiment.getName()));
- for (WorkflowNodeDetails wfnd : experiment.getWorkflowNodeDetailsList()) {
- wfnd.setNodeInstanceId(getNodeInstanceID(wfnd.getNodeName()));
- for (TaskDetails taskDetails : wfnd.getTaskDetailsList()) {
- taskDetails.setTaskId(getTaskId(wfnd.getNodeName()));
- for (DataTransferDetails dtd : taskDetails.getDataTransferDetailsList()) {
- dtd.setTransferId(getDataTransferID(taskDetails.getTaskId()));
- }
- }
- }
- experimentDao.createExperiment(experiment);
- } catch (Exception e) {
- logger.error("Error while saving experiment to registry", e);
- throw new RegistryException(e);
- }
- return experiment.getExperimentId();
- }
-
- public String addUserConfigData(UserConfigurationData configurationData, String expId) throws RegistryException {
- try {
- Experiment experiment = experimentDao.getExperiment(expId);
- experiment.setUserConfigurationData(configurationData);
- experimentDao.updateExperiment(experiment);
- return expId;
- } catch (Exception e) {
- logger.error("Unable to save user config data", e);
- throw new RegistryException(e);
- }
- }
-
- public String addExpOutputs(List<OutputDataObjectType> exOutput, String expId) throws RegistryException {
- return updateExpOutputs(exOutput, expId);
- }
-
- public String updateExpOutputs(List<OutputDataObjectType> exOutput, String expId) throws RegistryException {
- try {
- Experiment experiement = experimentDao.getExperiment(expId);
- experiement.setExperimentOutputs(exOutput);
- experimentDao.updateExperiment(experiement);
- return expId;
- } catch (Exception e) {
- logger.error("Error while updating experiment outputs", e);
- throw new RegistryException(e);
- }
- }
-
- public String addNodeOutputs(List<OutputDataObjectType> wfOutputs, CompositeIdentifier ids) throws RegistryException {
- return updateNodeOutputs(wfOutputs, (String) ids.getSecondLevelIdentifier());
- }
-
- public String updateNodeOutputs(List<OutputDataObjectType> wfOutputs, String nodeId) throws RegistryException {
- try {
- WorkflowNodeDetails wfnd = experimentDao.getWFNode(nodeId);
- wfnd.setNodeOutputs(wfOutputs);
- experimentDao.updateWFNode(wfnd);
- return nodeId;
- } catch (Exception e) {
- logger.error("Error while updating node outputs...", e);
- throw new RegistryException(e);
- }
- }
-
- public String addApplicationOutputs(List<OutputDataObjectType> appOutputs, CompositeIdentifier ids) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getThirdLevelIdentifier());
- taskDetails.getApplicationOutputs().addAll(appOutputs);
- experimentDao.updateTaskDetail(taskDetails);
- return (String) ids.getSecondLevelIdentifier();
- } catch (Exception e) {
- logger.error("Error while adding application outputs...", e);
- throw new RegistryException(e);
- }
- }
-
- public String updateExperimentStatus(ExperimentStatus experimentStatus, String expId)
- throws RegistryException {
- try {
- Experiment experiment = experimentDao.getExperiment(expId);
- String currentState = (experiment.getExperimentStatus() == null)
- ? ExperimentState.UNKNOWN.name()
- : experiment.getExperimentStatus().getExperimentState().name();
- if (isValidStatusTransition(ExperimentState.valueOf(currentState),
- experimentStatus.getExperimentState())) {
- experiment.setExperimentStatus(experimentStatus);
- experimentDao.updateExperiment(experiment);
- logger.debugId(expId, "Updated experiment {} status to {}.",
- expId, experimentStatus.toString());
- return experiment.getExperimentId();
- }
- } catch (Exception e) {
- logger.errorId(expId, "Error while updating experiment status...", e);
- throw new RegistryException(e);
- }
- return null;
- }
-
- public String addWorkflowNodeStatus(WorkflowNodeStatus status, CompositeIdentifier ids) throws RegistryException {
- return updateWorkflowNodeStatus(status, (String) ids.getSecondLevelIdentifier());
- }
-
- public String updateWorkflowNodeStatus(WorkflowNodeStatus status, String nodeId) throws RegistryException {
- try {
- WorkflowNodeDetails wfnd = experimentDao.getWFNode(nodeId);
- wfnd.setWorkflowNodeStatus(status);
- experimentDao.updateWFNode(wfnd);
- return nodeId;
- } catch (Exception e) {
- logger.errorId(nodeId, "Error while updating workflow node status to " + status.toString() + "...", e);
- throw new RegistryException(e);
- }
- }
-
- public String addTaskStatus(TaskStatus status, CompositeIdentifier ids) throws RegistryException {
- return updateTaskStatus(status, (String) ids.getThirdLevelIdentifier());
- }
-
- public String updateTaskStatus(TaskStatus status, String taskId) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail(taskId);
- taskDetails.setTaskStatus(status);
- experimentDao.updateTaskDetail(taskDetails);
- return taskId;
- } catch (Exception e) {
- logger.errorId(taskId, "Error while updating task status to " + status.toString() + "...", e);
- throw new RegistryException(e);
- }
- }
-
- /**
- * @param status job status
- * @param ids composite id will contain taskid and jobid
- * @return status id
- */
- public String addJobStatus(JobStatus status, CompositeIdentifier ids) throws RegistryException {
- return updateJobStatus(status, ids);
- }
-
- public String updateJobStatus(JobStatus status, CompositeIdentifier ids) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getTopLevelIdentifier());
- for (JobDetails jobDetails : taskDetails.getJobDetailsList()) {
- if (jobDetails.getJobId().equals(ids.getSecondLevelIdentifier())) {
- if (status.getJobState() == null) {
- status.setJobState(JobState.UNKNOWN);
- }
- jobDetails.setJobStatus(status);
- experimentDao.updateTaskDetail(taskDetails);
- return (String) ids.getSecondLevelIdentifier();
- }
- }
- return null;
- } catch (Exception e) {
- logger.errorId(ids.toString(), "Error while updating job status to " + status.toString() + " ...", e);
- throw new RegistryException(e);
- }
- }
-
- /**
- * @param status application status
- * @param ids composite id will contain taskid and jobid
- * @return status id
- */
- public String addApplicationStatus(ApplicationStatus status, CompositeIdentifier ids) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getTopLevelIdentifier());
- for (JobDetails jobDetails : taskDetails.getJobDetailsList()) {
- if (jobDetails.getJobId().equals(ids.getSecondLevelIdentifier())) {
- jobDetails.setApplicationStatus(status);
- experimentDao.updateTaskDetail(taskDetails);
- return (String) ids.getSecondLevelIdentifier();
- }
- }
- return null;
- } catch (Exception e) {
- logger.error("Unable to read airavata-server properties", e);
- throw new RegistryException(e);
- }
- }
-
- public void updateApplicationStatus(ApplicationStatus status, CompositeIdentifier ids) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getTopLevelIdentifier());
- for (JobDetails jobDetails : taskDetails.getJobDetailsList()) {
- if (jobDetails.getJobId().equals(ids.getSecondLevelIdentifier())) {
- jobDetails.setApplicationStatus(status);
- experimentDao.updateTaskDetail(taskDetails);
- return;
- }
- }
- } catch (Exception e) {
- logger.error("Error while updating application status...", e);
- throw new RegistryException(e);
- }
- }
-
- /**
- * @param status data transfer status
- * @param ids contains taskId and transfer id
- * @return status id
- */
- public String addTransferStatus(TransferStatus status, CompositeIdentifier ids) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getTopLevelIdentifier());
- for (DataTransferDetails dataTransferDetails : taskDetails.getDataTransferDetailsList()) {
- if (dataTransferDetails.getTransferId().equals(ids.getSecondLevelIdentifier())) {
- if (status.getTransferState() == null) {
- status.setTransferState(TransferState.UNKNOWN);
- }
- dataTransferDetails.setTransferStatus(status);
- experimentDao.updateTaskDetail(taskDetails);
- return (String) ids.getSecondLevelIdentifier();
- }
- }
- return null;
- } catch (Exception e) {
- logger.error("Error while adding transfer status...", e);
- throw new RegistryException(e);
- }
- }
-
- public void updateTransferStatus(TransferStatus status, CompositeIdentifier ids) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getTopLevelIdentifier());
- for (DataTransferDetails dataTransferDetails : taskDetails.getDataTransferDetailsList()) {
- if (dataTransferDetails.getTransferId().equals(ids.getSecondLevelIdentifier())) {
- dataTransferDetails.setTransferStatus(status);
- experimentDao.updateTaskDetail(taskDetails);
- }
- }
- } catch (Exception e) {
- logger.error("Error while updating transfer status...", e);
- throw new RegistryException(e);
- }
- }
-
- public String addWorkflowNodeDetails(WorkflowNodeDetails nodeDetails, String expId) throws RegistryException {
- try {
- nodeDetails.setNodeInstanceId(getNodeInstanceID(nodeDetails.getNodeName()));
- for (TaskDetails taskDetails : nodeDetails.getTaskDetailsList()) {
- taskDetails.setTaskId(getTaskId(nodeDetails.getNodeName()));
- for (DataTransferDetails dtd : taskDetails.getDataTransferDetailsList()) {
- dtd.setTransferId(getDataTransferID(taskDetails.getTaskId()));
- }
- }
- experimentDao.createWFNode(expId, nodeDetails);
- return nodeDetails.getNodeInstanceId();
- } catch (Exception e) {
- logger.error("Error while adding workflow node details...", e);
- throw new RegistryException(e);
- }
- }
-
- public void updateWorkflowNodeDetails(WorkflowNodeDetails nodeDetails, String nodeId) throws RegistryException {
- try {
- experimentDao.updateWFNode(nodeDetails);
- } catch (Exception e) {
- logger.error("Error while updating workflow node details...", e);
- throw new RegistryException(e);
- }
- }
-
- public String addTaskDetails(TaskDetails taskDetails, String nodeId) throws RegistryException {
- try {
- experimentDao.createTaskDetail(nodeId, taskDetails);
- return taskDetails.getTaskId();
- } catch (Exception e) {
- logger.error("Error while adding task details...", e);
- throw new RegistryException(e);
- }
- }
-
- public String updateTaskDetails(TaskDetails taskDetails, String taskId) throws RegistryException {
- try {
- experimentDao.updateTaskDetail(taskDetails);
- return taskDetails.getTaskId();
- } catch (Exception e) {
- logger.error("Error while updating task details...", e);
- throw new RegistryException(e);
- }
- }
-
- public void updateAppOutputs(List<OutputDataObjectType> appOutputs, String taskId) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail(taskId);
- taskDetails.setApplicationOutputs(appOutputs);
- experimentDao.updateTaskDetail(taskDetails);
- } catch (Exception e) {
- logger.error("Error while updating application outputs...", e);
- throw new RegistryException(e);
- }
- }
-
- public String addJobDetails(JobDetails jobDetails, CompositeIdentifier ids) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getTopLevelIdentifier());
- jobDetails.setJobId((String) ids.getSecondLevelIdentifier());
- taskDetails.getJobDetailsList().add(jobDetails);
- experimentDao.updateTaskDetail(taskDetails);
- return (String) ids.getSecondLevelIdentifier();
- } catch (Exception e) {
- logger.error("Error while adding job details...", e);
- throw new RegistryException(e);
- }
- }
-
- // ids - taskId + jobid
- public void updateJobDetails(JobDetails jobDetails, CompositeIdentifier ids) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getTopLevelIdentifier());
- List<JobDetails> jobDetailsList = taskDetails.getJobDetailsList();
- for (JobDetails exisitingJobDetail : taskDetails.getJobDetailsList()) {
- if (exisitingJobDetail.getJobId().equals(jobDetails.getJobId())) {
- jobDetailsList.remove(exisitingJobDetail);
- jobDetailsList.add(jobDetails);
- taskDetails.setJobDetailsList(jobDetailsList);
- experimentDao.updateTaskDetail(taskDetails);
- return;
- }
- }
- } catch (Exception e) {
- logger.error("Error while updating job details...", e);
- throw new RegistryException(e);
- }
- }
-
- public String addDataTransferDetails(DataTransferDetails transferDetails, String taskId) throws RegistryException {
- try {
- if (transferDetails.getTransferDescription() == null) {
- throw new RegistryException("Data transfer description cannot be empty");
- }
- TaskDetails taskDetails = experimentDao.getTaskDetail(taskId);
- taskDetails.getDataTransferDetailsList().add(transferDetails);
- experimentDao.updateTaskDetail(taskDetails);
- return taskId;
- } catch (Exception e) {
- logger.error("Error while adding transfer details...", e);
- throw new RegistryException(e);
- }
- }
-
- public String updateDataTransferDetails(DataTransferDetails transferDetails, CompositeIdentifier ids) throws RegistryException {
- try {
- TaskDetails taskDetail = experimentDao.getTaskDetail((String) ids.getTopLevelIdentifier());
- for (DataTransferDetails dtd : taskDetail.getDataTransferDetailsList()) {
- if (dtd.getTransferId().equals(ids.getSecondLevelIdentifier())) {
- taskDetail.getDataTransferDetailsList().remove(dtd);
- taskDetail.getDataTransferDetailsList().add(transferDetails);
- experimentDao.updateTaskDetail(taskDetail);
- return (String) ids.getSecondLevelIdentifier();
- }
- }
- return null;
- } catch (Exception e) {
- logger.error("Error while updating transfer details...", e);
- throw new RegistryException(e);
- }
- }
-
- /**
- * @param scheduling computational resource object
- * @param ids contains expId and taskId, if it is an experiment, task id can be null
- * @return scheduling id
- */
- public String addComputationalResourceScheduling(ComputationalResourceScheduling scheduling, CompositeIdentifier ids) throws RegistryException {
- try {
- if (ids.getSecondLevelIdentifier() == null) {
- Experiment experiment = experimentDao.getExperiment((String) ids.getTopLevelIdentifier());
- experiment.getUserConfigurationData().setComputationalResourceScheduling(scheduling);
- experimentDao.updateExperiment(experiment);
- return (String) ids.getTopLevelIdentifier();
- } else {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getSecondLevelIdentifier());
- taskDetails.setTaskScheduling(scheduling);
- experimentDao.updateTaskDetail(taskDetails);
- return (String) ids.getSecondLevelIdentifier();
- }
- } catch (Exception e) {
- logger.error("Error while adding scheduling parameters...", e);
- throw new RegistryException(e);
- }
- }
-
- /**
- * @param dataHandling advanced input data handling object
- * @param ids contains expId and taskId
- * @return data handling id
- */
- public String addInputDataHandling(AdvancedInputDataHandling dataHandling, CompositeIdentifier ids) throws RegistryException {
- try {
- if (ids.getSecondLevelIdentifier() == null) {
- Experiment experiment = experimentDao.getExperiment((String) ids.getTopLevelIdentifier());
- experiment.getUserConfigurationData().setAdvanceInputDataHandling(dataHandling);
- experimentDao.updateExperiment(experiment);
- return (String) ids.getTopLevelIdentifier();
- } else {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getSecondLevelIdentifier());
- taskDetails.setAdvancedInputDataHandling(dataHandling);
- experimentDao.updateTaskDetail(taskDetails);
- return (String) ids.getSecondLevelIdentifier();
- }
- } catch (Exception e) {
- logger.error("Error while adding input data handling...", e);
- throw new RegistryException(e);
- }
- }
-
- /**
- * @param dataHandling advanced output data handling object
- * @param ids contains expId and taskId
- * @return data handling id
- */
- public String addOutputDataHandling(AdvancedOutputDataHandling dataHandling, CompositeIdentifier ids) throws RegistryException {
- try {
- if (ids.getSecondLevelIdentifier() == null) {
- Experiment experiment = experimentDao.getExperiment((String) ids.getTopLevelIdentifier());
- experiment.getUserConfigurationData().setAdvanceOutputDataHandling(dataHandling);
- experimentDao.updateExperiment(experiment);
- return (String) ids.getTopLevelIdentifier();
- } else {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getSecondLevelIdentifier());
- taskDetails.setAdvancedOutputDataHandling(dataHandling);
- experimentDao.updateTaskDetail(taskDetails);
- return (String) ids.getSecondLevelIdentifier();
- }
- } catch (Exception e) {
- logger.error("Error while adding output data handling...", e);
- throw new RegistryException(e);
- }
- }
-
- public String addQosParams(QualityOfServiceParams qosParams, String expId) throws RegistryException {
- try {
- Experiment experiment = experimentDao.getExperiment(expId);
- experiment.getUserConfigurationData().setQosParams(qosParams);
- experimentDao.updateExperiment(experiment);
- return expId;
- } catch (Exception e) {
- logger.error("Error while adding QOS params...", e);
- throw new RegistryException(e);
- }
- }
-
- public String addErrorDetails(ErrorDetails error, Object id) throws RegistryException {
- try {
- // FIXME : for .12 we only saveExperiment task related errors
- if(id instanceof String){
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) id);
- taskDetails.getErrors().add(error);
- experimentDao.updateTaskDetail(taskDetails);
- return (String) id;
- } else if (id instanceof CompositeIdentifier) {
- CompositeIdentifier cid = (CompositeIdentifier) id;
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) cid.getTopLevelIdentifier());
- for(JobDetails jobDetails: taskDetails.getJobDetailsList()){
- if(jobDetails.getJobId().equals(cid.getSecondLevelIdentifier())){
- jobDetails.getErrors().add(error);
- experimentDao.updateTaskDetail(taskDetails);
- return (String) cid.getSecondLevelIdentifier();
- }
- }
- } else {
- logger.error("Unsupported data type...");
- }
- } catch (Exception e) {
- logger.error("Unable to add error details...", e);
- throw new RegistryException(e);
- }
- return null;
- }
-
- public String getNodeInstanceID(String nodeName) {
- String node = nodeName.replaceAll("\\s", "");
- return node + "_" + UUID.randomUUID();
- }
-
- public String getExperimentId(String experimentName) {
- String exp = experimentName.replaceAll("\\s", "");
- return exp + "_" + UUID.randomUUID();
- }
-
- public String getTaskId(String nodeName) {
- String node = nodeName.replaceAll("\\s", "");
- return node + "_" + UUID.randomUUID();
- }
-
- public String getDataTransferID(String taskId) {
- String task = taskId.replaceAll("\\s", "");
- return task + "_" + UUID.randomUUID();
- }
-
- public void updateExperimentField(String expID, String fieldName, Object value) throws RegistryException {
- try {
- Experiment experiment = experimentDao.getExperiment(expID);
- if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_NAME)) {
- experiment.setName((String) value);
- experimentDao.updateExperiment(experiment);
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
- experiment.setUserName((String) value);
- experimentDao.updateExperiment(experiment);
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_DESC)) {
- experiment.setDescription((String) value);
- experimentDao.updateExperiment(experiment);
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.APPLICATION_ID)) {
- experiment.setApplicationId((String) value);
- experimentDao.updateExperiment(experiment);
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.APPLICATION_VERSION)) {
- experiment.setApplicationVersion((String) value);
- experimentDao.updateExperiment(experiment);
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.WORKFLOW_TEMPLATE_ID)) {
- experiment.setWorkflowTemplateId((String) value);
- experimentDao.updateExperiment(experiment);
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.WORKFLOW_TEMPLATE_VERSION)) {
- experiment.setWorkflowTemplateVersion((String) value);
- experimentDao.updateExperiment(experiment);
- } else {
- logger.error("Unsupported field type for Experiment");
- }
- } catch (Exception e) {
- logger.error("Error while updating fields in experiment...", e);
- throw new RegistryException(e);
- }
- }
-
- public void updateExpConfigDataField(String expID, String fieldName, Object value) throws RegistryException {
- try {
- Experiment experiment = experimentDao.getExperiment(expID);
- if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.AIRAVATA_AUTO_SCHEDULE)) {
- experiment.getUserConfigurationData().setAiravataAutoSchedule((Boolean) value);
- experimentDao.updateExperiment(experiment);
- } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.OVERRIDE_MANUAL_PARAMS)) {
- experiment.getUserConfigurationData().setOverrideManualScheduledParams((Boolean) value);
- experimentDao.updateExperiment(experiment);
- } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.SHARE_EXP)) {
- experiment.getUserConfigurationData().setShareExperimentPublicly((Boolean) value);
- experimentDao.updateExperiment(experiment);
- } else if (fieldName.equals(Constants.FieldConstants
- .ConfigurationDataConstants.COMPUTATIONAL_RESOURCE_SCHEDULING)) {
- experiment.getUserConfigurationData()
- .setComputationalResourceScheduling((ComputationalResourceScheduling) value);
- experimentDao.updateExperiment(experiment);
- } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.ADVANCED_INPUT_HANDLING)) {
- experiment.getUserConfigurationData()
- .setAdvanceInputDataHandling((AdvancedInputDataHandling) value);
- experimentDao.updateExperiment(experiment);
- } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.ADVANCED_OUTPUT_HANDLING)) {
- experiment.getUserConfigurationData()
- .setAdvanceOutputDataHandling((AdvancedOutputDataHandling) value);
- experimentDao.updateExperiment(experiment);
- } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.QOS_PARAMS)) {
- experiment.getUserConfigurationData()
- .setQosParams((QualityOfServiceParams) value);
- experimentDao.updateExperiment(experiment);
- } else {
- logger.error("Unsupported field type for Experiment config data");
- }
- } catch (Exception e) {
- logger.error("Error while updating fields in experiment config...", e);
- throw new RegistryException(e);
- }
- }
-
- public void updateExperiment(Experiment experiment, String expId) throws RegistryException {
- try {
- if (!ResourceUtils.isUserExist(experiment.getUserName())) {
- ResourceUtils.addUser(experiment.getUserName(), null);
- }
- if (!workerResource.isProjectExists(experiment.getProjectId())) {
- logger.error("Project does not exist in the system..");
- throw new Exception("Project does not exist in the system, Please create the project first...");
- }
- //making sure id is set
- experiment.setExperimentId(expId);
- experimentDao.updateExperiment(experiment);
- } catch (Exception e) {
- logger.error("Error while updating experiment...", e);
- throw new RegistryException(e);
- }
- }
-
- public void updateUserConfigData(UserConfigurationData configData, String expId) throws RegistryException {
- try {
- Experiment experiment = experimentDao.getExperiment(expId);
- experiment.setUserConfigurationData(configData);
- experimentDao.updateExperiment(experiment);
- return;
- } catch (Exception e) {
- logger.error("Error while updating user config data...", e);
- throw new RegistryException(e);
- }
- }
-
- /**
- * Method to getExperiment matching experiment list
- *
- * @param fieldName
- * @param value
- * @return
- * @throws RegistryException
- */
- public List<Experiment> getExperimentList(String fieldName, Object value) throws RegistryException {
- return getExperimentList(fieldName, value, -1, -1, null, null);
- }
-
- /**
- * Method to getExperiment matching experiment list with pagination and ordering
- *
- * @param fieldName
- * @param value
- * @param limit
- * @param offset
- * @param orderByIdentifier
- * @param resultOrderType
- * @return
- * @throws RegistryException
- */
- public List<Experiment> getExperimentList(String fieldName, Object value, int limit, int offset,
- Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
- List<Experiment> experiments = new ArrayList();
- Map<String, String> filters = new HashMap();
- try {
- if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
- filters.put(fieldName, (String)value);
- return experimentDao.searchExperiments(filters, limit, offset, orderByIdentifier, resultOrderType);
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.PROJECT_ID)) {
- filters.put(fieldName, (String)value);
- return experimentDao.searchExperiments(filters, limit, offset, orderByIdentifier, resultOrderType);
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY)) {
- filters.put(fieldName, (String)value);
- return experimentDao.searchExperiments(filters, limit, offset, orderByIdentifier, resultOrderType);
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.WORKFLOW_NODE_LIST)) {
- if (value instanceof List<?>) {
- return getExperimentList(fieldName, ((List<?>) value).get(0));
- } else if (value instanceof WorkflowNodeDetails) {
- List<Experiment> experimentList = new ArrayList();
- experimentList.add(experimentDao.getParentExperimentOfWFNode(
- ((WorkflowNodeDetails)value).getNodeInstanceId())
- );
- } else {
- logger.error("Unsupported field value to retrieve workflow node detail list...");
- }
-
- } else {
- logger.error("Unsupported field name to retrieve experiment list...");
- }
- } catch (Exception e) {
- logger.error("Error while getting experiment list...", e);
- throw new RegistryException(e);
- }
- return experiments;
- }
-
-
- public List<WorkflowNodeDetails> getWFNodeDetails(String fieldName, Object value) throws RegistryException {
- try {
- if (fieldName.equals(Constants.FieldConstants.WorkflowNodeConstants.EXPERIMENT_ID)) {
- Experiment experiment = experimentDao.getExperiment((String) value);
- return experiment.getWorkflowNodeDetailsList();
- }
- if (fieldName.equals(Constants.FieldConstants.WorkflowNodeConstants.TASK_LIST)) {
- if (value instanceof List<?>) {
- return getWFNodeDetails(fieldName, ((List<?>) value).get(0));
- } else if (value instanceof TaskDetails) {
- List<WorkflowNodeDetails> workflowNodeDetailsList = new ArrayList();
- workflowNodeDetailsList.add(experimentDao.getParentWFNodeOfTask(((TaskDetails)value).getTaskId()));
- return workflowNodeDetailsList;
- } else {
- logger.error("Unsupported field value to retrieve workflow node detail list...");
- }
- } else {
- logger.error("Unsupported field name to retrieve workflow detail list...");
- }
- } catch (Exception e) {
- logger.error("Error while getting workfkow details...", e);
- throw new RegistryException(e);
- }
- return null;
- }
-
- public List<WorkflowNodeStatus> getWFNodeStatusList(String fieldName, Object value) throws RegistryException {
- try {
- if (fieldName.equals(Constants.FieldConstants.WorkflowNodeStatusConstants.EXPERIMENT_ID)) {
- Experiment experiment = experimentDao.getExperiment((String) value);
- List<WorkflowNodeStatus> workflowNodeStatuses = experiment.getWorkflowNodeDetailsList().stream().map(WorkflowNodeDetails::getWorkflowNodeStatus).collect(Collectors.toList());
- return workflowNodeStatuses;
- } else {
- logger.error("Unsupported field name to retrieve workflow status list...");
- }
- } catch (Exception e) {
- logger.error("Error while getting workflow status...", e);
- throw new RegistryException(e);
- }
- return null;
- }
-
- public List<TaskDetails> getTaskDetails(String fieldName, Object value) throws RegistryException {
- try {
- if (fieldName.equals(Constants.FieldConstants.TaskDetailConstants.NODE_ID)) {
- WorkflowNodeDetails wfnd = experimentDao.getWFNode((String) value);
- return wfnd.getTaskDetailsList();
- } else {
- logger.error("Unsupported field name to retrieve task detail list...");
- }
- } catch (Exception e) {
- logger.error("Error while getting task details...", e);
- throw new RegistryException(e);
- }
- return null;
- }
-
- public List<JobDetails> getJobDetails(String fieldName, Object value) throws RegistryException {
- try {
- if (fieldName.equals(Constants.FieldConstants.JobDetaisConstants.TASK_ID)) {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) value);
- return taskDetails.getJobDetailsList();
- } else {
- logger.error("Unsupported field name to retrieve job details list...");
- }
- } catch (Exception e) {
- logger.error("Error while job details...", e);
- throw new RegistryException(e);
- }
- return null;
- }
-
- public List<DataTransferDetails> getDataTransferDetails(String fieldName, Object value) throws RegistryException {
- try {
- if (fieldName.equals(Constants.FieldConstants.DataTransferDetailConstants.TASK_ID)) {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) value);
- return taskDetails.getDataTransferDetailsList();
- } else {
- logger.error("Unsupported field name to retrieve job details list...");
- }
- } catch (Exception e) {
- logger.error("Error while getting data transfer details...", e);
- throw new RegistryException(e);
- }
- return null;
- }
-
- public List<ErrorDetails> getErrorDetails(String fieldName, Object value) throws RegistryException {
- try {
- if (fieldName.equals(Constants.FieldConstants.ErrorDetailsConstants.EXPERIMENT_ID)) {
- Experiment experiment = experimentDao.getExperiment((String) value);
- return experiment.getErrors();
- } else if (fieldName.equals(Constants.FieldConstants.ErrorDetailsConstants.NODE_ID)) {
- WorkflowNodeDetails wfnd = experimentDao.getWFNode((String) value);
- wfnd.getErrors();
- } else if (fieldName.equals(Constants.FieldConstants.ErrorDetailsConstants.TASK_ID)) {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) value);
- return taskDetails.getErrors();
- } else if (fieldName.equals(Constants.FieldConstants.ErrorDetailsConstants.JOB_ID)) {
- CompositeIdentifier cid = (CompositeIdentifier) value;
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) cid.getTopLevelIdentifier());
- for (JobDetails jobDetails : taskDetails.getJobDetailsList()) {
- if (jobDetails.getJobId().equals(cid.getSecondLevelIdentifier())) {
- return jobDetails.getErrors();
- }
- }
- } else {
- logger.error("Unsupported field name to retrieve job details list...");
- }
- } catch (Exception e) {
- logger.error("Unable to get error details...", e);
- throw new RegistryException(e);
- }
- return null;
- }
-
- public Object getExperiment(String expId, String fieldName) throws RegistryException {
- try {
- Experiment experiment = experimentDao.getExperiment(expId);
- if (fieldName == null) {
- return experiment;
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
- return experiment.getUserName();
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY)) {
- return experiment.getGatewayExecutionId();
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_NAME)) {
- return experiment.getName();
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_DESC)) {
- return experiment.getDescription();
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.APPLICATION_ID)) {
- return experiment.getApplicationId();
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.PROJECT_ID)) {
- return experiment.getProjectId();
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.APPLICATION_VERSION)) {
- return experiment.getApplicationVersion();
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.WORKFLOW_TEMPLATE_ID)) {
- return experiment.getWorkflowTemplateId();
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.WORKFLOW_TEMPLATE_VERSION)) {
- return experiment.getWorkflowTemplateVersion();
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_INPUTS)) {
- return experiment.getExperimentInputs();
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_OUTPUTS)) {
- return experiment.getExperimentOutputs();
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_STATUS)) {
- return experiment.getExperimentStatus();
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_CONFIGURATION_DATA)) {
- return experiment.getUserConfigurationData();
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.WORKFLOW_EXECUTION_ID)) {
- return experiment.getWorkflowExecutionInstanceId();
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.STATE_CHANGE_LIST)) {
- final List<WorkflowNodeStatus> statusList = new ArrayList();
- experiment.getWorkflowNodeDetailsList().stream()
- .forEach(wfnd->statusList.add(wfnd.getWorkflowNodeStatus()));
- return statusList;
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.WORKFLOW_NODE_LIST)) {
- return experiment.getWorkflowNodeDetailsList();
- } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.ERROR_DETAIL_LIST)) {
- return experiment.getErrors();
- } else {
- logger.error("Unsupported field name for experiment basic data..");
- }
- } catch (Exception e) {
- logger.error("Error while getting experiment info...", e);
- throw new RegistryException(e);
- }
- return null;
- }
-
- public Object getConfigData(String expId, String fieldName) throws RegistryException {
- try {
- UserConfigurationData configurationData = experimentDao.getExperiment(expId).getUserConfigurationData();
- if (fieldName == null) {
- return configurationData;
- } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.AIRAVATA_AUTO_SCHEDULE)) {
- return configurationData.isAiravataAutoSchedule();
- } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.OVERRIDE_MANUAL_PARAMS)) {
- return configurationData.isOverrideManualScheduledParams();
- } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.SHARE_EXP)) {
- return configurationData.isShareExperimentPublicly();
- } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.COMPUTATIONAL_RESOURCE_SCHEDULING)) {
- return configurationData.getComputationalResourceScheduling();
- } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.ADVANCED_INPUT_HANDLING)) {
- return configurationData.getAdvanceInputDataHandling();
- } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.ADVANCED_OUTPUT_HANDLING)) {
- return configurationData.getAdvanceOutputDataHandling();
- } else if (fieldName.equals(Constants.FieldConstants.ConfigurationDataConstants.QOS_PARAMS)) {
- return configurationData.getQosParams();
- } else {
- logger.error("Unsupported field name for experiment configuration data..");
- }
- } catch (Exception e) {
- logger.error("Error while getting config data..", e);
- throw new RegistryException(e);
- }
- return null;
- }
-
- public List<OutputDataObjectType> getExperimentOutputs(String expId) throws RegistryException {
- try {
- Experiment experiment = experimentDao.getExperiment(expId);
- return experiment.getExperimentOutputs();
- } catch (Exception e) {
- logger.error("Error while getting experiment outputs...", e);
- }
- return null;
- }
-
- public ExperimentStatus getExperimentStatus(String expId) throws RegistryException {
- try {
- Experiment experiment = experimentDao.getExperiment(expId);
- return experiment.getExperimentStatus();
- } catch (Exception e) {
- logger.error("Error while getting experiment status...", e);
- throw new RegistryException(e);
- }
- }
-
- public ComputationalResourceScheduling getComputationalScheduling(RegistryModelType type, String id) throws RegistryException {
- try {
- ComputationSchedulingResource computationScheduling = null;
- switch (type) {
- case EXPERIMENT:
- Experiment experiment = experimentDao.getExperiment(id);
- return experiment.getUserConfigurationData().getComputationalResourceScheduling();
- case TASK_DETAIL:
- TaskDetails taskDetails = experimentDao.getTaskDetail(id);
- return taskDetails.getTaskScheduling();
- }
- if (computationScheduling != null) {
- return ThriftDataModelConversion.getComputationalResourceScheduling(computationScheduling);
- }
- } catch (Exception e) {
- logger.error("Error while getting scheduling data..", e);
- throw new RegistryException(e);
- }
- return null;
- }
-
- public AdvancedInputDataHandling getInputDataHandling(RegistryModelType type, String id) throws RegistryException {
- try {
- AdvanceInputDataHandlingResource dataHandlingResource = null;
- switch (type) {
- case EXPERIMENT:
- Experiment experiment = experimentDao.getExperiment(id);
- return experiment.getUserConfigurationData().getAdvanceInputDataHandling();
- case TASK_DETAIL:
- TaskDetails taskDetails = experimentDao.getTaskDetail(id);
- return taskDetails.getAdvancedInputDataHandling();
- }
- if (dataHandlingResource != null) {
- return ThriftDataModelConversion.getAdvanceInputDataHandling(dataHandlingResource);
- }
- } catch (Exception e) {
- logger.error("Error while getting input data handling..", e);
- throw new RegistryException(e);
- }
- return null;
- }
-
- public AdvancedOutputDataHandling getOutputDataHandling(RegistryModelType type, String id) throws RegistryException {
- try {
- AdvancedOutputDataHandlingResource dataHandlingResource = null;
- switch (type) {
- case EXPERIMENT:
- Experiment experiment = experimentDao.getExperiment(id);
- return experiment.getUserConfigurationData().getAdvanceOutputDataHandling();
- case TASK_DETAIL:
- TaskDetails taskDetails = experimentDao.getTaskDetail(id);
- return taskDetails.getAdvancedOutputDataHandling();
- }
- if (dataHandlingResource != null) {
- return ThriftDataModelConversion.getAdvanceOutputDataHandling(dataHandlingResource);
- }
- } catch (Exception e) {
- logger.error("Error while getting output data handling...", e);
- throw new RegistryException(e);
- }
- return null;
- }
-
- public QualityOfServiceParams getQosParams(RegistryModelType type, String id) throws RegistryException {
- try {
- switch (type) {
- case EXPERIMENT:
- Experiment experiment = experimentDao.getExperiment(id);
- return experiment.getUserConfigurationData().getQosParams();
- }
- } catch (Exception e) {
- logger.error("Error while getting qos params..", e);
- throw new RegistryException(e);
- }
- return null;
- }
-
- public WorkflowNodeDetails getWorkflowNodeDetails(String nodeId) throws RegistryException {
- try {
- return experimentDao.getWFNode(nodeId);
- } catch (Exception e) {
- logger.error("Error while getting workflow node details...", e);
- throw new RegistryException(e);
- }
- }
-
- public WorkflowNodeStatus getWorkflowNodeStatus(String nodeId) throws RegistryException {
- try {
- WorkflowNodeDetails wfnd = experimentDao.getWFNode(nodeId);
- return wfnd.getWorkflowNodeStatus();
- } catch (Exception e) {
- logger.error("Error while getting workflow node status..", e);
- throw new RegistryException(e);
- }
- }
-
- public List<OutputDataObjectType> getNodeOutputs(String nodeId) throws RegistryException {
- try {
- WorkflowNodeDetails wfnd = experimentDao.getWFNode(nodeId);
- return wfnd.getNodeOutputs();
- } catch (Exception e) {
- logger.error("Error while getting node outputs..", e);
- throw new RegistryException(e);
- }
- }
-
- public TaskDetails getTaskDetails(String taskId) throws RegistryException {
- try {
- return experimentDao.getTaskDetail(taskId);
- } catch (Exception e) {
- logger.error("Error while getting task details..", e);
- throw new RegistryException(e);
- }
- }
-
- public List<OutputDataObjectType> getApplicationOutputs(String taskId) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail(taskId);
- return taskDetails.getApplicationOutputs();
- } catch (Exception e) {
- logger.error("Error while getting application outputs..", e);
- throw new RegistryException(e);
- }
- }
-
- public TaskStatus getTaskStatus(String taskId) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail(taskId);
- return taskDetails.getTaskStatus();
- } catch (Exception e) {
- logger.error("Error while getting experiment outputs..", e);
- throw new RegistryException(e);
- }
- }
-
- // ids contains task id + job id
- public JobDetails getJobDetails(CompositeIdentifier ids) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getTopLevelIdentifier());
- for (JobDetails jobDetails : taskDetails.getJobDetailsList()) {
- if (jobDetails.getJobId().equals(ids.getSecondLevelIdentifier())) {
- return jobDetails;
- }
- }
- return null;
- } catch (Exception e) {
- logger.error("Error while getting job details..", e);
- throw new RegistryException(e);
- }
- }
-
- // ids contains task id + job id
- public JobStatus getJobStatus(CompositeIdentifier ids) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getTopLevelIdentifier());
- for (JobDetails jobDetails : taskDetails.getJobDetailsList()) {
- if (jobDetails.getJobId().equals(ids.getSecondLevelIdentifier())) {
- return jobDetails.getJobStatus();
- }
- }
- return null;
- } catch (Exception e) {
- logger.error("Error while getting job status..", e);
- throw new RegistryException(e);
- }
- }
-
- public ApplicationStatus getApplicationStatus(CompositeIdentifier ids) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getTopLevelIdentifier());
- for (JobDetails jobDetails : taskDetails.getJobDetailsList()) {
- if (jobDetails.getJobId().equals(ids.getSecondLevelIdentifier())) {
- return jobDetails.getApplicationStatus();
- }
- }
- return null;
- } catch (Exception e) {
- logger.error("Error while getting application status..", e);
- throw new RegistryException(e);
- }
- }
-
- public DataTransferDetails getDataTransferDetails(CompositeIdentifier cid) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String)cid.getTopLevelIdentifier());
- for(DataTransferDetails dtd: taskDetails.getDataTransferDetailsList()){
- if(dtd.getTransferId().equals(cid.getSecondLevelIdentifier())){
- return dtd;
- }
- }
- return null;
- } catch (Exception e) {
- logger.error("Error while getting data transfer details..", e);
- throw new RegistryException(e);
- }
- }
-
- public TransferStatus getDataTransferStatus(CompositeIdentifier cid) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String)cid.getTopLevelIdentifier());
- for(DataTransferDetails dtd: taskDetails.getDataTransferDetailsList()){
- if(dtd.getTransferId().equals(cid.getSecondLevelIdentifier())){
- return dtd.getTransferStatus();
- }
- }
- return null;
- } catch (Exception e) {
- logger.error("Error while getting data transfer status..", e);
- throw new RegistryException(e);
- }
- }
-
- public List<String> getExperimentIds(String fieldName, Object value) throws RegistryException {
- List<String> expIDs = new ArrayList();
- try {
- if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY)
- || fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)
- || fieldName.equals(Constants.FieldConstants.ExperimentConstants.PROJECT_ID)) {
- getExperimentList(fieldName, value).stream().forEach(ex->expIDs.add(ex.getExperimentId()));
- return expIDs;
- }
- } catch (Exception e) {
- logger.error("Error while retrieving experiment ids..", e);
- throw new RegistryException(e);
- }
- return expIDs;
- }
-
- public List<String> getWorkflowNodeIds(String fieldName, Object value) throws RegistryException {
- List<String> wfIds = new ArrayList();
- List<WorkflowNodeDetails> wfNodeDetails = getWFNodeDetails(fieldName, value);
- wfIds.addAll(wfNodeDetails.stream().map(WorkflowNodeDetails::getNodeInstanceId).collect(Collectors.toList()));
- return wfIds;
- }
-
- public List<String> getTaskDetailIds(String fieldName, Object value) throws RegistryException {
- List<String> taskDetailIds = new ArrayList();
- List<TaskDetails> taskDetails = getTaskDetails(fieldName, value);
- taskDetailIds.addAll(taskDetails.stream().map(TaskDetails::getTaskId).collect(Collectors.toList()));
- return taskDetailIds;
- }
-
- public List<String> getJobDetailIds(String fieldName, Object value) throws RegistryException {
- List<String> jobIds = new ArrayList<String>();
- List<JobDetails> jobDetails = getJobDetails(fieldName, value);
- jobIds.addAll(jobDetails.stream().map(JobDetails::getJobId).collect(Collectors.toList()));
- return jobIds;
- }
-
- public List<String> getTransferDetailIds(String fieldName, Object value) throws RegistryException {
- List<String> transferIds = new ArrayList<String>();
- List<DataTransferDetails> dataTransferDetails = getDataTransferDetails(fieldName, value);
- transferIds.addAll(dataTransferDetails.stream().map(DataTransferDetails::getTransferId).collect(Collectors.toList()));
- return transferIds;
- }
-
- public void removeExperiment(String experimentId) throws RegistryException {
- try {
- Experiment experiment = new Experiment();
- experiment.setExperimentId(experimentId);
- experimentDao.deleteExperiment(experiment);
- } catch (Exception e) {
- logger.error("Error while removing experiment..", e);
- throw new RegistryException(e);
- }
- }
-
- public void removeExperimentConfigData(String experimentId) throws RegistryException {
- try {
- Experiment experiment = experimentDao.getExperiment(experimentId);
- experiment.setUserConfigurationData(null);
- experimentDao.updateExperiment(experiment);
- } catch (Exception e) {
- logger.error("Error while removing experiment config..", e);
- throw new RegistryException(e);
- }
- }
-
- public void removeWorkflowNode(String nodeId) throws RegistryException {
- try {
- WorkflowNodeDetails wfnd = new WorkflowNodeDetails();
- wfnd.setNodeInstanceId(nodeId);
- experimentDao.deleteWFNode(wfnd);
- } catch (Exception e) {
- logger.error("Error while removing workflow node..", e);
- throw new RegistryException(e);
- }
- }
-
- public void removeTaskDetails(String taskId) throws RegistryException {
- try {
- TaskDetails taskDetails = new TaskDetails();
- taskDetails.setTaskId(taskId);
- experimentDao.deleteTaskDetail(taskDetails);
- } catch (Exception e) {
- logger.error("Error while removing task details..", e);
- throw new RegistryException(e);
- }
- }
-
- public void removeJobDetails(CompositeIdentifier ids) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getTopLevelIdentifier());
- for (JobDetails jobDetails : taskDetails.getJobDetailsList()) {
- if (jobDetails.getJobId().equals(ids.getSecondLevelIdentifier())) {
- taskDetails.getJobDetailsList().remove(jobDetails);
- experimentDao.updateTaskDetail(taskDetails);
- return;
- }
- }
- } catch (Exception e) {
- logger.error("Error while removing job details..", e);
- throw new RegistryException(e);
- }
- }
-
- public void removeDataTransferDetails(CompositeIdentifier cid) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String)cid.getTopLevelIdentifier());
- for(DataTransferDetails dtd: taskDetails.getDataTransferDetailsList()){
- if(dtd.getTransferId().equals(cid.getSecondLevelIdentifier())){
- taskDetails.getDataTransferDetailsList().remove(dtd);
- experimentDao.updateTaskDetail(taskDetails);
- }
- }
- } catch (Exception e) {
- logger.error("Error while removing transfer details..", e);
- throw new RegistryException(e);
- }
- }
-
- public void removeComputationalScheduling(RegistryModelType dataType, String id) throws RegistryException {
- try {
- switch (dataType) {
- case EXPERIMENT:
- Experiment experiment = experimentDao.getExperiment(id);
- experiment.getUserConfigurationData().setComputationalResourceScheduling(null);
- experimentDao.updateExperiment(experiment);
- return;
- case TASK_DETAIL:
- TaskDetails taskDetails = experimentDao.getTaskDetail(id);
- taskDetails.setTaskScheduling(null);
- experimentDao.updateTaskDetail(taskDetails);
- break;
- default:
- logger.error("Unsupported data type...");
- }
- } catch (Exception e) {
- logger.error("Error while removing scheduling data..", e);
- throw new RegistryException(e);
- }
- }
-
- public void removeInputDataHandling(RegistryModelType dataType, String id) throws RegistryException {
- try {
- switch (dataType) {
- case EXPERIMENT:
- Experiment experiment = experimentDao.getExperiment(id);
- experiment.getUserConfigurationData().setAdvanceInputDataHandling(null);
- experimentDao.updateExperiment(experiment);
- break;
- case TASK_DETAIL:
- TaskDetails taskDetails = experimentDao.getTaskDetail(id);
- taskDetails.setAdvancedInputDataHandling(null);
- experimentDao.updateTaskDetail(taskDetails);
- break;
- default:
- logger.error("Unsupported data type...");
- }
- } catch (Exception e) {
- logger.error("Error while removing input data handling..", e);
- throw new RegistryException(e);
- }
- }
-
- public void removeOutputDataHandling(RegistryModelType dataType, String id) throws RegistryException {
- try {
- switch (dataType) {
- case EXPERIMENT:
- Experiment experiment = experimentDao.getExperiment(id);
- experiment.getUserConfigurationData().setAdvanceOutputDataHandling(null);
- experimentDao.updateExperiment(experiment);
- break;
- case TASK_DETAIL:
- TaskDetails taskDetails = experimentDao.getTaskDetail(id);
- taskDetails.setAdvancedOutputDataHandling(null);
- experimentDao.updateTaskDetail(taskDetails);
- break;
- default:
- logger.error("Unsupported data type...");
- }
- } catch (Exception e) {
- logger.error("Error while removing output data handling..", e);
- throw new RegistryException(e);
- }
- }
-
- public void removeQOSParams(RegistryModelType dataType, String id) throws RegistryException {
- try {
- switch (dataType) {
- case EXPERIMENT:
- Experiment experiment = experimentDao.getExperiment(id);
- experiment.getUserConfigurationData().setQosParams(null);
- experimentDao.updateExperiment(experiment);
- break;
- default:
- logger.error("Unsupported data type...");
- }
- } catch (Exception e) {
- logger.error("Error while removing QOS params", e);
- throw new RegistryException(e);
- }
- }
-
- public boolean isExperimentExist(String expID) throws RegistryException {
- try {
- return experimentDao.getExperiment(expID) != null;
- } catch (Exception e) {
- logger.error("Error while retrieving experiment...", e);
- throw new RegistryException(e);
- }
- }
-
- public boolean isExperimentConfigDataExist(String expID) throws RegistryException {
- try {
- return experimentDao.getExperiment(expID).getUserConfigurationData() != null;
- } catch (Exception e) {
- logger.error("Error while retrieving experiment...", e);
- throw new RegistryException(e);
- }
- }
-
- public boolean isWFNodeExist(String nodeId) throws RegistryException {
- try {
- return experimentDao.getWFNode(nodeId) != null;
- } catch (Exception e) {
- logger.error("Error while retrieving workflow...", e);
- throw new RegistryException(e);
- }
- }
-
- public boolean isTaskDetailExist(String taskId) throws RegistryException {
- try {
- return experimentDao.getTaskDetail(taskId) != null;
- } catch (Exception e) {
- logger.error("Error while retrieving task.....", e);
- throw new RegistryException(e);
- }
- }
-
- public boolean isJobDetailExist(CompositeIdentifier ids) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) ids.getTopLevelIdentifier());
- for (JobDetails jobDetails : taskDetails.getJobDetailsList()) {
- if (jobDetails.getJobId().equals(ids.getSecondLevelIdentifier())) {
- return true;
- }
- }
- return false;
- } catch (Exception e) {
- logger.error("Error while retrieving job details.....", e);
- throw new RegistryException(e);
- }
- }
-
- public boolean isTransferDetailExist(CompositeIdentifier cid) throws RegistryException {
- try {
- TaskDetails taskDetails = experimentDao.getTaskDetail((String) cid.getTopLevelIdentifier());
- for (DataTransferDetails dtd : taskDetails.getDataTransferDetailsList()) {
- if (dtd.getTransferId().equals(cid.getSecondLevelIdentifier())) {
- return true;
- }
- }
- return false;
- } catch (Exception e) {
- logger.error("Error while retrieving transfer details.....", e);
- throw new RegistryException(e);
- }
- }
-
- public boolean isComputationalSchedulingExist(RegistryModelType dataType, String id) throws RegistryException {
- try {
- Experiment experiment;
- switch (dataType) {
- case EXPERIMENT:
- experiment = experimentDao.getExperiment(id);
- return experiment.getUserConfigurationData().getComputationalResourceScheduling() != null;
- case TASK_DETAIL:
- TaskDetails taskDetails = experimentDao.getTaskDetail(id);
- return taskDetails.getTaskScheduling() != null;
- default:
- logger.error("Unsupported data type...");
- }
- } catch (Exception e) {
- logger.error("Error while retrieving scheduling data.....", e);
- throw new RegistryException(e);
- }
- return false;
- }
-
- public boolean isInputDataHandlingExist(RegistryModelType dataType, String id) throws RegistryException {
- try {
- Experiment experiment;
- switch (dataType) {
- case EXPERIMENT:
- experiment = experimentDao.getExperiment(id);
- return experiment.getUserConfigurationData().getAdvanceInputDataHandling() != null;
- case TASK_DETAIL:
- TaskDetails taskDetails = experimentDao.getTaskDetail(id);
- return taskDetails.getAdvancedInputDataHandling() != null;
- default:
- logger.error("Unsupported data type...");
- }
- } catch (Exception e) {
- logger.error("Error while retrieving input data handling.....", e);
- throw new RegistryException(e);
- }
- return false;
- }
-
- public boolean isOutputDataHandlingExist(RegistryModelType dataType, String id) throws RegistryException {
- try {
- Experiment experiment;
- switch (dataType) {
- case EXPERIMENT:
- experiment = experimentDao.getExperiment(id);
- return experiment.getUserConfigurationData().getAdvanceOutputDataHandling() != null;
- case TASK_DETAIL:
- TaskDetails taskDetails = experimentDao.getTaskDetail(id);
- return taskDetails.getAdvancedOutputDataHandling() != null;
- default:
- logger.error("Unsupported data type...");
- }
- } catch (Exception e) {
- logger.error("Error while retrieving output data handling..", e);
- throw new RegistryException(e);
- }
- return false;
- }
-
- public boolean isQOSParamsExist(RegistryModelType dataType, String id) throws RegistryException {
- try {
- Experiment experiment;
- switch (dataType) {
- case EXPERIMENT:
- experiment = experimentDao.getExperiment(id);
- return experiment.getUserConfigurationData().getQosParams() != null;
- default:
- logger.error("Unsupported data type...");
- }
- } catch (Exception e) {
- logger.error("Error while retrieving qos params..", e);
- throw new RegistryException(e);
- }
- return false;
- }
-
- public void updateScheduling(ComputationalResourceScheduling scheduling, String id, String type) throws RegistryException {
- try {
- if (type.equals(RegistryModelType.EXPERIMENT.toString())) {
- Experiment experiment = experimentDao.getExperiment(id);
- experiment.getUserConfigurationData().setComputationalResourceScheduling(scheduling);
- experimentDao.updateExperiment(experiment);
- return;
- } else if (type.equals(RegistryModelType.TASK_DETAIL.toString())) {
- TaskDetails taskDetails = experimentDao.getTaskDetail(id);
- taskDetails.setTaskScheduling(scheduling);
- experimentDao.updateTaskDetail(taskDetails);
- return;
- }
- } catch (Exception e) {
- logger.error("Error while updating scheduling..", e);
- throw new RegistryException(e);
- }
- }
-
- public void updateInputDataHandling(AdvancedInputDataHandling dataHandling, String id, String type) throws RegistryException {
- try {
- if (type.equals(RegistryModelType.EXPERIMENT.toString())) {
- Experiment experiment = experimentDao.getExperiment(id);
- experiment.getUserConfigurationData().setAdvanceInputDataHandling(dataHandling);
- experimentDao.updateExperiment(experiment);
- return;
- } else if (type.equals(RegistryModelType.TASK_DETAIL.toString())) {
- TaskDetails taskDetails = experimentDao.getTaskDetail(id);
- taskDetails.setAdvancedInputDataHandling(dataHandling);
- experimentDao.updateTaskDetail(taskDetails);
- return;
- }
- } catch (Exception e) {
- logger.error("Error while updating input data handling..", e);
- throw new RegistryException(e);
- }
- }
-
- public void updateOutputDataHandling(AdvancedOutputDataHandling dataHandling, String id, String type) throws RegistryException {
- try {
- if (type.equals(RegistryModelType.EXPERIMENT.toString())) {
- Experiment experiment = experimentDao.getExperiment(id);
- experiment.getUserConfigurationData().setAdvanceOutputDataHandling(dataHandling);
- experimentDao.updateExperiment(experiment);
- return;
- } else if (type.equals(RegistryModelType.TASK_DETAIL.toString())) {
- TaskDetails taskDetails = experimentDao.getTaskDetail(id);
- taskDetails.setAdvancedOutputDataHandling(dataHandling);
- experimentDao.updateTaskDetail(taskDetails);
- return;
- }
- } catch (Exception e) {
- logger.error("Error while updating output data handling", e);
- throw new RegistryException(e);
- }
- }
-
- public void updateQOSParams(QualityOfServiceParams params, String id, String type) throws RegistryException {
- try {
- if (type.equals(RegistryModelType.EXPERIMENT.toString())) {
- Experiment experiment = experimentDao.getExperiment(id);
- experiment.getUserConfigurationData().setQosParams(params);
- experimentDao.updateExperiment(experiment);
- } else {
- logger.error("Unsupported data type... " + type);
- }
- } catch (Exception e) {
- logger.error("Error while updating QOS data..", e);
- throw new RegistryException(e);
- }
- }
-
- /**
- * To search the experiments of user with the given filter criteria and retrieve the results with
- * pagination support. Results can be ordered based on an identifier (i.e column) either ASC or
- * DESC.
- *
- * @param filters
- * @param limit
- * @param offset
- * @param orderByIdentifier
- * @param resultOrderType
- * @return
- * @throws RegistryException
- */
- public List<ExperimentSummary> searchExperiments(Map<String, String> filters, int limit,
- int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
- List<Experiment> experimentList = experimentDao.searchExperiments(
- filters, limit, offset, orderByIdentifier, resultOrderType);
- List<ExperimentSummary> experimentSummaries = new ArrayList();
- experimentList.stream().forEach(experiment->{
- ExperimentSummary expSummary = new ExperimentSummary();
- expSummary.setExperimentId(experiment.getExperimentId());
- expSummary.setProjectId(experiment.getProjectId());
- expSummary.setName(experiment.getName());
- expSummary.setDescription(experiment.getDescription());
- expSummary.setUserName(experiment.getUserName());
- expSummary.setCreationTime(experiment.getCreationTime());
- expSummary.setApplicationId(experiment.getApplicationId());
- expSummary.setExperimentStatus(experiment.getExperimentStatus());
- expSummary.setErrors(experiment.getErrors());
- experimentSummaries.add(expSummary);
- });
- return experimentSummaries;
- }
-
- private boolean isValidStatusTransition(ExperimentState oldState, ExperimentState nextState) {
- if (nextState == null) {
- return false;
- }
- switch (oldState) {
- case CREATED:
- return true;
- case VALIDATED:
- return nextState != ExperimentState.CREATED;
- case SCHEDULED:
- return nextState != ExperimentState.CREATED
- || nextState != ExperimentState.VALIDATED;
- case LAUNCHED:
- return nextState != ExperimentState.CREATED
- || nextState != ExperimentState.VALIDATED
- || nextState != ExperimentState.SCHEDULED;
- case EXECUTING:
- return nextState != ExperimentState.CREATED
- || nextState != ExperimentState.VALIDATED
- || nextState != ExperimentState.SCHEDULED
- || nextState != ExperimentState.LAUNCHED;
-
- case CANCELING:
- return nextState == ExperimentState.CANCELING
- || nextState == ExperimentState.CANCELED
- || nextState == ExperimentState.COMPLETED
- || nextState == ExperimentState.FAILED;
- case CANCELED:
- return nextState == ExperimentState.CANCELED;
- case COMPLETED:
- return nextState == ExperimentState.COMPLETED;
- case FAILED:
- return nextState == ExperimentState.FAILED;
- //case SUSPENDED: // We don't change state to SUSPEND
- case UNKNOWN:
- return true;
- default:
- return false;
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata/blob/801489bf/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/GatewayRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/GatewayRegistry.java b/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/GatewayRegistry.java
deleted file mode 100644
index d38b5df..0000000
--- a/modules/registry/airavata-mongo-registry/src/main/java/org/apache/airavata/persistance/registry/jpa/impl/GatewayRegistry.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- *
- * 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.persistance.registry.jpa.impl;
-
-import org.apache.airavata.common.exception.ApplicationSettingsException;
-import org.apache.airavata.common.utils.ServerSettings;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.persistance.registry.jpa.Resource;
-import org.apache.airavata.persistance.registry.jpa.ResourceUtils;
-import org.apache.airavata.persistance.registry.jpa.resources.GatewayResource;
-import org.apache.airavata.persistance.registry.jpa.utils.ThriftDataModelConversion;
-import org.apache.airavata.registry.cpi.RegistryException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class GatewayRegistry {
-
- private final static Logger logger = LoggerFactory.getLogger(GatewayRegistry.class);
- public GatewayResource getDefaultGateway () throws ApplicationSettingsException, RegistryException {
- return (GatewayResource)ResourceUtils.getGateway(ServerSettings.getDefaultUserGateway());
- }
-
- public GatewayResource getExistingGateway (String gatewayName) throws RegistryException {
- return (GatewayResource)ResourceUtils.getGateway(gatewayName);
- }
-
- public String addGateway (Gateway gateway) throws RegistryException{
- try {
- GatewayResource resource = (GatewayResource)ResourceUtils.createGateway(gateway.getGatewayId());
- resource.setGatewayName(gateway.getGatewayName());
- resource.setEmailAddress(gateway.getEmailAddress());
- resource.setDomain(gateway.getDomain());
- resource.save();
- return gateway.getGatewayId();
- }catch (RegistryException e){
- logger.error("Error while saving gateway to registry", e);
- throw new RegistryException(e);
- }
- }
-
- public void updateGateway (String gatewayId, Gateway updatedGateway) throws RegistryException{
- try {
- GatewayResource existingGateway = (GatewayResource)ResourceUtils.getGateway(gatewayId);
- existingGateway.setGatewayName(updatedGateway.getGatewayName());
- existingGateway.setEmailAddress(updatedGateway.getEmailAddress());
- existingGateway.setDomain(updatedGateway.getDomain());
- existingGateway.save();
- }catch (RegistryException e){
- logger.error("Error while updating gateway to registry", e);
- throw new RegistryException(e);
- }
- }
-
- public Gateway getGateway (String gatewayId) throws RegistryException{
- try {
- GatewayResource resource = (GatewayResource)ResourceUtils.getGateway(gatewayId);
- return ThriftDataModelConversion.getGateway(resource);
- }catch (RegistryException e){
- logger.error("Error while getting gateway", e);
- throw new RegistryException(e);
- }
- }
-
- public boolean isGatewayExist (String gatewayId) throws RegistryException{
- try {
- return ResourceUtils.isGatewayExist(gatewayId);
- }catch (RegistryException e){
- logger.error("Error while checking gateway exists", e);
- throw new RegistryException(e);
- }
- }
-
- public boolean removeGateway (String gatewayId) throws RegistryException{
- try {
- return ResourceUtils.removeGateway(gatewayId);
- }catch (Exception e){
- logger.error("Error while removing the gateway", e);
- throw new RegistryException(e);
- }
- }
-
- public List<Gateway> getAllGateways () throws RegistryException {
- List<Gateway> gatewayList = new ArrayList<Gateway>();
- try {
- List<Resource> allGateways = ResourceUtils.getAllGateways();
- return ThriftDataModelConversion.getAllGateways(allGateways);
- }catch (Exception e){
- logger.error("Error while getting all the gateways", e);
- throw new RegistryException(e);
- }
- }
-
-}