From a41af636743e270a6a487b81692e3e933cdd7683 Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Mon, 4 May 2026 14:30:44 +0200 Subject: [PATCH 1/3] [NAE-2406] S3 storage bucket alias - Extended `MinIoHostInfo` class to support `bucketAliases` mapping for enhanced bucket aliasing functionality. - Updated `MinIoStorageService`: - Modified `createStorage` to attach bucket aliases dynamically based on the host. - Introduced `getMappedBucketIfExists` for resolving bucket aliases. - Adjusted `getBucketOrDefault` to work with the new alias mapping implementation. - Minor refactoring and cleanup, such as removing unused annotations. --- .../engine/files/minio/MinIoHostInfo.java | 1 + .../engine/files/minio/MinIoStorageService.java | 16 ++++++++++------ .../minio/StorageConfigurationProperties.java | 1 - .../engine/startup/runner/StorageRunner.java | 1 - 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoHostInfo.java b/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoHostInfo.java index e2ad4164503..6412d2fcd3a 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoHostInfo.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoHostInfo.java @@ -9,4 +9,5 @@ public class MinIoHostInfo { private String host; private String user; private String password; + private Map bucketAliases; } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoStorageService.java b/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoStorageService.java index 1d80eccd17c..fd9a8129a59 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoStorageService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoStorageService.java @@ -50,15 +50,15 @@ public String getType() { @Override public Storage createStorage(Data data) { - Storage storage = new MinIoStorage(); + MinIoStorage storage = new MinIoStorage(); if (!properties.getMinIo().isEnabled()) { throw new StorageNotEnabledException("Storage of type [" + MINIO_TYPE + "] is not enabled."); } if (data.getStorage().getHost() != null) { storage.setHost(data.getStorage().getHost()); - } - if (data.getStorage().getBucket() != null) { - ((MinIoStorage) storage).setBucket(getBucketOrDefault(data.getStorage().getBucket())); + if (data.getStorage().getBucket() != null) { + storage.setBucket(getBucketOrDefault(storage.getHost(), data.getStorage().getBucket())); + } } return storage; } @@ -149,8 +149,8 @@ public String getPath(String caseId, String fieldId, String name) { return caseId + "/" + fieldId + "-" + name; } - public static String getBucketOrDefault(String bucket) { - return bucket != null ? bucket : StorageConfigurationProperties.MinIoStorageProperties.DEFAULT_BUCKET; + public String getBucketOrDefault(String host, String bucket) { + return bucket != null ? getMappedBucketIfExists(host, bucket) : StorageConfigurationProperties.MinIoStorageProperties.DEFAULT_BUCKET; } protected MinioClient client(String host) { @@ -159,4 +159,8 @@ protected MinioClient client(String host) { .credentials(properties.getMinIo().getHosts(host).getUser(), properties.getMinIo().getHosts(host).getPassword()) .build(); } + + protected String getMappedBucketIfExists(String host, String aliasKey) { + return properties.getMinIo().getHosts(host).getBucketAliases().getOrDefault(aliasKey, aliasKey); + } } diff --git a/application-engine/src/main/java/com/netgrif/application/engine/files/minio/StorageConfigurationProperties.java b/application-engine/src/main/java/com/netgrif/application/engine/files/minio/StorageConfigurationProperties.java index 3bcc81cca6f..473f0f4d37a 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/files/minio/StorageConfigurationProperties.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/files/minio/StorageConfigurationProperties.java @@ -2,7 +2,6 @@ import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; import java.util.Map; diff --git a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/StorageRunner.java b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/StorageRunner.java index 87df6cbcded..f4b95994e03 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/StorageRunner.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/StorageRunner.java @@ -5,7 +5,6 @@ import com.netgrif.application.engine.startup.annotation.RunnerOrder; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.ApplicationArguments; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; From c902dcaff7031be980f6595f0363ba0869b92e39 Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Mon, 4 May 2026 14:35:59 +0200 Subject: [PATCH 2/3] [NAE-2406] S3 storage bucket alias - updated resolution of mapped buckets --- .../engine/files/minio/MinIoStorageService.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoStorageService.java b/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoStorageService.java index fd9a8129a59..dfb1a286d8c 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoStorageService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoStorageService.java @@ -161,6 +161,11 @@ protected MinioClient client(String host) { } protected String getMappedBucketIfExists(String host, String aliasKey) { - return properties.getMinIo().getHosts(host).getBucketAliases().getOrDefault(aliasKey, aliasKey); + if (properties.getMinIo().getHosts(host) != null + && properties.getMinIo().getHosts(host).getBucketAliases() != null + && properties.getMinIo().getHosts(host).getBucketAliases().containsKey(aliasKey)) { + return properties.getMinIo().getHosts(host).getBucketAliases().get(aliasKey); + } + return aliasKey; } } From d6e606835a1c77a3d5829c183d87b8ad54a7e08c Mon Sep 17 00:00:00 2001 From: renczesstefan Date: Mon, 4 May 2026 15:04:22 +0200 Subject: [PATCH 3/3] [NAE-2406] S3 storage bucket alias - updated according to PR --- .../engine/files/minio/MinIoStorageService.java | 13 ++++++------- .../src/main/resources/application-dev.yaml | 2 ++ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoStorageService.java b/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoStorageService.java index dfb1a286d8c..b482f340b5f 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoStorageService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/files/minio/MinIoStorageService.java @@ -56,9 +56,7 @@ public Storage createStorage(Data data) { } if (data.getStorage().getHost() != null) { storage.setHost(data.getStorage().getHost()); - if (data.getStorage().getBucket() != null) { - storage.setBucket(getBucketOrDefault(storage.getHost(), data.getStorage().getBucket())); - } + storage.setBucket(getBucketOrDefault(storage.getHost(), data.getStorage().getBucket())); } return storage; } @@ -161,10 +159,11 @@ protected MinioClient client(String host) { } protected String getMappedBucketIfExists(String host, String aliasKey) { - if (properties.getMinIo().getHosts(host) != null - && properties.getMinIo().getHosts(host).getBucketAliases() != null - && properties.getMinIo().getHosts(host).getBucketAliases().containsKey(aliasKey)) { - return properties.getMinIo().getHosts(host).getBucketAliases().get(aliasKey); + MinIoHostInfo hostInfo = properties.getMinIo().getHosts(host); + if (hostInfo != null + && hostInfo.getBucketAliases() != null + && hostInfo.getBucketAliases().containsKey(aliasKey)) { + return hostInfo.getBucketAliases().get(aliasKey); } return aliasKey; } diff --git a/application-engine/src/main/resources/application-dev.yaml b/application-engine/src/main/resources/application-dev.yaml index 13937c1cc4c..44ad2769791 100644 --- a/application-engine/src/main/resources/application-dev.yaml +++ b/application-engine/src/main/resources/application-dev.yaml @@ -25,6 +25,8 @@ netgrif: host: http://127.0.0.1:9000 user: root password: password + bucket-aliases: + pistucket: uat-pistucket swagger: enabled: true security: