in agent/service/src/main/java/org/apache/airavata/mft/agent/rpc/RPCParser.java [37:82]
public String resolveRPCRequest(SyncRPCRequest request, TransportClassLoaderCache transportCache) throws Exception {
// TODO implement using the reflection
ObjectMapper mapper = new ObjectMapper();
logger.info("Accepting sync request {} for method {}", request.getRequestId(), request.getMethod());
switch (request.getMethod()) {
case "getResourceMetadata":
String requestStr = request.getParameters().get("request");
GetResourceMetadataRequest.Builder directResourceMetadataReq = GetResourceMetadataRequest.newBuilder();
JsonFormat.parser().merge(requestStr, directResourceMetadataReq);
GetResourceMetadataRequest req = directResourceMetadataReq.build();
Optional<MetadataCollector> metadataCollectorOptional = MetadataCollectorResolver
.resolveMetadataCollector(req.getStorage().getStorageCase().name(), transportCache);
if (metadataCollectorOptional.isPresent()) {
MetadataCollector metadataCollector = metadataCollectorOptional.get();
metadataCollector.init(req.getStorage(), req.getSecret());
ResourceMetadata resourceMetadata = metadataCollector
.getResourceMetadata(req.getResourcePath(), directResourceMetadataReq.getRecursiveSearch());
return JsonFormat.printer().print(resourceMetadata);
} else {
throw new Exception("No metadata collector for type " + req.getStorage().getStorageCase().name());
}
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(), transportCache);
if (metadataCollectorOptional.isPresent()) {
MetadataCollector metadataCollector = metadataCollectorOptional.get();
metadataCollector.init(req.getStorage(), req.getSecret());
Boolean available = metadataCollector.isAvailable(req.getResourcePath());
return available.toString();
} else {
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());
}