You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by is...@apache.org on 2021/07/08 00:36:44 UTC

[airavata-data-lake] branch master updated: Add resourcePath, storage for fetch resource backend

This is an automated email from the ASF dual-hosted git repository.

isjarana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-data-lake.git


The following commit(s) were added to refs/heads/master by this push:
     new a5ed5e1  Add resourcePath, storage for fetch resource backend
     new 07909e5  Merge pull request #18 from isururanawaka/workflow_invocation
a5ed5e1 is described below

commit a5ed5e13734afaffb4b1e4d4caedcc9ddb7e4894
Author: Isuru Ranawaka <ir...@gmail.com>
AuthorDate: Wed Jul 7 20:35:36 2021 -0400

    Add resourcePath, storage for fetch resource backend
---
 .../drms/api/handlers/ResourceServiceHandler.java  | 24 +++++++++++++++++++++-
 .../deserializer/GenericResourceDeserializer.java  |  3 +++
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/data-resource-management-service/drms-api/src/main/java/org/apache/airavata/drms/api/handlers/ResourceServiceHandler.java b/data-resource-management-service/drms-api/src/main/java/org/apache/airavata/drms/api/handlers/ResourceServiceHandler.java
index 9201ead..b2f2ccb 100644
--- a/data-resource-management-service/drms-api/src/main/java/org/apache/airavata/drms/api/handlers/ResourceServiceHandler.java
+++ b/data-resource-management-service/drms-api/src/main/java/org/apache/airavata/drms/api/handlers/ResourceServiceHandler.java
@@ -30,6 +30,7 @@ import org.apache.airavata.drms.api.utils.Utils;
 import org.apache.airavata.drms.core.Neo4JConnector;
 import org.apache.airavata.drms.core.constants.StoragePreferenceConstants;
 import org.apache.airavata.drms.core.deserializer.GenericResourceDeserializer;
+import org.apache.airavata.drms.core.deserializer.TransferMappingDeserializer;
 import org.apache.airavata.drms.core.serializer.GenericResourceSerializer;
 import org.apache.custos.clients.CustosClientProvider;
 import org.apache.custos.sharing.service.Entity;
@@ -89,7 +90,28 @@ public class ResourceServiceHandler extends ResourceServiceGrpc.ResourceServiceI
                 List<GenericResource> genericResourceList = GenericResourceDeserializer.deserializeList(records);
                 ResourceFetchResponse.Builder builder = ResourceFetchResponse.newBuilder();
                 if (!genericResourceList.isEmpty()) {
-                    builder.setResource(genericResourceList.get(0));
+                     // TODO: Move to Storage
+                    String searchQuery = "Match (srcStr:Storage)<-[:CHILD_OF]-" +
+                            "(srcSp:StoragePreference)-[:TRANSFER_OUT]->(t:TransferMapping" +
+                            "{scope:'GLOBAL', tenantId:$tenantId})-[:TRANSFER_IN]->(dstSp:StoragePreference)-[:CHILD_OF]->(dstStr:Storage)" +
+                            " return srcStr, srcSp, dstStr, dstSp, t";
+
+                    List<Record> globalRecords = this.neo4JConnector.searchNodes(userProps, searchQuery);
+
+                    if (!globalRecords.isEmpty()) {
+                        List<TransferMapping> transferMappings = TransferMappingDeserializer.deserializeList(globalRecords);
+                        if (!transferMappings.isEmpty()) {
+                            AnyStoragePreference anyStoragePreference = transferMappings.get(0)
+                                    .getSourceStoragePreference();
+                            GenericResource resource = genericResourceList.get(0)
+                                    .toBuilder()
+                                    .setSshPreference(anyStoragePreference.getSshStoragePreference())
+                                    .build();
+                            builder.setResource(resource);
+                        } else {
+                            builder.setResource(genericResourceList.get(0));
+                        }
+                    }
                 }
                 responseObserver.onNext(builder.build());
                 responseObserver.onCompleted();
diff --git a/data-resource-management-service/drms-core/src/main/java/org/apache/airavata/drms/core/deserializer/GenericResourceDeserializer.java b/data-resource-management-service/drms-core/src/main/java/org/apache/airavata/drms/core/deserializer/GenericResourceDeserializer.java
index c8d8e05..265f0a4 100644
--- a/data-resource-management-service/drms-core/src/main/java/org/apache/airavata/drms/core/deserializer/GenericResourceDeserializer.java
+++ b/data-resource-management-service/drms-core/src/main/java/org/apache/airavata/drms/core/deserializer/GenericResourceDeserializer.java
@@ -69,6 +69,9 @@ public class GenericResourceDeserializer {
                 if (field.equals("resourceName") || field.equals("name")) {
                     genericResourceBuilder.setResourceName(String.valueOf(node.asMap().get(field)));
                 }
+                if (field.equals("resourcePath")) {
+                    genericResourceBuilder.setResourcePath(String.valueOf(node.asMap().get(field)));
+                }
             }
             return genericResourceBuilder.build();
         }).collect(Collectors.toList());