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

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


The following commit(s) were added to refs/heads/master by this push:
     new 06a2eb3  Removing ambiguity in metadata fetching at API level
06a2eb3 is described below

commit 06a2eb3e5588d2829fae81c58cdf75b69b0c8733
Author: Dimuthu Wannipurage <[email protected]>
AuthorDate: Mon Dec 12 03:58:11 2022 -0500

    Removing ambiguity in metadata fetching at API level
---
 .../apache/airavata/mft/agent/rpc/RPCParser.java   | 131 +++++----------------
 agent/stub/src/main/proto/MFTAgentStubs.proto      |   7 --
 .../airavata/mft/api/handler/MFTApiHandler.java    |  91 ++++----------
 api/stub/pom.xml                                   |  25 ++++
 api/stub/src/main/proto/MFTTransferApi.proto       |  48 ++------
 5 files changed, 91 insertions(+), 211 deletions(-)

diff --git 
a/agent/service/src/main/java/org/apache/airavata/mft/agent/rpc/RPCParser.java 
b/agent/service/src/main/java/org/apache/airavata/mft/agent/rpc/RPCParser.java
index 36adad7..31a54dc 100644
--- 
a/agent/service/src/main/java/org/apache/airavata/mft/agent/rpc/RPCParser.java
+++ 
b/agent/service/src/main/java/org/apache/airavata/mft/agent/rpc/RPCParser.java
@@ -22,20 +22,11 @@ import com.google.protobuf.util.JsonFormat;
 import org.apache.airavata.mft.admin.ControllerRequestBuilder;
 import org.apache.airavata.mft.admin.models.rpc.SyncRPCRequest;
 import org.apache.airavata.mft.admin.models.rpc.SyncRPCResponse;
-import org.apache.airavata.mft.agent.http.AgentHttpDownloadData;
 import org.apache.airavata.mft.agent.http.HttpTransferRequestsStore;
 import org.apache.airavata.mft.agent.stub.*;
-import org.apache.airavata.mft.common.AuthToken;
-import org.apache.airavata.mft.core.ConnectorResolver;
 import org.apache.airavata.mft.core.MetadataCollectorResolver;
-import org.apache.airavata.mft.core.api.ConnectorConfig;
-import org.apache.airavata.mft.core.api.IncomingChunkedConnector;
-import org.apache.airavata.mft.core.api.IncomingStreamingConnector;
 import org.apache.airavata.mft.core.api.MetadataCollector;
 import org.apache.airavata.mft.resource.client.StorageServiceClient;
-import 
org.apache.airavata.mft.resource.stubs.storage.common.StorageTypeResolveRequest;
-import 
org.apache.airavata.mft.resource.stubs.storage.common.StorageTypeResolveResponse;
-import org.apache.commons.lang3.tuple.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -64,101 +55,39 @@ public class RPCParser {
         logger.info("Accepting sync request {} for method {}", 
request.getRequestId(), request.getMethod());
 
         switch (request.getMethod()) {
-            case "getFileResourceMetadata":
-                String resourcePath = 
request.getParameters().get("resourcePath");
-                String storageId = request.getParameters().get("storageId");
-                String resourceToken = 
request.getParameters().get("resourceToken");
-
-                AuthToken.Builder tokenBuilder = AuthToken.newBuilder();
-                
JsonFormat.parser().merge(request.getParameters().get("mftAuthorizationToken"), 
tokenBuilder);
-                AuthToken mftAuthorizationToken = tokenBuilder.build();
-
-                StorageTypeResolveResponse storageType = 
storageServiceClient.common()
-                        
.resolveStorageType(StorageTypeResolveRequest.newBuilder().setStorageId(storageId).build());
-
-                Optional<MetadataCollector> metadataCollectorOp = 
MetadataCollectorResolver
-                        
.resolveMetadataCollector(storageType.getStorageType());
-
-                if (metadataCollectorOp.isPresent()) {
-                    MetadataCollector metadataCollector = 
metadataCollectorOp.get();
-
-                    Pair<StorageWrapper, SecretWrapper> credentials = 
controllerRequestBuilder.createCredentials(storageId, resourceToken);
-                    metadataCollector.init(credentials.getLeft() , 
credentials.getRight());
-                    FileMetadata fileResourceMetadata = 
metadataCollector.getResourceMetadata(resourcePath).getFile();
-                    return mapper.writeValueAsString(fileResourceMetadata);
-                }
-                break;
-
-
-            case "getDirectoryResourceMetadata":
-                resourcePath = request.getParameters().get("resourcePath");
-                storageId = request.getParameters().get("storageId");
-                resourceToken = request.getParameters().get("resourceToken");
-
-                tokenBuilder = AuthToken.newBuilder();
-                
JsonFormat.parser().merge(request.getParameters().get("mftAuthorizationToken"), 
tokenBuilder);
-                mftAuthorizationToken = tokenBuilder.build();
-
-                storageType = storageServiceClient.common()
-                        
.resolveStorageType(StorageTypeResolveRequest.newBuilder().setStorageId(storageId).build());
-
-                metadataCollectorOp = 
MetadataCollectorResolver.resolveMetadataCollector(storageType.getStorageType());
-                if (metadataCollectorOp.isPresent()) {
-                    MetadataCollector metadataCollector = 
metadataCollectorOp.get();
-
-                    Pair<StorageWrapper, SecretWrapper> credentials = 
controllerRequestBuilder.createCredentials(storageId, resourceToken);
-                    metadataCollector.init(credentials.getLeft() , 
credentials.getRight());
-
-                    DirectoryMetadata dirResourceMetadata = metadataCollector
-                            .getResourceMetadata(resourcePath).getDirectory();
-                    return mapper.writeValueAsString(dirResourceMetadata);
+            case "getResourceMetadata":
+                String requestStr = request.getParameters().get("request");
+
+                GetResourceMetadataRequest.Builder directResourceMetadataReq = 
GetResourceMetadataRequest.newBuilder();
+                GetResourceMetadataRequest req = 
directResourceMetadataReq.build();
+                JsonFormat.parser().merge(requestStr, 
directResourceMetadataReq);
+
+                Optional<MetadataCollector> metadataCollectorOptional = 
MetadataCollectorResolver.resolveMetadataCollector(req.getStorage().getStorageCase().name());
+                if (metadataCollectorOptional.isPresent()) {
+                    MetadataCollector metadataCollector = 
metadataCollectorOptional.get();
+                    metadataCollector.init(req.getStorage(), req.getSecret());
+                    ResourceMetadata resourceMetadata = 
metadataCollector.getResourceMetadata(req.getResourcePath());
+                    return JsonFormat.printer().print(resourceMetadata);
+                } else {
+                    throw new Exception("No metadata collector for type " + 
req.getStorage().getStorageCase().name());
                 }
-                break;
-
-            case "submitHttpDownload":
-                resourcePath = request.getParameters().get("resourcePath");
-                String sourceStorageId = 
request.getParameters().get("sourceStorageId");
-                String sourceToken = 
request.getParameters().get("sourceToken");
-
-                tokenBuilder = AuthToken.newBuilder();
-                
JsonFormat.parser().merge(request.getParameters().get("mftAuthorizationToken"), 
tokenBuilder);
-                mftAuthorizationToken = tokenBuilder.build();
-
-                storageType = storageServiceClient.common()
-                        
.resolveStorageType(StorageTypeResolveRequest.newBuilder().setStorageId(sourceStorageId).build());
-
-                metadataCollectorOp = 
MetadataCollectorResolver.resolveMetadataCollector(storageType.getStorageType());
-                Optional<IncomingStreamingConnector> connectorStreamingOp = 
ConnectorResolver.resolveIncomingStreamingConnector(storageType.getStorageType());
-                Optional<IncomingChunkedConnector> connectorChunkedOp = 
ConnectorResolver.resolveIncomingChunkedConnector(storageType.getStorageType());
-
-                if (metadataCollectorOp.isPresent() && 
(connectorStreamingOp.isPresent() || connectorChunkedOp.isPresent())) {
-
-                    MetadataCollector metadataCollector = 
metadataCollectorOp.get();
-
-                    Pair<StorageWrapper, SecretWrapper> credentials = 
controllerRequestBuilder.createCredentials(sourceStorageId, sourceToken);
-                    metadataCollector.init(credentials.getLeft() , 
credentials.getRight());
-
-                    ResourceMetadata resourceMetadata = 
metadataCollector.getResourceMetadata(resourcePath);
-
-                    AgentHttpDownloadData.AgentHttpDownloadDataBuilder 
agentHttpDownloadDataBuilder = 
AgentHttpDownloadData.AgentHttpDownloadDataBuilder.newBuilder()
-                            
.withConnectorConfig(ConnectorConfig.ConnectorConfigBuilder.newBuilder()
-                                    .withStorage(credentials.getLeft())
-                                    .withSecret(credentials.getRight())
-                                    .withResourcePath(resourcePath)
-                                    .withMetadata(resourceMetadata).build());
-
-                    
connectorStreamingOp.ifPresent(agentHttpDownloadDataBuilder::withIncomingStreamingConnector);
-                    
connectorChunkedOp.ifPresent(agentHttpDownloadDataBuilder::withIncomingChunkedConnector);
-
-                    AgentHttpDownloadData downloadData = 
agentHttpDownloadDataBuilder.build();
-
-                    String url = 
httpTransferRequestsStore.addDownloadRequest(downloadData);
-
-                    return (agentAdvertisedUrl.endsWith("/")? 
agentAdvertisedUrl : agentAdvertisedUrl + "/") + url;
+            case "getResourceAvailability":
+               requestStr = request.getParameters().get("request");
+
+                directResourceMetadataReq = 
GetResourceMetadataRequest.newBuilder();
+                req = directResourceMetadataReq.build();
+                JsonFormat.parser().merge(requestStr, 
directResourceMetadataReq);
+
+                metadataCollectorOptional = 
MetadataCollectorResolver.resolveMetadataCollector(req.getStorage().getStorageCase().name());
+                if (metadataCollectorOptional.isPresent()) {
+                    MetadataCollector metadataCollector = 
metadataCollectorOptional.get();
+                    metadataCollector.init(req.getStorage(), req.getSecret());
+                    Boolean available = 
metadataCollector.isAvailable(req.getResourcePath());
+                    return available.toString();
                 } else {
-                    logger.error("Medata collector or connector is not 
available for store type {}", storageType.getStorageType());
-                    throw new Exception("Medata collector or connector is not 
available for store type " + storageType.getStorageType());
+                    throw new Exception("No metadata collector for type " + 
req.getStorage().getStorageCase().name());
                 }
+
         }
         logger.error("Unknown method type specified {}", request.getMethod());
         throw new Exception("Unknown method " + request.getMethod());
diff --git a/agent/stub/src/main/proto/MFTAgentStubs.proto 
b/agent/stub/src/main/proto/MFTAgentStubs.proto
index 0ea914a..d040981 100644
--- a/agent/stub/src/main/proto/MFTAgentStubs.proto
+++ b/agent/stub/src/main/proto/MFTAgentStubs.proto
@@ -70,13 +70,6 @@ message SecretWrapper {
     }
 }
 
-message FileResourceMetadataGetRequest {
-    string resourcePath = 1;
-    string storageId = 2;
-    string resourceToken = 3;
-    string mftAuthorizationToken = 4;
-}
-
 message AgentTransferRequest {
     StorageWrapper sourceStorage = 1;
     SecretWrapper sourceSecret = 2;
diff --git 
a/api/service/src/main/java/org/apache/airavata/mft/api/handler/MFTApiHandler.java
 
b/api/service/src/main/java/org/apache/airavata/mft/api/handler/MFTApiHandler.java
index 4cc5473..fb48787 100644
--- 
a/api/service/src/main/java/org/apache/airavata/mft/api/handler/MFTApiHandler.java
+++ 
b/api/service/src/main/java/org/apache/airavata/mft/api/handler/MFTApiHandler.java
@@ -27,8 +27,7 @@ import org.apache.airavata.mft.admin.models.AgentInfo;
 import org.apache.airavata.mft.admin.models.TransferState;
 import org.apache.airavata.mft.admin.models.rpc.SyncRPCRequest;
 import org.apache.airavata.mft.admin.models.rpc.SyncRPCResponse;
-import org.apache.airavata.mft.agent.stub.DirectoryMetadata;
-import org.apache.airavata.mft.agent.stub.FileMetadata;
+import org.apache.airavata.mft.agent.stub.*;
 import org.apache.airavata.mft.api.service.*;
 import org.apache.commons.lang3.tuple.Pair;
 import org.dozer.DozerBeanMapper;
@@ -247,117 +246,75 @@ public class MFTApiHandler extends 
MFTTransferServiceGrpc.MFTTransferServiceImpl
         }
     }
 
-    /**
-     * Fetches metadata for a specified file resource.  This has 2 modes
-     * 1. Fetch the metadata of the exact file pointed in the resourceId. This 
assumes resourceId is an id of a file resource
-     * 2. Fetch the metadata of a child directory in the parent directory. To 
do this, childPath should be provided explicitly
-     * and resourceId is the parent resource id. Here resource id should be an 
id of directory resource
-     */
     @Override
-    public void getFileResourceMetadata(FetchResourceMetadataRequest request, 
StreamObserver<FileMetadataResponse> responseObserver) {
-
+    public void getResourceAvailability(FetchResourceMetadataRequest request, 
StreamObserver<ResourceAvailabilityResponse> responseObserver) {
+        GetResourceMetadataRequest directRequest = request.getDirectRequest();
         try {
-
-            logger.info("Calling get file resource metadata for resource path 
{}", request.getResourcePath());
-
-            String targetAgent = 
derriveTargetAgent(request.getTargetAgentId());
-
+            String targetAgent = derriveTargetAgent("");
             SyncRPCRequest.SyncRPCRequestBuilder requestBuilder = 
SyncRPCRequest.SyncRPCRequestBuilder.builder()
                     .withAgentId(targetAgent)
                     .withMessageId(UUID.randomUUID().toString())
-                    .withParameter("resourcePath", request.getResourcePath())
-                    .withParameter("storageId", request.getStorageId())
-                    .withParameter("resourceToken", request.getResourceToken())
-                    .withParameter("mftAuthorizationToken", 
JsonFormat.printer().print(request.getMftAuthorizationToken()));
+                    .withParameter("request", 
JsonFormat.printer().print(directRequest));
 
-            requestBuilder.withMethod("getFileResourceMetadata");
+            requestBuilder.withMethod("getResourceAvailability");
 
             SyncRPCResponse rpcResponse = 
agentRPCClient.sendSyncRequest(requestBuilder.build());
 
             switch (rpcResponse.getResponseStatus()) {
                 case SUCCESS:
-                    FileMetadata fileResourceMetadata = 
jsonMapper.readValue(rpcResponse.getResponseAsStr(), FileMetadata.class);
-                    FileMetadataResponse.Builder responseBuilder = 
FileMetadataResponse.newBuilder();
-                    dozerBeanMapper.map(fileResourceMetadata, responseBuilder);
-                    responseObserver.onNext(responseBuilder.build());
+                    Boolean resourceAvailable = 
jsonMapper.readValue(rpcResponse.getResponseAsStr(), Boolean.class);
+                    
responseObserver.onNext(ResourceAvailabilityResponse.newBuilder().setAvailable(resourceAvailable).build());
                     responseObserver.onCompleted();
                     return;
                 case FAIL:
-                    logger.error("Errored while processing the fetch file 
metadata response for resource path {}. Error msg : {}",
-                            request.getResourcePath(), 
rpcResponse.getErrorAsStr());
+                    logger.error("Errored while processing the fetch metadata 
response for resource path {}. Error msg : {}",
+                            directRequest.getResourcePath(), 
rpcResponse.getErrorAsStr());
                     responseObserver.onError(Status.INTERNAL
                             .withDescription("Errored while processing the the 
fetch file metadata response. Error msg : " +
                                     rpcResponse.getErrorAsStr())
                             .asException());
             }
         } catch (Exception e) {
-            logger.error("Error while fetching resource metadata for file 
resource " + request.getResourcePath(), e);
+            logger.error("Error while fetching resource metadata for resource 
path " + directRequest.getResourcePath(), e);
             responseObserver.onError(Status.INTERNAL
                     .withDescription("Failed to fetch file resource metadata. 
" + e.getMessage())
                     .asException());
         }
     }
 
-    /**
-     * Fetches metadata for a specified directory resource. This method 
assumes that the resourceId is an id of
-     * a directory resource. This has 2 modes
-     * 1. Fetch the metadata of the exact directory pointed in the resourceId
-     * 2. Fetch the metadata of a child directory in the parent directory. To 
do this, childPath should be provided explicitly
-     * and resourceId is the parent resource id.
-     */
     @Override
-    public void getDirectoryResourceMetadata(FetchResourceMetadataRequest 
request, StreamObserver<DirectoryMetadataResponse> responseObserver) {
-        try {
-
-            logger.info("Calling get directory metadata for resource path {}", 
request.getResourcePath());
-            String targetAgent = 
derriveTargetAgent(request.getTargetAgentId());
+    public void resourceMetadata(FetchResourceMetadataRequest request, 
StreamObserver<ResourceMetadata> responseObserver) {
 
+        GetResourceMetadataRequest directRequest = request.getDirectRequest();
+        try {
+            String targetAgent = derriveTargetAgent("");
             SyncRPCRequest.SyncRPCRequestBuilder requestBuilder = 
SyncRPCRequest.SyncRPCRequestBuilder.builder()
                     .withAgentId(targetAgent)
                     .withMessageId(UUID.randomUUID().toString())
-                    .withParameter("resourcePath", request.getResourcePath())
-                    .withParameter("storageId", request.getStorageId())
-                    .withParameter("resourceToken", request.getResourceToken())
-                    .withParameter("mftAuthorizationToken", 
JsonFormat.printer().print(request.getMftAuthorizationToken()));
+                    .withParameter("request", 
JsonFormat.printer().print(directRequest));
 
-            requestBuilder.withMethod("getDirectoryResourceMetadata");
+            requestBuilder.withMethod("getResourceMetadata");
 
             SyncRPCResponse rpcResponse = 
agentRPCClient.sendSyncRequest(requestBuilder.build());
 
             switch (rpcResponse.getResponseStatus()) {
                 case SUCCESS:
-                    DirectoryMetadata dirResourceMetadata = 
jsonMapper.readValue(rpcResponse.getResponseAsStr(), DirectoryMetadata.class);
-                    DirectoryMetadataResponse.Builder responseBuilder = 
DirectoryMetadataResponse.newBuilder();
-                    dozerBeanMapper.map(dirResourceMetadata, responseBuilder);
-
-                    // As dozer mapper can't map collections in protobuf, do 
it manually for directories and files
-                    for (DirectoryMetadata dm : 
dirResourceMetadata.getDirectoriesList()) {
-                        DirectoryMetadataResponse.Builder db = 
DirectoryMetadataResponse.newBuilder();
-                        dozerBeanMapper.map(dm, db);
-                        responseBuilder.addDirectories(db);
-                    }
-
-                    for (FileMetadata fm : dirResourceMetadata.getFilesList()) 
{
-                        FileMetadataResponse.Builder fb = 
FileMetadataResponse.newBuilder();
-                        dozerBeanMapper.map(fm, fb);
-                        responseBuilder.addFiles(fb);
-                    }
-
-                    responseObserver.onNext(responseBuilder.build());
+                    ResourceMetadata.Builder resourceMetadataBuilder = 
jsonMapper.readValue(rpcResponse.getResponseAsStr(), 
ResourceMetadata.Builder.class);
+                    responseObserver.onNext(resourceMetadataBuilder.build());
                     responseObserver.onCompleted();
                     return;
                 case FAIL:
-                    logger.error("Errored while processing the fetch directory 
metadata response for resource path {}. Error msg : {}",
-                            request.getResourcePath(), 
rpcResponse.getErrorAsStr());
+                    logger.error("Errored while processing the fetch metadata 
response for resource path {}. Error msg : {}",
+                            directRequest.getResourcePath(), 
rpcResponse.getErrorAsStr());
                     responseObserver.onError(Status.INTERNAL
-                            .withDescription("Errored while processing the the 
fetch directory metadata response. Error msg : " +
+                            .withDescription("Errored while processing the the 
fetch file metadata response. Error msg : " +
                                     rpcResponse.getErrorAsStr())
                             .asException());
             }
         } catch (Exception e) {
-            logger.error("Error while fetching directory resource metadata for 
resource path {}", request.getResourcePath(), e);
+            logger.error("Error while fetching resource metadata for resource 
path " + directRequest.getResourcePath(), e);
             responseObserver.onError(Status.INTERNAL
-                    .withDescription("Failed to fetch directory resource 
metadata. " + e.getMessage())
+                    .withDescription("Failed to fetch file resource metadata. 
" + e.getMessage())
                     .asException());
         }
     }
diff --git a/api/stub/pom.xml b/api/stub/pom.xml
index 48de94d..c6c8e5f 100644
--- a/api/stub/pom.xml
+++ b/api/stub/pom.xml
@@ -38,6 +38,11 @@
             <artifactId>mft-common-proto</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>mft-agent-stub</artifactId>
+            <version>${project.version}</version>
+        </dependency>
     </dependencies>
     <build>
         <extensions>
@@ -58,6 +63,26 @@
                     
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.0.1:exe:${os.detected.classifier}</pluginArtifact>
                     <additionalProtoPathElements>
                         
<additionalProtoPathElement>../../common/mft-common-proto/src/main/proto</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/resource-service/stub/src/main/proto/azure</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/resource-service/stub/src/main/proto/box</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/resource-service/stub/src/main/proto/dropbox</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/resource-service/stub/src/main/proto/ftp</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/resource-service/stub/src/main/proto/gcs</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/resource-service/stub/src/main/proto/local</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/resource-service/stub/src/main/proto/odata</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/resource-service/stub/src/main/proto/s3</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/resource-service/stub/src/main/proto/scp</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/resource-service/stub/src/main/proto/swift</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/secret-service/stub/src/main/proto/azure</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/secret-service/stub/src/main/proto/box</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/secret-service/stub/src/main/proto/dropbox</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/secret-service/stub/src/main/proto/ftp</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/secret-service/stub/src/main/proto/gcs</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/secret-service/stub/src/main/proto/odata</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/secret-service/stub/src/main/proto/s3</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/secret-service/stub/src/main/proto/scp</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../services/secret-service/stub/src/main/proto/swift</additionalProtoPathElement>
+                        
<additionalProtoPathElement>../../agent/stub/src/main/proto</additionalProtoPathElement>
                     </additionalProtoPathElements>
                 </configuration>
                 <executions>
diff --git a/api/stub/src/main/proto/MFTTransferApi.proto 
b/api/stub/src/main/proto/MFTTransferApi.proto
index 13fcf41..4cb5a53 100644
--- a/api/stub/src/main/proto/MFTTransferApi.proto
+++ b/api/stub/src/main/proto/MFTTransferApi.proto
@@ -4,6 +4,7 @@ option java_multiple_files = true;
 package org.apache.airavata.mft.api.service;
 
 import "CredCommon.proto";
+import "MFTAgentStubs.proto";
 
 message CallbackEndpoint {
     enum CallbackType {
@@ -77,46 +78,22 @@ message TransferStateApiResponse {
     string description = 4;
 }
 
-message ResourceAvailabilityRequest {
-    string storageId = 1;
-    string resourcePath = 2;
-    string resourceToken = 4;
-    org.apache.airavata.mft.common.AuthToken mftAuthorizationToken = 7;
-}
-
 message ResourceAvailabilityResponse {
     bool available = 1;
 }
 
-message FileMetadataResponse {
-    string friendlyName = 1;
-    int64 resourceSize = 2;
-    int64 createdTime = 3;
-    int64 updateTime = 4;
-    string md5sum = 5;
-    string resourcePath = 6;
-    string parentResourceId = 7;
-    string parentResourceType = 8;
-}
-
-message DirectoryMetadataResponse {
-    string friendlyName = 1;
-    int64 createdTime = 2;
-    int64 updateTime = 3;
-    string resourcePath = 4;
-    string parentResourceId = 5;
-    string parentResourceType = 6;
-    repeated DirectoryMetadataResponse directories = 7;
-    repeated FileMetadataResponse files = 8;
-    bool lazyInitialized = 9;
+message GetResourceMetadataFromIDsRequest {
+    string resourcePath = 1;
+    string storageId = 2;
+    string secretId = 3;
 }
 
 message FetchResourceMetadataRequest {
-    string resourcePath = 1;
-    string resourceToken = 4;
-    string storageId = 5;
-    string targetAgentId = 7;
-    org.apache.airavata.mft.common.AuthToken mftAuthorizationToken = 9;
+    oneof request {
+        org.apache.airavata.mft.agent.stub.GetResourceMetadataRequest 
directRequest = 1;
+        GetResourceMetadataFromIDsRequest idRequest = 2;
+    }
+    org.apache.airavata.mft.common.AuthToken mftAuthorizationToken = 3;
 }
 
 service  MFTTransferService {
@@ -133,9 +110,8 @@ service  MFTTransferService {
 
     rpc getTransferState(TransferStateApiRequest) returns 
(TransferStateApiResponse);
 
-    rpc getResourceAvailability(ResourceAvailabilityRequest) returns 
(ResourceAvailabilityResponse);
+    rpc getResourceAvailability(FetchResourceMetadataRequest) returns 
(ResourceAvailabilityResponse);
 
-    rpc getFileResourceMetadata(FetchResourceMetadataRequest) returns 
(FileMetadataResponse);
+    rpc resourceMetadata(FetchResourceMetadataRequest) returns 
(org.apache.airavata.mft.agent.stub.ResourceMetadata);
 
-    rpc getDirectoryResourceMetadata(FetchResourceMetadataRequest) returns 
(DirectoryMetadataResponse);
 }
\ No newline at end of file

Reply via email to