From f0a86de9ab2e9671570348da52ad40e910965a4a Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 21 Dec 2023 14:25:52 +0100
Subject: [PATCH] OZG-4453 adjust porperties strucutre; extend properties

---
 .../OzgCloudElasticsearchProperties.java      | 24 +++++++++++++------
 .../OzgCloudElasticsearchSecretHelper.java    |  2 +-
 .../ElasticsearchClientConfiguration.java     |  8 +++----
 .../src/main/resources/application.yml        | 15 +++++++-----
 .../ElasticsearchSecretBuilderTest.java       | 13 ++++++----
 .../src/test/resources/application.yml        | 18 ++++++++------
 6 files changed, 51 insertions(+), 29 deletions(-)

diff --git a/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchProperties.java b/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchProperties.java
index b1e2207..a28b6fc 100644
--- a/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchProperties.java
+++ b/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchProperties.java
@@ -12,11 +12,21 @@ import lombok.Setter;
 @Configuration
 public class OzgCloudElasticsearchProperties {
 
-	private String namespace;
-	private String secretName;
-	private String secretDataKey;
 	private String secretCredentialsName;
-	private String host;
-	private int port;
-	private String scheme;
-}
+	private String certificateSecretName;
+
+	private OzgCloudElasticsearchServerProperties serverProperties;
+
+	@Getter
+	@Setter
+	public class OzgCloudElasticsearchServerProperties {
+
+		private String namespace;
+		private String secretName;
+		private String secretDataKey;
+		private String secretCredentialsName;
+		private String host;
+		private int port;
+		private String scheme;
+	}
+}
\ No newline at end of file
diff --git a/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchSecretHelper.java b/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchSecretHelper.java
index 2ea1151..3528cbd 100644
--- a/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchSecretHelper.java
+++ b/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/OzgCloudElasticsearchSecretHelper.java
@@ -34,7 +34,7 @@ public class OzgCloudElasticsearchSecretHelper {
 	}
 	
 	private String buildSecretAddress() {
-		return String.format("%s:%s", properties.getHost(), properties.getPort());
+		return String.format("%s:%s", properties.getServerProperties().getHost(), properties.getServerProperties().getPort());
 	}
 	
 	private String generatePassword() {
diff --git a/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/common/elasticsearch/ElasticsearchClientConfiguration.java b/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/common/elasticsearch/ElasticsearchClientConfiguration.java
index 3beb84b..fdea2f3 100644
--- a/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/common/elasticsearch/ElasticsearchClientConfiguration.java
+++ b/ozgcloud-elasticsearch-operator/src/main/java/de/ozgcloud/operator/common/elasticsearch/ElasticsearchClientConfiguration.java
@@ -28,7 +28,7 @@ public class ElasticsearchClientConfiguration {
 	@Bean
 	@Scope("singleton")
 	ElasticsearchClient createElasticsearchClient() {
-		var credentialsProvider = createCredentialsProvider(elasticSearchProperties.getSecretDataKey(), getPassword());
+		var credentialsProvider = createCredentialsProvider(elasticSearchProperties.getServerProperties().getSecretDataKey(), getPassword());
 		var restClient = buildRestClient(credentialsProvider);
 		var transport = createRestClientTransport(restClient);
 		return new ElasticsearchClient(transport);
@@ -47,7 +47,7 @@ public class ElasticsearchClientConfiguration {
 	}
 
 	private HttpHost createHttpHost() {
-		return new HttpHost(elasticSearchProperties.getHost(), elasticSearchProperties.getPort(), elasticSearchProperties.getScheme());
+		return new HttpHost(elasticSearchProperties.getServerProperties().getHost(), elasticSearchProperties.getServerProperties().getPort(), elasticSearchProperties.getServerProperties().getScheme());
 	}
 
 	private RestClientTransport createRestClientTransport(RestClient restClient) {
@@ -55,8 +55,8 @@ public class ElasticsearchClientConfiguration {
 	}
 
 	String getPassword() {
-		var resource = kubernetesService.getSecretResource(elasticSearchProperties.getNamespace(), elasticSearchProperties.getSecretName());
-		var password = MapUtils.getString(resource.get().getStringData(), elasticSearchProperties.getSecretDataKey());
+		var resource = kubernetesService.getSecretResource(elasticSearchProperties.getServerProperties().getNamespace(), elasticSearchProperties.getServerProperties().getSecretName());
+		var password = MapUtils.getString(resource.get().getStringData(), elasticSearchProperties.getServerProperties().getSecretDataKey());
 		return password;
 	}
 }
\ No newline at end of file
diff --git a/ozgcloud-elasticsearch-operator/src/main/resources/application.yml b/ozgcloud-elasticsearch-operator/src/main/resources/application.yml
index 8339830..77f1e1b 100644
--- a/ozgcloud-elasticsearch-operator/src/main/resources/application.yml
+++ b/ozgcloud-elasticsearch-operator/src/main/resources/application.yml
@@ -1,12 +1,15 @@
 ozgcloud:
   elasticsearch:
-    namespace: elastic-system
-    secretName: ozg-search-cluster-es-elastic-user
-    secretDataKey: elastic
     secretCredentialsName: elasticsearch-credentials
-    host: ozg-search-cluster-es-http
-    port: 9200
-    scheme: https
+    certificateSecretName: elasticsearch-certificate
+    server:
+      namespace: elastic-system
+      secretName: ozg-search-cluster-es-elastic-user
+      secretDataKey: elastic
+      host: ozg-search-cluster-es-http
+      port: 9200
+      scheme: https
+      certificateSecretName: elasticsearch-certificate
 
 management:
   server:
diff --git a/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/ElasticsearchSecretBuilderTest.java b/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/ElasticsearchSecretBuilderTest.java
index 4477189..227ff7a 100644
--- a/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/ElasticsearchSecretBuilderTest.java
+++ b/ozgcloud-elasticsearch-operator/src/test/java/de/ozgcloud/operator/ElasticsearchSecretBuilderTest.java
@@ -11,6 +11,7 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
+import de.ozgcloud.operator.OzgCloudElasticsearchProperties.OzgCloudElasticsearchServerProperties;
 import de.ozgcloud.operator.common.kubernetes.NamespaceTestFactory;
 import de.ozgcloud.operator.common.kubernetes.SecretTestFactory;
 import io.fabric8.kubernetes.api.model.Secret;
@@ -30,10 +31,14 @@ class ElasticsearchSecretBuilderTest {
 		private final static String HOST = "dummyHost";
 		private final static int PORT = 42;
 		
+		@Mock
+		private OzgCloudElasticsearchServerProperties serverProperties;
+		
 		@BeforeEach
 		void mockProperties() {
-			when(properties.getHost()).thenReturn(HOST);
-			when(properties.getPort()).thenReturn(PORT);
+			when(properties.getServerProperties()).thenReturn(serverProperties);
+			when(serverProperties.getHost()).thenReturn(HOST);
+			when(serverProperties.getPort()).thenReturn(PORT);
 		}
 			
 		@Test
@@ -77,14 +82,14 @@ class ElasticsearchSecretBuilderTest {
 			void shouldGetHostFromProperties() {
 				buildCredentialSecret();
 				
-				verify(properties).getHost();
+				verify(serverProperties).getHost();
 			}
 			
 			@Test
 			void shouldGetPortFromPorperties() {
 				buildCredentialSecret();
 				
-				verify(properties).getPort();
+				verify(serverProperties).getPort();
 			}
 		}
 		
diff --git a/ozgcloud-elasticsearch-operator/src/test/resources/application.yml b/ozgcloud-elasticsearch-operator/src/test/resources/application.yml
index 1154419..56a0ea8 100644
--- a/ozgcloud-elasticsearch-operator/src/test/resources/application.yml
+++ b/ozgcloud-elasticsearch-operator/src/test/resources/application.yml
@@ -1,8 +1,12 @@
 ozgcloud:
-  elastic:
-    namespace: elastic-system
-    secretName: ozg-search-cluster-es-elastic-user
-    secretData: elastic
-    host: https://ozg-search-cluster-es-http
-    address: ozg-search-cluster-es-http.elastic-system
-    port: 9200
\ No newline at end of file
+  elasticsearch:
+    secretCredentialsName: elasticsearch-credentials
+    certificateSecretName: elasticsearch-certificate
+    server:
+      namespace: elastic-system
+      secretName: ozg-search-cluster-es-elastic-user
+      secretDataKey: elastic
+      host: ozg-search-cluster-es-http
+      port: 9200
+      scheme: https
+      certificateSecretName: elasticsearch-certificate
\ No newline at end of file
-- 
GitLab