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