diff --git a/postgresql/Chart.yaml b/postgresql/Chart.yaml index 7ebe66d8a..c11a455ae 100644 --- a/postgresql/Chart.yaml +++ b/postgresql/Chart.yaml @@ -15,7 +15,7 @@ apiVersion: v1 appVersion: v9.6 description: OpenStack-Helm PostgreSQL name: postgresql -version: 0.1.6 +version: 0.1.7 home: https://www.postgresql.org sources: - https://github.com/postgres/postgres diff --git a/postgresql/templates/bin/_postgresql_archive_cleanup.sh.tpl b/postgresql/templates/bin/_postgresql_archive_cleanup.sh.tpl new file mode 100644 index 000000000..d8ed7bb1b --- /dev/null +++ b/postgresql/templates/bin/_postgresql_archive_cleanup.sh.tpl @@ -0,0 +1,46 @@ +#!/bin/bash + +# 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. + +set +ex + +# ARCHIVE_LIMIT env variable is Threshold of archiving supposed to be kept in percentage +clean_up () { + echo "Cleanup required as Utilization is above threshold" + # Get file count and delete half of the archive while maintaining the order of the files + FILE_COUNT=$(ls -1 ${ARCHIVE_PATH} | sort | wc -l) + COUNT=0 + echo $((FILE_COUNT/2)) + for file in $(ls -1 ${ARCHIVE_PATH} | sort); do + if [[ $COUNT -lt $((FILE_COUNT/2)) ]]; then + echo "removing following file $file" + rm -rf ${ARCHIVE_PATH}/$file + else + break + fi + COUNT=$((COUNT+1)) + done +} +#infinite loop to check the utilization of archive +while true +do + # checking the utilization of archive directory + UTILIZATION=$(df -h ${ARCHIVE_PATH} | awk ' NR==2 {print $5} ' | awk '{ print substr( $0, 1, length($0)-1 ) }') + if [[ $UTILIZATION -gt ${ARCHIVE_LIMIT} ]]; + then + clean_up + fi + sleep 3600 +done + + diff --git a/postgresql/templates/bin/_start.sh.tpl b/postgresql/templates/bin/_start.sh.tpl index b671761c1..14d56a273 100644 --- a/postgresql/templates/bin/_start.sh.tpl +++ b/postgresql/templates/bin/_start.sh.tpl @@ -35,4 +35,6 @@ fi set -x +bash /tmp/archive_cleanup.sh & + exec /docker-entrypoint.sh postgres -c config_file=/tmp/postgresql.conf diff --git a/postgresql/templates/configmap-bin.yaml b/postgresql/templates/configmap-bin.yaml index 2c0e502dd..b5b8ec151 100644 --- a/postgresql/templates/configmap-bin.yaml +++ b/postgresql/templates/configmap-bin.yaml @@ -28,6 +28,7 @@ data: {{- end }} start.sh: {{ tuple "bin/_start.sh.tpl" . | include "helm-toolkit.utils.template" | b64enc }} readiness.sh: {{ tuple "bin/_readiness.sh.tpl" . | include "helm-toolkit.utils.template" | b64enc }} + archive_cleanup.sh: {{ tuple "bin/_postgresql_archive_cleanup.sh.tpl" . | include "helm-toolkit.utils.template" | b64enc }} db_test.sh: {{ tuple "bin/_db_test.sh.tpl" . | include "helm-toolkit.utils.template" | b64enc }} {{- if .Values.conf.backup.enabled }} backup_postgresql.sh: {{ tuple "bin/_backup_postgresql.sh.tpl" . | include "helm-toolkit.utils.template" | b64enc }} diff --git a/postgresql/templates/statefulset.yaml b/postgresql/templates/statefulset.yaml index 221f8c64e..082725197 100644 --- a/postgresql/templates/statefulset.yaml +++ b/postgresql/templates/statefulset.yaml @@ -169,6 +169,10 @@ spec: env: - name: PGDATA value: "{{ .Values.storage.mount.path }}/pgdata" + - name: ARCHIVE_LIMIT + value: "{{ .Values.storage.archive.archive_limit }}" + - name: ARCHIVE_PATH + value: "{{ .Values.storage.archive.mount_path }}" - name: KUBERNETES_NAMESPACE valueFrom: fieldRef: @@ -226,6 +230,10 @@ spec: - name: postgresql-archive mountPath: {{ .Values.storage.archive.mount_path }} subPath: {{ .Values.storage.mount.subpath }} + - name: postgresql-bin + mountPath: /tmp/archive_cleanup.sh + subPath: archive_cleanup.sh + readOnly: true {{- end }} volumes: - name: pod-tmp diff --git a/postgresql/values.yaml b/postgresql/values.yaml index ee50bb734..bd949c483 100644 --- a/postgresql/values.yaml +++ b/postgresql/values.yaml @@ -190,6 +190,7 @@ storage: subpath: . archive: mount_path: /var/lib/archive + archive_limit: 60 labels: server: