openstack-helm-infra/postgresql/templates/bin/_common_backup_restore.sh.tpl
Cliff Parsons 382d113a87 Postgresql backup/restore enhancements
1) Added a new backup container for accessing RGW via Openstack Swift API.
2) Modified the backup script so that tarballed databases can be sent to the RGW.
3) Added new script to send the database backup to the RGW.
4) Modified the restore script so that databases can be retrieved from the RGW.
5) Added new script to retrieve the database backups from the RGW.

Change-Id: Id17a8fcb63f5614ea038c58acdc256fb4e05f434
2020-04-22 22:31:48 +00:00

95 lines
2.4 KiB
Smarty

#!/bin/bash
# Copyright 2018 The Openstack-Helm Authors.
#
# 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.
# Do not use set -x here because the manual backup or restore pods may be using
# these functions, and it will distort the command output to have tracing on.
log_backup_error_exit() {
MSG=$1
ERRCODE=$2
log ERROR postgresql_backup "${MSG}"
exit $ERRCODE
}
log() {
#Log message to a file or stdout
#TODO: This can be convert into mail alert of alert send to a monitoring system
#Params: $1 log level
#Params: $2 service
#Params: $3 message
#Params: $4 Destination
LEVEL=$1
SERVICE=$2
MSG=$3
DEST=$4
DATE=$(date +"%m-%d-%y %H:%M:%S")
if [ -z "$DEST" ]
then
echo "${DATE} ${LEVEL}: $(hostname) ${SERVICE}: ${MSG}"
else
echo "${DATE} ${LEVEL}: $(hostname) ${SERVICE}: ${MSG}" >>$DEST
fi
}
#Get the day delta since the archive file backup
seconds_difference() {
archive_date=$( date --date="$1" +%s )
if [ "$?" -ne 0 ]
then
second_delta=0
fi
current_date=$( date +%s )
second_delta=$(($current_date-$archive_date))
if [ "$second_delta" -lt 0 ]
then
second_delta=0
fi
echo $second_delta
}
# Wait for a file to be available on the file system (written by the other
# container).
wait_for_file() {
WAIT_FILE=$1
NO_TIMEOUT=${2:-false}
TIMEOUT=300
if [[ $NO_TIMEOUT == "true" ]]
then
# Such a large value to virtually never timeout
TIMEOUT=999999999
fi
TIMEOUT_EXP=$(( $(date +%s) + $TIMEOUT ))
DONE=false
while [[ $DONE == "false" ]]
do
DELTA=$(( TIMEOUT_EXP - $(date +%s) ))
if [[ "$(ls -l ${WAIT_FILE} 2>/dev/null | wc -l)" -gt 0 ]];
then
DONE=true
elif [[ $DELTA -lt 0 ]]
then
DONE=true
echo "Timed out waiting for file ${WAIT_FILE}."
return 1
else
echo "Still waiting ...will time out in ${DELTA} seconds..."
sleep 5
fi
done
return 0
}