From fb3ecdceeb8fed7509a0817b30b63da4a61406bd Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 22 Oct 2024 23:33:55 +0200
Subject: [PATCH] check if usersYaml empty and update users tmpl

---
 .../OzgCloudElsterTransferUserService.java    | 22 ++++++++++++-------
 src/main/resources/users.tmpl                 |  2 +-
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java
index e8bd5b8..1e195ea 100644
--- a/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java
+++ b/src/main/java/de/ozgcloud/operator/elstertransfer/user/OzgCloudElsterTransferUserService.java
@@ -91,7 +91,9 @@ public class OzgCloudElsterTransferUserService {
 		if (Objects.isNull(configMap)) {
 		return false;
 		}
-		return getUsersFromConfigMap(configMap).existsUser(userLogin);
+		OzgCloudElsterTransferConfigMapUserList users = getUsersFromConfigMap(configMap);
+		LOG.debug("userExists is '{}' in namespace '{}'", users.existsUser(userLogin), userLogin);
+		return users.existsUser(userLogin);
 		
 	}
 
@@ -113,6 +115,10 @@ public class OzgCloudElsterTransferUserService {
 
 	OzgCloudElsterTransferConfigMapUserList getUsersFromConfigMap(ConfigMap configMap) {
 		String usersYaml = configMap.getData().get(Constants.USERS_KEY);
+		if (Objects.isNull(usersYaml)) {
+			LOG.debug("userYaml is empty");
+			return new OzgCloudElsterTransferConfigMapUserList(new ArrayList<>());
+		}
 		Map<String, Object> load = new Yaml().load(usersYaml);
 		List<Map<String, Object>> usersList = (List<Map<String, Object>>) load.get("users");
 		return new OzgCloudElsterTransferConfigMapUserList(usersList);
@@ -123,25 +129,25 @@ public class OzgCloudElsterTransferUserService {
 	}
 
 	String constructYamlEntries(OzgCloudElsterTransferConfigMapUserList userList) {
+		LOG.info("constructYamlEntries");
 		List<Map<String, Object>> usersList = userList.getUsersList();
 		StringBuilder usersYaml = new StringBuilder();
 		usersYaml.append("fileFormat: 1\nusers:\n");
 
 		for (Map<String, Object> userEntry : usersList) {
 			usersYaml.append(getYamlForUser(userEntry));
+			usersYaml.append(System.lineSeparator());
 		}
 		return usersYaml.toString();
 	}
 
 	String getYamlForUser(Map<String, Object> userEntry) {
-		StringBuilder sb = new StringBuilder();
-		sb.append("  - { login: \"").append(userEntry.get("login"))
-				.append("\", rolle: \"").append(userEntry.get("rolle"))
-				.append("\", credentials: { passwortHash: \"")
-				.append(((Map<String, String>) userEntry.get("credentials")).get("passwortHash"))
-				.append("\" }, gruppe: \"").append(userEntry.get("gruppe")).append("\" }\n");
-		return sb.toString();
+		MustacheFactory mf = new DefaultMustacheFactory();
+        Mustache mustache = mf.compile("users.tmpl");
 
+        StringWriter writer = new StringWriter();
+        mustache.execute(writer, userEntry); 
+        return writer.toString();
 	}
 
 	String generatePassword() {
diff --git a/src/main/resources/users.tmpl b/src/main/resources/users.tmpl
index 1a8f29b..7e4b5c4 100644
--- a/src/main/resources/users.tmpl
+++ b/src/main/resources/users.tmpl
@@ -1 +1 @@
-- { login: "{{login}}", rolle: "{{rolle}}", credentials: { passwortHash: "{{passwortHash}}" }, gruppe: "{{gruppe}}" }
\ No newline at end of file
+  - { login: "{{login}}", rolle: "{{rolle}}", credentials: { passwortHash: "{{credentials.passwortHash}}" }, gruppe: "{{gruppe}}" }
\ No newline at end of file
-- 
GitLab