You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sh...@apache.org on 2016/07/07 19:30:33 UTC
[47/53] [abbrv] airavata git commit: handling URI_COLLECTION type
when creating process input model
handling URI_COLLECTION type when creating process input model
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/d20f77e4
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/d20f77e4
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/d20f77e4
Branch: refs/heads/master
Commit: d20f77e4b5d3545fe01facbb9b2a3b0f9f6ce16c
Parents: c382ae2
Author: scnakandala <su...@gmail.com>
Authored: Tue Jul 5 18:50:29 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Tue Jul 5 18:50:29 2016 -0400
----------------------------------------------------------------------
.../server/OrchestratorServerHandler.java | 40 +++++++++++++++++---
1 file changed, 35 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/d20f77e4/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 1367e44..60cb7a0 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
@@ -38,6 +38,7 @@ import org.apache.airavata.model.appcatalog.gatewayprofile.ComputeResourcePrefer
import org.apache.airavata.model.appcatalog.gatewayprofile.GatewayResourceProfile;
import org.apache.airavata.model.application.io.DataType;
import org.apache.airavata.model.data.replica.DataProductModel;
+import org.apache.airavata.model.data.replica.DataReplicaLocationModel;
import org.apache.airavata.model.data.replica.ReplicaLocationCategory;
import org.apache.airavata.model.error.LaunchValidationException;
import org.apache.airavata.model.experiment.ExperimentModel;
@@ -59,6 +60,7 @@ import org.apache.airavata.registry.core.app.catalog.resources.AppCatAbstractRes
import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
import org.apache.airavata.registry.core.experiment.catalog.resources.AbstractExpCatResource;
import org.apache.airavata.registry.cpi.*;
+import org.apache.commons.lang.StringUtils;
import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
@@ -168,11 +170,39 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
if (pi.getType().equals(DataType.URI) && pi.getValue().startsWith("airavata-dp://")) {
try {
DataProductModel dataProductModel = replicaCatalog.getDataProduct(pi.getValue());
- dataProductModel.getReplicaLocations().stream().filter(rpModel -> rpModel.getReplicaLocationCategory()
- .equals(ReplicaLocationCategory.GATEWAY_DATA_STORE)).forEach(rpModel -> {
- pi.setValue(rpModel.getFilePath());
- pi.setStorageResourceId(rpModel.getStorageResourceId());
- });
+ Optional<DataReplicaLocationModel> rpLocation = dataProductModel.getReplicaLocations()
+ .stream().filter(rpModel -> rpModel.getReplicaLocationCategory().
+ equals(ReplicaLocationCategory.GATEWAY_DATA_STORE)).findFirst();
+ if (rpLocation.isPresent()) {
+ pi.setValue(rpLocation.get().getFilePath());
+ pi.setStorageResourceId(rpLocation.get().getStorageResourceId());
+ } else {
+ log.error("Could not find a replica for the URI " + pi.getValue());
+ }
+ } catch (ReplicaCatalogException e) {
+ log.error(e.getMessage(), e);
+ }
+ } else if (pi.getType().equals(DataType.URI_COLLECTION) && pi.getValue().contains("airavata-dp://")) {
+ try {
+ String[] uriList = pi.getValue().split(",");
+ final ArrayList<String> filePathList = new ArrayList<>();
+ for (String uri : uriList) {
+ if (uri.startsWith("airavata-dp://")) {
+ DataProductModel dataProductModel = replicaCatalog.getDataProduct(uri);
+ Optional<DataReplicaLocationModel> rpLocation = dataProductModel.getReplicaLocations()
+ .stream().filter(rpModel -> rpModel.getReplicaLocationCategory().
+ equals(ReplicaLocationCategory.GATEWAY_DATA_STORE)).findFirst();
+ if (rpLocation.isPresent()) {
+ filePathList.add(rpLocation.get().getFilePath());
+ } else {
+ log.error("Could not find a replica for the URI " + pi.getValue());
+ }
+ } else {
+ // uri is in file path format
+ filePathList.add(uri);
+ }
+ }
+ pi.setValue(StringUtils.join(filePathList, ','));
} catch (ReplicaCatalogException e) {
log.error(e.getMessage(), e);
}