[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