in data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/handlers/StorageServiceHandler.java [280:363]
public void createTransferMapping(CreateTransferMappingRequest request, StreamObserver<CreateTransferMappingResponse> responseObserver) {
try {
AuthenticatedUser authenticatedUser = request.getAuthToken().getAuthenticatedUser();
AnyStorage sourceStorage = request.getTransferMapping().getSourceStorage();
AnyStorage destinationStorage = request.getTransferMapping().getDestinationStorage();
TransferScope scope = request.getTransferMapping().getTransferScope();
Optional<Resource> optionalSource = Optional.empty();
Optional<Resource> optionalDst = Optional.empty();
if (sourceStorage.isInitialized()) {
optionalSource = resourceRepository.findById(getStorageId(sourceStorage));
}
if (destinationStorage.isInitialized()) {
optionalDst = resourceRepository.findById(getStorageId(destinationStorage));
}
if (optionalSource.isEmpty() || optionalDst.isEmpty()) {
responseObserver.onError(Status.NOT_FOUND.
withDescription("source or destination storages are not found").asRuntimeException());
return;
}
Optional<org.apache.airavata.drms.api.persistance.model.TransferMapping> transferMappingOp =
transferMappingRepository.findTransferMappingBySourceIdAndDestinationId(
optionalSource.get().getId(),optionalDst.get().getId());
if (transferMappingOp.isPresent()){
responseObserver.onError(Status.ALREADY_EXISTS.
withDescription("source or destination storages are not found").asRuntimeException());
return;
}
org.apache.airavata.drms.api.persistance.model.TransferMapping transferMapping = new
org.apache.airavata.drms.api.persistance.model.TransferMapping();
if (optionalSource.isPresent()) {
Set<org.apache.airavata.drms.api.persistance.model.TransferMapping> transferMappings =
optionalSource.get().getSourceTransferMapping();
if (transferMappings != null) {
transferMappings.add(transferMapping);
} else {
transferMappings = new HashSet<>();
transferMappings.add(transferMapping);
}
transferMapping.setSource(optionalSource.get());
optionalSource.get().setSourceTransferMapping(transferMappings);
}
if (optionalDst.isPresent()) {
Set<org.apache.airavata.drms.api.persistance.model.TransferMapping> transferMappings =
optionalDst.get().getDestinationTransferMapping();
if (transferMappings != null) {
transferMappings.add(transferMapping);
} else {
transferMappings = new HashSet<>();
transferMappings.add(transferMapping);
}
transferMapping.setDestination(optionalDst.get());
optionalDst.get().setDestinationTransferMapping(transferMappings);
}
transferMapping.setScope(scope.name());
transferMapping.setOwnerId(authenticatedUser.getUsername());
transferMappingRepository.save(transferMapping);
CreateTransferMappingResponse createTransferMappingResponse = CreateTransferMappingResponse
.newBuilder()
.setTransferMapping(request.getTransferMapping())
.build();
responseObserver.onNext(createTransferMappingResponse);
responseObserver.onCompleted();
} catch (Exception e) {
String msg = "Errored while creating transfer mapping; Message:" + e.getMessage();
logger.error("Errored while creating transfer mapping; Message: {}", e.getMessage(), e);
responseObserver.onError(io.grpc.Status.INTERNAL.withDescription(msg).asRuntimeException());
}
}