382d113a87
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
82 lines
2.7 KiB
Smarty
Executable File
82 lines
2.7 KiB
Smarty
Executable File
#!/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.
|
|
|
|
set -x
|
|
|
|
RESTORE_DIR=${POSTGRESQL_BACKUP_BASE_DIR}/db/${POSTGRESQL_POD_NAMESPACE}/postgres/restore
|
|
ARCHIVE_DIR=${POSTGRESQL_BACKUP_BASE_DIR}/db/${POSTGRESQL_POD_NAMESPACE}/postgres/archive
|
|
|
|
source /tmp/common_backup_restore.sh
|
|
|
|
# Keep processing requests for the life of the pod.
|
|
while true
|
|
do
|
|
# Wait until a restore request file is present on the disk
|
|
echo "Waiting for a restore request..."
|
|
NO_TIMEOUT=true
|
|
wait_for_file $RESTORE_DIR/*_request $NO_TIMEOUT
|
|
|
|
echo "Done waiting. Request received"
|
|
|
|
CONTAINER_NAME={{ .Values.conf.backup.remote_backup.container_name }}
|
|
|
|
if [[ -e $RESTORE_DIR/archive_listing_request ]]
|
|
then
|
|
# We've finished consuming the request, so delete the request file.
|
|
rm -rf $RESTORE_DIR/*_request
|
|
|
|
openstack container show $CONTAINER_NAME
|
|
if [[ $? -eq 0 ]]
|
|
then
|
|
# Get the list, ensureing that we only pick up postgres backups from the
|
|
# requested namespace
|
|
openstack object list $CONTAINER_NAME | grep postgres | grep $POSTGRESQL_POD_NAMESPACE | awk '{print $2}' > $RESTORE_DIR/archive_list_response
|
|
if [[ $? != 0 ]]
|
|
then
|
|
echo "Container object listing could not be obtained." >> $RESTORE_DIR/archive_list_error
|
|
else
|
|
echo "Archive listing successfully retrieved."
|
|
fi
|
|
else
|
|
echo "Container $CONTAINER_NAME does not exist." >> $RESTORE_DIR/archive_list_error
|
|
fi
|
|
elif [[ -e $RESTORE_DIR/get_archive_request ]]
|
|
then
|
|
ARCHIVE=`cat $RESTORE_DIR/get_archive_request`
|
|
|
|
echo "Request for archive $ARCHIVE received."
|
|
|
|
# We've finished consuming the request, so delete the request file.
|
|
rm -rf $RESTORE_DIR/*_request
|
|
|
|
openstack object save --file $RESTORE_DIR/$ARCHIVE $CONTAINER_NAME $ARCHIVE
|
|
if [[ $? != 0 ]]
|
|
then
|
|
echo "Archive $ARCHIVE could not be retrieved." >> $RESTORE_DIR/archive_error
|
|
else
|
|
echo "Archive $ARCHIVE successfully retrieved."
|
|
fi
|
|
|
|
# Signal to the other container that the archive is available.
|
|
touch $RESTORE_DIR/archive_response
|
|
else
|
|
rm -rf $RESTORE_DIR/*_request
|
|
echo "Invalid request received."
|
|
fi
|
|
|
|
sleep 5
|
|
done
|