From fa20c5fa7dbcf0fd9fc2be0db6dc6600640ac900 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Wed, 28 Aug 2024 17:16:36 +0200
Subject: [PATCH] OZG-6499 OZG-6568 Consume Administration Cloud config
 properties

---
 alfa-server/pom.xml                           |  9 ++++---
 .../src/main/resources/application.yml        |  4 ++-
 alfa-service/pom.xml                          |  4 +++
 .../alfa/postfach/PostfachProperties.java     | 24 +++++++++++++++++
 pom.xml                                       |  6 +++++
 src/main/helm/templates/deployment.yaml       |  2 ++
 .../deployment_config_client_env_test.yaml    | 26 +++++++++++++++++++
 7 files changed, 70 insertions(+), 5 deletions(-)
 create mode 100644 alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachProperties.java
 create mode 100644 src/test/helm/deployment_config_client_env_test.yaml

diff --git a/alfa-server/pom.xml b/alfa-server/pom.xml
index 352336b4ac..8310c3d287 100644
--- a/alfa-server/pom.xml
+++ b/alfa-server/pom.xml
@@ -24,18 +24,19 @@
 			<artifactId>alfa-service</artifactId>
 			<version>${project.version}</version>
 		</dependency>
-
 		<dependency>
 			<groupId>de.ozgcloud.alfa</groupId>
 			<artifactId>alfa-xdomea</artifactId>
 			<version>${project.version}</version>
 		</dependency>
-
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter</artifactId>
 		</dependency>
-
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-config</artifactId>
+		</dependency>
 		<!-- aspectJ -->
 		<dependency>
 			<groupId>org.aspectj</groupId>
@@ -130,4 +131,4 @@
 		</plugins>
 	</build>
 
-</project>
+</project>
\ No newline at end of file
diff --git a/alfa-server/src/main/resources/application.yml b/alfa-server/src/main/resources/application.yml
index 0f0c8e24b2..7797843ae4 100644
--- a/alfa-server/src/main/resources/application.yml
+++ b/alfa-server/src/main/resources/application.yml
@@ -23,6 +23,8 @@ spring:
         jwt:
           issuer-uri: ${ozgcloud.oauth2.issuer-uri}
           jwk-set-uri: ${spring.security.oauth2.resourceserver.jwt.issuer-uri}/protocol/openid-connect/certs
+  config:
+    import: optional:${ozgcloud_administration_address:http://localhost:8888/configserver/}
 
 server:
   http2:
@@ -51,7 +53,7 @@ management:
   endpoints:
     web:
       exposure:
-        include: health,prometheus
+        include: health,prometheus,refresh
 
 grpc:
   client:
diff --git a/alfa-service/pom.xml b/alfa-service/pom.xml
index 24d69e9a5b..86daeeea05 100644
--- a/alfa-service/pom.xml
+++ b/alfa-service/pom.xml
@@ -84,6 +84,10 @@
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>org.springframework.cloud</groupId>
+			<artifactId>spring-cloud-starter-config</artifactId>
+		</dependency>
 		<dependency>
 			<groupId>com.jayway.jsonpath</groupId>
 			<artifactId>json-path</artifactId>
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachProperties.java
new file mode 100644
index 0000000000..1d1a549b5c
--- /dev/null
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachProperties.java
@@ -0,0 +1,24 @@
+package de.ozgcloud.alfa.postfach;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.context.annotation.Configuration;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Configuration
+@ConfigurationProperties(prefix = PostfachProperties.PREFIX)
+@RefreshScope
+@Getter
+@Setter
+class PostfachProperties {
+
+	static final String PREFIX = "ozgcloud.postfach";
+
+	/**
+	 * Signature appended to messages. Configured by administration config s00erver.
+	 */
+	private String signatur = "";
+
+}
diff --git a/pom.xml b/pom.xml
index 1989d2bfc0..5c3018e62b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -57,6 +57,7 @@
 		<ozgcloud-common-pdf.version>3.0.1</ozgcloud-common-pdf.version>
 		<user-manager.version>2.2.0</user-manager.version>
 		<zufi-manager.version>1.2.0</zufi-manager.version>
+		<spring-cloud-config-client.version>4.1.3</spring-cloud-config-client.version>
 
 		<!-- TODO: die Version über ozgcloud-common ziehen -->
 		<jjwt.version>0.11.5</jjwt.version>
@@ -158,6 +159,11 @@
 				<version>${jjwt.version}</version>
 				<scope>runtime</scope>
 			</dependency>
+			<dependency>
+				<groupId>org.springframework.cloud</groupId>
+				<artifactId>spring-cloud-starter-config</artifactId>
+				<version>${spring-cloud-config-client.version}</version>
+			</dependency>
 		</dependencies>
 	</dependencyManagement>
 
diff --git a/src/main/helm/templates/deployment.yaml b/src/main/helm/templates/deployment.yaml
index edfb381cc4..9449ab7096 100644
--- a/src/main/helm/templates/deployment.yaml
+++ b/src/main/helm/templates/deployment.yaml
@@ -109,6 +109,8 @@ spec:
           value: {{ ((.Values.ozgcloud).xdomea).behoerdenschluesselUri}}
         - name: ozgcloud_xdomea_behoerdenschluesselVersion
           value: {{ ((.Values.ozgcloud).xdomea).behoerdenschluesselVersion | quote }}
+        - name: ozgcloud_administration_address
+          value: {{ (.Values.administration).address }}
         - name: grpc_client_zufi-manager_address
           value: {{ .Values.zufiManager.address }}
         - name: grpc_client_zufi-manager_negotiationType
diff --git a/src/test/helm/deployment_config_client_env_test.yaml b/src/test/helm/deployment_config_client_env_test.yaml
new file mode 100644
index 0000000000..d5d5b4511c
--- /dev/null
+++ b/src/test/helm/deployment_config_client_env_test.yaml
@@ -0,0 +1,26 @@
+suite: deployment collaboration env
+release:
+  name: alfa
+  namespace: sh-helm-test
+templates:
+  - templates/deployment.yaml
+set:
+  baseUrl: test.company.local
+  ozgcloud:
+    environment: test
+    bundesland: sh
+    bezeichner: helm
+  sso:
+    serverUrl: https://sso.company.local
+  imagePullSecret: image-pull-secret
+tests:
+  - it: should have set administration server address
+    set:
+      administration:
+        address: url://url.url
+    asserts:
+      - contains:
+          path: spec.template.spec.containers[0].env
+          content:
+            name: ozgcloud_administration_address
+            value: url://url.url
-- 
GitLab