Merge "Update gizmo fproxy client cert"
authorAlexis de Talhouët <alexis.de_talhouet@bell.ca>
Mon, 29 Oct 2018 21:04:43 +0000 (21:04 +0000)
committerGerrit Code Review <gerrit@onap.org>
Mon, 29 Oct 2018 21:04:43 +0000 (21:04 +0000)
100 files changed:
kubernetes/aaf/charts/aaf-cm/templates/deployment.yaml
kubernetes/aaf/charts/aaf-cm/values.yaml
kubernetes/aaf/charts/aaf-cs/values.yaml
kubernetes/aaf/charts/aaf-fs/templates/deployment.yaml
kubernetes/aaf/charts/aaf-fs/values.yaml
kubernetes/aaf/charts/aaf-gui/templates/deployment.yaml
kubernetes/aaf/charts/aaf-gui/values.yaml
kubernetes/aaf/charts/aaf-hello/templates/deployment.yaml
kubernetes/aaf/charts/aaf-hello/values.yaml
kubernetes/aaf/charts/aaf-locate/templates/deployment.yaml
kubernetes/aaf/charts/aaf-locate/values.yaml
kubernetes/aaf/charts/aaf-oauth/templates/deployment.yaml
kubernetes/aaf/charts/aaf-oauth/values.yaml
kubernetes/aaf/charts/aaf-service/templates/deployment.yaml
kubernetes/aaf/charts/aaf-service/values.yaml
kubernetes/aaf/charts/aaf-sms/resources/config/has.json
kubernetes/aaf/values.yaml
kubernetes/aai/charts/aai-champ/templates/deployment.yaml
kubernetes/clamp/charts/clamp-dash-kibana/values.yaml
kubernetes/clamp/charts/clamp-dash-logstash/values.yaml
kubernetes/clamp/values.yaml
kubernetes/common/music/Chart.yaml [moved from kubernetes/oof/charts/oof-has/charts/oof-has-music/Chart.yaml with 76% similarity]
kubernetes/common/music/charts/music-cassandra-job/.helmignore [moved from kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/.helmignore with 100% similarity]
kubernetes/common/music/charts/music-cassandra-job/Chart.yaml [new file with mode: 0644]
kubernetes/common/music/charts/music-cassandra-job/resources/LICENSE.txt [new file with mode: 0644]
kubernetes/common/music/charts/music-cassandra-job/resources/cql/admin.cql [new file with mode: 0644]
kubernetes/common/music/charts/music-cassandra-job/resources/cql/admin_pw.cql [new file with mode: 0644]
kubernetes/common/music/charts/music-cassandra-job/resources/cql/extra/check.cql [new file with mode: 0644]
kubernetes/common/music/charts/music-cassandra-job/templates/configmap.yaml [new file with mode: 0755]
kubernetes/common/music/charts/music-cassandra-job/templates/configmap_extra.yaml [new file with mode: 0755]
kubernetes/common/music/charts/music-cassandra-job/templates/job.yaml [new file with mode: 0644]
kubernetes/common/music/charts/music-cassandra-job/values.yaml [new file with mode: 0644]
kubernetes/common/music/charts/music-cassandra/.helmignore [new file with mode: 0644]
kubernetes/common/music/charts/music-cassandra/Chart.yaml [moved from kubernetes/oof/charts/oof-has/charts/oof-has-zookeeper/Chart.yaml with 78% similarity]
kubernetes/common/music/charts/music-cassandra/requirements.yaml [new file with mode: 0644]
kubernetes/common/music/charts/music-cassandra/templates/service.yaml [new file with mode: 0644]
kubernetes/common/music/charts/music-cassandra/templates/statefulset.yaml [new file with mode: 0644]
kubernetes/common/music/charts/music-cassandra/templates/volumes.yaml [new file with mode: 0644]
kubernetes/common/music/charts/music-cassandra/values.yaml [moved from kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/values.yaml with 51% similarity]
kubernetes/common/music/charts/music-tomcat/Chart.yaml [moved from kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/Chart.yaml with 78% similarity, mode: 0755]
kubernetes/common/music/charts/music-tomcat/requirements.yaml [new file with mode: 0755]
kubernetes/common/music/charts/music-tomcat/resources/config/music.properties [moved from kubernetes/oof/charts/oof-has/charts/oof-has-music/resources/config/music.properties with 50% similarity, mode: 0755]
kubernetes/common/music/charts/music-tomcat/templates/configmap.yaml [moved from kubernetes/oof/charts/oof-has/charts/oof-has-music/templates/configmap.yaml with 73% similarity, mode: 0755]
kubernetes/common/music/charts/music-tomcat/templates/deployment.yaml [moved from kubernetes/oof/charts/oof-has/charts/oof-has-music/templates/deployment.yaml with 62% similarity, mode: 0755]
kubernetes/common/music/charts/music-tomcat/templates/service.yaml [moved from kubernetes/oof/charts/oof-has/charts/oof-has-music/templates/service.yaml with 85% similarity, mode: 0755]
kubernetes/common/music/charts/music-tomcat/values.yaml [moved from kubernetes/oof/charts/oof-has/charts/oof-has-music/values.yaml with 75% similarity, mode: 0755]
kubernetes/common/music/charts/zookeeper/.helmignore [new file with mode: 0644]
kubernetes/common/music/charts/zookeeper/Chart.yaml [new file with mode: 0644]
kubernetes/common/music/charts/zookeeper/OWNERS [new file with mode: 0644]
kubernetes/common/music/charts/zookeeper/README.md [new file with mode: 0644]
kubernetes/common/music/charts/zookeeper/templates/NOTES.txt [new file with mode: 0644]
kubernetes/common/music/charts/zookeeper/templates/_helpers.tpl [new file with mode: 0644]
kubernetes/common/music/charts/zookeeper/templates/config-jmx-exporter.yaml [new file with mode: 0644]
kubernetes/common/music/charts/zookeeper/templates/job-chroots.yaml [new file with mode: 0644]
kubernetes/common/music/charts/zookeeper/templates/poddisruptionbudget.yaml [new file with mode: 0644]
kubernetes/common/music/charts/zookeeper/templates/service-headless.yaml [new file with mode: 0644]
kubernetes/common/music/charts/zookeeper/templates/service.yaml [new file with mode: 0644]
kubernetes/common/music/charts/zookeeper/templates/statefulset.yaml [new file with mode: 0644]
kubernetes/common/music/charts/zookeeper/templates/volumes.yaml [new file with mode: 0644]
kubernetes/common/music/charts/zookeeper/values.yaml [new file with mode: 0644]
kubernetes/common/music/requirements.yaml [moved from kubernetes/oof/charts/oof-has/charts/oof-has-music/requirements.yaml with 87% similarity]
kubernetes/common/music/values.yaml [moved from kubernetes/oof/charts/oof-has/charts/oof-has-zookeeper/values.yaml with 51% similarity]
kubernetes/esr/charts/esr-gui/values.yaml
kubernetes/esr/charts/esr-server/values.yaml
kubernetes/multicloud/charts/multicloud-azure/values.yaml
kubernetes/oof/charts/oof-has/charts/oof-has-api/templates/deployment.yaml
kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/resources/config/cassandra/docker-entrypoint-initdb.d/zzz_conductor.cql [deleted file]
kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/NOTES.txt [deleted file]
kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/configmap.yaml [deleted file]
kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/deployment.yaml [deleted file]
kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/pv.yaml [deleted file]
kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/pvc.yaml [deleted file]
kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/service.yaml [deleted file]
kubernetes/oof/charts/oof-has/charts/oof-has-controller/templates/deployment.yaml
kubernetes/oof/charts/oof-has/charts/oof-has-data/templates/deployment.yaml
kubernetes/oof/charts/oof-has/charts/oof-has-music/resources/config/startup.sh [deleted file]
kubernetes/oof/charts/oof-has/charts/oof-has-music/templates/NOTES.txt [deleted file]
kubernetes/oof/charts/oof-has/charts/oof-has-reservation/templates/deployment.yaml
kubernetes/oof/charts/oof-has/charts/oof-has-solver/templates/deployment.yaml
kubernetes/oof/charts/oof-has/charts/oof-has-zookeeper/templates/NOTES.txt [deleted file]
kubernetes/oof/charts/oof-has/charts/oof-has-zookeeper/templates/deployment.yaml [deleted file]
kubernetes/oof/charts/oof-has/charts/oof-has-zookeeper/templates/service.yaml [deleted file]
kubernetes/oof/charts/oof-has/requirements.yaml
kubernetes/oof/charts/oof-has/resources/config/conductor.conf
kubernetes/oof/charts/oof-has/resources/config/healthcheck.json [new file with mode: 0755]
kubernetes/oof/charts/oof-has/resources/config/onboard.json [new file with mode: 0755]
kubernetes/oof/charts/oof-has/templates/job-healthcheck.yaml [new file with mode: 0755]
kubernetes/oof/charts/oof-has/templates/job-onboard.yaml [new file with mode: 0755]
kubernetes/oof/charts/oof-has/values.yaml
kubernetes/oof/resources/config/osdf_config.yaml
kubernetes/oof/templates/deployment.yaml
kubernetes/oof/values.yaml
kubernetes/policy/charts/brmsgw/values.yaml
kubernetes/policy/charts/drools/values.yaml
kubernetes/policy/charts/pdp/values.yaml
kubernetes/policy/charts/policy-apex-pdp/values.yaml
kubernetes/policy/charts/policy-distribution/values.yaml
kubernetes/policy/values.yaml
kubernetes/robot/demo-k8s.sh
kubernetes/uui/charts/uui-server/values.yaml

index 8655054..f78dfdc 100644 (file)
@@ -68,7 +68,7 @@ spec:
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
       containers:
       - name: {{ include "common.name" . }}
-        command: ["/bin/bash","/opt/app/aaf/bin/cm"]
+        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_cm","sleep","0","cd /opt/app/aaf;bin/cm"]
         image: "{{ include "common.repository" . }}/{{ .Values.image }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         volumeMounts:
index 6897898..c838e17 100644 (file)
@@ -25,7 +25,7 @@ flavor: small
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/aaf/aaf_cm:2.1.5
+image: onap/aaf/aaf_cm:2.1.6-SNAPSHOT
 aaf_register_as: "aaf-cm.onap"
 pullPolicy: Always
 
index 61c0808..9c0b8c0 100644 (file)
@@ -24,7 +24,7 @@ flavor: small
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/aaf/aaf_cass:2.1.5-SNAPSHOT
+image: onap/aaf/aaf_cass:2.1.6-SNAPSHOT
 pullPolicy: Always
 
 # application configuration
index cfafba7..b938448 100644 (file)
@@ -68,7 +68,7 @@ spec:
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
       containers:
       - name: {{ include "common.name" . }}
-        command: ["/bin/bash","/opt/app/aaf/bin/fs"]
+        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_fs","sleep","0","cd /opt/app/aaf;bin/fs"]
         image: "{{ include "common.repository" . }}/{{ .Values.image }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         volumeMounts:
index bfa9576..e4a805f 100644 (file)
@@ -25,7 +25,7 @@ flavor: small
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/aaf/aaf_fs:2.1.5
+image: onap/aaf/aaf_fs:2.1.6-SNAPSHOT
 aaf_register_as: "aaf-fs.onap"
 pullPolicy: Always
 
index 0342412..9dd8794 100644 (file)
@@ -68,7 +68,7 @@ spec:
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
       containers:
       - name: {{ include "common.name" . }}
-        command: ["/bin/bash","/opt/app/aaf/bin/gui"]
+        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_gui","sleep","0","cd /opt/app/aaf;bin/gui"]
         image: "{{ include "common.repository" . }}/{{ .Values.image }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         volumeMounts:
index 50315db..9d391f8 100644 (file)
@@ -26,7 +26,7 @@ flavor: small
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/aaf/aaf_gui:2.1.5
+image: onap/aaf/aaf_gui:2.1.6-SNAPSHOT
 aaf_register_as: "aaf-gui.onap"
 pullPolicy: Always
 
index d3049e0..c57e57f 100644 (file)
@@ -34,7 +34,6 @@ spec:
       - name: {{ include "common.name" . }}-config-container
         image: "{{ include "common.repository" . }}/{{ .Values.global.configImage }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-
         volumeMounts:
           - mountPath: "/opt/app/osaaf"
             name: {{ include "common.name" . }}-config-vol
@@ -69,7 +68,7 @@ spec:
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
       containers:
       - name: {{ include "common.name" . }}
-        command: ["/bin/bash","/opt/app/aaf/bin/hello"]
+        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_hello","sleep","0","cd /opt/app/aaf;bin/hello"]
         image: "{{ include "common.repository" . }}/{{ .Values.image }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         volumeMounts:
index 35a697b..5955261 100644 (file)
@@ -25,7 +25,7 @@ flavor: small
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/aaf/aaf_hello:2.1.5
+image: onap/aaf/aaf_hello:2.1.6-SNAPSHOT
 aaf_register_as: "aaf-hello.onap"
 pullPolicy: Always
 
index ea4e3e8..a2f9f55 100644 (file)
@@ -34,7 +34,6 @@ spec:
       - name: {{ include "common.name" . }}-config-container
         image: "{{ include "common.repository" . }}/{{ .Values.global.configImage }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-
         volumeMounts:
           - mountPath: "/opt/app/osaaf"
             name: {{ include "common.name" . }}-config-vol
@@ -69,7 +68,7 @@ spec:
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
       containers:
       - name: {{ include "common.name" . }}
-        command: ["/bin/bash","/opt/app/aaf/bin/locate"]
+        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_locate","sleep","0","cd /opt/app/aaf;bin/locate"]
         image: "{{ include "common.repository" . }}/{{ .Values.image }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         volumeMounts:
index 6384395..5a4e749 100644 (file)
@@ -25,7 +25,7 @@ flavor: small
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/aaf/aaf_locate:2.1.5
+image: onap/aaf/aaf_locate:2.1.6-SNAPSHOT
 aaf_register_as: "aaf-locate.onap"
 pullPolicy: Always
 
index aed0bbe..f7a34f4 100644 (file)
@@ -68,7 +68,7 @@ spec:
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
       containers:
       - name: {{ include "common.name" . }}
-        command: ["/bin/bash","/opt/app/aaf/bin/oauth"]
+        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_oauth","sleep","0","cd /opt/app/aaf;bin/oauth"]
         image: "{{ include "common.repository" . }}/{{ .Values.image }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         volumeMounts:
index 874b506..a915fed 100644 (file)
@@ -25,7 +25,7 @@ flavor: small
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/aaf/aaf_oauth:2.1.5
+image: onap/aaf/aaf_oauth:2.1.6-SNAPSHOT
 aaf_register_as: "aaf-oauth.onap"
 pullPolicy: Always
 
index 35b17ba..92d2312 100644 (file)
@@ -68,7 +68,7 @@ spec:
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
       containers:
       - name: {{ include "common.name" . }}
-        command: ["/bin/bash","/opt/app/aaf/bin/service"]
+        command: ["/bin/bash","/opt/app/aaf/pod/pod_wait.sh","aaf_service","sleep","0","cd /opt/app/aaf;bin/service"]
         image: "{{ include "common.repository" . }}/{{ .Values.image }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         volumeMounts:
index 5921ff6..83c6d3a 100644 (file)
@@ -25,7 +25,7 @@ flavor: small
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/aaf/aaf_service:2.1.5
+image: onap/aaf/aaf_service:2.1.6-SNAPSHOT
 aaf_register_as: "aaf-service.onap"
 pullPolicy: Always
 
index 9d017f9..ae990a9 100644 (file)
@@ -5,8 +5,8 @@
             {
                 "name": "aai",
                 "values": {
-                    "username": "OOF",
-                    "password": "OOF"
+                    "username": "oof@oof.onap.org",
+                    "password": "demo123456!"
                 }
             },
             {
index d53fe9d..787eb84 100644 (file)
@@ -21,7 +21,7 @@ global:
   readinessImage: readiness-check:2.0.0
   ubuntuInitRepository: registry.hub.docker.com
   ubuntuInitImage: oomk8s/ubuntu-init:2.0.0
-  configImage: onap/aaf/aaf_config:2.1.5-SNAPSHOT
+  configImage: onap/aaf/aaf_config:2.1.6-SNAPSHOT
   persistence:
     enabled: true
 
index 0c125b1..4e1866c 100644 (file)
@@ -31,6 +31,21 @@ spec:
         app: {{ include "common.name" . }}
         release: {{ .Release.Name }}
     spec:
+      initContainers:
+        - command:
+          - /root/ready.py
+          args:
+          - --container-name
+          - aai-cassandra
+          env:
+          - name: NAMESPACE
+            valueFrom:
+              fieldRef:
+                apiVersion: v1
+                fieldPath: metadata.namespace
+          image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+          name: {{ include "common.name" . }}-readiness
       containers:
         - name: {{ include "common.name" . }}
           image: "{{ include "common.repository" . }}/{{ .Values.image }}"
index 950029c..d1e85aa 100644 (file)
@@ -33,7 +33,7 @@ busyboxImage: library/busybox:latest
 
 # application image
 repository: nexus3.onap.org:10001
-image: onap/clamp-dashboard-kibana:3.0.0
+image: onap/clamp-dashboard-kibana:3.0.1
 pullPolicy: Always
 
 # flag to enable debugging - application support required
index 586132d..a05564a 100644 (file)
@@ -29,7 +29,7 @@ global:
 
 # application image
 repository: nexus3.onap.org:10001
-image: onap/clamp-dashboard-logstash:3.0.0
+image: onap/clamp-dashboard-logstash:3.0.1
 pullPolicy: Always
 
 # flag to enable debugging - application support required
index 3d63810..24462d8 100644 (file)
@@ -28,7 +28,7 @@ subChartsOnly:
 
 # application image
 repository: nexus3.onap.org:10001
-image: onap/clamp:3.0.0
+image: onap/clamp:3.0.1
 pullPolicy: Always
 
 # flag to enable debugging - application support required
@@ -1,5 +1,4 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -14,6 +13,6 @@
 # limitations under the License.
 
 apiVersion: v1
-description: ONAP OOF-MUSIC Container
-name: oof-has-music
-version: 2.5.3
+description: MUSIC - Multi-site State Coordination Service
+name: music
+version: 3.0.0
diff --git a/kubernetes/common/music/charts/music-cassandra-job/Chart.yaml b/kubernetes/common/music/charts/music-cassandra-job/Chart.yaml
new file mode 100644 (file)
index 0000000..fd42176
--- /dev/null
@@ -0,0 +1,19 @@
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
+#
+# 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.
+
+apiVersion: v1
+description: Cassandra Job - Run CQL Scripts after Cassandra Starts.
+name: music-cassandra-job
+version: 3.0.0
+
diff --git a/kubernetes/common/music/charts/music-cassandra-job/resources/LICENSE.txt b/kubernetes/common/music/charts/music-cassandra-job/resources/LICENSE.txt
new file mode 100644 (file)
index 0000000..7f60913
--- /dev/null
@@ -0,0 +1,13 @@
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
+#
+# 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.
\ No newline at end of file
diff --git a/kubernetes/common/music/charts/music-cassandra-job/resources/cql/admin.cql b/kubernetes/common/music/charts/music-cassandra-job/resources/cql/admin.cql
new file mode 100644 (file)
index 0000000..a76d774
--- /dev/null
@@ -0,0 +1,19 @@
+CREATE KEYSPACE IF NOT EXISTS admin
+    WITH REPLICATION = {
+        'class' : '{{.Values.cql.keyspace.replicationClass}}',
+        'replication_factor': {{.Values.cql.keyspace.replicationFactor}}
+    }
+    AND DURABLE_WRITES = true;
+
+CREATE TABLE IF NOT EXISTS admin.keyspace_master (
+    uuid uuid,
+    keyspace_name text,
+    application_name text,
+    is_api boolean,
+    password text,
+    username text,
+    is_aaf boolean,
+    PRIMARY KEY (uuid)
+);
+
+describe keyspaces;
diff --git a/kubernetes/common/music/charts/music-cassandra-job/resources/cql/admin_pw.cql b/kubernetes/common/music/charts/music-cassandra-job/resources/cql/admin_pw.cql
new file mode 100644 (file)
index 0000000..24f2ad7
--- /dev/null
@@ -0,0 +1,8 @@
+CREATE ROLE IF NOT EXISTS {{.Values.cql.adminUser.username}}
+WITH PASSWORD = '{{.Values.cql.adminUser.password}}'
+AND SUPERUSER = true
+AND LOGIN = true;
+
+ALTER ROLE cassandra
+WITH PASSWORD = '{{.Values.cql.adminUser.passwordReplace}}';
+
diff --git a/kubernetes/common/music/charts/music-cassandra-job/resources/cql/extra/check.cql b/kubernetes/common/music/charts/music-cassandra-job/resources/cql/extra/check.cql
new file mode 100644 (file)
index 0000000..a516be8
--- /dev/null
@@ -0,0 +1,23 @@
+CREATE KEYSPACE testks
+    WITH REPLICATION = {
+        'class' : '{{.Values.cql.keyspace.replicationClass}}',
+        'replication_factor': {{.Values.cql.keyspace.replicationFactor}}
+    }
+    AND DURABLE_WRITES = true;
+
+CREATE TABLE testks.keyspace_master_table (
+    uuid uuid,
+    keyspace_name text,
+    application_name text,
+    is_api boolean,
+    password text,
+    username text,
+    is_aaf boolean,
+    PRIMARY KEY (uuid)
+);
+
+DESCRIBE KEYSPACES;
+DESCRIBE keyspace testks;
+SELECT * FROM system_auth.roles;
+DROP keyspace testks;
+
diff --git a/kubernetes/common/music/charts/music-cassandra-job/templates/configmap.yaml b/kubernetes/common/music/charts/music-cassandra-job/templates/configmap.yaml
new file mode 100755 (executable)
index 0000000..011dccd
--- /dev/null
@@ -0,0 +1,24 @@
+{{/*
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
+#
+# 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.
+*/}}
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.fullname" . }}-cql
+  namespace: {{ include "common.namespace" . }}
+data:
+{{ tpl (.Files.Glob "resources/cql/*").AsConfig . | indent 2 }}
+
diff --git a/kubernetes/common/music/charts/music-cassandra-job/templates/configmap_extra.yaml b/kubernetes/common/music/charts/music-cassandra-job/templates/configmap_extra.yaml
new file mode 100755 (executable)
index 0000000..72733b3
--- /dev/null
@@ -0,0 +1,24 @@
+{{/*
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
+#
+# 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.
+*/}}
+
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ include "common.fullname" . }}-extra-cql
+  namespace: {{ include "common.namespace" . }}
+data:
+{{ tpl (.Files.Glob "resources/cql/extra/*").AsConfig . | indent 2 }}
+
diff --git a/kubernetes/common/music/charts/music-cassandra-job/templates/job.yaml b/kubernetes/common/music/charts/music-cassandra-job/templates/job.yaml
new file mode 100644 (file)
index 0000000..6ec282e
--- /dev/null
@@ -0,0 +1,88 @@
+{{/*
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
+#
+# 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.
+*/}}
+
+apiVersion: batch/v1
+kind: Job
+metadata:
+  name: {{ include "common.fullname" . }}-config
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}-job
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}-job
+        release: {{ .Release.Name }}
+    spec:
+      restartPolicy: Never
+      initContainers:
+      - name: {{ include "common.name" . }}-readiness
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        command:
+        - /root/ready.py
+        args:
+        - --container-name
+        - music-cassandra
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+      containers:
+      - name: {{ include "common.name" . }}-update-job
+        image: "{{ .Values.global.repository }}/{{ .Values.job.cassandra.image }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        env:
+        - name: CASS_HOSTNAME
+          value: "{{ .Values.job.host }}"
+        - name: USERNAME
+          value: "{{ .Values.cql.adminUser.username }}"
+        - name: PORT
+          value: "{{ .Values.job.port }}"
+        - name: PASSWORD
+          value: "{{ .Values.cql.adminUser.password }}"
+        - name: TIMEOUT
+          value: "{{ .Values.job.timeout }}"
+        - name: DELAY 
+          value: "{{ .Values.job.delay }}"
+        volumeMounts:
+        # Admin cql Files that setup Admin Keyspace and Change Admin user.
+        - name: {{ include "common.name" . }}-cql
+          mountPath: /cql/admin.cql
+          subPath: admin.cql
+        - name: {{ include "common.name" . }}-cql
+          mountPath: /cql/admin_pw.cql
+          subPath: admin_pw.cql
+        # This is where Apps or MISC will put any of their own startup cql scripts.
+        - name: {{ include "common.name" . }}-extra-cql
+          mountPath: /cql/extra
+      volumes:
+      - name: {{ include "common.name" . }}-cql
+        configMap:
+          name: {{ include "common.fullname" . }}-cql
+      - name: {{ include "common.name" . }}-extra-cql
+        configMap:
+          name: {{ include "common.fullname" . }}-extra-cql
+      restartPolicy: Never
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
+
diff --git a/kubernetes/common/music/charts/music-cassandra-job/values.yaml b/kubernetes/common/music/charts/music-cassandra-job/values.yaml
new file mode 100644 (file)
index 0000000..5d9b564
--- /dev/null
@@ -0,0 +1,70 @@
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
+#
+# 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.
+
+# Default values for cassandra.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+global:
+  pullPolicy: Always
+  repository: nexus3.onap.org:10001
+
+  # readiness check
+  readinessRepository: oomk8s
+  readinessImage: readiness-check:2.0.0
+
+  # logging agent
+  loggingRepository: docker.elastic.co
+  loggingImage: beats/filebeat:5.5.0
+
+  replicaCount: 3
+
+job:
+  host: music-cassandra
+  port: 9042
+  busybox: 
+    image: library/busybox:latest
+  cassandra: 
+    image: onap/music/cassandra_job:3.0.23
+  timeout: 30
+  delay: 120
+cql:
+  keyspace:
+    replicationClass: "SimpleStrategy"
+    replicationFactor: 3
+  adminUser:
+    username: nelson24 
+    password: nelson24 
+    passwordReplace: A2C4E6G8I0J2L4O6Q8S0U2W4Y6
+    
+podManagementPolicy: OrderedReady
+updateStrategy:
+  type: OnDelete
+
+ingress:
+  enabled: false
+
+tolerations: []
+
+affinity: {}
+
+persistence:
+  enabled: true
+
+resources:
+  limits:
+    cpu: 1
+    memory: 1Gi
+  requests:
+    cpu: 1
+    memory: 1Gi
diff --git a/kubernetes/common/music/charts/music-cassandra/.helmignore b/kubernetes/common/music/charts/music-cassandra/.helmignore
new file mode 100644 (file)
index 0000000..f0c1319
--- /dev/null
@@ -0,0 +1,21 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
@@ -1,5 +1,4 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -14,6 +13,7 @@
 # limitations under the License.
 
 apiVersion: v1
-description: ONAP OOF Zookeeper
-name: oof-has-zookeeper
+description: ONAP - Cassandra Database
+name: music-cassandra
 version: 3.0.0
+
diff --git a/kubernetes/common/music/charts/music-cassandra/requirements.yaml b/kubernetes/common/music/charts/music-cassandra/requirements.yaml
new file mode 100644 (file)
index 0000000..a22007c
--- /dev/null
@@ -0,0 +1,18 @@
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
+#
+# 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.
+
+dependencies:
+  - name: common
+    version: ~3.0.0
+    repository: '@local'
\ No newline at end of file
diff --git a/kubernetes/common/music/charts/music-cassandra/templates/service.yaml b/kubernetes/common/music/charts/music-cassandra/templates/service.yaml
new file mode 100644 (file)
index 0000000..818c70e
--- /dev/null
@@ -0,0 +1,54 @@
+{{/*
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
+#
+# 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.
+*/}}
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ include "common.servicename" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+  annotations:
+    service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
+spec:
+  type: {{ .Values.service.type }}
+  # Not working, open k8s bug: https://github.com/kubernetes/kubernetes/issues/58662
+  publishNotReadyAddresses: true
+  ports:
+  {{if eq .Values.service.type "NodePort" -}}
+  - port: {{ .Values.service.internalPort }}
+    nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
+    name: {{ .Values.service.portName }}
+  - port: {{ .Values.service.internalPort2 }}
+    nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
+    name: {{ .Values.service.portName3 }}
+  - port: {{ .Values.service.internalPort3 }}
+    nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }}
+    name: {{ .Values.service.portName3 }}
+  {{- else -}}
+  - port: {{ .Values.service.internalPort }}
+    name: {{ .Values.service.portName }}
+  - port: {{ .Values.service.internalPort2 }}
+    name: {{ .Values.service.portName2 }}
+  - port: {{ .Values.service.internalPort3 }}
+    name: {{ .Values.service.portName3 }}
+  {{- end}}
+  selector:
+    app: {{ include "common.name" . }}
+    release: {{ .Release.Name }}
+  clusterIP: None
diff --git a/kubernetes/common/music/charts/music-cassandra/templates/statefulset.yaml b/kubernetes/common/music/charts/music-cassandra/templates/statefulset.yaml
new file mode 100644 (file)
index 0000000..103b1df
--- /dev/null
@@ -0,0 +1,135 @@
+{{/*
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
+#
+# 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.
+*/}}
+
+
+apiVersion: apps/v1beta1
+kind: StatefulSet
+metadata:
+  name: {{ include "common.fullname" . }}
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  podAntiAffinity:
+    preferredDuringSchedulingIgnoredDuringExecution:
+    - weight: 1
+      podAffinityTerm:
+        labelSelector:
+          matchExpressions:
+            - key: app
+              operator: In
+              values:
+              - {{ .Chart.Name }}
+        topologyKey: kubernetes.io/hostname
+  serviceName: {{ include "common.servicename" . }}
+  replicas: {{ .Values.replicaCount }}
+  podManagementPolicy: {{ .Values.podManagementPolicy }}
+  updateStrategy:
+    type: {{ .Values.updateStrategy.type }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}
+        release: {{ .Release.Name }}
+      name: {{ include "common.name" . }}
+    spec:
+      containers:
+      - name: {{ include "common.name" . }}
+        image: "{{ .Values.global.repository }}/{{ .Values.image.image }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        ports:
+        - containerPort: {{ .Values.service.internalPort }}
+        - containerPort: {{ .Values.service.internalPort2 }}
+        - containerPort: {{ .Values.service.internalPort3 }}
+        {{- if eq .Values.liveness.enabled true }}
+        livenessProbe:
+          exec:
+            command:
+            - /bin/bash
+            - -c
+            - nodetool status | grep $POD_IP | awk '$1!="UN" { exit 1; }'
+          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
+          periodSeconds: {{ .Values.liveness.periodSeconds }}
+        {{ end -}}
+        readinessProbe:
+          exec:
+            command:
+            - /bin/bash
+            - -c
+            - nodetool status | grep $POD_IP | awk '$1!="UN" { exit 1; }'
+          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
+          timeoutSeconds: {{ .Values.liveness.periodSeconds }}
+        lifecycle:
+          preStop:
+            exec:
+              command: ["/bin/sh", "-c", "PID=$(pidof java) && kill $PID && while ps -p $PID > /dev/null; do sleep 1; done"]
+        env:
+        {{- $seed_size := default 1 .Values.replicaCount | int -}}
+        {{- $global := . }}
+          - name: MAX_HEAP_SIZE
+            value: {{ .Values.config.heap.max }}
+          - name: HEAP_NEWSIZE
+            value: {{ .Values.config.heap.min }}
+          - name: CASSANDRA_SEEDS
+            value: "{{- range $i, $e := until $seed_size }}{{ template "common.fullname" $global }}-{{ $i }}.{{ include "common.servicename" $global }}{{- if (lt ( add 1 $i ) $seed_size ) }},{{- end }}{{- end }}"
+          - name: JVM_OPTS
+            value: {{ .Values.config.jvmOpts | quote }}
+          - name: CASSANDRA_CLUSTER_NAME
+            value: {{ .Values.config.clusterName | quote }}
+          - name: CASSANDRA_DC
+            value: {{ .Values.config.dataCenter | quote }}
+          - name: CASSANDRA_RACK
+            value: {{ .Values.config.rackName | quote }}
+          - name: CASSANDRA_AUTO_BOOTSTRAP
+            value: {{ .Values.config.autoBootstrap | quote }}
+          - name: POD_IP
+            valueFrom:
+              fieldRef:
+                fieldPath: status.podIP
+        volumeMounts:
+          - name: cassandra-data
+            mountPath: /var/lib/cassandra
+        resources:
+{{ toYaml .Values.resources | indent 10 }}
+      volumes:
+      - name: localtime
+        hostPath:
+          path: /etc/localtime
+  {{- if not .Values.persistence.enabled }}
+      - name: cassandra-data
+        emptyDir: {}
+  {{- else }}
+  volumeClaimTemplates:
+    - metadata:
+        name: cassandra-data
+        labels:
+          app: {{ template "common.fullname" . }}
+          chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+          release: "{{ .Release.Name }}"
+          heritage: "{{ .Release.Service }}"
+      annotations:
+        volume.beta.kubernetes.io/storage-class: {{ .Values.persistence.storageClass }}
+      spec:
+        storageClassName: {{ .Values.persistence.storageClass }}
+        accessModes:
+          - {{ .Values.persistence.accessMode | quote }}
+        resources:
+          requests:
+            storage: {{ .Values.persistence.size | quote }}
+  {{- end }}
diff --git a/kubernetes/common/music/charts/music-cassandra/templates/volumes.yaml b/kubernetes/common/music/charts/music-cassandra/templates/volumes.yaml
new file mode 100644 (file)
index 0000000..83e7e18
--- /dev/null
@@ -0,0 +1,52 @@
+{{/*
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
+#
+# 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.
+*/}}
+
+{{ if .Values.persistence.enabled }}
+{{- $root := . -}}
+{{ range $i, $e := until (atoi (quote $root.Values.replicaCount) | default 3) }}
+---
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+  name: {{ $root.Release.Name }}-{{ $root.Values.service.name }}-{{ $i }}
+  namespace: {{ $root.Release.Namespace }}
+  labels:
+    type: {{ $root.Values.persistence.storageType }}
+    app: {{ $root.Values.service.name }}
+    chart: {{ $root.Chart.Name }}-{{ $root.Chart.Version | replace "+" "_" }}
+    release: {{ $root.Release.Name }}
+    heritage: {{ $root.Release.Service }}
+spec:
+  capacity:
+    storage: {{ $root.Values.persistence.size }}
+  accessModes:
+    - {{ $root.Values.persistence.accessMode }}
+  hostPath:
+    path: {{ $root.Values.persistence.mountPath }}/{{ $root.Release.Name }}/{{ $root.Values.persistence.mountSubPath }}-{{$i}}
+  persistentVolumeReclaimPolicy: {{ $root.Values.persistence.volumeReclaimPolicy }}
+  podAntiAffinity:
+    preferredDuringSchedulingIgnoredDuringExecution:
+    - weight: 1
+      podAffinityTerm:
+        labelSelector:
+          matchExpressions:
+            - key: app
+              operator: In
+              values:
+              - "{{ $root.Chart.Name }}"
+        topologyKey: kubernetes.io/hostname
+{{ end }}
+{{ end }}
@@ -1,5 +1,4 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Default values for mariadb.
 # This is a YAML-formatted file.
 # Declare variables to be passed into your templates.
-global: # global defaults
+global:
   nodePortPrefix: 302
-  persistence: {}
 
+  pullPolicy: Always
+  repository: nexus3.onap.org:10001
 
-# application image
-repository: nexus3.onap.org:10001
-image: onap/music/cassandra_music:3.0.0
-pullPolicy: Always
+  # readiness check
+  readinessRepository: oomk8s
+  readinessImage: readiness-check:2.0.0
 
-# application configuration
-config:
-  cassandraUsername: root
-  cassandraPassword: Aa123456
+  # logging agent
+  loggingRepository: docker.elastic.co
+  loggingImage: beats/filebeat:5.5.0
 
-# default number of instances
-replicaCount: 1
+replicaCount: 3
 
-nodeSelector: {}
+# Cassandra Image - This image is modified from the original on
+# Docker Hub where the Security has been turned on.
+# When logging into DB the default username and password are 'cassandra'
+# kubectl exec -it <cassandra-n> -n <namespace> cqlsh -u cassandra -p cassandra
+image:
+  image: onap/music/cassandra_3_11:3.0.23
+  pullPolicy: Always
 
-affinity: {}
+# Cassandra ENV configuration
+config:
+  heap:
+    max: 512M
+    min: 100M
+  jvmOpts: -Dcassandra.consistent.rangemovement=false
+  clusterName: music-cluster
+  dataCenter: onap-1
+  rackName: Rack1
+  autoBootstrap: true
+  ports:
+    cql: 9042
+    thrift: 9160
+    # If a JVM Agent is in place
+    # agent: 61621
+
+service:
+  expose: true
+  type: ClusterIP
+  name: music-cassandra
+  internalPort: 9042
+  portName: cql
+  internalPort2: 9160
+  portName2: thrift
+  internalPort3: 61621
+  portName3: agent
 
-# Resource Limit flavor -By Default using small
-flavor: small
-# Segregation for Different environment (Small and Large)
-resources:
-  small:
-    limits:
-      memory: 16Gi
-      cpu: 8000m
-    requests:
-      memory: 8Gi
-      cpu: 4000m
-  large:
-    limits:
-      memory: 32Gi
-      cpu: 16000m
-    requests:
-      memory: 16Gi
-      cpu: 8000m
-  unlimited: {}
 # probe configuration parameters
 liveness:
-  initialDelaySeconds: 10
+  initialDelaySeconds: 120
   periodSeconds: 10
   # necessary to disable liveness probe when setting breakpoints
   # in debugger so K8s doesn't restart unresponsive container
@@ -69,7 +77,15 @@ readiness:
   initialDelaySeconds: 10
   periodSeconds: 10
 
-## Persist data to a persitent volume
+podManagementPolicy: OrderedReady
+updateStrategy:
+  type: OnDelete
+
+ingress:
+  enabled: false
+
+tolerations: []
+
 persistence:
   enabled: true
 
@@ -86,25 +102,18 @@ persistence:
   ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
   ##   GKE, AWS & OpenStack)
   ##
-  # storageClass: "-"
-  accessMode: ReadWriteMany
+  ## storageClass: "-"
+  accessMode: ReadWriteOnce
   size: 2Gi
-  mountPath: /dockerdata-nfs
-  mountSubPath: oof/cassandra/data
-service:
-  type: ClusterIP
-  name: oof-has-cassandra
-  portName: oof-has-cassandra
-  externalPort: 9160
-  internalPort: 9160
-  externalPort2: 7000
-  internalPort2: 7000
-  externalPort3: 7001
-  internalPort3: 7001
-  externalPort4: 7199
-  internalPort4: 7199
-  externalPort5: 9042
-  internalPort5: 9042
+  mountPath: /dockerdata-nfs/
+  mountSubPath: common/cassandra/data
+  storageType: local
+  storageClass: ""
 
-ingress:
-  enabled: false
+resources:
+  limits:
+    cpu: 4
+    memory: 8Gi
+  requests:
+    cpu: 2
+    memory: 4Gi
old mode 100644 (file)
new mode 100755 (executable)
similarity index 78%
rename from kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/Chart.yaml
rename to kubernetes/common/music/charts/music-tomcat/Chart.yaml
index 5c12786..d0fdc60
@@ -1,5 +1,4 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -14,6 +13,6 @@
 # limitations under the License.
 
 apiVersion: v1
-description: OOF-HAS Cassandra
-name: oof-has-cassandra
+description: ONAP - MUSIC Tomcat Container
+name: music-tomcat
 version: 3.0.0
diff --git a/kubernetes/common/music/charts/music-tomcat/requirements.yaml b/kubernetes/common/music/charts/music-tomcat/requirements.yaml
new file mode 100755 (executable)
index 0000000..28352e4
--- /dev/null
@@ -0,0 +1,19 @@
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
+#
+# 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.
+
+
+dependencies:
+  - name: common
+    version: ~3.0.0
+    repository: '@local'
\ No newline at end of file
@@ -1,5 +1,4 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,12 +16,17 @@ my.public.ip=localhost
 all.public.ips=localhost
 my.id=0
 all.ids=0
-#######################################
-# Optional current values are defaults
-#######################################
-zookeeper.host=oof-has-zk
-cassandra.host=oof-has-cassandra
-cassandra.user=root
-cassandra.password=Aa123456
-# AAF Endpoint if using AAF
-aaf.endpoint.url=https://aaf.api.simpledemo.onap.org
+### Host Info ###
+zookeeper.host={{.Values.properties.zookeeperHost}}
+cassandra.host={{.Values.properties.cassandraHost}}
+### User Info ###
+cassandra.user={{.Values.properties.cassandraUser}}
+cassandra.password={{.Values.properties.cassandraPassword}}
+### AAF Endpoint ###
+aaf.endpoint.url={{.Values.properties.aafEndpointUrl}}
+### Admin API ###
+# AAF UAT
+aaf.admin.url={{.Values.properties.aafAdminUrl}}
+# AAF PROD
+admin.aaf.role={{.Values.properties.adminAafRole}}
+music.namespace={{.Values.properties.musicNamespace}}
old mode 100644 (file)
new mode 100755 (executable)
similarity index 73%
rename from kubernetes/oof/charts/oof-has/charts/oof-has-music/templates/configmap.yaml
rename to kubernetes/common/music/charts/music-tomcat/templates/configmap.yaml
index 7a38efa..1585934
@@ -1,5 +1,5 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright (C) 2018 AT&T,VMware
+{{/*
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # 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.
+*/}}
 
 apiVersion: v1
 kind: ConfigMap
 metadata:
   name: {{ include "common.fullname" . }}-configmap
   namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ .Release.Name }}
-    heritage: {{ .Release.Service }}
 data:
 {{ tpl (.Files.Glob "resources/config/*").AsConfig . | indent 2 }}
old mode 100644 (file)
new mode 100755 (executable)
similarity index 62%
rename from kubernetes/oof/charts/oof-has/charts/oof-has-music/templates/deployment.yaml
rename to kubernetes/common/music/charts/music-tomcat/templates/deployment.yaml
index 9dc160f..1fec55c
@@ -1,5 +1,5 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
+{{/*
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -12,6 +12,7 @@
 # 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.
+*/}}
 
 apiVersion: extensions/v1beta1
 kind: Deployment
@@ -32,22 +33,48 @@ spec:
         release: {{ .Release.Name }}
     spec:
       initContainers:
+      - name: {{ include "common.name" . }}-zookeeper-readiness
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        command:
+        - /root/ready.py
+        args:
+        - --container-name
+        - zookeeper 
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+      - name: {{ include "common.name" . }}-cassandra-readiness
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        command:
+        - /root/job_complete.py
+        args:
+        - -j
+        - "{{ .Release.Name }}-music-cassandra-job-config"
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
 # War Container
-       - name: "{{ include "common.name" . }}-war"
-         image: "{{ include "common.repository" . }}/{{ .Values.warImage }}"  #"
-         command: ["cp","/app/MUSIC.war","/webapps"]
-         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-         ports:
-         volumeMounts:
-         - mountPath: /webapps
-           name: shared-data
+      - name: "{{ .Chart.Name }}-war"
+        image: "{{ .Values.repository }}/{{ .Values.warImage }}"
+        command: ["cp","/app/MUSIC.war","/webapps"]
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        ports:
+        volumeMounts:
+        - mountPath: /webapps
+          name: shared-data
       containers:
       # Tomcat Container
-        - name: {{ include "common.name" . }}
-          image: "{{ include "common.repository" . }}/{{ .Values.image }}"   #"
+        - name: "{{ include "common.name" . }}"
+          image: "{{ .Values.repository }}/{{ .Values.image }}"
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-          resources:
-{{ include "common.resources" . | indent 12 }}
           ports:
           - containerPort: {{ .Values.service.internalPort }}
           # disable liveness probe when breakpoints set in debugger
@@ -73,9 +100,8 @@ spec:
           - name: properties-music
             mountPath: /opt/app/music/etc/music.properties
             subPath: music.properties
-          - name: properties-music
-            mountPath: /opt/app/music/startup.sh
-            subPath: startup.sh
+          resources:
+{{ toYaml .Values.resources | indent 10 }}
       volumes:
         - name: shared-data
           emptyDir: {}
old mode 100644 (file)
new mode 100755 (executable)
similarity index 85%
rename from kubernetes/oof/charts/oof-has/charts/oof-has-music/templates/service.yaml
rename to kubernetes/common/music/charts/music-tomcat/templates/service.yaml
index 097a44d..f6a086c
@@ -1,5 +1,5 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
+{{/*
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -12,6 +12,7 @@
 # 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.
+*/}}
 
 apiVersion: v1
 kind: Service
@@ -29,7 +30,7 @@ spec:
   ports:
     {{if eq .Values.service.type "NodePort" -}}
     - port: {{ .Values.service.externalPort }}
-      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
+      nodePort: {{ .Values.global.nodePortPrefixExt | default .Values.nodePortPrefixExt }}{{ .Values.service.nodePort }}
       name: {{ .Values.service.portName }}
     {{- else -}}
     - port: {{ .Values.service.externalPort }}
old mode 100644 (file)
new mode 100755 (executable)
similarity index 75%
rename from kubernetes/oof/charts/oof-has/charts/oof-has-music/values.yaml
rename to kubernetes/common/music/charts/music-tomcat/values.yaml
index f848162..5527800
@@ -1,5 +1,4 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+
 #################################################################
 # Global configuration defaults.
 #################################################################
 global:
   nodePortPrefix: 302
+  nodePortPrefixExt: 304
   repository: nexus3.onap.org:10001
+
+  # readiness check
   readinessRepository: oomk8s
   readinessImage: readiness-check:2.0.0
+
+  # logging agent
   loggingRepository: docker.elastic.co
   loggingImage: beats/filebeat:5.5.0
 
@@ -31,7 +36,7 @@ global:
 repository: nexus3.onap.org:10001
 image: library/tomcat:8.5
 pullPolicy: Always
-warImage: onap/music/music:2.5.3
+warImage: onap/music/music:3.0.23
 
 # flag to enable debugging - application support required
 debugEnabled: false
@@ -42,31 +47,18 @@ config:
   passwordCassandra: cassandra1
 
 # default number of instances
-replicaCount: 1
+replicaCount: 3
+
+job:
+  host: cassandra
+  port: 9042
+  busybox:
+    image: library/busybox:latest
 
 nodeSelector: {}
 
 affinity: {}
 
-# Resource Limit flavor -By Default using small
-flavor: small
-# Segregation for Different environment (Small and Large)
-resources:
-  small:
-    limits:
-      memory: 4Gi
-      cpu: 2000m
-    requests:
-      memory: 1Gi
-      cpu: 500m
-  large:
-    limits:
-      memory: 8Gi
-      cpu: 4000m
-    requests:
-      memory: 2Gi
-      cpu: 1000m
-  unlimited: {}
 # probe configuration parameters
 liveness:
   initialDelaySeconds: 10
@@ -81,10 +73,31 @@ readiness:
 
 service:
   type: NodePort
-  name: oof-has-music
+  name: music-tomcat
   externalPort: 8080
   internalPort: 8080
   nodePort: 76
-  portName: oof-has-music
+  portName: tomcat
 ingress:
   enabled: false
+
+#resources: {}
+resources:
+  limits:
+    cpu: 2
+    memory: 2Gi
+  requests:
+    cpu: 2
+    memory: 1Gi
+
+
+properties:
+  zookeeperHost: zookeeper
+  cassandraHost: music-cassandra
+  cassandraUser: nelson24
+  cassandraPassword: nelson24
+
+  # Admin API
+  # ONAP AAF
+  aafAdminUrl:
+
diff --git a/kubernetes/common/music/charts/zookeeper/.helmignore b/kubernetes/common/music/charts/zookeeper/.helmignore
new file mode 100644 (file)
index 0000000..f0c1319
--- /dev/null
@@ -0,0 +1,21 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
diff --git a/kubernetes/common/music/charts/zookeeper/Chart.yaml b/kubernetes/common/music/charts/zookeeper/Chart.yaml
new file mode 100644 (file)
index 0000000..01e8173
--- /dev/null
@@ -0,0 +1,15 @@
+name: zookeeper
+home: https://zookeeper.apache.org/
+version: 1.0.2
+appVersion: 3.4.10
+description: Centralized service for maintaining configuration information, naming,
+  providing distributed synchronization, and providing group services.
+icon: https://zookeeper.apache.org/images/zookeeper_small.gif
+sources:
+- https://github.com/apache/zookeeper
+- https://github.com/kubernetes/contrib/tree/master/statefulsets/zookeeper
+maintainers:
+- name: lachie83
+  email: lachlan.evenson@microsoft.com
+- name: kow3ns
+  email: owensk@google.com
diff --git a/kubernetes/common/music/charts/zookeeper/OWNERS b/kubernetes/common/music/charts/zookeeper/OWNERS
new file mode 100644 (file)
index 0000000..dd9facd
--- /dev/null
@@ -0,0 +1,6 @@
+approvers:
+- lachie83
+- kow3ns
+reviewers:
+- lachie83
+- kow3ns
diff --git a/kubernetes/common/music/charts/zookeeper/README.md b/kubernetes/common/music/charts/zookeeper/README.md
new file mode 100644 (file)
index 0000000..22bbac4
--- /dev/null
@@ -0,0 +1,140 @@
+# incubator/zookeeper
+
+This helm chart provides an implementation of the ZooKeeper [StatefulSet](http://kubernetes.io/docs/concepts/abstractions/controllers/statefulsets/) found in Kubernetes Contrib [Zookeeper StatefulSet](https://github.com/kubernetes/contrib/tree/master/statefulsets/zookeeper).
+
+## Prerequisites
+* Kubernetes 1.6+
+* PersistentVolume support on the underlying infrastructure
+* A dynamic provisioner for the PersistentVolumes
+* A familiarity with [Apache ZooKeeper 3.4.x](https://zookeeper.apache.org/doc/current/)
+
+## Chart Components
+This chart will do the following:
+
+* Create a fixed size ZooKeeper ensemble using a [StatefulSet](http://kubernetes.io/docs/concepts/abstractions/controllers/statefulsets/).
+* Create a [PodDisruptionBudget](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-disruption-budget/) so kubectl drain will respect the Quorum size of the ensemble.
+* Create a [Headless Service](https://kubernetes.io/docs/concepts/services-networking/service/) to control the domain of the ZooKeeper ensemble.
+* Create a Service configured to connect to the available ZooKeeper instance on the configured client port.
+* Optionally apply a [Pod Anti-Affinity](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#inter-pod-affinity-and-anti-affinity-beta-feature) to spread the ZooKeeper ensemble across nodes.
+* Optionally start JMX Exporter and Zookeeper Exporter containers inside Zookeeper pods.
+* Optionally create a job which creates Zookeeper chroots (e.g. `/kafka1`).
+
+## Installing the Chart
+You can install the chart with the release name `zookeeper` as below.
+
+```console
+$ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator
+$ helm install --name zookeeper incubator/zookeeper
+```
+
+If you do not specify a name, helm will select a name for you.
+
+### Installed Components
+You can use `kubectl get` to view all of the installed components.
+
+```console{%raw}
+$ kubectl get all -l app=zookeeper
+NAME:   zookeeper
+LAST DEPLOYED: Wed Apr 11 17:09:48 2018
+NAMESPACE: default
+STATUS: DEPLOYED
+
+RESOURCES:
+==> v1beta1/PodDisruptionBudget
+NAME       MIN AVAILABLE  MAX UNAVAILABLE  ALLOWED DISRUPTIONS  AGE
+zookeeper  N/A            1                1                    2m
+
+==> v1/Service
+NAME                TYPE       CLUSTER-IP     EXTERNAL-IP  PORT(S)                     AGE
+zookeeper-headless  ClusterIP  None           <none>       2181/TCP,3888/TCP,2888/TCP  2m
+zookeeper           ClusterIP  10.98.179.165  <none>       2181/TCP                    2m
+
+==> v1beta1/StatefulSet
+NAME       DESIRED  CURRENT  AGE
+zookeeper  3        3        2m
+```
+
+1. `statefulsets/zookeeper` is the StatefulSet created by the chart.
+1. `po/zookeeper-<0|1|2>` are the Pods created by the StatefulSet. Each Pod has a single container running a ZooKeeper server.
+1. `svc/zookeeper-headless` is the Headless Service used to control the network domain of the ZooKeeper ensemble.
+1. `svc/zookeeper` is a Service that can be used by clients to connect to an available ZooKeeper server.
+
+## Configuration
+You can specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
+
+Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
+
+```console
+$ helm install --name my-release -f values.yaml incubator/zookeeper
+```
+
+## Default Values
+
+- You can find all user-configurable settings, their defaults and commentary about them in [values.yaml](values.yaml).
+
+## Deep Dive
+
+## Image Details
+The image used for this chart is based on Ubuntu 16.04 LTS. This image is larger than Alpine or BusyBox, but it provides glibc, rather than ulibc or mucl, and a JVM release that is built against it. You can easily convert this chart to run against a smaller image with a JVM that is built against that image's libc. However, as far as we know, no Hadoop vendor supports, or has verified, ZooKeeper running on such a JVM.
+
+## JVM Details
+The Java Virtual Machine used for this chart is the OpenJDK JVM 8u111 JRE (headless).
+
+## ZooKeeper Details
+The ZooKeeper version is the latest stable version (3.4.10). The distribution is installed into /opt/zookeeper-3.4.10. This directory is symbolically linked to /opt/zookeeper. Symlinks are created to simulate a rpm installation into /usr.
+
+## Failover
+You can test failover by killing the leader. Insert a key:
+```console
+$ kubectl exec zookeeper-0 -- /opt/zookeeper/bin/zkCli.sh create /foo bar;
+$ kubectl exec zookeeper-2 -- /opt/zookeeper/bin/zkCli.sh get /foo;
+```
+
+Watch existing members:
+```console
+$ kubectl run --attach bbox --image=busybox --restart=Never -- sh -c 'while true; do for i in 0 1 2; do echo zk-${i} $(echo stats | nc <pod-name>-${i}.<headless-service-name>:2181 | grep Mode); sleep 1; done; done';
+
+zk-2 Mode: follower
+zk-0 Mode: follower
+zk-1 Mode: leader
+zk-2 Mode: follower
+```
+
+Delete Pods and wait for the StatefulSet controller to bring them back up:
+```console
+$ kubectl delete po -l app=zookeeper
+$ kubectl get po --watch-only
+NAME          READY     STATUS    RESTARTS   AGE
+zookeeper-0   0/1       Running   0          35s
+zookeeper-0   1/1       Running   0         50s
+zookeeper-1   0/1       Pending   0         0s
+zookeeper-1   0/1       Pending   0         0s
+zookeeper-1   0/1       ContainerCreating   0         0s
+zookeeper-1   0/1       Running   0         19s
+zookeeper-1   1/1       Running   0         40s
+zookeeper-2   0/1       Pending   0         0s
+zookeeper-2   0/1       Pending   0         0s
+zookeeper-2   0/1       ContainerCreating   0         0s
+zookeeper-2   0/1       Running   0         19s
+zookeeper-2   1/1       Running   0         41s
+```
+
+Check the previously inserted key:
+```console
+$ kubectl exec zookeeper-1 -- /opt/zookeeper/bin/zkCli.sh get /foo
+ionid = 0x354887858e80035, negotiated timeout = 30000
+
+WATCHER::
+
+WatchedEvent state:SyncConnected type:None path:null
+bar
+```
+
+## Scaling
+ZooKeeper can not be safely scaled in versions prior to 3.5.x. This chart currently uses 3.4.x. There are manual procedures for scaling a 3.4.x ensemble, but as noted in the [ZooKeeper 3.5.2 documentation](https://zookeeper.apache.org/doc/r3.5.2-alpha/zookeeperReconfig.html) these procedures require a rolling restart, are known to be error prone, and often result in a data loss.
+
+While ZooKeeper 3.5.x does allow for dynamic ensemble reconfiguration (including scaling membership), the current status of the release is still alpha, and 3.5.x is therefore not recommended for production use.
+
+## Limitations
+* StatefulSet and PodDisruptionBudget are beta resources.
+* Only supports storage options that have backends for persistent volume claims.
diff --git a/kubernetes/common/music/charts/zookeeper/templates/NOTES.txt b/kubernetes/common/music/charts/zookeeper/templates/NOTES.txt
new file mode 100644 (file)
index 0000000..4f7a27b
--- /dev/null
@@ -0,0 +1,7 @@
+Thank you for installing ZooKeeper on your Kubernetes cluster. More information
+about ZooKeeper can be found at https://zookeeper.apache.org/doc/current/
+
+Your connection string should look like:
+  {{ template "common.fullname" . }}-0.{{ template "common.fullname" . }}-headless:{{ .Values.service.ports.client.port }},{{ template "common.fullname" . }}-1.{{ template "common.fullname" . }}-headless:{{ .Values.service.ports.client.port }},...
+
+You can also use the client service {{ template "common.fullname" . }}:{{ .Values.service.ports.client.port }} to connect to an available ZooKeeper server.
diff --git a/kubernetes/common/music/charts/zookeeper/templates/_helpers.tpl b/kubernetes/common/music/charts/zookeeper/templates/_helpers.tpl
new file mode 100644 (file)
index 0000000..1ef5353
--- /dev/null
@@ -0,0 +1,32 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "common.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "common.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "zookeeper.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
diff --git a/kubernetes/common/music/charts/zookeeper/templates/config-jmx-exporter.yaml b/kubernetes/common/music/charts/zookeeper/templates/config-jmx-exporter.yaml
new file mode 100644 (file)
index 0000000..aeb9a2c
--- /dev/null
@@ -0,0 +1,19 @@
+{{- if .Values.exporters.jmx.enabled }}
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: {{ .Release.Name }}-jmx-exporter
+  labels:
+    app: {{ template "common.name" . }}
+    chart: {{ .Chart.Name }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+data:
+  config.yml: |-
+    hostPort: 127.0.0.1:{{ .Values.env.JMXPORT }}
+    lowercaseOutputName: {{ .Values.exporters.jmx.config.lowercaseOutputName }}
+    rules:
+{{ .Values.exporters.jmx.config.rules | toYaml | indent 6 }}
+    ssl: false
+    startDelaySeconds: {{ .Values.exporters.jmx.config.startDelaySeconds }}
+{{- end }}
diff --git a/kubernetes/common/music/charts/zookeeper/templates/job-chroots.yaml b/kubernetes/common/music/charts/zookeeper/templates/job-chroots.yaml
new file mode 100644 (file)
index 0000000..38592dd
--- /dev/null
@@ -0,0 +1,62 @@
+{{- if .Values.jobs.chroots.enabled }}
+{{- $root := . }}
+{{- $job := .Values.jobs.chroots }}
+apiVersion: batch/v1
+kind: Job
+metadata:
+  name: {{ template "common.fullname" . }}-chroots
+  annotations:
+    "helm.sh/hook": post-install,post-upgrade
+    "helm.sh/hook-weight": "-5"
+    "helm.sh/hook-delete-policy": hook-succeeded
+  labels:
+    app: {{ template "common.name" . }}
+    chart: {{ .Chart.Name }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+    component: jobs
+    job: chroots
+spec:
+  activeDeadlineSeconds: {{ $job.activeDeadlineSeconds }}
+  backoffLimit: {{ $job.backoffLimit }}
+  completions: {{ $job.completions }}
+  parallelism: {{ $job.parallelism }}
+  template:
+    metadata:
+      labels:
+        app: {{ template "common.name" . }}
+        release: {{ .Release.Name }}
+        component: jobs
+        job: chroots
+    spec:
+      restartPolicy: {{ $job.restartPolicy }}
+      containers:
+        - name: main
+          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          command:
+            - /bin/bash
+            - -o
+            - pipefail
+            - -euc
+  {{- $port := .Values.service.ports.client.port }}
+            - >
+              sleep 15;
+              export SERVER={{ template "common.fullname" $root }}:{{ $port }};
+  {{- range $job.config.create }}
+              echo '==> {{ . }}';
+              echo '====> Create chroot if does not exist.';
+              zkCli.sh -server {{ template "common.fullname" $root }}:{{ $port }} get {{ . }} 2>&1 >/dev/null | grep 'cZxid'
+              || zkCli.sh -server {{ template "common.fullname" $root }}:{{ $port }} create {{ . }} "";
+              echo '====> Confirm chroot exists.';
+              zkCli.sh -server {{ template "common.fullname" $root }}:{{ $port }} get {{ . }} 2>&1 >/dev/null | grep 'cZxid';
+              echo '====> Chroot exists.';
+  {{- end }}
+          env:
+          {{- range $key, $value := $job.env }}
+            - name: {{ $key | upper | replace "." "_" }}
+              value: {{ $value | quote }}
+          {{- end }}
+          resources:
+{{ toYaml $job.resources | indent 12 }}
+{{- end -}}
diff --git a/kubernetes/common/music/charts/zookeeper/templates/poddisruptionbudget.yaml b/kubernetes/common/music/charts/zookeeper/templates/poddisruptionbudget.yaml
new file mode 100644 (file)
index 0000000..7a9f3fe
--- /dev/null
@@ -0,0 +1,17 @@
+apiVersion: policy/v1beta1
+kind: PodDisruptionBudget
+metadata:
+  name: {{ template "common.fullname" . }}
+  labels:
+    app: {{ template "common.name" . }}
+    chart: {{ .Chart.Name }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+    component: server
+spec:
+  selector:
+    matchLabels:
+      app: {{ template "common.name" . }}
+      release: {{ .Release.Name }}
+      component: server
+{{ toYaml .Values.podDisruptionBudget | indent 2 }}
diff --git a/kubernetes/common/music/charts/zookeeper/templates/service-headless.yaml b/kubernetes/common/music/charts/zookeeper/templates/service-headless.yaml
new file mode 100644 (file)
index 0000000..70ebf60
--- /dev/null
@@ -0,0 +1,21 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "common.fullname" . }}-headless
+  labels:
+    app: {{ template "common.name" . }}
+    chart: {{ .Chart.Name }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  clusterIP: None
+  ports:
+{{- range $key, $port := .Values.ports }}
+    - name: {{ $key }}
+      port: {{ $port.containerPort }}
+      targetPort: {{ $port.name }}
+      protocol: {{ $port.protocol }}
+{{- end }}
+  selector:
+    app: {{ template "common.name" . }}
+    release: {{ .Release.Name }}
diff --git a/kubernetes/common/music/charts/zookeeper/templates/service.yaml b/kubernetes/common/music/charts/zookeeper/templates/service.yaml
new file mode 100644 (file)
index 0000000..6ac3066
--- /dev/null
@@ -0,0 +1,23 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ .Values.service.name }}
+  labels:
+    app: {{ template "common.name" . }}
+    chart: {{ .Chart.Name }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+  annotations:
+{{- with .Values.service.annotations }}
+{{ toYaml . | indent 4 }}
+{{- end }}
+spec:
+  type: {{ .Values.service.type }}
+  ports:
+  {{- range $key, $value := .Values.service.ports }}
+    - name: {{ $key }}
+{{ toYaml $value | indent 6 }}
+  {{- end }}
+  selector:
+    app: {{ template "common.name" . }}
+    release: {{ .Release.Name }}
diff --git a/kubernetes/common/music/charts/zookeeper/templates/statefulset.yaml b/kubernetes/common/music/charts/zookeeper/templates/statefulset.yaml
new file mode 100644 (file)
index 0000000..1efd466
--- /dev/null
@@ -0,0 +1,188 @@
+apiVersion: apps/v1beta1
+kind: StatefulSet
+metadata:
+  name: {{ template "common.fullname" . }}
+  labels:
+    app: {{ template "common.name" . }}
+    chart: {{ .Chart.Name }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+    component: server
+spec:
+  podAntiAffinity:
+    preferredDuringSchedulingIgnoredDuringExecution:
+    - weight: 1
+      podAffinityTerm:
+        labelSelector:
+          matchExpressions:
+            - key: app
+              operator: In
+              values:
+              - "{{ .Chart.Name }}"
+  serviceName: {{ template "common.fullname" . }}-headless
+  replicas: {{ .Values.replicaCount }}
+  terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
+  selector:
+    matchLabels:
+      app: {{ template "common.name" . }}
+      release: {{ .Release.Name }}
+      component: server
+  updateStrategy:
+{{ toYaml .Values.updateStrategy | indent 4 }}
+  template:
+    metadata:
+      labels:
+        app: {{ template "common.name" . }}
+        release: {{ .Release.Name }}
+        component: server
+      {{- if .Values.podLabels }}
+        ## Custom pod labels
+        {{- range $key, $value := .Values.podLabels }}
+        {{ $key }}: {{ $value | quote }}
+        {{- end }}
+      {{- end }}
+      annotations:
+      {{- if .Values.podAnnotations }}
+        ## Custom pod annotations
+        {{- range $key, $value := .Values.podAnnotations }}
+        {{ $key }}: {{ $value | quote }}
+        {{- end }}
+      {{- end }}
+    spec:
+{{- if .Values.schedulerName }}
+      schedulerName: "{{ .Values.schedulerName }}"
+{{- end }}
+      securityContext:
+{{ toYaml .Values.securityContext | indent 8 }}
+      containers:
+
+        - name: zookeeper
+          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          command:
+            - /bin/bash
+            - -xec
+            - zkGenConfig.sh && exec zkServer.sh start-foreground
+          ports:
+{{- range $key, $port := .Values.ports }}
+            - name: {{ $key }}
+{{ toYaml $port | indent 14 }}
+{{- end }}
+          livenessProbe:
+{{ toYaml .Values.livenessProbe | indent 12 }}
+          readinessProbe:
+{{ toYaml .Values.readinessProbe | indent 12 }}
+          env:
+            - name: ZK_REPLICAS
+              value: {{ .Values.replicaCount | quote }}
+          {{- range $key, $value := .Values.env }}
+            - name: {{ $key | upper | replace "." "_" }}
+              value: {{ $value | quote }}
+          {{- end }}
+          resources:
+{{ include "common.resources" . }}
+          volumeMounts:
+            - name: zookeeper-data
+              mountPath: /var/lib/zookeeper
+
+{{- if .Values.exporters.jmx.enabled }}
+        - name: jmx-exporter
+          image: "{{ .Values.exporters.jmx.image.repository }}:{{ .Values.exporters.jmx.image.tag }}"
+          imagePullPolicy: {{ .Values.exporters.jmx.image.pullPolicy }}
+          ports:
+  {{- range $key, $port := .Values.exporters.jmx.ports }}
+            - name: {{ $key }}
+{{ toYaml $port | indent 14 }}
+  {{- end }}
+          livenessProbe:
+{{ toYaml .Values.exporters.jmx.livenessProbe | indent 12 }}
+          readinessProbe:
+{{ toYaml .Values.exporters.jmx.readinessProbe | indent 12 }}
+          env:
+            - name: SERVICE_PORT
+              value: {{ .Values.exporters.jmx.ports.jmxxp.containerPort | quote }}
+          {{- with .Values.exporters.jmx.env }}
+            {{- range $key, $value := . }}
+            - name: {{ $key | upper | replace "." "_" }}
+              value: {{ $value | quote }}
+            {{- end }}
+          {{- end }}
+          resources:
+{{ toYaml .Values.exporters.jmx.resources | indent 12 }}
+          volumeMounts:
+            - name: config-jmx-exporter
+              mountPath: /opt/jmx_exporter/config.yml
+              subPath: config.yml
+{{- end }}
+
+{{- if .Values.exporters.zookeeper.enabled }}
+        - name: zookeeper-exporter
+          image: "{{ .Values.exporters.zookeeper.image.repository }}:{{ .Values.exporters.zookeeper.image.tag }}"
+          imagePullPolicy: {{ .Values.exporters.zookeeper.image.pullPolicy }}
+          args:
+            - -bind-addr=:{{ .Values.exporters.zookeeper.ports.zookeeperxp.containerPort }}
+            - -metrics-path={{ .Values.exporters.zookeeper.path }}
+            - -zookeeper=localhost:{{ .Values.ports.client.containerPort }}
+            - -log-level={{ .Values.exporters.zookeeper.config.logLevel }}
+            - -reset-on-scrape={{ .Values.exporters.zookeeper.config.resetOnScrape }}
+          ports:
+  {{- range $key, $port := .Values.exporters.zookeeper.ports }}
+            - name: {{ $key }}
+{{ toYaml $port | indent 14 }}
+  {{- end }}
+          livenessProbe:
+{{ toYaml .Values.exporters.zookeeper.livenessProbe | indent 12 }}
+          readinessProbe:
+{{ toYaml .Values.exporters.zookeeper.readinessProbe | indent 12 }}
+          env:
+          {{- range $key, $value := .Values.exporters.zookeeper.env }}
+            - name: {{ $key | upper | replace "." "_" }}
+              value: {{ $value | quote }}
+          {{- end }}
+          resources:
+{{ toYaml .Values.exporters.zookeeper.resources | indent 12 }}
+{{- end }}
+
+    {{- with .Values.nodeSelector }}
+      nodeSelector:
+{{ toYaml . | indent 8 }}
+    {{- end }}
+    {{- with .Values.affinity }}
+      affinity:
+{{ toYaml . | indent 8 }}
+    {{- end }}
+    {{- with .Values.tolerations }}
+      tolerations:
+{{ toYaml . | indent 8 }}
+    {{- end }}
+      {{- if (or .Values.exporters.jmx.enabled (not .Values.persistence.enabled)) }}
+      volumes:
+        {{- if .Values.exporters.jmx.enabled }}
+        - name: config-jmx-exporter
+          configMap:
+            name: {{ .Release.Name }}-jmx-exporter
+        {{- end }}
+        {{- if not .Values.persistence.enabled }}
+        - name: zookeeper-data
+          emptyDir: {}
+        {{- end }}
+      {{- end }}
+  {{- if .Values.persistence.enabled }}
+  volumeClaimTemplates:
+    - metadata:
+        name: zookeeper-data
+        labels:
+          app: {{ .Chart.Name }}
+          chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
+          release: "{{ .Release.Name }}"
+          heritage: "{{ .Release.Service }}"
+      annotations:
+        volume.beta.kubernetes.io/storage-class: {{ .Values.persistence.storageClass }}
+      spec:
+        storageClassName: {{ .Values.persistence.storageClass }}
+        accessModes:
+          - {{ .Values.persistence.accessMode | quote }}
+        resources:
+          requests:
+            storage: {{ .Values.persistence.size | quote }}
+  {{- end }}
diff --git a/kubernetes/common/music/charts/zookeeper/templates/volumes.yaml b/kubernetes/common/music/charts/zookeeper/templates/volumes.yaml
new file mode 100644 (file)
index 0000000..b0c05fd
--- /dev/null
@@ -0,0 +1,25 @@
+{{ if .Values.persistence.enabled }}
+{{- $root := . -}}
+{{ range $i, $e := until (atoi (quote $root.Values.replicaCount) | default 3) }}
+---
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+  name: {{ $root.Release.Name }}-{{ $root.Values.service.name }}-{{ $i }}
+  namespace: {{ $root.Release.Namespace }}
+  labels:
+    type: {{ $root.Values.persistence.storageType }}
+    app: {{ $root.Values.service.name }}
+    chart: {{ $root.Chart.Name }}-{{ $root.Chart.Version | replace "+" "_" }}
+    release: {{ $root.Release.Name }}
+    heritage: {{ $root.Release.Service }}
+spec:
+  capacity:
+    storage: {{ $root.Values.persistence.size }}
+  accessModes:
+    - {{ $root.Values.persistence.accessMode }}
+  hostPath:
+    path: {{ $root.Values.persistence.mountPath }}/{{ $root.Release.Name }}/{{ $root.Values.persistence.mountSubPath }}-{{$i}}
+  persistentVolumeReclaimPolicy: {{ $root.Values.persistence.volumeReclaimPolicy }}
+{{ end }}
+{{ end }}
diff --git a/kubernetes/common/music/charts/zookeeper/values.yaml b/kubernetes/common/music/charts/zookeeper/values.yaml
new file mode 100644 (file)
index 0000000..ea02e61
--- /dev/null
@@ -0,0 +1,284 @@
+## As weighted quorums are not supported, it is imperative that an odd number of replicas
+## be chosen. Moreover, the number of replicas should be either 1, 3, 5, or 7.
+##
+## ref: https://github.com/kubernetes/contrib/tree/master/statefulsets/zookeeper#stateful-set
+replicaCount: 3  # Desired quantity of ZooKeeper pods. This should always be (1,3,5, or 7)
+
+podDisruptionBudget:
+  maxUnavailable: 1  # Limits how many Zokeeper pods may be unavailable due to voluntary disruptions.
+
+terminationGracePeriodSeconds: 1800  # Duration in seconds a Zokeeper pod needs to terminate gracefully.
+
+## OnDelete requires you to manually delete each pod when making updates.
+## This approach is at the moment safer than RollingUpdate because replication
+## may be incomplete when replication source pod is killed.
+##
+## ref: http://blog.kubernetes.io/2017/09/kubernetes-statefulsets-daemonsets.html
+updateStrategy:
+  type: OnDelete  # Pods will only be created when you manually delete old pods.
+
+## refs:
+## - https://github.com/kubernetes/contrib/tree/master/statefulsets/zookeeper
+## - https://github.com/kubernetes/contrib/blob/master/statefulsets/zookeeper/Makefile#L1
+image:
+  #repository: nexus3.onap.org:10001/library/zookeeper
+  #tag: 3.3
+  repository: gcr.io/google_samples/k8szk  # Container image repository for zookeeper container.
+  tag: v3  # Container image tag for zookeeper container.
+  pullPolicy: IfNotPresent  # Image pull criteria for zookeeper container.
+
+service:
+  name: zookeeper
+  type: ClusterIP  # Exposes zookeeper on a cluster-internal IP.
+  annotations: {}  # Arbitrary non-identifying metadata for zookeeper service.
+    ## AWS example for use with LoadBalancer service type.
+    # external-dns.alpha.kubernetes.io/hostname: zookeeper.cluster.local
+    # service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"
+    # service.beta.kubernetes.io/aws-load-balancer-internal: "true"
+  ports:
+    client:
+      port: 2181  # Service port number for client port.
+      targetPort: client  # Service target port for client port.
+      protocol: TCP  # Service port protocol for client port.
+
+
+ports:
+  client:
+    containerPort: 2181  # Port number for zookeeper container client port.
+    protocol: TCP  # Protocol for zookeeper container client port.
+  election:
+    containerPort: 3888  # Port number for zookeeper container election port.
+    protocol: TCP  # Protocol for zookeeper container election port.
+  server:
+    containerPort: 2888  # Port number for zookeeper container server port.
+    protocol: TCP  # Protocol for zookeeper container server port.
+
+# Resource Limit flavor -By Default using small
+flavor: large 
+# Segregation for Different environment (Small and Large)
+resources:
+  small:
+    limits:
+      cpu: 1 
+      memory: 1Gi 
+    requests:
+      cpu: 500m 
+      memory: 500Mi 
+  large:
+    limits:
+      cpu: 3
+      memory: 2Gi
+    requests:
+      cpu: 2 
+      memory: 1Gi 
+  unlimited: {}
+
+nodeSelector: {}  # Node label-values required to run zookeeper pods.
+
+tolerations: []  # Node taint overrides for zookeeper pods.
+
+affinity: {}  # Criteria by which pod label-values influence scheduling for zookeeper pods.
+affinity: 
+  podAntiAffinity:
+    requiredDuringSchedulingIgnoredDuringExecution:
+    - topologyKey: "kubernetes.io/hostname"
+      labelSelector:
+        matchLabels:
+          release: zookeeper
+
+podAnnotations: {}  # Arbitrary non-identifying metadata for zookeeper pods.
+
+podLabels: {}  # Key/value pairs that are attached to zookeeper pods.
+
+livenessProbe:
+  exec:
+    command:
+      - zkOk.sh
+  initialDelaySeconds: 20
+
+readinessProbe:
+  exec:
+    command:
+      - zkOk.sh
+  initialDelaySeconds: 20
+
+securityContext:
+  fsGroup: 1000
+  #runAsUser: 1000
+
+persistence:
+  enabled: true
+  ## zookeeper data Persistent Volume Storage Class
+  ## If defined, storageClassName: <storageClass>
+  ## If set to "-", storageClassName: "", which disables dynamic provisioning
+  ## If undefined (the default) or set to null, no storageClassName spec is
+  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
+  ##   GKE, AWS & OpenStack)
+  ##
+  volumeReclaimPolicy: Retain
+  accessMode: ReadWriteOnce
+  mountPath: /dockerdata-nfs
+  mountSubPath: music/zookeeper
+  storageType: local
+  storageClass: ""
+  size: 4Gi
+
+## Exporters query apps for metrics and make those metrics available for
+## Prometheus to scrape.
+exporters:
+
+  jmx:
+    enabled: false
+    image:
+      repository: sscaling/jmx-prometheus-exporter
+      tag: 0.3.0
+      pullPolicy: IfNotPresent
+    config:
+      lowercaseOutputName: false
+      rules:
+        - pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+)><>(\\w+)"
+          name: "zookeeper_$2"
+        - pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+)><>(\\w+)"
+          name: "zookeeper_$3"
+          labels:
+            replicaId: "$2"
+        - pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+), name2=(\\w+)><>(\\w+)"
+          name: "zookeeper_$4"
+          labels:
+            replicaId: "$2"
+            memberType: "$3"
+        - pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+), name2=(\\w+), name3=(\\w+)><>(\\w+)"
+          name: "zookeeper_$4_$5"
+          labels:
+            replicaId: "$2"
+            memberType: "$3"
+      startDelaySeconds: 30
+    env: {}
+    resources: {}
+    path: /metrics
+    ports:
+      jmxxp:
+        containerPort: 9404
+        protocol: TCP
+    livenessProbe:
+      httpGet:
+        path: /metrics
+        port: jmxxp
+      initialDelaySeconds: 30
+      periodSeconds: 15
+      timeoutSeconds: 60
+      failureThreshold: 8
+      successThreshold: 1
+    readinessProbe:
+      httpGet:
+        path: /metrics
+        port: jmxxp
+      initialDelaySeconds: 30
+      periodSeconds: 15
+      timeoutSeconds: 60
+      failureThreshold: 8
+      successThreshold: 1
+
+  zookeeper:
+    enabled: false
+    image:
+      repository: josdotso/zookeeper-exporter
+      tag: v1.1.2
+      pullPolicy: IfNotPresent
+    config:
+      logLevel: info
+      resetOnScrape: "true"
+    env: {}
+    resources: {}
+    path: /metrics
+    ports:
+      zookeeperxp:
+        containerPort: 9141
+        protocol: TCP
+    livenessProbe:
+      httpGet:
+        path: /metrics
+        port: zookeeperxp
+      initialDelaySeconds: 30
+      periodSeconds: 15
+      timeoutSeconds: 60
+      failureThreshold: 8
+      successThreshold: 1
+    readinessProbe:
+      httpGet:
+        path: /metrics
+        port: zookeeperxp
+      initialDelaySeconds: 30
+      periodSeconds: 15
+      timeoutSeconds: 60
+      failureThreshold: 8
+      successThreshold: 1
+
+env:
+
+  ## Options related to JMX exporter.
+  JMXAUTH: "false"
+  JMXDISABLE: "false"
+  JMXPORT: 1099
+  JMXSSL: "false"
+
+  ## The port on which the server will accept client requests.
+  ZK_CLIENT_PORT: 2181
+
+  ## The port on which the ensemble performs leader election.
+  ZK_ELECTION_PORT: 3888
+
+  ## The JVM heap size.
+  ZK_HEAP_SIZE: 2G
+
+  ## The number of Ticks that an ensemble member is allowed to perform leader
+  ## election.
+  ZK_INIT_LIMIT: 5
+
+  ## The Log Level that for the ZooKeeper processes logger.
+  ## Choices are `TRACE,DEBUG,INFO,WARN,ERROR,FATAL`.
+  ZK_LOG_LEVEL: INFO
+
+  ## The maximum number of concurrent client connections that
+  ## a server in the ensemble will accept.
+  ZK_MAX_CLIENT_CNXNS: 60
+
+  ## The maximum session timeout that the ensemble will allow a client to request.
+  ## Upstream default is `20 * ZK_TICK_TIME`
+  ZK_MAX_SESSION_TIMEOUT: 40000
+
+  ## The minimum session timeout that the ensemble will allow a client to request.
+  ## Upstream default is `2 * ZK_TICK_TIME`.
+  ZK_MIN_SESSION_TIMEOUT: 4000
+
+  ## The delay, in hours, between ZooKeeper log and snapshot cleanups.
+  ZK_PURGE_INTERVAL: 0
+
+  ## The port on which the leader will send events to followers.
+  ZK_SERVER_PORT: 2888
+
+  ## The number of snapshots that the ZooKeeper process will retain if
+  ## `ZK_PURGE_INTERVAL` is set to a value greater than `0`.
+  ZK_SNAP_RETAIN_COUNT: 3
+
+  ## The number of Tick by which a follower may lag behind the ensembles leader.
+  ZK_SYNC_LIMIT: 10
+
+  ## The number of wall clock ms that corresponds to a Tick for the ensembles
+  ## internal time.
+  ZK_TICK_TIME: 2000
+
+jobs:
+  chroots:
+    enabled: false
+    activeDeadlineSeconds: 300
+    backoffLimit: 5
+    completions: 1
+    config:
+      create: []
+        # - /kafka
+        # - /ureplicator
+    env: []
+    parallelism: 1
+    resources: {}
+    restartPolicy: Never
@@ -1,5 +1,4 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -1,5 +1,4 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
+# Copyright © 2018  AT&T, Amdocs, Bell Canada Intellectual Property.  All rights reserved.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Default values for mariadb.
-# This is a YAML-formatted file.
-# Declare variables to be passed into your templates.
-global: # global defaults
+#################################################################
+# Global configuration defaults.
+#################################################################
+global:
   nodePortPrefix: 302
-  persistence: {}
+  repository: nexus3.onap.org:10001
 
+  readinessRepository: oomk8s
+  readinessImage: readiness-check:2.0.0
+  loggingRepository: docker.elastic.co
+  loggingImage: beats/filebeat:5.5.0
 
-# application image
-repository: nexus3.onap.org:10001
-image: zookeeper:3.4
-pullPolicy: Always
+# flag to enable debugging - application support required
+debugEnabled: false
 
 # default number of instances
-replicaCount: 1
+replicaCount: 3
+
 nodeSelector: {}
+
 affinity: {}
-# Resource Limit flavor -By Default using small
-flavor: small
-# Segregation for Different environment (Small and Large)
-resources:
-  small:
-    limits:
-      memory: 4Gi
-      cpu: 2000m
-    requests:
-      memory: 1Gi
-      cpu: 500m
-  large:
-    limits:
-      memory: 8Gi
-      cpu: 4000m
-    requests:
-      memory: 2Gi
-      cpu: 1000m
-  unlimited: {}
+
 # probe configuration parameters
 liveness:
   initialDelaySeconds: 10
@@ -56,14 +41,10 @@ liveness:
   # necessary to disable liveness probe when setting breakpoints
   # in debugger so K8s doesn't restart unresponsive container
   enabled: true
+
 readiness:
   initialDelaySeconds: 10
   periodSeconds: 10
-service:
-  type: ClusterIP
-  name: oof-has-zk
-  externalPort: 2181
-  internalPort: 2181
-  portName: oof-has-zookeeper
-ingress:
-  enabled: false
+
+resources: {}
+
index 9beb17d..004d473 100644 (file)
@@ -24,7 +24,7 @@ global:
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/aai/esr-gui:1.1.0
+image: onap/aai/esr-gui:1.2.1
 pullPolicy: Always
 msbaddr: msb-iag.{{ include "common.namespace" . }}:80
 
index 8f66148..ce5688f 100644 (file)
@@ -27,7 +27,7 @@ subChartsOnly:
 
 # application image
 repository: nexus3.onap.org:10001
-image: onap/aai/esr-server:1.1.0
+image: onap/aai/esr-server:1.2.1
 pullPolicy: Always
 msbaddr: msb-iag.{{ include "common.namespace" . }}:80
 
index 7b9d9c7..1a168e9 100644 (file)
@@ -24,7 +24,7 @@ global:
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/multicloud/azure:1.2.0-SNAPSHOT
+image: onap/multicloud/azure:1.2.0
 pullPolicy: Always
 
 #Istio sidecar injection policy
index 12bbeef..7589a0a 100755 (executable)
@@ -36,7 +36,7 @@ spec:
         - /root/ready.py
         args:
         - --container-name
-        - oof-has-music
+        - oof-has-controller
         env:
         - name: NAMESPACE
           valueFrom:
@@ -46,6 +46,38 @@ spec:
         image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         name: {{ include "common.name" . }}-readiness
+      - command:
+        - /root/job_complete.py
+        args:
+        - -j
+        - "{{ .Release.Name }}-oof-has-onboard"
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-onboard-readiness
+      - command:
+        - sh
+        - -c
+        - resp="FAILURE";
+          until [ $resp = "200" ]; do
+          resp=$(curl -s -o /dev/null -k --write-out %{http_code} https://aaf-sms.{{ include "common.namespace" . }}:10443/v1/sms/domain/has/secret);
+          echo $resp;
+          sleep 2;
+          done
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-has-sms-readiness
       containers:
         - name: {{ include "common.name" . }}
           image: "{{ include "common.repository" . }}/{{ .Values.global.image.optf_has }}"
@@ -84,6 +116,9 @@ spec:
           - mountPath: /usr/local/bin/log.conf
             name: {{ .Values.global.commonConfigPrefix  }}-config
             subPath: log.conf
+          - mountPath: /usr/local/bin/AAF_RootCA.cer
+            name: {{ .Values.global.commonConfigPrefix }}-config
+            subPath: AAF_RootCA.cer
           resources:
 {{ include "common.resources" . | indent 12 }}
         {{- if .Values.nodeSelector }}
@@ -106,5 +141,7 @@ spec:
               path: conductor.conf
             - key: log.conf
               path: log.conf
+            - key: AAF_RootCA.cer
+              path: AAF_RootCA.cer
       imagePullSecrets:
       - name: "{{ include "common.namespace" . }}-docker-registry-key"
diff --git a/kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/resources/config/cassandra/docker-entrypoint-initdb.d/zzz_conductor.cql b/kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/resources/config/cassandra/docker-entrypoint-initdb.d/zzz_conductor.cql
deleted file mode 100644 (file)
index c2593eb..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright © 2017 Amdocs, AT&T, Bell Canada, VMware
-#
-# 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.
-
-
-CREATE KEYSPACE conductor WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}  AND durable_writes = true;
-
-CREATE TABLE conductor.plans (
-    id text PRIMARY KEY,
-    created bigint,
-    message text,
-    name text,
-    recommend_max int,
-    reservation_counter int,
-    reservation_owner text,
-    solution text,
-    solver_counter int,
-    solver_owner text,
-    status text,
-    template text,
-    timeout int,
-    translation text,
-    translation_counter int,
-    translation_owner text,
-    updated bigint,
-    vector_ts text
-);
-
-CREATE INDEX conductor_plans_index ON conductor.plans(status);
-
-CREATE KEYSPACE conductor_rpc WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}  AND durable_writes = true;
-
-CREATE TABLE conductor_rpc.controller (
-    id text PRIMARY KEY,
-    action text,
-    args text,
-    created bigint,
-    ctxt text,
-    failure text,
-    method text,
-    owner text,
-    response text,
-    status text,
-    updated bigint,
-    vector_ts text
-);
-
-CREATE TABLE conductor_rpc.data (
-    id text PRIMARY KEY,
-    action text,
-    args text,
-    created bigint,
-    ctxt text,
-    failure text,
-    method text,
-    owner text,
-    response text,
-    status text,
-    updated bigint,
-    vector_ts text
-);
-
-INSERT INTO admin.keyspace_master (
-uuid, application_name, is_aaf, is_api, keyspace_name, password,username)
-VALUES ( now(), 'conductor', False, True, 'conductor', 'c0nduct0r', 'conductor');
-
-INSERT INTO admin.keyspace_master (
-uuid, application_name, is_aaf, is_api, keyspace_name, password, username)
-VALUES( now(), 'conductor', False, True, 'conductor_rpc', 'c0nduct0r', 'conductor');
-
-CREATE ROLE IF NOT EXISTS conductor WITH PASSWORD = 'c0nduct0r' AND LOGIN = true;
-
-GRANT ALL PERMISSIONS on KEYSPACE conductor to 'conductor';
-
-GRANT ALL PERMISSIONS on KEYSPACE conductor_rpc to 'conductor';
-
-INSERT INTO conductor.plans (id, created, message, name, recommend_max, solution, status, template,timeout, translation,updated) VALUES('healthcheck',1479482603641,'','foo',1,'{"healthcheck": " healthcheck"}','solved','{"healthcheck": "healthcheck"}',3600,'{"healthcheck": "healthcheck"}',1484324150629);
-
-
-
diff --git a/kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/NOTES.txt b/kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/NOTES.txt
deleted file mode 100644 (file)
index 974fae4..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
-#
-# 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.
-
-1. Get the application URL by running these commands:
-{{- if .Values.ingress.enabled }}
-{{- range .Values.ingress.hosts }}
-  http://{{ . }}
-{{- end }}
-{{- else if contains "NodePort" .Values.service.type }}
-  export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.name" . }})
-  export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")
-  echo http://$NODE_IP:$NODE_PORT
-{{- else if contains "LoadBalancer" .Values.service.type }}
-     NOTE: It may take a few minutes for the LoadBalancer IP to be available.
-           You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}'
-  export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
-  echo http://$SERVICE_IP:{{ .Values.service.externalPort }}
-{{- else if contains "ClusterIP" .Values.service.type }}
-  export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
-  echo "Visit http://127.0.0.1:8080 to use your application"
-  kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }}
-{{- end }}
diff --git a/kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/configmap.yaml b/kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/configmap.yaml
deleted file mode 100644 (file)
index 6d7dad9..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
-#
-# 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.
-
-apiVersion: v1
-kind: ConfigMap
-metadata:
-  name: {{ include "common.fullname" . }}-docker-entry-initd
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ .Release.Name }}
-    heritage: {{ .Release.Service }}
-data:
-{{ tpl (.Files.Glob "resources/config/cassandra/docker-entrypoint-initdb.d/*").AsConfig . | indent 2 }}
-
diff --git a/kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/deployment.yaml b/kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/deployment.yaml
deleted file mode 100644 (file)
index aed92e5..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
-#
-# 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.
-
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ .Release.Name }}
-    heritage: {{ .Release.Service }}
-spec:
-  replicas: {{ .Values.replicaCount }}
-  template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}
-        release: {{ .Release.Name }}
-    spec:
-      containers:
-      - name: {{ include "common.name" . }}
-        image: {{ .Values.global.repository | default .Values.repository }}/{{ .Values.image }}
-        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-        ports:
-        - containerPort: {{ .Values.service.internalPort }}
-        - containerPort: {{ .Values.service.internalPort2 }}
-        - containerPort: {{ .Values.service.internalPort3 }}
-        - containerPort: {{ .Values.service.internalPort4 }}
-        - containerPort: {{ .Values.service.internalPort5 }}
-        {{ if eq .Values.liveness.enabled true }}
-        livenessProbe:
-          exec:
-            command:
-            - /bin/bash
-            - -c
-            - nodetool status | grep $POD_IP | awk '$1!="UN" { exit 1; }'
-          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
-          periodSeconds: {{ .Values.liveness.periodSeconds }}
-        {{ end }}
-        readinessProbe:
-          exec:
-            command:
-            - /bin/bash
-            - -c
-            - nodetool status | grep $POD_IP | awk '$1!="UN" { exit 1; }'
-          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
-          periodSeconds: {{ .Values.readiness.periodSeconds }}
-        env:
-          - name: CASSUSER
-            value: "{{ .Values.config.cassandraUsername }}"
-          - name: CASSPASS
-            value: "{{ .Values.config.cassandraPassword }}"
-          - name: POD_IP
-            valueFrom:
-              fieldRef:
-                fieldPath: status.podIP
-        volumeMounts:
-        - mountPath: /etc/localtime
-          name: localtime
-          readOnly: true
-        - name: cassandra-docker-entrypoint-initdb
-          mountPath: /docker-entrypoint-initdb.d/zzz_conductor.cql
-          subPath: zzz_conductor.cql
-        - name: {{ include "common.fullname" . }}-data
-          mountPath: /var/lib/cassandra/data
-        resources:
-{{ include "common.resources" . | indent 12 }}
-      {{- if .Values.nodeSelector }}
-      nodeSelector:
-{{ toYaml .Values.nodeSelector | indent 10 }}
-      {{- end -}}
-      {{- if .Values.affinity }}
-      affinity:
-{{ toYaml .Values.affinity | indent 10 }}
-      {{- end }}
-      volumes:
-        - name: localtime
-          hostPath:
-            path: /etc/localtime
-        - name: cassandra-docker-entrypoint-initdb
-          configMap:
-            name: {{ include "common.fullname" . }}-docker-entry-initd
-      {{- if .Values.persistence.enabled }}
-        - name: {{ include "common.fullname" . }}-data
-          persistentVolumeClaim:
-            claimName: {{ include "common.fullname" . }}
-      {{- else }}
-          emptyDir: {}
-      {{- end }}
-      imagePullSecrets:
-      - name: "{{ include "common.namespace" . }}-docker-registry-key"
diff --git a/kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/pv.yaml b/kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/pv.yaml
deleted file mode 100644 (file)
index 0fa33fc..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-{{/*
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
-#
-# 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.
-*/}}
-
-{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
-kind: PersistentVolume
-apiVersion: v1
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
-    release: "{{ .Release.Name }}"
-    heritage: "{{ .Release.Service }}"
-    name: {{ include "common.fullname" . }}
-spec:
-  capacity:
-    storage: {{ .Values.persistence.size}}
-  accessModes:
-    - {{ .Values.persistence.accessMode }}
-  persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }}
-  hostPath:
-    path: {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ .Release.Name }}/{{ .Values.persistence.mountSubPath }}
-{{- end -}}
diff --git a/kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/pvc.yaml b/kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/pvc.yaml
deleted file mode 100644 (file)
index 0f4de0c..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-{{/*
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
-#
-# 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.
-*/}}
-
-{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
-kind: PersistentVolumeClaim
-apiVersion: v1
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
-    release: "{{ .Release.Name }}"
-    heritage: "{{ .Release.Service }}"
-{{- if .Values.persistence.annotations }}
-  annotations:
-{{ toYaml .Values.persistence.annotations | indent 4 }}
-{{- end }}
-spec:
-  selector:
-    matchLabels:
-      name: {{ include "common.fullname" . }}
-  accessModes:
-    - {{ .Values.persistence.accessMode }}
-  resources:
-    requests:
-      storage: {{ .Values.persistence.size }}
-{{- if .Values.persistence.storageClass }}
-{{- if (eq "-" .Values.persistence.storageClass) }}
-  storageClassName: ""
-{{- else }}
-  storageClassName: "{{ .Values.persistence.storageClass }}"
-{{- end }}
-{{- end }}
-{{- end -}}
diff --git a/kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/service.yaml b/kubernetes/oof/charts/oof-has/charts/oof-has-cassandra/templates/service.yaml
deleted file mode 100644 (file)
index 7ec7f07..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
-#
-# 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.
-
-apiVersion: v1
-kind: Service
-metadata:
-  name: {{ include "common.servicename" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ .Release.Name }}
-    heritage: {{ .Release.Service }}
-spec:
-  type: {{ .Values.service.type }}
-  ports:
-    {{if eq .Values.service.type "NodePort" -}}
-    - port: {{ .Values.service.externalPort }}
-      targetPort: {{ .Values.service.internalPort }}
-      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
-      name: {{ .Values.service.portName }}
-    - port: {{ .Values.service.externalPort2 }}
-      targetPort: {{ .Values.service.internalPort2 }}
-      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort2 }}
-      name: {{ .Values.service.portName }}2
-    - port: {{ .Values.service.externalPort3 }}
-      targetPort: {{ .Values.service.internalPort3 }}
-      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort3 }}
-      name: {{ .Values.service.portName }}3
-    - port: {{ .Values.service.externalPort4 }}
-      targetPort: {{ .Values.service.internalPort4 }}
-      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort4 }}
-      name: {{ .Values.service.portName }}4
-    - port: {{ .Values.service.externalPort5 }}
-      targetPort: {{ .Values.service.internalPort5 }}
-      nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort5 }}
-      name: {{ .Values.service.portName }}5
-
-    {{- else -}}
-    - port: {{ .Values.service.externalPort }}
-      targetPort: {{ .Values.service.internalPort }}
-      name: {{ .Values.service.portName }}
-    - port: {{ .Values.service.externalPort2 }}
-      targetPort: {{ .Values.service.internalPort2 }}
-      name: {{ .Values.service.portName }}2
-    - port: {{ .Values.service.externalPort3 }}
-      targetPort: {{ .Values.service.internalPort3 }}
-      name: {{ .Values.service.portName }}3
-    - port: {{ .Values.service.externalPort4 }}
-      targetPort: {{ .Values.service.internalPort4 }}
-      name: {{ .Values.service.portName }}4
-    - port: {{ .Values.service.externalPort5 }}
-      targetPort: {{ .Values.service.internalPort5 }}
-      name: {{ .Values.service.portName }}5
-    {{- end}}
-  selector:
-    app: {{ include "common.name" . }}
-    release: {{ .Release.Name }}
index 00f2625..c5646f6 100755 (executable)
@@ -36,7 +36,7 @@ spec:
         - /root/ready.py
         args:
         - --container-name
-        - oof-has-music
+        - music-tomcat
         env:
         - name: NAMESPACE
           valueFrom:
@@ -46,6 +46,38 @@ spec:
         image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         name: {{ include "common.name" . }}-readiness
+      - command:
+        - /root/job_complete.py
+        args:
+        - -j
+        - "{{ .Release.Name }}-oof-has-onboard"
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-onboard-readiness
+      - command:
+        - sh
+        - -c
+        - resp="FAILURE";
+          until [ $resp = "200" ]; do
+          resp=$(curl -s -o /dev/null -k --write-out %{http_code} https://aaf-sms.{{ include "common.namespace" . }}:10443/v1/sms/domain/has/secret);
+          echo $resp;
+          sleep 2;
+          done
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-cont-sms-readiness
       containers:
         - name: {{ include "common.name" . }}
           image: "{{ include "common.repository" . }}/{{ .Values.global.image.optf_has }}"
@@ -87,6 +119,9 @@ spec:
           - mountPath: /usr/local/bin/healthy.sh
             name: {{ .Values.global.commonConfigPrefix }}-config
             subPath: healthy.sh
+          - mountPath: /usr/local/bin/AAF_RootCA.cer
+            name: {{ .Values.global.commonConfigPrefix }}-config
+            subPath: AAF_RootCA.cer
           resources:
 {{ include "common.resources" . | indent 12 }}
         {{- if .Values.nodeSelector }}
@@ -111,5 +146,7 @@ spec:
               path: log.conf
             - key: healthy.sh
               path: healthy.sh
+            - key: AAF_RootCA.cer
+              path: AAF_RootCA.cer
       imagePullSecrets:
       - name: "{{ include "common.namespace" . }}-docker-registry-key"
index 3f64923..e4ec820 100755 (executable)
@@ -36,7 +36,7 @@ spec:
         - /root/ready.py
         args:
         - --container-name
-        - oof-has-music
+        - music-tomcat
         env:
         - name: NAMESPACE
           valueFrom:
@@ -46,6 +46,52 @@ spec:
         image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         name: {{ include "common.name" . }}-readiness
+      - command:
+        - /root/job_complete.py
+        args:
+        - -j
+        - "{{ .Release.Name }}-oof-has-onboard"
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-onboard-readiness
+      - command:
+        - /root/job_complete.py
+        args:
+        - -j
+        - "{{ .Release.Name }}-oof-has-healthcheck"
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-health-readiness
+      - command:
+        - sh
+        - -c
+        - resp="FAILURE";
+          until [ $resp = "200" ]; do
+          resp=$(curl -s -o /dev/null -k --write-out %{http_code} https://aaf-sms.{{ include "common.namespace" . }}:10443/v1/sms/domain/has/secret);
+          echo $resp;
+          sleep 2;
+          done
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-data-sms-readiness
       containers:
         - name: {{ include "common.name" . }}
           image: "{{ include "common.repository" . }}/{{ .Values.global.image.optf_has }}"
diff --git a/kubernetes/oof/charts/oof-has/charts/oof-has-music/resources/config/startup.sh b/kubernetes/oof/charts/oof-has/charts/oof-has-music/resources/config/startup.sh
deleted file mode 100755 (executable)
index dd2c550..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
-#
-# 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.
-
-OUT=$(curl -o /dev/null -s -w "%{http_code}\n"  \
-  http://localhost:8080/MUSIC/rest/v2/admin/onboardAppWithMusic \
-  -H 'Cache-Control: no-cache' \
-  -H 'Content-Type: application/json' \
-  -H 'Postman-Token: 705d4a9d-aaf2-40b4-914a-e0ce1a79534c' \
-  -d '{
-   "appname": "conductor",
-   "userId" : "conductor",
-   "isAAF"  : false,
-   "password" : "c0nduct0r"
-}
-')
-
-if [ ${OUT} = "200" ]; then
-    echo "Success"
-    echo 1 > /tmp/onboarded
-    exit 0;
-else
-    echo "Failure"
-    exit 1;
-fi
diff --git a/kubernetes/oof/charts/oof-has/charts/oof-has-music/templates/NOTES.txt b/kubernetes/oof/charts/oof-has/charts/oof-has-music/templates/NOTES.txt
deleted file mode 100644 (file)
index 2088e33..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
-#
-# 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.
-
-1. Get the application URL by running these commands:
-{{- if .Values.ingress.enabled }}
-{{- range .Values.ingress.hosts }}
-  http://{{ . }}
-{{- end }}
-{{- else if contains "NodePort" .Values.service.type }}
-  export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.fullname" . }})
-  export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")
-  echo http://$NODE_IP:$NODE_PORT
-{{- else if contains "LoadBalancer" .Values.service.type }}
-     NOTE: It may take a few minutes for the LoadBalancer IP to be available.
-           You can watch the status of by running 'kubectl get svc -w {{ include "common.fullname" . }}'
-  export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
-  echo http://$SERVICE_IP:{{ .Values.service.externalPort }}
-{{- else if contains "ClusterIP" .Values.service.type }}
-  export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
-  echo "Visit http://127.0.0.1:8080 to use your application"
-  kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }}
-{{- end }}
index a967bb5..7c30360 100755 (executable)
@@ -36,7 +36,7 @@ spec:
         - /root/ready.py
         args:
         - --container-name
-        - oof-has-music
+        - music-tomcat
         env:
         - name: NAMESPACE
           valueFrom:
@@ -46,6 +46,52 @@ spec:
         image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         name: {{ include "common.name" . }}-readiness
+      - command:
+        - /root/job_complete.py
+        args:
+        - -j
+        - "{{ .Release.Name }}-oof-has-onboard"
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-onboard-readiness
+      - command:
+        - /root/job_complete.py
+        args:
+        - -j
+        - "{{ .Release.Name }}-oof-has-healthcheck"
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-health-readiness
+      - command:
+        - sh
+        - -c
+        - resp="FAILURE";
+          until [ $resp = "200" ]; do
+          resp=$(curl -s -o /dev/null -k --write-out %{http_code} https://aaf-sms.{{ include "common.namespace" .}}:10443/v1/sms/domain/has/secret);
+          echo $resp;
+          sleep 2;
+          done
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-resrv-sms-readiness
       containers:
         - name: {{ include "common.name" . }}
           image: "{{ include "common.repository" . }}/{{ .Values.global.image.optf_has }}"
@@ -87,6 +133,9 @@ spec:
           - mountPath: /usr/local/bin/healthy.sh
             name: {{ .Values.global.commonConfigPrefix }}-config
             subPath: healthy.sh
+          - mountPath: /usr/local/bin/AAF_RootCA.cer
+            name: {{ .Values.global.commonConfigPrefix }}-config
+            subPath: AAF_RootCA.cer
           resources:
 {{ include "common.resources" . | indent 12 }}
         {{- if .Values.nodeSelector }}
@@ -111,5 +160,7 @@ spec:
               path: log.conf
             - key: healthy.sh
               path: healthy.sh
+            - key: AAF_RootCA.cer
+              path: AAF_RootCA.cer
       imagePullSecrets:
       - name: "{{ include "common.namespace" . }}-docker-registry-key"
index 26ed7c7..0cc4ded 100755 (executable)
@@ -36,7 +36,7 @@ spec:
         - /root/ready.py
         args:
         - --container-name
-        - oof-has-music
+        - music-tomcat
         env:
         - name: NAMESPACE
           valueFrom:
@@ -46,6 +46,52 @@ spec:
         image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         name: {{ include "common.name" . }}-readiness
+      - command:
+        - /root/job_complete.py
+        args:
+        - -j
+        - "{{ .Release.Name }}-oof-has-onboard"
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-onboard-readiness
+      - command:
+        - /root/job_complete.py
+        args:
+        - -j
+        - "{{ .Release.Name }}-oof-has-healthcheck"
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-health-readiness
+      - command:
+        - sh
+        - -c
+        - resp="FAILURE";
+          until [ $resp = "200" ]; do
+          resp=$(curl -s -o /dev/null -k --write-out %{http_code} https://aaf-sms.{{ include "common.namespace" . }}:10443/v1/sms/domain/has/secret);
+          echo $resp;
+          sleep 2;
+          done
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-solvr-sms-readiness
       containers:
         - name: {{ include "common.name" . }}
           image: "{{ include "common.repository" . }}/{{ .Values.global.image.optf_has }}"
@@ -87,6 +133,9 @@ spec:
           - mountPath: /usr/local/bin/healthy.sh
             name: {{ .Values.global.commonConfigPrefix }}-config
             subPath: healthy.sh
+          - mountPath: /usr/local/bin/AAF_RootCA.cer
+            name: {{ .Values.global.commonConfigPrefix }}-config
+            subPath: AAF_RootCA.cer
           resources:
 {{ include "common.resources" . | indent 12 }}
         {{- if .Values.nodeSelector }}
@@ -111,5 +160,7 @@ spec:
               path: log.conf
             - key: healthy.sh
               path: healthy.sh
+            - key: AAF_RootCA.cer
+              path: AAF_RootCA.cer
       imagePullSecrets:
       - name: "{{ include "common.namespace" . }}-docker-registry-key"
diff --git a/kubernetes/oof/charts/oof-has/charts/oof-has-zookeeper/templates/NOTES.txt b/kubernetes/oof/charts/oof-has/charts/oof-has-zookeeper/templates/NOTES.txt
deleted file mode 100644 (file)
index 974fae4..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
-#
-# 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.
-
-1. Get the application URL by running these commands:
-{{- if .Values.ingress.enabled }}
-{{- range .Values.ingress.hosts }}
-  http://{{ . }}
-{{- end }}
-{{- else if contains "NodePort" .Values.service.type }}
-  export NODE_PORT=$(kubectl get --namespace {{ include "common.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "common.name" . }})
-  export NODE_IP=$(kubectl get nodes --namespace {{ include "common.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}")
-  echo http://$NODE_IP:$NODE_PORT
-{{- else if contains "LoadBalancer" .Values.service.type }}
-     NOTE: It may take a few minutes for the LoadBalancer IP to be available.
-           You can watch the status of by running 'kubectl get svc -w {{ include "common.name" . }}'
-  export SERVICE_IP=$(kubectl get svc --namespace {{ include "common.namespace" . }} {{ include "common.name" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
-  echo http://$SERVICE_IP:{{ .Values.service.externalPort }}
-{{- else if contains "ClusterIP" .Values.service.type }}
-  export POD_NAME=$(kubectl get pods --namespace {{ include "common.namespace" . }} -l "app={{ include "common.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
-  echo "Visit http://127.0.0.1:8080 to use your application"
-  kubectl port-forward $POD_NAME 8080:{{ .Values.service.internalPort }}
-{{- end }}
diff --git a/kubernetes/oof/charts/oof-has/charts/oof-has-zookeeper/templates/deployment.yaml b/kubernetes/oof/charts/oof-has/charts/oof-has-zookeeper/templates/deployment.yaml
deleted file mode 100644 (file)
index 888bfd0..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
-#
-# 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.
-
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  name: {{ include "common.fullname" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ .Release.Name }}
-    heritage: {{ .Release.Service }}
-spec:
-  replicas: {{ .Values.replicaCount }}
-  template:
-    metadata:
-      labels:
-        app: {{ include "common.name" . }}
-        release: {{ .Release.Name }}
-    spec:
-      containers:
-        - name: {{ include "common.name" . }}
-          image: {{ include "common.repository" . }}/{{ .Values.image }}
-          imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
-          ports:
-          - containerPort: {{ .Values.service.internalPort }}
-          {{- if .Values.liveness.enabled }}
-          livenessProbe:
-            tcpSocket:
-              port: {{ .Values.service.internalPort }}
-            initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
-            periodSeconds: {{ .Values.liveness.periodSeconds }}
-          {{end -}}
-          readinessProbe:
-            tcpSocket:
-              port: {{ .Values.service.internalPort }}
-            initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
-            periodSeconds: {{ .Values.readiness.periodSeconds }}
-          volumeMounts:
-          - mountPath: /etc/localtime
-            name: localtime
-            readOnly: true
-          resources:
-{{ include "common.resources" . | indent 12 }}
-        {{- if .Values.nodeSelector }}
-        nodeSelector:
-{{ toYaml .Values.nodeSelector | indent 10 }}
-        {{- end -}}
-        {{- if .Values.affinity }}
-        affinity:
-{{ toYaml .Values.affinity | indent 10 }}
-        {{- end }}
-      volumes:
-        - name: localtime
-          hostPath:
-            path: /etc/localtime
-      imagePullSecrets:
-      - name: "{{ include "common.namespace" . }}-docker-registry-key"
diff --git a/kubernetes/oof/charts/oof-has/charts/oof-has-zookeeper/templates/service.yaml b/kubernetes/oof/charts/oof-has/charts/oof-has-zookeeper/templates/service.yaml
deleted file mode 100644 (file)
index f2eed43..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
-#
-# 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.
-
-apiVersion: v1
-kind: Service
-metadata:
-  name: {{ include "common.servicename" . }}
-  namespace: {{ include "common.namespace" . }}
-  labels:
-    app: {{ include "common.name" . }}
-    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
-    release: {{ .Release.Name }}
-    heritage: {{ .Release.Service }}
-spec:
-  type: {{ .Values.service.type }}
-  ports:
-    {{if eq .Values.service.type "NodePort" -}}
-    - port: {{ .Values.service.internalPort }}
-      nodePort: {{ .Values.global.nodePortPrefix | default "302" }}{{ .Values.service.externalPort }}
-    {{- else -}}
-    - port: {{ .Values.service.externalPort }}
-      targetPort: {{ .Values.service.internalPort }}
-    {{- end}}
-      name: {{ .Values.service.portName }}
-  selector:
-    app: {{ include "common.name" . }}
-    release: {{ .Release.Name }}
index 14f1f9a..cda496b 100755 (executable)
@@ -17,3 +17,6 @@ dependencies:
   - name: common
     version: ~3.0.0
     repository: '@local'
+  - name: music
+    version: ~3.0.0
+    repository: '@local'
index 00a65ce..3221331 100755 (executable)
@@ -1,5 +1,5 @@
 # Copyright © 2017 Amdocs, Bell Canada
-# Modifications Copyright © 2018 AT&T,VMware
+# Modifications Copyright © 2018 AT&T,VMware, Intel Corporation.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 #api_paste_config = api_paste.ini
 
 # Music keyspace for content (string value)
-keyspace = conductor
+#keyspace = conductor
+
+# Delay time (Seconds) for MUSIC requests. Set it to 2 seconds by default.
+# (integer value)
+#delay_time = 2
+
+# (boolean value)
+#HPA_enabled = true
 
 #
 # From oslo.log
@@ -32,14 +39,9 @@ keyspace = conductor
 # If set to true, the logging level will be set to DEBUG instead of the default
 # INFO level. (boolean value)
 # Note: This option can be changed without restarting.
+#debug = false
 debug = true
 
-# DEPRECATED: If set to false, the logging level will be set to WARNING instead
-# of the default INFO level. (boolean value)
-# This option is deprecated for removal.
-# Its value may be silently ignored in the future.
-#verbose = true
-
 # The name of a logging configuration file. This file is appended to any
 # existing logging configuration files. For details about logging configuration
 # files, see the Python logging module documentation. Note that when logging
@@ -48,7 +50,8 @@ debug = true
 # example, logging_context_format_string). (string value)
 # Note: This option can be changed without restarting.
 # Deprecated group/name - [DEFAULT]/log_config
-# log_config_append = /usr/local/bin/log.conf
+#log_config_append = <None>
+log_config_append = /usr/local/bin/log.conf
 
 # Defines the format string for %%(asctime)s in log records. Default:
 # %(default)s . This option is ignored if log_config_append is set. (string
@@ -78,10 +81,20 @@ debug = true
 # is set. (boolean value)
 #use_syslog = false
 
+# Enable journald for logging. If running in a systemd environment you may wish
+# to enable journal support. Doing so will use the journal native protocol
+# which includes structured metadata in addition to log messages.This option is
+# ignored if log_config_append is set. (boolean value)
+#use_journal = false
+
 # Syslog facility to receive log lines. This option is ignored if
 # log_config_append is set. (string value)
 #syslog_log_facility = LOG_USER
 
+# Use JSON formatting for logging. This option is ignored if log_config_append
+# is set. (boolean value)
+#use_json = false
+
 # Log output to standard error. This option is ignored if log_config_append is
 # set. (boolean value)
 #use_stderr = false
@@ -106,7 +119,7 @@ debug = true
 
 # List of package logging levels in logger=LEVEL pairs. This option is ignored
 # if log_config_append is set. (list value)
-#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN,taskflow=WARN,keystoneauth=WARN,oslo.cache=INFO,dogpile.core.dogpile=INFO
+#default_log_levels = amqp=WARN,amqplib=WARN,boto=WARN,qpid=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,oslo_messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN,taskflow=WARN,keystoneauth=WARN,oslo.cache=INFO,dogpile.core.dogpile=INFO
 
 # Enables or disables publication of error events. (boolean value)
 #publish_errors = false
@@ -135,6 +148,56 @@ debug = true
 #fatal_deprecations = false
 
 
+[aaf_authentication]
+
+#
+# From conductor
+#
+
+# is_aaf_enabled. (boolean value)
+is_aaf_enabled = false
+
+# aaf_cache_expiry_hrs. (integer value)
+#aaf_cache_expiry_hrs = 3
+
+# aaf_url. (string value)
+#aaf_url = http://aaf-service:8100/authz/perms/user/
+aaf_url = http://{{.Values.config.aaf.serviceName}}.{{ include "common.namespace" . }}:{{.Values.config.aaf.port}}/authz/perms/user/
+
+# aaf_retries. (integer value)
+#aaf_retries = 3
+
+# aaf_timeout. (integer value)
+#aaf_timeout = 100
+
+# aaf_user_roles. (list value)
+#aaf_user_roles = {"type": "org.onap.oof","instance": "plans","action": "GET"},{"type": "org.onap.oof","instance": "plans","action": "POST"}
+
+
+[aaf_sms]
+
+#
+# From conductor
+#
+
+# Base URL for SMS, up to and not including the version, and without a trailing
+# slash. (string value)
+aaf_sms_url = https://{{.Values.config.sms.serviceName}}.{{ include "common.namespace" . }}:{{.Values.config.sms.port}}
+
+
+# Timeout for SMS API Call (integer value)
+#aaf_sms_timeout = 30
+
+# Path to the cacert that will be used to verify If this is None, verify will
+# be False and the server certis not verified by the client. (string value)
+#aaf_ca_certs = AAF_RootCA.cer
+aaf_ca_certs = /usr/local/bin/AAF_RootCA.cer
+
+# Domain UUID - A unique UUID generated when the domainfor HAS is created by
+# administrator during deployment (string value)
+#secret_domain = has
+
+
 [aai]
 
 #
@@ -142,7 +205,12 @@ debug = true
 #
 
 # Interval with which to refresh the local cache, in minutes. (integer value)
+#cache_refresh_interval = 1440
 cache_refresh_interval = 1
+
+# Interval with which to refresh the local complex cache, in minutes. (integer
+# value)
+#complex_cache_refresh_interval = 1440
 complex_cache_refresh_interval = 60
 
 # Data Store table prefix. (string value)
@@ -152,6 +220,12 @@ complex_cache_refresh_interval = 60
 # trailing slash. (string value)
 server_url = https://{{.Values.config.aai.serviceName}}.{{ include "common.namespace" . }}:{{.Values.config.aai.port}}/aai
 
+# Timeout for A&AI Rest Call (string value)
+#aai_rest_timeout = 30
+
+# Number of retry for A&AI Rest Call (string value)
+#aai_retries = 3
+
 # The version of A&AI in v# format. (string value)
 server_url_version = v14
 
@@ -164,13 +238,13 @@ certificate_key_file =
 
 # Certificate Authority Bundle file in pem format. Must contain the appropriate
 # trust chain for the Certificate file. (string value)
-#certificate_authority_bundle_file = /opt/app/conductor/etc/certs/ca_bundle.pem
-certificate_authority_bundle_file =/usr/local/bin/AAF_RootCA.cer
+#certificate_authority_bundle_file = certificate_authority_bundle.pem
+certificate_authority_bundle_file = /usr/local/bin/AAF_RootCA.cer
 
-# Basic Authentication Username (string value)
+# Username for AAI. (string value)
 username = OOF
 
-# Basic Authentication Password (string value)
+# Password for AAI. (string value)
 password = OOF
 
 
@@ -189,13 +263,24 @@ password = OOF
 
 [conductor_api]
 
-# Basic Authentication Username (string value)
+#
+# From conductor
+#
+
+# Base URL for plans. (string value)
+#server_url =
+
+# username for plans. (string value)
+#username =
 username = admin1
 
-# Basic Authentication Password (string value)
+# password for plans. (string value)
+#password =
 password = plan.15
 
-basic_auth_secure = False
+# auth toggling. (boolean value)
+basic_auth_secure = true
+
 
 [controller]
 
@@ -205,6 +290,7 @@ basic_auth_secure = False
 
 # Timeout for planning requests. Default value is 10. (integer value)
 # Minimum value: 1
+#timeout = 10
 timeout = 200
 
 # Maximum number of result sets to return. Default value is 1. (integer value)
@@ -215,11 +301,47 @@ timeout = 200
 # Minimum value: 1
 #workers = 1
 
+# Set to True when controller will run in active-active mode. When set to
+# False, controller will flush any abandoned messages at startup. The
+# controller always restarts abandoned template translations at startup.
+# (boolean value)
+#concurrent = false
+concurrent = true
+
 # Time between checking for new plans. Default value is 1. (integer value)
 # Minimum value: 1
 #polling_interval = 1
+
+# (integer value)
+# Minimum value: 1
+#max_translation_counter = 1
+
+
+[data]
+
+#
+# From conductor
+#
+
+# Number of workers for data service. Default value is 1. (integer value)
+# Minimum value: 1
+#workers = 1
+
+# Set to True when data will run in active-active mode. When set to False, data
+# will flush any abandoned messages at startup. (boolean value)
+#concurrent = false
 concurrent = true
 
+# Default value is -8000, which is the diameter of the earth. The distance
+# cannot larger than this value (floating point value)
+#existing_placement_cost = -8000.0
+
+# (floating point value)
+#cloud_candidate_cost = 2.0
+
+# (floating point value)
+#service_candidate_cost = 1.0
+
 
 [inventory_provider]
 
@@ -238,16 +360,21 @@ concurrent = true
 #
 
 # Music keyspace for messages (string value)
-keyspace = conductor_rpc
+#keyspace = conductor_rpc
 
 # Wait interval while checking for a message response. Default value is 1
 # second. (integer value)
 # Minimum value: 1
 #check_interval = 1
 
-# Overall message response timeout. Default value is 10 seconds. (integer
+# Overall message response timeout. Default value is 120 seconds. (integer
 # value)
 # Minimum value: 1
+#response_timeout = 120
+
+# Timeout for detecting a VM is down, and other VMs can pick the plan up.
+# Default value is 5 minutes. (integer value) (integer value)
+# Minimum value: 1
 timeout = 300
 
 # Number of workers for messaging service. Default value is 1. (integer value)
@@ -262,19 +389,36 @@ timeout = 300
 #debug = false
 
 
+[multicloud]
+
+#
+# From conductor
+#
+
+# Base URL for Multicloud without a trailing slash. (string value)
+#server_url = http://msb.onap.org/api/multicloud
+server_url = http://{{.Values.config.msb.serviceName}}.{{ include "common.namespace" . }}:{{.Values.config.msb.port}}/api/multicloud
+
+# Timeout for Multicloud Rest Call (string value)
+#multicloud_rest_timeout = 30
+
+# Number of retry for Multicloud Rest Call (string value)
+#multicloud_retries = 3
+
+# The version of Multicloud API. (string value)
+#server_url_version = v0
+
+
 [music_api]
 
 #
 # From conductor
 #
-music_new_version = True
+
 # Base URL for Music REST API without a trailing slash. (string value)
-server_url = http://oof-has-music:8080/MUSIC/rest/v2
+#server_url = http://oof-has-music:8080/MUSIC/rest/v2
+server_url = http://{{.Values.config.music.serviceName}}.{{ include "common.namespace" . }}:{{.Values.config.music.port}}/MUSIC/rest/v2
 version = v2
-music_version = "2.5.3"
-aafuser = conductor
-aafpass = c0nduct0r
-aafns = conductor
 
 # DEPRECATED: List of hostnames (round-robin access) (list value)
 # This option is deprecated for removal.
@@ -294,21 +438,104 @@ aafns = conductor
 # Reason: Use server_url instead
 #path = <None>
 
+# Socket connection timeout (floating point value)
+#connect_timeout = 3.05
+
+# Socket read timeout (floating point value)
+#read_timeout = 12.05
+
 # Lock timeout (integer value)
 #lock_timeout = 10
+
+# Replication factor (integer value)
+#replication_factor = 1
 replication_factor = 1
-# Log debug messages. Default value is False. (boolean value)
-#debug = false
 
 # Use mock API (boolean value)
 #mock = false
 
-# Socket connection timeout (floating point value)
-connect_timeout = 3.05
+# (string value)
+#music_topology = SimpleStrategy
 
-# Socket read timeout (floating point value)
-read_timeout = 12.05
+# Name of the first data center (string value)
+#first_datacenter_name = <None>
+
+# Number of replicas in first data center (integer value)
+#first_datacenter_replicas = <None>
+
+# Name of the second data center (string value)
+#second_datacenter_name = <None>
+
+# Number of replicas in second data center (integer value)
+#second_datacenter_replicas = <None>
+
+# Name of the third data center (string value)
+#third_datacenter_name = <None>
+
+# Number of replicas in third data center (integer value)
+#third_datacenter_replicas = <None>
+
+# new or old version (boolean value)
+#music_new_version = <None>
+music_new_version = True
+
+# for version (string value)
+#music_version = <None>
+music_version = "3.0.21"
+
+# username value that used for creating basic authorization header (string
+# value)
+#aafuser = <None>
+aafuser = conductor
+
+# password value that used for creating basic authorization header (string
+# value)
+#aafpass = <None>
+aafpass = c0nduct0r
+
+# AAF namespace field used in MUSIC request header (string value)
+#aafns = <None>
+aafns = conductor
+
+
+[prometheus]
+
+#
+# From conductor
+#
+
+# Prometheus Metrics Endpoint (list value)
+#metrics_port = 8000,8001,8002,8003,8004
+
+
+[reservation]
+
+#
+# From conductor
+#
 
+# Number of workers for reservation service. Default value is 1. (integer
+# value)
+# Minimum value: 1
+#workers = 1
+
+# Number of times reservation/release should be attempted. (integer value)
+#reserve_retries = 1
+
+# Timeout for detecting a VM is down, and other VMs can pick the plan up and
+# resereve. Default value is 600 seconds. (integer value) (integer value)
+# Minimum value: 1
+#timeout = 600
+
+# Set to True when reservation will run in active-active mode. When set to
+# False, reservation will restart any orphaned reserving requests at startup.
+# (boolean value)
+#concurrent = false
+concurrent = true
+
+# (integer value)
+# Minimum value: 1
+#max_reservation_counter = 1
 
 
 [sdnc]
@@ -324,13 +551,22 @@ read_timeout = 12.05
 #table_prefix = sdnc
 
 # Base URL for SDN-C, up to and including the version. (string value)
+#server_url = https://controller:8443/restconf/
 server_url = https://sdncodl-conexus-e2e.ecomp.cci.att.com:8543/restconf/
 
 # Basic Authentication Username (string value)
+#username = <None>
 username = admin
 
 # Basic Authentication Password (string value)
-password = sdnc.15
+#password = <None>
+password = Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+
+# Timeout for SDNC Rest Call (string value)
+#sdnc_rest_timeout = 30
+
+# Retry Numbers for SDNC Rest Call (string value)
+#sdnc_retries = 3
 
 
 [service_controller]
@@ -353,41 +589,32 @@ password = sdnc.15
 # Minimum value: 1
 #workers = 1
 
+# The timeout value for solver service. Default value is 480 seconds. (integer
+# value)
+# Minimum value: 1
+#solver_timeout = 480
+
 # Set to True when solver will run in active-active mode. When set to False,
 # solver will restart any orphaned solving requests at startup. (boolean value)
 #concurrent = false
 concurrent = true
 
+# Timeout for detecting a VM is down, and other VMs can pick the plan up. This
+# value should be larger than solver_timeoutDefault value is 10 minutes.
+# (integer value) (integer value)
+# Minimum value: 1
+#timeout = 600
 
-
-[reservation]
-concurrent = true
-
-
-[multicloud]
-
-#
-# From conductor
-#
-
-# Base URL for Multicloud without a trailing slash. (string value)
-server_url = http://{{.Values.config.msb.serviceName}}:{{.Values.config.msb.port}}/api/multicloud
-
-# Timeout for Multicloud Rest Call (string value)
-multicloud_rest_timeout = 30
-
-# Number of retry for Multicloud Rest Call (string value)
-multicloud_retries = 3
-
-# The version of Multicloud API. (string value)
-server_url_version = v0
+# (integer value)
+# Minimum value: 1
+#max_solver_counter = 1
 
 
 [vim_controller]
+
 #
 # From conductor
 #
 
 # Extensions list to use (list value)
-extensions = multicloud
-
+#extensions = multicloud
diff --git a/kubernetes/oof/charts/oof-has/resources/config/healthcheck.json b/kubernetes/oof/charts/oof-has/resources/config/healthcheck.json
new file mode 100755 (executable)
index 0000000..833fa0f
--- /dev/null
@@ -0,0 +1,18 @@
+{
+  "consistencyInfo": {
+    "type": "eventual"
+  },
+  "values": {
+    "id": "healthcheck",
+    "created": 1479482603641,
+    "message": "",
+    "name": "foo",
+    "recommend_max": 1,
+    "solution": "{\"healthcheck\": \" healthcheck\"}",
+    "status": "solved",
+    "template": "{\"healthcheck\": \"healthcheck\"}",
+    "timeout": 3600,
+    "translation": "{\"healthcheck\": \" healthcheck\"}",
+    "updated": 1484324150629
+  }
+}
diff --git a/kubernetes/oof/charts/oof-has/resources/config/onboard.json b/kubernetes/oof/charts/oof-has/resources/config/onboard.json
new file mode 100755 (executable)
index 0000000..2c3d69b
--- /dev/null
@@ -0,0 +1,6 @@
+{
+  "appname": "conductor",
+  "userId": "conductor",
+  "isAAF": "false",
+  "password": "c0nduct0r"
+}
diff --git a/kubernetes/oof/charts/oof-has/templates/job-healthcheck.yaml b/kubernetes/oof/charts/oof-has/templates/job-healthcheck.yaml
new file mode 100755 (executable)
index 0000000..6e38034
--- /dev/null
@@ -0,0 +1,100 @@
+{{/*
+# Copyright 2018 Intel Corporation, Inc
+#
+# 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.
+*/}}
+
+apiVersion: batch/v1
+kind: Job
+metadata:
+  name: {{ include "common.fullname" . }}-healthcheck
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}
+        release: {{ .Release.Name }}
+    spec:
+      initContainers:
+      - image:  "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-readiness
+        command:
+        - /root/ready.py
+        args:
+        - --container-name
+        - oof-has-api
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+      containers:
+      - image: "{{ include "common.repository" . }}/{{ .Values.global.image.optf_has }}"
+        imagePullPolicy: {{ .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-healthcheck
+        command:
+          - "/bin/sh"
+          - "-c"
+          - |
+             echo "INSERT HEALTHCHECK PLAN";
+             sleep 15;
+             resp="FAILURE";
+             until [ $resp = "200" ]; do
+             resp=$(curl -s -o /dev/null --write-out %{http_code} -X POST http://{{.Values.config.music.serviceName}}.{{ include "common.namespace" . }}:{{.Values.config.music.port}}/MUSIC/rest/v2/keyspaces/conductor/tables/plans/rows?id=healthcheck \
+             -H "Content-Type: application/json" \
+             -H "ns: conductor" \
+             -H "Authorization: Basic Y29uZHVjdG9yOmMwbmR1Y3Qwcg==" \
+             --data @healthcheck.json);
+             echo $resp;
+             sleep 2;
+             done;
+        workingDir: /has
+        volumeMounts:
+          - mountPath: /etc/localtime
+            name: localtime
+            readOnly: true
+          - mountPath: /has/healthcheck.json
+            name: {{ .Values.global.commonConfigPrefix }}-config
+            subPath: healthcheck.json
+        resources:
+{{ toYaml .Values.resources | indent 10 }}
+      nodeSelector:
+        {{- if .Values.nodeSelector }}
+{{ toYaml .Values.nodeSelector | indent 8 }}
+        {{- end -}}
+        {{- if .Values.affinity }}
+      affinity:
+{{ toYaml .Values.affinity | indent 8 }}
+        {{- end }}
+      volumes:
+      - name: localtime
+        hostPath:
+          path: /etc/localtime
+      - name: {{ .Values.global.commonConfigPrefix }}-config
+        configMap:
+          name: {{ .Values.global.commonConfigPrefix }}-configmap
+          items:
+          - key: healthcheck.json
+            path: healthcheck.json
+      restartPolicy: OnFailure
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
\ No newline at end of file
diff --git a/kubernetes/oof/charts/oof-has/templates/job-onboard.yaml b/kubernetes/oof/charts/oof-has/templates/job-onboard.yaml
new file mode 100755 (executable)
index 0000000..2b24d40
--- /dev/null
@@ -0,0 +1,108 @@
+{{/*
+# Copyright 2018 Intel Corporation, Inc
+#
+# 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.
+*/}}
+
+apiVersion: batch/v1
+kind: Job
+metadata:
+  name: {{ include "common.fullname" . }}-onboard
+  namespace: {{ include "common.namespace" . }}
+  labels:
+    app: {{ include "common.name" . }}
+    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  template:
+    metadata:
+      labels:
+        app: {{ include "common.name" . }}
+        release: {{ .Release.Name }}
+    spec:
+      initContainers:
+      - image:  "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-readiness
+        command:
+        - /root/ready.py
+        args:
+        - --container-name
+        - "music-tomcat"
+        - --container-name
+        - "music-cassandra"
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+      - command:
+        - /root/job_complete.py
+        args:
+        - -j
+        - "{{ .Release.Name }}-music-cassandra-job-config"
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-music-db-readiness
+      containers:
+      - image: "{{ include "common.repository" . }}/{{ .Values.global.image.optf_has }}"
+        imagePullPolicy: {{ .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-onboard
+        command:
+          - "/bin/sh"
+          - "-c"
+          - |
+             curl -X POST http://{{.Values.config.music.serviceName}}.{{ include "common.namespace" . }}:{{.Values.config.music.port}}/MUSIC/rest/v2/admin/onboardAppWithMusic \
+             -H "Content-Type: application/json" \
+             -H "Authorization: Basic Y29uZHVjdG9yOmMwbmR1Y3Qwcg==" \
+             --data @onboard.json
+        workingDir: /has
+        volumeMounts:
+          - mountPath: /etc/localtime
+            name: localtime
+            readOnly: true
+          - mountPath: /has/onboard.json
+            name: {{ .Values.global.commonConfigPrefix }}-config
+            subPath: onboard.json
+        resources:
+{{ toYaml .Values.resources | indent 10 }}
+      nodeSelector:
+        {{- if .Values.nodeSelector }}
+{{ toYaml .Values.nodeSelector | indent 8 }}
+        {{- end -}}
+        {{- if .Values.affinity }}
+      affinity:
+{{ toYaml .Values.affinity | indent 8 }}
+        {{- end }}
+      volumes:
+      - name: localtime
+        hostPath:
+          path: /etc/localtime
+      - name: {{ .Values.global.commonConfigPrefix }}-config
+        configMap:
+          name: {{ .Values.global.commonConfigPrefix }}-configmap
+          items:
+          - key: onboard.json
+            path: onboard.json
+      restartPolicy: OnFailure
+      imagePullSecrets:
+      - name: "{{ include "common.namespace" . }}-docker-registry-key"
\ No newline at end of file
index fa6b410..952aa83 100755 (executable)
@@ -1,4 +1,5 @@
 # Copyright © 2017 Amdocs, AT&T, Bell Canada, VMware
+# Modifications Copyright © 2018 Intel Corporation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -24,17 +25,44 @@ global:
   commonConfigPrefix: onap-oof-has
   image:
     readiness: oomk8s/readiness-check:2.0.0
-    optf_has: onap/optf-has:1.2.1
+    optf_has: onap/optf-has:1.2.3
     filebeat: docker.elastic.co/beats/filebeat:5.5.0
 
 pullPolicy: Always
 nodePortPrefix: 302
 dataRootDir: /dockerdata-nfs
 config:
+  aaf:
+    serviceName: aaf-service
+    port: 8100
   aai:
     serviceName: aai
     port: 8443
   msb:
     serviceName: msb-iag
     port: 80
-
+  music:
+    serviceName: music-tomcat
+    port: 8080
+  sms:
+    serviceName: aaf-sms
+    port: 10443
+# Resource Limit flavor -By Default using small
+flavor: small
+# Segregation for Different environment (Small and Large)
+resources:
+  small:
+    limits:
+      memory: 2Gi
+      cpu: 1000m
+    requests:
+      memory: 1Gi
+      cpu: 500m
+  large:
+    limits:
+      memory: 4Gi
+      cpu: 2000m
+    requests:
+      memory: 2Gi
+      cpu: 1000m
+  unlimited: {}
index d39a832..fea3d90 100755 (executable)
@@ -68,7 +68,7 @@ aaf_user_roles:
   {{- end }}
 
 # Secret Management Service from AAF
-aaf_sms_url: {{ .Values.config.aaf_sms_url }}
+aaf_sms_url: {{ .Values.config.aaf_sms_url }}.{{ include "common.namespace" . }}:{{ .Values.config.aaf_sms_port }}
 aaf_sms_timeout: {{ .Values.config.aaf_sms_timeout }}
 secret_domain: {{ .Values.config.secret_domain }}
 aaf_ca_certs: {{ .Values.config.aaf_ca_certs }}
index 07f1ff4..d4558b7 100644 (file)
@@ -37,12 +37,6 @@ spec:
         args:
         - --container-name
         - pdp
-        - --container-name
-        - aaf-service
-        - --container-name
-        - aaf-sms
-        - --container-name
-        - oof-has-api
         env:
         - name: NAMESPACE
           valueFrom:
@@ -52,6 +46,24 @@ spec:
         image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
         name: {{ include "common.name" . }}-readiness
+      - command:
+        - sh
+        - -c
+        - resp="FAILURE";
+          until [ $resp = "200" ]; do
+          resp=$(curl -s -o /dev/null -k --write-out %{http_code} https://aaf-sms.{{ include "common.namespace" . }}:10443/v1/sms/domain/osdf/secret);
+          echo $resp;
+          sleep 2;
+          done
+        env:
+        - name: NAMESPACE
+          valueFrom:
+            fieldRef:
+              apiVersion: v1
+              fieldPath: metadata.namespace
+        image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
+        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
+        name: {{ include "common.name" . }}-osdf-sms-readiness
       containers:
         - name: {{ include "common.name" . }}
           image: "{{ include "common.repository" . }}/{{ .Values.image }}"
index da69c42..1d926fa 100644 (file)
@@ -26,7 +26,7 @@ global:
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/optf-osdf:1.2.1
+image: onap/optf-osdf:1.2.3
 pullPolicy: Always
 
 # flag to enable debugging - application support required
@@ -36,7 +36,7 @@ debugEnabled: false
 config:
   msbgateway: msb-iag
   msbPort: 80
-  placementVersioningEnabled: False
+  placementVersioningEnabled: True
   # Placement API latest version numbers to be set in HTTP header
   placementMajorVersion: "1"
   placementMinorVersion: "0"
@@ -57,7 +57,7 @@ config:
   # versions to be set in HTTP header
   conductorMinorVersion: 0
   # Url and credentials for the Policy Platform
-  policyPlatformUrl: http://pdp:8081/pdp/api/getConfig # Policy Dev platform URL
+  policyPlatformUrl: https://pdp:8081/pdp/api/getConfig # Policy Dev platform URL
   policyPlatformEnv: TEST # Environment for policy platform
   policyPlatformUsername: testpdp # Policy platform username.
   policyPlatformPassword: alpha123 # Policy platform password.
@@ -92,7 +92,8 @@ config:
   aaf_user_roles:
       - '/api/oof/v1/placement:org.onap.osdf.access|*|read ALL'
   # Secret Management Service from AAF
-  aaf_sms_url: https://aaf-sms:10443
+  aaf_sms_url: https://aaf-sms
+  aaf_sms_port: 10443
   aaf_sms_timeout: 30
   secret_domain: osdf
   aaf_ca_certs: /opt/app/ssl_cert/aaf_root_ca.cer
@@ -118,15 +119,15 @@ flavor: small
 resources:
   small:
     limits:
-      memory: 4Gi
-      cpu: 2000m
+      memory: 2Gi
+      cpu: 1000m
     requests:
       memory: 1Gi
       cpu: 500m
   large:
     limits:
-      memory: 8Gi
-      cpu: 4000m
+      memory: 4Gi
+      cpu: 2000m
     requests:
       memory: 2Gi
       cpu: 1000m
index b9ce28e..5109465 100644 (file)
@@ -26,7 +26,7 @@ global:
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/policy-pe:1.3.0
+image: onap/policy-pe:1.3.1
 pullPolicy: Always
 
 # flag to enable debugging - application support required
index bacddde..9dfefae 100644 (file)
@@ -28,7 +28,7 @@ global:
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/policy-drools:1.3.0
+image: onap/policy-drools:1.3.1
 pullPolicy: Always
 
 # flag to enable debugging - application support required
index 6bb6765..5496123 100644 (file)
@@ -28,7 +28,7 @@ global:
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/policy-pe:1.3.0
+image: onap/policy-pe:1.3.1
 pullPolicy: Always
 
 # flag to enable debugging - application support required
index 2a5b04a..96803cf 100644 (file)
@@ -28,7 +28,7 @@ global:
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/policy-apex-pdp:2.0.0
+image: onap/policy-apex-pdp:2.0.1
 pullPolicy: Always
 
 # flag to enable debugging - application support required
index 835a745..cad79df 100644 (file)
@@ -27,7 +27,7 @@ global:
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/policy-distribution:2.0.0
+image: onap/policy-distribution:2.0.1
 pullPolicy: Always
 
 # flag to enable debugging - application support required
index 2165b18..8d72d19 100644 (file)
@@ -41,7 +41,7 @@ global:
 #################################################################
 # application image
 repository: nexus3.onap.org:10001
-image: onap/policy-pe:1.3.0
+image: onap/policy-pe:1.3.1
 pullPolicy: Always
 
 subChartsOnly:
index c4124c2..3fe511f 100755 (executable)
@@ -160,6 +160,10 @@ do
                        VARIABLES="$VARIABLES -v HB_SERVICE:$1"
                        shift
                        ;;
+       cds)
+                       TAG="cds"
+                       shift
+                       ;;
        *)
                        usage
                        exit
index 268c6f3..bcf6897 100644 (file)
@@ -25,7 +25,7 @@ flavor: small
 
 # application image
 repository: nexus3.onap.org:10001
-image: onap/usecase-ui/usecase-ui-server:1.1.1
+image: onap/usecase-ui-server:1.2.0
 pullPolicy: Always
 
 # application configuration