promenade/charts/etcd/templates/bin/_etcdbackup.tpl

77 lines
2.5 KiB
Smarty

#!/bin/bash
{{/*
Copyright 2017 AT&T Intellectual Property. All other 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.
*/}}
BACKUP_DIR={{ .Values.backup.host_backup_path }}
BACKUP_LOG={{ .Values.backup.backup_log_file | quote }}
NUM_TO_KEEP={{ .Values.backup.no_backup_keep | quote }}
REMOTE_BACKUP_DAYS_TO_KEEP={{ .Values.backup.remote_backup.days_to_keep | quote }}
BACKUP_FILE_NAME={{ .Values.service.name | quote }}
SKIP_BACKUP=0
source /tmp/bin/backup_main.sh
# Export the variables required by the framework
# Note: REMOTE_BACKUP_ENABLED and CONTAINER_NAME are already exported
export DB_NAMESPACE=${POD_NAMESPACE}
export DB_NAME="etcd"
export LOCAL_DAYS_TO_KEEP=$NUM_TO_KEEP
export REMOTE_DAYS_TO_KEEP=$REMOTE_BACKUP_DAYS_TO_KEEP
export REMOTE_BACKUP_RETRIES=${NUMBER_OF_RETRIES_SEND_BACKUP_TO_REMOTE}
export MIN_DELAY_SEND_REMOTE=${MIN_DELAY_SEND_BACKUP_TO_REMOTE}
export MAX_DELAY_SEND_REMOTE=${MAX_DELAY_SEND_BACKUP_TO_REMOTE}
export ARCHIVE_DIR=${BACKUP_DIR}/db/${DB_NAMESPACE}/${DB_NAME}/archive
dump_databases_to_directory() {
TMP_DIR=$1
LOG_FILE=${2:-BACKUP_LOG}
cd $TMP_DIR
etcdctl snapshot save --command-timeout=5m $TMP_DIR/$BACKUP_FILE_NAME.$DB_NAMESPACE.all.db >> $LOG_FILE
BACKUP_RETURN_CODE=$?
if [[ $BACKUP_RETURN_CODE != 0 ]]; then
log ERROR $DB_NAME "There was an error backing up the databases." $LOG_FILE
return $BACKUP_RETURN_CODE
fi
}
# Verify all the databases backup archives
verify_databases_backup_archives() {
####################################
# TODO: add implementation of local backup verification
####################################
return 0
}
if ! [ -x "$(which etcdctl)" ]; then
log ERROR $DB_NAME "etcdctl not available, Please use the correct image."
SKIP_BACKUP=1
fi
if [ ! -d "$BACKUP_DIR" ]; then
log ERROR $DB_NAME "$BACKUP_DIR doesn't exist, Backup will not continue"
SKIP_BACKUP=1
fi
if [ $SKIP_BACKUP -eq 0 ]; then
# Call main program to start the database backup
backup_databases
else
log ERROR $DB_NAME "Backup of the ${DB_NAME} database failed. etcd backup failed."
exit 1
fi