From 7dc03d7781d6cfa18f79aca25ecd4719f17790f9 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Wed, 13 Dec 2023 14:40:03 +0200 Subject: [PATCH] Sample code and fixes for connecting to syngenta training data --- .../dev/DevConfiguration.java | 12 ++++ .../dev/DevTenantProperties.java | 60 +++++++++++++++++++ .../dev/DevTestTenantService.java | 37 ++++++++---- src/main/resources/application-migration.yaml | 31 ++++++++++ .../db/changelog/db.changelog-master.yaml | 2 + ...nnection-data-string-length.changelog.yaml | 13 ++++ 6 files changed, 142 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevConfiguration.java create mode 100644 src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevTenantProperties.java create mode 100644 src/main/resources/db/changelog/master/8-tenant-connection-data-string-length.changelog.yaml diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevConfiguration.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevConfiguration.java new file mode 100644 index 0000000..fd9addf --- /dev/null +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevConfiguration.java @@ -0,0 +1,12 @@ +package com.knecon.fforesight.tenantusermanagement.dev; + +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; + +@Configuration +@Profile("dev") +@EnableConfigurationProperties(DevTenantProperties.class) +public class DevConfiguration { + +} diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevTenantProperties.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevTenantProperties.java new file mode 100644 index 0000000..b430e5a --- /dev/null +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevTenantProperties.java @@ -0,0 +1,60 @@ +package com.knecon.fforesight.tenantusermanagement.dev; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +import lombok.Data; + +@Data +@ConfigurationProperties("dev.tenant") +public class DevTenantProperties { + + private boolean recreateTenant = false; + private DevDatabaseProperties db = new DevDatabaseProperties(); + private DevStorageProperties storage = new DevStorageProperties(); + + @Data + public static class DevStorageProperties { + + private DevStorageMode mode = DevStorageMode.S3; + private DevS3StorageProperties s3 = new DevS3StorageProperties(); + private DevAzureStorageProperties azure = new DevAzureStorageProperties(); + + } + + public enum DevStorageMode { + S3, + AZURE + } + + @Data + public static class DevS3StorageProperties { + + private String key; + private String secret; + private String bucket; + + private String endpoint; + + } + + @Data + public static class DevAzureStorageProperties { + + private String containerName; + private String connectionString; + + } + + @Data + public static class DevDatabaseProperties { + + private int port; + private String host; + private String database; + private String schema; + private String username; + private String password; + + } + +} diff --git a/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevTestTenantService.java b/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevTestTenantService.java index c6013c2..cf6afdc 100644 --- a/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevTestTenantService.java +++ b/src/main/java/com/knecon/fforesight/tenantusermanagement/dev/DevTestTenantService.java @@ -17,6 +17,7 @@ import org.springframework.jdbc.datasource.SingleConnectionDataSource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import com.knecon.fforesight.tenantcommons.model.AzureStorageConnection; import com.knecon.fforesight.tenantcommons.model.DatabaseConnection; import com.knecon.fforesight.tenantcommons.model.S3StorageConnection; import com.knecon.fforesight.tenantcommons.model.SearchConnection; @@ -42,10 +43,15 @@ public class DevTestTenantService { @Value("${spring.datasource.url:}") private String masterJDBCURL; + private final DevTenantProperties devTenantProperties; + @SneakyThrows public void createTestTenantIfNotExists(String tenantId, List users) { + if (devTenantProperties.isRecreateTenant()) { + tenantRepository.deleteByQuery(tenantId); + } try { tenantManagementService.getTenant(tenantId); } catch (Exception e) { @@ -75,12 +81,12 @@ public class DevTestTenantService { .defaultUsers(users != null ? users : new ArrayList<>()) .databaseConnection(DatabaseConnection.builder() .driver("postgresql") - .host("localhost") - .port("15432") - .database("red-tenant") - .schema("public") - .username("tenant") - .password("r3dact3d") + .host(devTenantProperties.getDb().getHost()) + .port(devTenantProperties.getDb().getPort() + "") + .database(devTenantProperties.getDb().getDatabase()) + .schema(devTenantProperties.getDb().getSchema()) + .username(devTenantProperties.getDb().getUsername()) + .password(devTenantProperties.getDb().getPassword()) .build()) .searchConnection(SearchConnectionRequest.builder() .hosts(Set.of("localhost")) @@ -88,13 +94,19 @@ public class DevTestTenantService { .scheme("http") .numberOfShards("1") .numberOfReplicas("5") - .build()) - .s3StorageConnection(S3StorageConnection.builder().key("minioadmin").secret("minioadmin") - .region("eu-central-1") - .bucketName("redaction").endpoint("http://localhost:9000").build()) - .build(); + .build()); - tenantManagementService.createTenant(tenantRequest); + if (devTenantProperties.getStorage().getMode() == DevTenantProperties.DevStorageMode.S3) { + tenantRequest.s3StorageConnection(S3StorageConnection.builder().key(devTenantProperties.getStorage().getS3().getKey()) + .secret(devTenantProperties.getStorage().getS3().getSecret()) + .region("eu-central-1") + .bucketName(devTenantProperties.getStorage().getS3().getBucket()).endpoint(devTenantProperties.getStorage().getS3().getEndpoint()).build()); + } else { + tenantRequest.azureStorageConnection(AzureStorageConnection.builder().connectionString(devTenantProperties.getStorage().getAzure().getConnectionString()) + .containerName(devTenantProperties.getStorage().getAzure().getContainerName()).build()); + } + + tenantManagementService.createTenant(tenantRequest.build()); } @@ -139,5 +151,4 @@ public class DevTestTenantService { } } - } diff --git a/src/main/resources/application-migration.yaml b/src/main/resources/application-migration.yaml index 124fdfc..4d8affc 100644 --- a/src/main/resources/application-migration.yaml +++ b/src/main/resources/application-migration.yaml @@ -21,3 +21,34 @@ spring: cors.enabled: true + + +#dev.tenant.db: +# port: 15432 +# host: localhost +# database: red-tenant +# schema: public +# username: tenant +# password: r3dact3d + +dev.tenant.recreateTenant: true + +dev.tenant.db: + port: 5432 + host: syngenta-training-clone.postgres.database.azure.com + database: syngenta-training- + schema: syngentatraining + username: + password: + +dev.tenant.storage: + mode: 'S3' + s3: + key: minioadmin + secret: minioadmin + bucket: redaction + endpoint: http://localhost:9000 +# mode: 'AZURE' + azure: + containerName: syngenta-training- + connectionString: diff --git a/src/main/resources/db/changelog/db.changelog-master.yaml b/src/main/resources/db/changelog/db.changelog-master.yaml index e60c8f3..5521fde 100644 --- a/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/src/main/resources/db/changelog/db.changelog-master.yaml @@ -11,3 +11,5 @@ databaseChangeLog: file: db/changelog/master/6-add-index-name-column.changelog.yaml - include: file: db/changelog/master/7-change-index-name-to-index-prefix.changelog.yaml + - include: + file: db/changelog/master/8-tenant-connection-data-string-length.changelog.yaml diff --git a/src/main/resources/db/changelog/master/8-tenant-connection-data-string-length.changelog.yaml b/src/main/resources/db/changelog/master/8-tenant-connection-data-string-length.changelog.yaml new file mode 100644 index 0000000..23f9e0a --- /dev/null +++ b/src/main/resources/db/changelog/master/8-tenant-connection-data-string-length.changelog.yaml @@ -0,0 +1,13 @@ +databaseChangeLog: + - changeSet: + id: azure-connection-string-length + author: timo + changes: + - modifyDataType: + columnName: storage_azure_connection_string + newDataType: VARCHAR(4000) + tableName: tenant + - modifyDataType: + columnName: db_password + newDataType: VARCHAR(4000) + tableName: tenant