Merge "[CPS] Change cps-core/temporal to use strimzi templates"
diff --git a/kubernetes/cps/components/cps-core/resources/config/application-helm.yml b/kubernetes/cps/components/cps-core/resources/config/application-helm.yml
index f9bb230..fd3068e 100644
--- a/kubernetes/cps/components/cps-core/resources/config/application-helm.yml
+++ b/kubernetes/cps/components/cps-core/resources/config/application-helm.yml
@@ -1,7 +1,7 @@
 {{/*
 #  Copyright (C) 2021 Pantheon.tech
 #  Modifications Copyright (C) 2020 Bell Canada.
-#  Modifications Copyright (C) 2021-2022 Nordix Foundation.
+#  Modifications Copyright (C) 2021-2023 Nordix Foundation.
 #  Modifications Copyright (C) 2021 Orange
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -54,14 +54,13 @@
       username: ${DMI_USERNAME}
       password: ${DMI_PASSWORD}
 
-{{- if .Values.config.useStrimziKafka }}
-spring.kafka.bootstrap-servers: {{ include "common.release" . }}-{{ .Values.config.kafkaBootstrap }}:9092
-spring.kafka.security.protocol: SASL_PLAINTEXT
-spring.kafka.properties.sasl.mechanism: SCRAM-SHA-512
-spring.kafka.properties.sasl.jaas.config: ${JAASLOGIN}
-{{ else }}
-{{ toYaml .Values.config.eventPublisher | nindent 2 }}
+{{- with (first .Values.kafkaUser.acls) }}
+spring.kafka.consumer.group-id: {{ .name }}
 {{- end }}
+spring.kafka.bootstrap-servers: {{ include "common.release" . }}-strimzi-kafka-bootstrap:9092
+spring.kafka.security.protocol: SASL_PLAINTEXT
+spring.kafka.properties.sasl.mechanism: {{ .Values.kafkaUser.authenticationType | upper }}
+spring.kafka.properties.sasl.jaas.config: ${SASL_JAAS_CONFIG}
 
 {{- if .Values.config.additional }}
 {{ toYaml .Values.config.additional | nindent 2 }}
diff --git a/kubernetes/cps/components/cps-core/templates/deployment.yaml b/kubernetes/cps/components/cps-core/templates/deployment.yaml
index 3684aab..8079e88 100644
--- a/kubernetes/cps/components/cps-core/templates/deployment.yaml
+++ b/kubernetes/cps/components/cps-core/templates/deployment.yaml
@@ -1,7 +1,7 @@
 {{/*
 # Copyright (C) 2021 Pantheon.tech, Orange
 # Modifications Copyright (C) 2021 Bell Canada.
-# Modifications Copyright (C) 2021-2022 Nordix Foundation.
+# Modifications Copyright (C) 2021-2023 Nordix Foundation.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -57,10 +57,11 @@
             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "dmi-plugin-user-creds" "key" "login") | indent 12 }}
           - name: DMI_PASSWORD
             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "dmi-plugin-user-creds" "key" "password") | indent 12 }}
-          {{- if .Values.config.useStrimziKafka }}
-          - name: JAASLOGIN
-            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "cps-kafka-user" "key" "sasl.jaas.config") | indent 12 }}
-          {{- end }}
+          - name: SASL_JAAS_CONFIG
+            valueFrom:
+              secretKeyRef:
+                name: {{ include "common.name" . }}-ku
+                key: sasl.jaas.config
         volumeMounts:
           - mountPath: /config-input
             name: init-data-input
@@ -111,10 +112,11 @@
             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "dmi-plugin-user-creds" "key" "login") | indent 12 }}
           - name: DMI_PASSWORD
             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "dmi-plugin-user-creds" "key" "password") | indent 12 }}
-          {{- if .Values.config.useStrimziKafka }}
-          - name: JAASLOGIN
-            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "cps-kafka-user" "key" "sasl.jaas.config") | indent 12 }}
-          {{- end }}
+          - name: SASL_JAAS_CONFIG
+            valueFrom:
+              secretKeyRef:
+                name: {{ include "common.name" . }}-ku
+                key: sasl.jaas.config
         resources: {{ include "common.resources" . | nindent 10 }}
         {{- if .Values.nodeSelector }}
         nodeSelector: {{ toYaml .Values.nodeSelector | nindent 12 }}
diff --git a/kubernetes/cps/components/cps-core/templates/kafkauser.yaml b/kubernetes/cps/components/cps-core/templates/kafkauser.yaml
new file mode 100644
index 0000000..708e99d
--- /dev/null
+++ b/kubernetes/cps/components/cps-core/templates/kafkauser.yaml
@@ -0,0 +1,16 @@
+{{/*
+# Copyright © 2023 Nordix Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+*/}}
+{{ include "common.kafkauser" . }}
\ No newline at end of file
diff --git a/kubernetes/cps/components/cps-core/values.yaml b/kubernetes/cps/components/cps-core/values.yaml
index 5f420d1..a016574 100644
--- a/kubernetes/cps/components/cps-core/values.yaml
+++ b/kubernetes/cps/components/cps-core/values.yaml
@@ -1,6 +1,6 @@
 # Copyright (C) 2021 Pantheon.tech, Orange, Bell Canada.
 # Modifications Copyright (C) 2022 Bell Canada
-# Modifications Copyright © 2022 Nordix Foundation
+# Modifications Copyright © 2022-2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -43,13 +43,6 @@
     login: '{{ .Values.config.dmiPluginUserName }}'
     password: '{{ .Values.config.dmiPluginUserPassword }}'
     passwordPolicy: generate
-  - uid: cps-kafka-user
-    externalSecret: '{{ tpl (default "" .Values.config.jaasConfExternalSecret) . }}'
-    type: genericKV
-    envs:
-      - name: sasl.jaas.config
-        value: '{{ .Values.config.someConfig }}'
-        policy: generate
 
 #################################################################
 # Global configuration defaults.
@@ -173,8 +166,7 @@
 #################################################################
 
 config:
-
-  # Set it for pre loading xnfdata, else set to null
+  # Set it for preloading xnfdata, else set to null
   liquibaseLabels: xnf-data-preload
 
   # REST API basic authentication credentials (passsword is generated if not provided)
@@ -189,22 +181,9 @@
 #    spring.config.max-size: 200
 #    spring.config.min-size: 10
 
-# kafka config
-  useStrimziKafka: true
-  kafkaBootstrap: strimzi-kafka-bootstrap
-# If targeting a custom kafka cluster, ie useStrimziKakfa: false
-# uncomment below config and target your kafka bootstrap servers,
-# along with any other security config.
-
-#  eventPublisher:
-#    spring.kafka.bootstrap-servers: <kafka-bootstrap>:9092
-#    spring.kafka.security.protocol: SASL_PLAINTEXT
-#    spring.kafka.properties.sasl.mechanism: PLAIN
-#    spring.kafka.properties.sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username=admin password=admin_secret;
-
   additional:
     notification.data-updated.enabled: true
-    notification.data-updated.topic: cps.data-updated-events
+    notification.data-updated.topic: &dataUpdatedTopic cps.data-updated-events
     notification.data-updated.filters.enabled-dataspaces: ""
     notification.async.enabled: false
     notification.async.executor.core-pool-size: 2
@@ -213,6 +192,26 @@
     notification.async.executor.wait-for-tasks-to-complete-on-shutdown: true
     notification.async.executor.thread-name-prefix: Async-
 
+# Strimzi KafkaUser config
+kafkaUser:
+  authenticationType: scram-sha-512
+  acls:
+    - name: cps-core-group
+      type: group
+      operations: [Read]
+    - name: *dataUpdatedTopic
+      type: topic
+      operations: [Write]
+    - name: dmi-cm-events
+      type: topic
+      operations: [Read]
+    - name: ncmp-async-m2m
+      type: topic
+      operations: [Read]
+    - name: cm-avc-subscription
+      type: topic
+      operations: [Read]
+
 logging:
   level: INFO
   path: /tmp
diff --git a/kubernetes/cps/components/cps-temporal/resources/config/application-helm.yml b/kubernetes/cps/components/cps-temporal/resources/config/application-helm.yml
index 6e80843..bede7f1 100644
--- a/kubernetes/cps/components/cps-temporal/resources/config/application-helm.yml
+++ b/kubernetes/cps/components/cps-temporal/resources/config/application-helm.yml
@@ -1,7 +1,7 @@
 {{/*
 # ============LICENSE_START=======================================================
 #  Copyright (c) 2021 Bell Canada.
-# Modifications Copyright © 2022 Nordix Foundation
+# Modifications Copyright © 2022-2023 Nordix Foundation
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -25,23 +25,18 @@
     username: ${DB_USERNAME}
     password: ${DB_PASSWORD}
 
-  kafka:
-    consumer:
-      group-id: {{ .Values.config.kafka.consumer.groupId }}
-
 app:
   listener:
     data-updated:
       topic: {{ .Values.config.app.listener.dataUpdatedTopic }}
 
-{{- if .Values.config.useStrimziKafka }}
-spring.kafka.bootstrap-servers: {{ include "common.release" . }}-{{ .Values.config.kafkaBootstrap }}:9092
-spring.kafka.security.protocol: SASL_PLAINTEXT
-spring.kafka.properties.sasl.mechanism: SCRAM-SHA-512
-spring.kafka.properties.sasl.jaas.config: ${JAASLOGIN}
-{{ else }}
-{{ toYaml .Values.config.eventPublisher | nindent 2 }}
+{{- with (first .Values.kafkaUser.acls) }}
+spring.kafka.consumer.group-id: {{ .name }}
 {{- end }}
+spring.kafka.bootstrap-servers: {{ include "common.release" . }}-strimzi-kafka-bootstrap:9092
+spring.kafka.security.protocol: SASL_PLAINTEXT
+spring.kafka.properties.sasl.mechanism: {{ .Values.kafkaUser.authenticationType | upper }}
+spring.kafka.properties.sasl.jaas.config: ${SASL_JAAS_CONFIG}
 
 {{- if .Values.config.additional }}
 {{ toYaml .Values.config.additional | nindent 2 }}
diff --git a/kubernetes/cps/components/cps-temporal/templates/deployment.yaml b/kubernetes/cps/components/cps-temporal/templates/deployment.yaml
index 71ff371..5990040 100644
--- a/kubernetes/cps/components/cps-temporal/templates/deployment.yaml
+++ b/kubernetes/cps/components/cps-temporal/templates/deployment.yaml
@@ -1,7 +1,7 @@
 {{/*
 # ============LICENSE_START=======================================================
 #  Copyright (c) 2021 Bell Canada.
-# Modifications Copyright © 2022 Nordix Foundation
+# Modifications Copyright © 2022-2023 Nordix Foundation
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -54,10 +54,11 @@
             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "app-user-creds" "key" "login") | indent 12 }}
           - name: APP_PASSWORD
             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "app-user-creds" "key" "password") | indent 12 }}
-          {{- if .Values.config.useStrimziKafka }}
-          - name: JAASLOGIN
-            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "cps-kafka-user" "key" "sasl.jaas.config") | indent 12 }}
-          {{- end }}
+          - name: SASL_JAAS_CONFIG
+            valueFrom:
+              secretKeyRef:
+                name: {{ include "common.name" . }}-ku
+                key: sasl.jaas.config
         volumeMounts:
           - mountPath: /config-input
             name: init-data-input
diff --git a/kubernetes/cps/components/cps-temporal/templates/kafkatopic.yaml b/kubernetes/cps/components/cps-temporal/templates/kafkatopic.yaml
new file mode 100644
index 0000000..d1d21a6
--- /dev/null
+++ b/kubernetes/cps/components/cps-temporal/templates/kafkatopic.yaml
@@ -0,0 +1,16 @@
+{{/*
+# Copyright © 2023 Nordix Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+*/}}
+{{ include "common.kafkatopic" . }}
diff --git a/kubernetes/cps/components/cps-temporal/templates/kafkauser.yaml b/kubernetes/cps/components/cps-temporal/templates/kafkauser.yaml
new file mode 100644
index 0000000..708e99d
--- /dev/null
+++ b/kubernetes/cps/components/cps-temporal/templates/kafkauser.yaml
@@ -0,0 +1,16 @@
+{{/*
+# Copyright © 2023 Nordix Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+*/}}
+{{ include "common.kafkauser" . }}
\ No newline at end of file
diff --git a/kubernetes/cps/components/cps-temporal/values.yaml b/kubernetes/cps/components/cps-temporal/values.yaml
index 1c57a4a..298431a 100644
--- a/kubernetes/cps/components/cps-temporal/values.yaml
+++ b/kubernetes/cps/components/cps-temporal/values.yaml
@@ -1,6 +1,6 @@
 # ============LICENSE_START=======================================================
 #  Copyright (c) 2021 Bell Canada.
-# Modifications Copyright © 2022 Nordix Foundation
+# Modifications Copyright © 2022-2023 Nordix Foundation
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -40,13 +40,6 @@
     login: '{{ .Values.config.appUserName }}'
     password: '{{ .Values.config.appUserPassword }}'
     passwordPolicy: generate
-  - uid: cps-kafka-user
-    externalSecret: '{{ tpl (default "" .Values.config.jaasConfExternalSecret) . }}'
-    type: genericKV
-    envs:
-      - name: sasl.jaas.config
-        value: '{{ .Values.config.someConfig }}'
-        policy: generate
 
 image: onap/cps-temporal:1.2.1
 containerPort: &svc_port 8080
@@ -146,24 +139,9 @@
   spring:
     profile: helm
   #appUserPassword:
-
-# Event consumption (kafka) properties
-  useStrimziKafka: true
-  kafkaBootstrap: strimzi-kafka-bootstrap
-  kafka:
-    consumer:
-      groupId: cps-temporal-group
   app:
     listener:
-      dataUpdatedTopic: cps.data-updated-events
-# If targeting a custom kafka cluster, ie useStrimziKakfa: false
-# uncomment below config and target your kafka bootstrap servers,
-# along with any other security config.
-
-#  eventConsumption:
-#    spring.kafka.bootstrap-servers: <kafka-bootstrap>:9092
-#    spring.kafka.security.protocol: PLAINTEXT
-#    spring.kafka.consumer.group-id: cps-temporal-group
+      dataUpdatedTopic: &dataUpdatedTopic cps.data-updated-events
 
 # Any new property can be added in the env by setting in overrides in the format mentioned below
 # All the added properties must be in "key: value" format instead of yaml.
@@ -171,6 +149,23 @@
 #    spring.config.max-size: 200
 #    spring.config.min-size: 10
 
+# Strimzi Kafka config
+kafkaUser:
+  authenticationType: scram-sha-512
+  acls:
+    - name: cps-temporal-group
+      type: group
+      operations: [Read]
+    - name: *dataUpdatedTopic
+      type: topic
+      operations: [Read]
+
+kafkaTopic:
+  - name: *dataUpdatedTopic
+    # default values below can be overridden
+    retentionMs: 7200000
+    segmentBytes: 1073741824
+
 logging:
   level: INFO
   path: /tmp
diff --git a/kubernetes/cps/templates/cps-kafka-topic.yaml b/kubernetes/cps/templates/cps-kafka-topic.yaml
index 33613bc..c3592bc 100644
--- a/kubernetes/cps/templates/cps-kafka-topic.yaml
+++ b/kubernetes/cps/templates/cps-kafka-topic.yaml
@@ -1,5 +1,5 @@
 {{/*
-# Copyright © 2022 Nordix Foundation
+# Copyright © 2022-2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,18 +17,6 @@
 apiVersion: kafka.strimzi.io/v1beta2
 kind: KafkaTopic
 metadata:
-  name: {{ .Values.config.dataUpdatedTopic.name }}
-  labels:
-    strimzi.io/cluster: {{ include "common.release" . }}-strimzi
-spec:
-  partitions: {{ .Values.config.dataUpdatedTopic.partitions }}
-  config:
-    retention.ms: {{ .Values.config.dataUpdatedTopic.retentionMs }}
-    segment.bytes: {{ .Values.config.dataUpdatedTopic.segmentBytes }}
----
-apiVersion: kafka.strimzi.io/v1beta2
-kind: KafkaTopic
-metadata:
   name: {{ .Values.config.ncmpEventsTopic.name }}
   labels:
     strimzi.io/cluster: {{ include "common.release" . }}-strimzi
diff --git a/kubernetes/cps/templates/cps-kafka-user.yaml b/kubernetes/cps/templates/cps-kafka-user.yaml
index 229e5dc..469ddda 100644
--- a/kubernetes/cps/templates/cps-kafka-user.yaml
+++ b/kubernetes/cps/templates/cps-kafka-user.yaml
@@ -1,5 +1,5 @@
 {{/*
-# Copyright © 2022 Nordix Foundation
+# Copyright © 2022-2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -28,18 +28,6 @@
     acls:
     - resource:
         type: group
-        name: {{ .Values.config.dataUpdatedTopic.consumer.groupId }}
-      operation: Read
-    - resource:
-        type: topic
-        name: {{ .Values.config.dataUpdatedTopic.name }}
-      operation: Read
-    - resource:
-        type: topic
-        name: {{ .Values.config.dataUpdatedTopic.name }}
-      operation: Write
-    - resource:
-        type: group
         name: {{ .Values.config.ncmpEventsTopic.consumer.groupId }}
       operation: All
     - resource:
diff --git a/kubernetes/cps/values.yaml b/kubernetes/cps/values.yaml
index 97addae..dccc4d0 100755
--- a/kubernetes/cps/values.yaml
+++ b/kubernetes/cps/values.yaml
@@ -1,5 +1,5 @@
 # Copyright (C) 2021 Bell Canada
-# Modifications Copyright © 2022 Nordix Foundation
+# Modifications Copyright © 2022-2023 Nordix Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -48,13 +48,6 @@
   coreUserName: cpsuser
   dmiPluginUserName: dmiuser
   useStrimziKafka: true
-  dataUpdatedTopic:
-    name: cps.data-updated-events
-    partitions: 10
-    retentionMs: 7200000
-    segmentBytes: 1073741824
-    consumer:
-      groupId: cps-temporal-group
   ncmpEventsTopic:
     name: ncmp-events
     retentionMs: 7200000