Merge "Add capability to delete a backup archive"
This commit is contained in:
commit
e74674324b
@ -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:
|
||||||
|
@ -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
|
||||||
;;
|
;;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user