From 2ee28a5a7a82116e1854d92713a315490c9f259b Mon Sep 17 00:00:00 2001 From: Dan Timoney Date: Fri, 15 Jan 2021 16:39:50 -0500 Subject: [PATCH] [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 Change-Id: I6b068c7a7bce294f94f9697a34027010bb5bfe8f --- .../sdnc/resources/config/bin/createLinks.sh | 69 ++++++++++++++++++++++ kubernetes/sdnc/templates/pv-data.yaml | 57 +++++------------- kubernetes/sdnc/templates/statefulset.yaml | 23 ++++++-- kubernetes/sdnc/values.yaml | 5 +- 4 files changed, 106 insertions(+), 48 deletions(-) create mode 100755 kubernetes/sdnc/resources/config/bin/createLinks.sh diff --git a/kubernetes/sdnc/resources/config/bin/createLinks.sh b/kubernetes/sdnc/resources/config/bin/createLinks.sh new file mode 100755 index 0000000000..1999dabb37 --- /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 e40bdd6ea3..a0d998cd07 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 c61e1e35c9..63b56f87a9 100644 --- a/kubernetes/sdnc/templates/statefulset.yaml +++ b/kubernetes/sdnc/templates/statefulset.yaml @@ -141,15 +141,19 @@ spec: 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 @@ spec: 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 @@ spec: 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 @@ spec: - 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 cb1cde20a6..0bd8abe88e 100644 --- a/kubernetes/sdnc/values.yaml +++ b/kubernetes/sdnc/values.yaml @@ -471,7 +471,10 @@ persistence: 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 -- 2.16.6