[SDNC] Move ODL persistent data to pvc

In OpenDaylight, there are three types of data that we want to retain:
- exported backups (stored in /opt/opendaylight/daexim)
- journals (stored in /opt/opendaylight/journal)
- snapshots (stored in /opt/opendaylight/snapshots)
This change saves all 3 directories to the sdnc persistent
volume so that they are retained across restarts.

Issue-ID: SDNC-1455
Signed-off-by: Dan Timoney <dtimoney@att.com>
Change-Id: I6b068c7a7bce294f94f9697a34027010bb5bfe8f
diff --git a/kubernetes/sdnc/resources/config/bin/createLinks.sh b/kubernetes/sdnc/resources/config/bin/createLinks.sh
new file mode 100755
index 0000000..1999dab
--- /dev/null
+++ b/kubernetes/sdnc/resources/config/bin/createLinks.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+###
+# ============LICENSE_START=======================================================
+# ONAP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T 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.
+# ============LICENSE_END=========================================================
+###
+
+
+if [ "$MDSAL_PATH" = "" ]
+then
+    MDSAL_PATH=/opt/opendaylight/mdsal
+fi
+
+if [ "$DAEXIM_PATH" = "" ]
+then
+    DAEXIM_PATH=/opt/opendaylight/daexim
+fi
+
+if [ "$JOURNAL_PATH" = "" ]
+then
+    JOURNAL_PATH=/opt/opendaylight/journal
+fi
+
+if [ "$SNAPSHOTS_PATH" = "" ]
+then
+    SNAPSHOTS_PATH=/opt/opendaylight/snapshots
+fi
+
+
+if [ ! -L $DAEXIM_PATH ]
+then
+    ln -s $MDSAL_PATH/daexim $DAEXIM_PATH
+fi
+
+if [ ! -L $JOURNAL_PATH ]
+then
+    if [ -d $JOURNAL_PATH ]
+    then
+        mv $JOURNAL_PATH/* $MDSAL_PATH/journal
+	rm -f $JOURNAL_PATH
+    fi
+    ln -s $MDSAL_PATH/journal $JOURNAL_PATH
+fi
+
+if [ ! -L $SNAPSHOTS_PATH ]
+then
+    if [ -d $SNAPSHOTS_PATH ]
+    then
+        mv $SNAPSHOTS_PATH/* $MDSAL_PATH/snapshots
+	rm -f $SNAPSHOTS_PATH
+    fi
+    ln -s $MDSAL_PATH/snapshots $SNAPSHOTS_PATH
+fi
diff --git a/kubernetes/sdnc/templates/pv-data.yaml b/kubernetes/sdnc/templates/pv-data.yaml
index e40bdd6..a0d998c 100644
--- a/kubernetes/sdnc/templates/pv-data.yaml
+++ b/kubernetes/sdnc/templates/pv-data.yaml
@@ -1,46 +1,17 @@
 {{/*
-# Copyright © 2018 Amdocs, AT&T, Bell Canada
-# #
-# # Licensed under the Apache License, Version 2.0 (the "License");
-# # you may not use this file except in compliance with the License.
-# # You may obtain a copy of the License at
-# #
-# #       http://www.apache.org/licenses/LICENSE-2.0
-# #
-# # Unless required by applicable law or agreed to in writing, software
-# # distributed under the License is distributed on an "AS IS" BASIS,
-# # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# # See the License for the specific language governing permissions and
-# # limitations under the License.
+# Copyright © 2018 Amdocs, Bell Canada, AT&T
+#
+# 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.
 */}}
 
-{{- $global := . }}
-{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
-{{- if eq "True" (include "common.needPV" .) -}}
-{{- range $i := until (int $global.Values.replicaCount)}}
-kind: PersistentVolume
-apiVersion: v1
-metadata:
-  name: {{ include "common.fullname" $global }}-data-{{ $i }}
-  namespace: {{ include "common.namespace" $global }}
-  labels:
-    app: {{ include "common.fullname" $global }}
-    chart: "{{ $global.Chart.Name }}-{{ $global.Chart.Version | replace "+" "_" }}"
-    release: "{{ include "common.release" $global }}"
-    heritage: "{{ $global.Release.Service }}"
-    name: {{ include "common.fullname" $global }}
-spec:
-  capacity:
-    storage: {{ $global.Values.persistence.size}}
-  accessModes:
-    - {{ $global.Values.persistence.accessMode }}
-  storageClassName: "{{ include "common.fullname" $global }}-data"
-  persistentVolumeReclaimPolicy: {{ $global.Values.persistence.volumeReclaimPolicy }}
-  hostPath:
-    path: {{ $global.Values.global.persistence.mountPath | default $global.Values.persistence.mountPath }}/{{ include "common.release" $global }}/{{ $global.Values.persistence.mountSubPath }}-{{$i}}
-{{if ne $i (int $global.Values.replicaCount) }}
----
-{{- end -}}
-{{- end -}}
-{{- end -}}
-{{- end -}}
+{{ include "common.replicaPV" . }}
diff --git a/kubernetes/sdnc/templates/statefulset.yaml b/kubernetes/sdnc/templates/statefulset.yaml
index c61e1e3..63b56f8 100644
--- a/kubernetes/sdnc/templates/statefulset.yaml
+++ b/kubernetes/sdnc/templates/statefulset.yaml
@@ -141,15 +141,19 @@
             name: certservice-tls-volume
       {{ end }}
 
-      - name: {{ include "common.name" . }}-chown
+      - name: {{ include "common.name" . }}-init-files
         image: {{ include "repositoryGenerator.image.busybox" . }}
         command:
         - sh
         args:
         - -c
-        - chown -R {{ .Values.config.odlUid }}:{{ .Values.config.odlGid}} {{ .Values.persistence.mdsalPath }}
+        - |
+           mkdir {{ .Values.persistence.mdsalPath }}/daexim
+           mkdir {{ .Values.persistence.mdsalPath }}/journal
+           mkdir {{ .Values.persistence.mdsalPath }}/snapshots 
+           chown -R {{ .Values.config.odlUid }}:{{ .Values.config.odlGid}} {{ .Values.persistence.mdsalPath }}
 {{- if .Values.global.aafEnabled }}
-        - chown -R {{ .Values.config.odlUid }}:{{ .Values.config.odlGid}} {{ .Values.certInitializer.credsPath }}
+           chown -R {{ .Values.config.odlUid }}:{{ .Values.config.odlGid}} {{ .Values.certInitializer.credsPath }}
 {{- end }}
         volumeMounts:
 {{ include "common.certInitializer.volumeMount" . | indent 10 }}
@@ -160,7 +164,7 @@
           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
           command: ["/bin/bash"]
-          args: ["-c", "/opt/onap/sdnc/bin/startODL.sh"]
+          args: ["-c", "/opt/onap/sdnc/bin/createLinks.sh ; /opt/onap/sdnc/bin/startODL.sh"]
           ports:
           - containerPort: {{ .Values.service.internalPort }}
           - containerPort: {{ .Values.service.internalPort2 }}
@@ -200,6 +204,14 @@
             value: "{{ .Values.replicaCount }}"
           - name: MYSQL_HOST
             value: {{ include "common.mariadbService" . }}
+          - name: MDSAL_PATH
+            value: {{ .Values.persistence.mdsalPath }}
+          - name: DAEXIM_PATH
+            value: {{ .Values.persistence.daeximPath }}
+          - name: JOURNAL_PATH
+            value: {{ .Values.persistence.journalPath }}
+          - name: SNAPSHOTS_PATH
+            value: {{ .Values.persistence.snapshotsPath }}
           - name: JAVA_HOME
             value: "{{ .Values.config.javaHome}}"
           - name: JAVA_OPTS
@@ -233,6 +245,9 @@
           - mountPath: {{ .Values.config.binDir }}/installSdncDb.sh
             name: bin
             subPath: installSdncDb.sh
+          - mountPath: {{ .Values.config.binDir }}/createLinks.sh
+            name: bin
+            subPath: createLinks.sh
           - mountPath: {{ .Values.config.ccsdkConfigDir }}/aaiclient.properties
             name: properties
             subPath: aaiclient.properties
diff --git a/kubernetes/sdnc/values.yaml b/kubernetes/sdnc/values.yaml
index cb1cde2..0bd8abe 100644
--- a/kubernetes/sdnc/values.yaml
+++ b/kubernetes/sdnc/values.yaml
@@ -471,7 +471,10 @@
   size: 1Gi
   mountPath: /dockerdata-nfs
   mountSubPath: sdnc/mdsal
-  mdsalPath: /opt/opendaylight/current/daexim
+  mdsalPath: /opt/opendaylight/mdsal
+  daeximPath: /opt/opendaylight/daexim
+  journalPath: /opt/opendaylight/journal
+  snapshotsPath: /opt/opendaylight/snapshots
 
 certpersistence:
   enabled: true