in data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/handlers/StoragePreferenceServiceHandler.java [110:184]
public void createStoragePreference(StoragePreferenceCreateRequest request, StreamObserver<StoragePreferenceCreateResponse> responseObserver) {
try {
AuthenticatedUser callUser = request.getAuthToken().getAuthenticatedUser();
AnyStoragePreference storage = request.getStoragePreference();
Map<String, Object> serializedMap = AnyStoragePreferenceSerializer.serializeToMap(storage);
String storagePreferenceId = (String) serializedMap.get("storagePreferenceId");
serializedMap.remove("storage");
String storageId = null;
if (resourceRepository.findById(storagePreferenceId).isPresent()) {
responseObserver.onError(Status.ALREADY_EXISTS.asRuntimeException());
return;
}
Resource resource = new Resource();
resource.setTenantId(callUser.getTenantId());
resource.setId(storagePreferenceId);
resource.setResourceType(StoragePreferenceConstants.STORAGE_PREFERENCE_LABEL);
if (storage.getStorageCase().equals(AnyStoragePreference.StorageCase.S3_STORAGE_PREFERENCE)) {
storageId = storage.getS3StoragePreference().getStorage().getStorageId();
serializedMap.put(StoragePreferenceConstants.STORAGE_PREFERENCE_TYPE_LABEL,
StoragePreferenceConstants.S3_STORAGE_PREFERENCE_TYPE_LABEL);
resource.setParentResourceId(storageId);
} else if (storage.getStorageCase()
.equals(AnyStoragePreference.StorageCase.SSH_STORAGE_PREFERENCE)) {
storageId = storage.getSshStoragePreference().getStorage().getStorageId();
if (request.getStoragePreference().getSdaStoragePreference().isInitialized() &&
!request.getStoragePreference().getSdaStoragePreference().getStoragePreferenceId().isEmpty()) {
}
serializedMap.put(StoragePreferenceConstants.STORAGE_PREFERENCE_TYPE_LABEL,
StoragePreferenceConstants.SSH_STORAGE_PREFERENCE_TYPE_LABEL);
resource.setParentResourceId(storageId);
} else if (storage.getStorageCase()
.equals(AnyStoragePreference.StorageCase.SDA_STORAGE_PREFERENCE)) {
storageId = storage.getSdaStoragePreference().getStorage().getStorageId();
serializedMap.put(StoragePreferenceConstants.STORAGE_PREFERENCE_TYPE_LABEL,
StoragePreferenceConstants.SDA_STORAGE_PREFERENCE_TYPE_LABEL);
resource.setParentResourceId(storageId);
}
if (storageId == null || resourceRepository.findById(storageId).isEmpty()) {
responseObserver.onError(Status.NOT_FOUND.withDescription("Storage not found").asRuntimeException());
return;
}
CustosUtils.
mergeStoragePreferenceEntity(custosClientProvider, callUser.getTenantId(),
storagePreferenceId, storageId, callUser.getUsername());
Set<ResourceProperty> resourcePropertySet = new HashSet<>();
serializedMap.forEach((key, value) -> {
resourcePropertySet.add(new ResourceProperty(key, value.toString(), resource));
});
resource.setResourceProperty(resourcePropertySet);
resourceRepository.save(resource);
StoragePreferenceCreateResponse response = StoragePreferenceCreateResponse
.newBuilder().setStoragePreference(storage).build();
responseObserver.onNext(response);
responseObserver.onCompleted();
} catch (Exception ex) {
String msg = "Errored while creating storage; Message: {}" + ex.getMessage();
logger.error(msg, ex);
responseObserver.onError(io.grpc.Status.INTERNAL.withDescription(msg).asRuntimeException());
}
}