From c0a70eb2950453bb38b29e5e37ef62d4e8e531b1 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 23 Jul 2024 10:24:51 +0200
Subject: [PATCH] OZG-6177 add configmap read/write and deployment patch role

---
 elster-transfer/lint-values.yaml              |  5 +-
 ...er_operator_configmap_read_write_role.yaml | 48 ++++++++++
 ...ansfer_operator_deployment_patch_role.yaml | 49 ++++++++++
 ...erator_configmap_read_write_role_test.yaml | 91 +++++++++++++++++++
 ...r_operator_deployment_patch_role_test.yaml | 89 ++++++++++++++++++
 5 files changed, 281 insertions(+), 1 deletion(-)
 create mode 100644 elster-transfer/templates/ozgcloud_elstertransfer_operator_configmap_read_write_role.yaml
 create mode 100644 elster-transfer/templates/ozgcloud_elstertransfer_operator_deployment_patch_role.yaml
 create mode 100644 elster-transfer/unit-tests/ozgcloud_elstertransfer_operator_configmap_read_write_role_test.yaml
 create mode 100644 elster-transfer/unit-tests/ozgcloud_elstertransfer_operator_deployment_patch_role_test.yaml

diff --git a/elster-transfer/lint-values.yaml b/elster-transfer/lint-values.yaml
index af06854..e63076f 100644
--- a/elster-transfer/lint-values.yaml
+++ b/elster-transfer/lint-values.yaml
@@ -1,4 +1,7 @@
 imagePullSecret: ozgcloud-image-pull-secret
 
 networkPolicy:
-  dnsServerNamespace: test-dns-namespace
\ No newline at end of file
+  dnsServerNamespace: test-dns-namespace
+
+elsterTransferOperator:
+   namespace: elt-operator
\ No newline at end of file
diff --git a/elster-transfer/templates/ozgcloud_elstertransfer_operator_configmap_read_write_role.yaml b/elster-transfer/templates/ozgcloud_elstertransfer_operator_configmap_read_write_role.yaml
new file mode 100644
index 0000000..3f035cd
--- /dev/null
+++ b/elster-transfer/templates/ozgcloud_elstertransfer_operator_configmap_read_write_role.yaml
@@ -0,0 +1,48 @@
+#
+# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+---
+kind: RoleBinding
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: ozgcloud-elster-transfer-operator-configmap-read-write-role-binding
+  namespace: {{ include "app.namespace" . }}
+subjects:
+  - kind: ServiceAccount
+    name: ozgcloud-elster-transfer-operator-service-account
+    namespace: {{ required "elsterTransferOperator.namespace must be set" (.Values.elsterTransferOperator).namespace }}
+roleRef:
+  kind: Role
+  name: ozgcloud-elster-transfer-operator-configmap-read-write-role
+  apiGroup: rbac.authorization.k8s.io
+---
+kind: Role
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: ozgcloud-elster-transfer-operator-configmap-read-write-role
+  namespace: {{ include "app.namespace" . }}
+rules:
+  - apiGroups: [""]
+    resources: ["configmaps"]
+    verbs: ["get", "list", "watch", "update", "patch"]
\ No newline at end of file
diff --git a/elster-transfer/templates/ozgcloud_elstertransfer_operator_deployment_patch_role.yaml b/elster-transfer/templates/ozgcloud_elstertransfer_operator_deployment_patch_role.yaml
new file mode 100644
index 0000000..fd81405
--- /dev/null
+++ b/elster-transfer/templates/ozgcloud_elstertransfer_operator_deployment_patch_role.yaml
@@ -0,0 +1,49 @@
+#
+# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+kind: RoleBinding
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: ozgcloud-elster-transfer-operator-deployment-patch-role-binding
+  namespace: {{ include "app.namespace" . }}
+subjects:
+  - kind: ServiceAccount
+    name: ozgcloud-elster-transfer-operator-service-account
+    namespace: {{ required "elsterTransferOperator.namespace must be set" (.Values.elsterTransferOperator).namespace }}
+roleRef:
+  kind: Role
+  name: ozgcloud-elster-transfer-operator-deployment-patch-role
+  apiGroup: rbac.authorization.k8s.io
+
+---
+kind: Role
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: ozgcloud-elster-transfer-operator-deployment-patch-role
+  namespace: {{ include "app.namespace" . }}
+rules:
+  - apiGroups: ["apps"]
+    resourceNames: ["elster-transfer"]
+    resources: ["deployments"]
+    verbs: ["patch"]
diff --git a/elster-transfer/unit-tests/ozgcloud_elstertransfer_operator_configmap_read_write_role_test.yaml b/elster-transfer/unit-tests/ozgcloud_elstertransfer_operator_configmap_read_write_role_test.yaml
new file mode 100644
index 0000000..945c04c
--- /dev/null
+++ b/elster-transfer/unit-tests/ozgcloud_elstertransfer_operator_configmap_read_write_role_test.yaml
@@ -0,0 +1,91 @@
+#
+# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+suite: ElsterTransfer read rbac test
+release:
+  name: ozgcloud-elstertransfer-operator
+  namespace: test-namespace
+set: 
+  elsterTransferOperator:
+    namespace: elt-operator
+templates:
+  - templates/ozgcloud_elstertransfer_operator_configmap_read_write_role.yaml
+tests:
+  - it: test RoleBinding metadata
+    asserts:
+      - isKind:
+          of: RoleBinding
+        documentIndex: 0
+      - isAPIVersion:
+          of: rbac.authorization.k8s.io/v1
+      - equal:
+          path: metadata.name
+          value: ozgcloud-elster-transfer-operator-configmap-read-write-role-binding
+        documentIndex: 0
+  - it: test RoleBinding subject
+    asserts:
+      - contains:
+          path: subjects
+          content:
+            kind: ServiceAccount
+            name: ozgcloud-elster-transfer-operator-service-account
+            namespace: elt-operator
+        documentIndex: 0
+  - it: test RoleBinding roleRef
+    asserts:
+      - equal:
+          path: roleRef
+          value:
+            kind: Role
+            name: ozgcloud-elster-transfer-operator-configmap-read-write-role
+            apiGroup: rbac.authorization.k8s.io
+        documentIndex: 0
+
+  - it: test Role metadata
+    asserts:
+      - isKind:
+          of: Role
+        documentIndex: 1
+      - isAPIVersion:
+          of: rbac.authorization.k8s.io/v1
+      - equal:
+          path: metadata.name
+          value: ozgcloud-elster-transfer-operator-configmap-read-write-role
+        documentIndex: 1
+  - it: test RoleBinding rules
+    asserts:
+      - contains:
+          path: rules
+          content:
+            apiGroups:
+                - ""
+            resources:
+              - configmaps
+            verbs:
+              - get
+              - list
+              - watch
+              - update
+              - patch
+        documentIndex: 1
\ No newline at end of file
diff --git a/elster-transfer/unit-tests/ozgcloud_elstertransfer_operator_deployment_patch_role_test.yaml b/elster-transfer/unit-tests/ozgcloud_elstertransfer_operator_deployment_patch_role_test.yaml
new file mode 100644
index 0000000..96bca88
--- /dev/null
+++ b/elster-transfer/unit-tests/ozgcloud_elstertransfer_operator_deployment_patch_role_test.yaml
@@ -0,0 +1,89 @@
+#
+# Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
+# Ministerpräsidenten des Landes Schleswig-Holstein
+# Staatskanzlei
+# Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+#
+# Lizenziert unter der EUPL, Version 1.2 oder - sobald
+# diese von der Europäischen Kommission genehmigt wurden -
+# Folgeversionen der EUPL ("Lizenz");
+# Sie dürfen dieses Werk ausschließlich gemäß
+# dieser Lizenz nutzen.
+# Eine Kopie der Lizenz finden Sie hier:
+#
+# https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+#
+# Sofern nicht durch anwendbare Rechtsvorschriften
+# gefordert oder in schriftlicher Form vereinbart, wird
+# die unter der Lizenz verbreitete Software "so wie sie
+# ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+# ausdrücklich oder stillschweigend - verbreitet.
+# Die sprachspezifischen Genehmigungen und Beschränkungen
+# unter der Lizenz sind dem Lizenztext zu entnehmen.
+#
+
+suite: ElsterTransfer write rbac test
+release:
+  name: ozgcloud-elstertransfer-operator
+  namespace: test-namespace
+set: 
+  elsterTransferOperator:
+    namespace: elt-operator
+templates:
+  - templates/ozgcloud_elstertransfer_operator_deployment_patch_role.yaml
+tests:
+  - it: test RoleBinding metadata
+    asserts:
+      - isKind:
+          of: RoleBinding
+        documentIndex: 0
+      - isAPIVersion:
+          of: rbac.authorization.k8s.io/v1
+      - equal:
+          path: metadata.name
+          value: ozgcloud-elster-transfer-operator-deployment-patch-role-binding
+        documentIndex: 0
+  - it: test RoleBinding subject
+    asserts:
+      - contains:
+          path: subjects
+          content:
+            kind: ServiceAccount
+            name: ozgcloud-elster-transfer-operator-service-account
+            namespace: elt-operator
+        documentIndex: 0
+  - it: test RoleBinding roleRef
+    asserts:
+      - equal:
+          path: roleRef
+          value:
+            kind: Role
+            name: ozgcloud-elster-transfer-operator-deployment-patch-role
+            apiGroup: rbac.authorization.k8s.io
+        documentIndex: 0
+
+  - it: test Role metadata
+    asserts:
+      - isKind:
+          of: Role
+        documentIndex: 1
+      - isAPIVersion:
+          of: rbac.authorization.k8s.io/v1
+      - equal:
+          path: metadata.name
+          value: ozgcloud-elster-transfer-operator-deployment-patch-role
+        documentIndex: 1
+  - it: test RoleBinding rules
+    asserts:
+      - contains:
+          path: rules
+          content:
+              apiGroups:
+                - apps
+              resourceNames:
+                - elster-transfer
+              resources:
+                - deployments
+              verbs:
+                - patch
+        documentIndex: 1
\ No newline at end of file
-- 
GitLab