public void createStoragePreference()

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());
        }
    }