feat: add retry count for removing record set
This avoids infinite loop when something went wrong and throws a error
This commit is contained in:
parent
799e402077
commit
acbd8bce21
@ -98,19 +98,59 @@ dns_huaweicloud_rm() {
|
|||||||
fi
|
fi
|
||||||
_debug "Zone ID is:" "${zoneid}"
|
_debug "Zone ID is:" "${zoneid}"
|
||||||
|
|
||||||
# Remove all records
|
_recursive_rm_record "${token}" "${fulldomain}" "${zoneid}" "${record_id}"
|
||||||
# Therotically HuaweiCloud does not allow more than one record set
|
ret="$?"
|
||||||
# But remove them recurringly to increase robusty
|
if [ "${ret}" != "0" ]; then
|
||||||
while [ "${record_id}" != "0" ]; do
|
_err "dns_api(dns_huaweicloud): Error removing record."
|
||||||
_debug "Removing Record"
|
return 1
|
||||||
_rm_record "${token}" "${zoneid}" "${record_id}"
|
fi
|
||||||
record_id="$(_get_recordset_id "${token}" "${fulldomain}" "${zoneid}")"
|
|
||||||
done
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
################### Private functions below ##################################
|
################### Private functions below ##################################
|
||||||
|
|
||||||
|
|
||||||
|
# _recursive_rm_record
|
||||||
|
# remove all records from the record set
|
||||||
|
#
|
||||||
|
# _token=$1
|
||||||
|
# _domain=$2
|
||||||
|
# _zoneid=$3
|
||||||
|
# _record_id=$4
|
||||||
|
#
|
||||||
|
# Returns 0 on success
|
||||||
|
_recursive_rm_record() {
|
||||||
|
_token=$1
|
||||||
|
_domain=$2
|
||||||
|
_zoneid=$3
|
||||||
|
_record_id=$4
|
||||||
|
|
||||||
|
# Most likely to have problems will huaweicloud side if more than 50 attempts but still cannot fully remove the record set
|
||||||
|
# Maybe can be removed manually in the dashboard
|
||||||
|
_retry_cnt=50
|
||||||
|
|
||||||
|
# Remove all records
|
||||||
|
# Therotically HuaweiCloud does not allow more than one record set
|
||||||
|
# But remove them recurringly to increase robusty
|
||||||
|
|
||||||
|
while [ "${_record_id}" != "0" && "${_retry_cnt}" != "0" ]; do
|
||||||
|
_debug "Removing Record"
|
||||||
|
_retry_cnt=$((${_retry_cnt} - 1))
|
||||||
|
_rm_record "${_token}" "${_zoneid}" "${_record_id}"
|
||||||
|
_record_id="$(_get_recordset_id "${_token}" "${_domain}" "${_zoneid}")"
|
||||||
|
_debug2 "Checking record exists: record_id=${_record_id}"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Check if retry count is reached
|
||||||
|
if [ "${_retry_cnt}" == "0" ]; then
|
||||||
|
_debug "Failed to remove record after 50 attempts, please try removing it manually in the dashboard"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
# _get_zoneid
|
# _get_zoneid
|
||||||
#
|
#
|
||||||
# _token=$1
|
# _token=$1
|
||||||
@ -216,11 +256,11 @@ _add_record() {
|
|||||||
_debug "Record Set ID is:" "${_record_id}"
|
_debug "Record Set ID is:" "${_record_id}"
|
||||||
|
|
||||||
# Remove all records
|
# Remove all records
|
||||||
while [ "${_record_id}" != "0" ]; do
|
_recursive_rm_record "${token}" "${_domain}" "${_zoneid}" "${_record_id}"
|
||||||
_debug "Removing Record"
|
ret="$?"
|
||||||
_rm_record "${_token}" "${zoneid}" "${_record_id}"
|
if [ "${ret}" != "0" ]; then
|
||||||
_record_id="$(_get_recordset_id "${_token}" "${_domain}" "${zoneid}")"
|
return 1
|
||||||
done
|
fi
|
||||||
|
|
||||||
# Add brand new records with all old and new records
|
# Add brand new records with all old and new records
|
||||||
export _H2="Content-Type: application/json"
|
export _H2="Content-Type: application/json"
|
||||||
|
Loading…
Reference in New Issue
Block a user