From bfd5906e06e6fbbf70c389400075c5f0734d69f5 Mon Sep 17 00:00:00 2001
From: Matthieu Cauffiez <matthieu.cauffiez@bell.ca>
Date: Mon, 18 Mar 2019 15:11:38 -0400
Subject: if increasing zookeeper quorom wont be maintained

https://gerrit.onap.org/r/#/c/82044/ if the number is
even quorum wont be maintained.

Issue-ID: DMAAP-1088

Change-Id: I82a998a4922499c753f9f8e256b0f76ce90fa31f
Signed-off-by: Matthieu Cauffiez <matthieu.cauffiez@bell.ca>
---
 .../templates/_zkquorum.tpl                        | 34 ++++++++++++++++++++++
 .../templates/poddisruptionbudget.yaml             |  2 +-
 2 files changed, 35 insertions(+), 1 deletion(-)
 create mode 100644 kubernetes/dmaap/components/message-router/charts/message-router-zookeeper/templates/_zkquorum.tpl

(limited to 'kubernetes/dmaap/components/message-router/charts/message-router-zookeeper/templates')

diff --git a/kubernetes/dmaap/components/message-router/charts/message-router-zookeeper/templates/_zkquorum.tpl b/kubernetes/dmaap/components/message-router/charts/message-router-zookeeper/templates/_zkquorum.tpl
new file mode 100644
index 0000000000..9af910eb89
--- /dev/null
+++ b/kubernetes/dmaap/components/message-router/charts/message-router-zookeeper/templates/_zkquorum.tpl
@@ -0,0 +1,34 @@
+{{/*
+# Copyright © 2019 Amdocs, Bell Canada
+#
+# 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.
+*/}}
+
+{{- /*
+    Calculate the maximum number of zk server down in order to guarantee ZK quorum.
+    For guaranteeing ZK quorum we need half of the server + 1 up.
+
+    div in go template cast return an int64
+    so we need to know if it is an even number or an odd.
+    For this we are doing (n/2)*2=n?
+    if true it is even else it is even
+*/ -}}
+{{- define "zk.maxUnavailable" -}}
+{{- $halfReplica := div .Values.replicaCount 2 -}}
+ {{/* divide by 2 and multiply by 2 in order to know if it is an even number*/}}
+    {{if eq (mul $halfReplica 2) (int .Values.replicaCount) }}
+        {{- toYaml  (sub $halfReplica 1) -}}
+    {{else}}
+        {{- toYaml $halfReplica -}}
+    {{end}}
+{{- end -}}
diff --git a/kubernetes/dmaap/components/message-router/charts/message-router-zookeeper/templates/poddisruptionbudget.yaml b/kubernetes/dmaap/components/message-router/charts/message-router-zookeeper/templates/poddisruptionbudget.yaml
index 2d251e90b0..5a370cdc4a 100644
--- a/kubernetes/dmaap/components/message-router/charts/message-router-zookeeper/templates/poddisruptionbudget.yaml
+++ b/kubernetes/dmaap/components/message-router/charts/message-router-zookeeper/templates/poddisruptionbudget.yaml
@@ -25,4 +25,4 @@ spec:
   selector:
     matchLabels:
       app: {{ include "common.name" . }}
-  maxUnavailable: {{ div (sub .Values.replicaCount 1) 2 }}
+  maxUnavailable: {{ include "zk.maxUnavailable" . }}
-- 
cgit