Merge "Add capability to delete a backup archive"

This commit is contained in:
Zuul 2020-10-28 20:17:20 +00:00 committed by Gerrit Code Review
commit e74674324b
2 changed files with 99 additions and 37 deletions

View File

@ -15,7 +15,7 @@ apiVersion: v1
appVersion: v1.0.0 appVersion: v1.0.0
description: OpenStack-Helm Helm-Toolkit description: OpenStack-Helm Helm-Toolkit
name: helm-toolkit name: helm-toolkit
version: 0.1.4 version: 0.1.5
home: https://docs.openstack.org/openstack-helm home: https://docs.openstack.org/openstack-helm
icon: https://www.openstack.org/themes/openstack/images/project-mascots/OpenStack-Helm/OpenStack_Project_OpenStackHelm_vertical.png icon: https://www.openstack.org/themes/openstack/images/project-mascots/OpenStack-Helm/OpenStack_Project_OpenStackHelm_vertical.png
sources: sources:

View File

@ -143,6 +143,7 @@ usage() {
echo "list_schema <archive_filename> <dbname> <table_name> [remote]" echo "list_schema <archive_filename> <dbname> <table_name> [remote]"
echo "restore <archive_filename> <db_specifier> [remote]" echo "restore <archive_filename> <db_specifier> [remote]"
echo " where <db_specifier> = <dbname> | ALL" echo " where <db_specifier> = <dbname> | ALL"
echo "delete_archive <archive_filename> [remote]"
clean_and_exit $ret_val "" clean_and_exit $ret_val ""
} }
@ -161,6 +162,42 @@ clean_and_exit() {
exit $RETCODE exit $RETCODE
} }
determine_resulting_error_code() {
RESULT="$1"
echo ${RESULT} | grep "HTTP 404"
if [[ $? -eq 0 ]]; then
echo "Could not find the archive: ${RESULT}"
return 1
else
echo ${RESULT} | grep "HTTP 401"
if [[ $? -eq 0 ]]; then
echo "Could not access the archive: ${RESULT}"
return 1
else
echo ${RESULT} | grep "HTTP 503"
if [[ $? -eq 0 ]]; then
echo "RGW service is unavailable. ${RESULT}"
# In this case, the RGW may be temporarily down.
# Return slightly different error code so the calling code can retry
return 2
else
echo ${RESULT} | grep "ConnectionError"
if [[ $? -eq 0 ]]; then
echo "Could not reach the RGW: ${RESULT}"
# In this case, keystone or the site/node may be temporarily down.
# Return slightly different error code so the calling code can retry
return 2
else
echo "Archive ${ARCHIVE} could not be retrieved: ${RESULT}"
return 1
fi
fi
fi
fi
return 0
}
# Retrieve a list of archives from the RGW. # Retrieve a list of archives from the RGW.
retrieve_remote_listing() { retrieve_remote_listing() {
RESULT=$(openstack container show $CONTAINER_NAME 2>&1) RESULT=$(openstack container show $CONTAINER_NAME 2>&1)
@ -175,22 +212,8 @@ retrieve_remote_listing() {
echo "Archive listing successfully retrieved." echo "Archive listing successfully retrieved."
fi fi
else else
echo $RESULT | grep "HTTP 401" determine_resulting_error_code "${RESULT}"
if [[ $? -eq 0 ]]; then return $?
echo "Could not access the container: ${RESULT}"
return 1
else
echo $RESULT | grep "ConnectionError"
if [[ $? -eq 0 ]]; then
echo "Could not reach the RGW: ${RESULT}"
# In this case, keystone or the site/node may be temporarily down.
# Return slightly different error code so the calling code can retry
return 2
else
echo "Container $CONTAINER_NAME does not exist: ${RESULT}"
return 1
fi
fi
fi fi
return 0 return 0
} }
@ -201,28 +224,28 @@ retrieve_remote_archive() {
RESULT=$(openstack object save --file $TMP_DIR/$ARCHIVE $CONTAINER_NAME $ARCHIVE 2>&1) RESULT=$(openstack object save --file $TMP_DIR/$ARCHIVE $CONTAINER_NAME $ARCHIVE 2>&1)
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then
echo $RESULT | grep "HTTP 401" determine_resulting_error_code "${RESULT}"
if [[ $? -eq 0 ]]; then return $?
echo "Could not access the archive: ${RESULT}"
return 1
else
echo $RESULT | grep "ConnectionError"
if [[ $? -eq 0 ]]; then
echo "Could not reach the RGW: ${RESULT}"
# In this case, keystone or the site/node may be temporarily down.
# Return slightly different error code so the calling code can retry
return 2
else
echo "Archive ${ARCHIVE} could not be retrieved: ${RESULT}"
return 1
fi
fi
else else
echo "Archive $ARCHIVE successfully retrieved." echo "Archive $ARCHIVE successfully retrieved."
fi fi
return 0 return 0
} }
# Delete an archive from the RGW.
delete_remote_archive() {
ARCHIVE=$1
RESULT=$(openstack object delete ${CONTAINER_NAME} ${ARCHIVE} 2>&1)
if [[ $? -ne 0 ]]; then
determine_resulting_error_code "${RESULT}"
return $?
else
echo "Archive ${ARCHIVE} successfully deleted."
fi
return 0
}
# Display all archives # Display all archives
list_archives() { list_archives() {
REMOTE=$1 REMOTE=$1
@ -296,7 +319,7 @@ list_databases() {
REMOTE=$2 REMOTE=$2
WHERE="local" WHERE="local"
if [[ "x${REMOTE}" != "x" ]]; then if [[ -n ${REMOTE} ]]; then
WHERE="remote" WHERE="remote"
fi fi
@ -327,7 +350,7 @@ list_tables() {
REMOTE=$3 REMOTE=$3
WHERE="local" WHERE="local"
if [[ "x${REMOTE}" != "x" ]]; then if [[ -n ${REMOTE} ]]; then
WHERE="remote" WHERE="remote"
fi fi
@ -359,7 +382,7 @@ list_rows() {
REMOTE=$4 REMOTE=$4
WHERE="local" WHERE="local"
if [[ "x${REMOTE}" != "x" ]]; then if [[ -n ${REMOTE} ]]; then
WHERE="remote" WHERE="remote"
fi fi
@ -391,7 +414,7 @@ list_schema() {
REMOTE=$4 REMOTE=$4
WHERE="local" WHERE="local"
if [[ "x${REMOTE}" != "x" ]]; then if [[ -n ${REMOTE} ]]; then
WHERE="remote" WHERE="remote"
fi fi
@ -415,6 +438,36 @@ list_schema() {
fi fi
} }
# Delete an archive
delete_archive() {
ARCHIVE_FILE=$1
REMOTE=$2
WHERE="local"
if [[ -n ${REMOTE} ]]; then
WHERE="remote"
fi
if [[ "${WHERE}" == "remote" ]]; then
delete_remote_archive ${ARCHIVE_FILE}
if [[ $? -ne 0 ]]; then
clean_and_exit 1 "ERROR: Could not delete remote archive: ${ARCHIVE_FILE}"
fi
else # Local
if [[ -e ${ARCHIVE_DIR}/${ARCHIVE_FILE} ]]; then
rm -f ${ARCHIVE_DIR}/${ARCHIVE_FILE}
if [[ $? -ne 0 ]]; then
clean_and_exit 1 "ERROR: Could not delete local archive."
fi
else
clean_and_exit 1 "ERROR: Local archive file could not be found."
fi
fi
echo "Successfully deleted archive ${ARCHIVE_FILE} from ${WHERE} storage."
}
# Return 1 if the given database exists in the database file. 0 otherwise. # Return 1 if the given database exists in the database file. 0 otherwise.
database_exists() { database_exists() {
DB=$1 DB=$1
@ -544,6 +597,15 @@ cli_main() {
clean_and_exit 0 "" clean_and_exit 0 ""
fi fi
;; ;;
"delete_archive")
if [[ ${#ARGS[@]} -lt 2 || ${#ARGS[@]} -gt 3 ]]; then
usage 1
elif [[ ${#ARGS[@]} -eq 2 ]]; then
delete_archive ${ARGS[1]}
else
delete_archive ${ARGS[1]} ${ARGS[2]}
fi
;;
*) *)
usage 1 usage 1
;; ;;