Repository: airavata Updated Branches: refs/heads/orchestratorTaskBreakdown 6b06c4ed3 -> 629306941
http://git-wip-us.apache.org/repos/asf/airavata/blob/62930694/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java ---------------------------------------------------------------------- diff --git a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java index 4e8004b..7d158fd 100644 --- a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java +++ b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java @@ -137,11 +137,17 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface { public boolean launchExperiment(String experimentId, String gatewayId) throws TException { ExperimentModel experiment = null; try { + List<ProcessModel> processes = orchestrator.createProcesses(experimentId); experiment = (ExperimentModel) experimentCatalog.get(ExperimentCatalogModelType.EXPERIMENT, experimentId); if (experiment == null) { log.error(experimentId, "Error retrieving the Experiment by the given experimentID: {} ", experimentId); return false; } + + if (!validateProcess(experimentId, processes)) { + log.error("Validating process fails for given experiment Id : {}", experimentId); + return false; + } ComputeResourcePreference computeResourcePreference = appCatalog.getGatewayProfile().getComputeResourcePreference(gatewayId, experiment.getUserConfigurationData().getComputationalResourceScheduling().getResourceHostId()); String token = computeResourcePreference.getResourceSpecificCredentialStoreToken(); if (token == null || token.isEmpty()){ @@ -196,13 +202,8 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface { */ public boolean validateExperiment(String experimentId) throws TException, LaunchValidationException { try { - List<ProcessModel> processes = orchestrator.createProcesses(experimentId); ExperimentModel experimentModel = (ExperimentModel)experimentCatalog.get(ExperimentCatalogModelType.EXPERIMENT, experimentId); - if (processes != null && !processes.isEmpty()){ - for (ProcessModel process : processes) { - return orchestrator.validateExperiment(experimentModel,process).isSetValidationState(); - } - } + return orchestrator.validateExperiment(experimentModel).isValidationState(); } catch (OrchestratorException e) { log.error(experimentId, "Error while validating experiment", e); throw new TException(e); @@ -210,9 +211,28 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface { log.error(experimentId, "Error while validating experiment", e); throw new TException(e); } - return false; } + @Override + public boolean validateProcess(String experimentId, List<ProcessModel> processes) throws LaunchValidationException, TException { + try { + ExperimentModel experimentModel = (ExperimentModel)experimentCatalog.get(ExperimentCatalogModelType.EXPERIMENT, experimentId); + for (ProcessModel processModel : processes){ + boolean state = orchestrator.validateProcess(experimentModel, processModel).isSetValidationState(); + if (!state){ + return false; + } + } + return true; + } catch (OrchestratorException e) { + log.error(experimentId, "Error while validating process", e); + throw new TException(e); + } catch (RegistryException e) { + log.error(experimentId, "Error while validating process", e); + throw new TException(e); + } + } + /** * This can be used to cancel a running experiment and store the status to * terminated in registry http://git-wip-us.apache.org/repos/asf/airavata/blob/62930694/thrift-interface-descriptions/orchestrator-cpi/orchestrator.cpi.service.thrift ---------------------------------------------------------------------- diff --git a/thrift-interface-descriptions/orchestrator-cpi/orchestrator.cpi.service.thrift b/thrift-interface-descriptions/orchestrator-cpi/orchestrator.cpi.service.thrift index 257f391..94ccec9 100644 --- a/thrift-interface-descriptions/orchestrator-cpi/orchestrator.cpi.service.thrift +++ b/thrift-interface-descriptions/orchestrator-cpi/orchestrator.cpi.service.thrift @@ -24,6 +24,7 @@ */ include "../airavata-api/airavata_errors.thrift" +include "../airavata-api/process_model.thrift" namespace java org.apache.airavata.orchestrator.cpi const string ORCHESTRATOR_CPI_VERSION = "0.16.0" @@ -64,8 +65,9 @@ service OrchestratorService { * @return sucess/failure * **/ - bool validateExperiment(1: required string experimentId) - throws (1: airavata_errors.LaunchValidationException lve) + bool validateExperiment(1: required string experimentId) throws (1: airavata_errors.LaunchValidationException lve) + + bool validateProcess(1: required string experimentId, 2: required list<process_model.ProcessModel> processes) throws (1: airavata_errors.LaunchValidationException lve) /** * * Terminate the running experiment.
