|
@@ -98,19 +98,59 @@ dns_huaweicloud_rm() {
|
|
|
fi
|
|
|
_debug "Zone ID is:" "${zoneid}"
|
|
|
|
|
|
+ _recursive_rm_record "${token}" "${fulldomain}" "${zoneid}" "${record_id}"
|
|
|
+ ret="$?"
|
|
|
+ if [ "${ret}" != "0" ]; then
|
|
|
+ _err "dns_api(dns_huaweicloud): Error removing record."
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
+
|
|
|
+ return 0
|
|
|
+}
|
|
|
+
|
|
|
+################### 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" ]; do
|
|
|
+
|
|
|
+ while [ "${_record_id}" != "0" && "${_retry_cnt}" != "0" ]; do
|
|
|
_debug "Removing Record"
|
|
|
- _rm_record "${token}" "${zoneid}" "${record_id}"
|
|
|
- record_id="$(_get_recordset_id "${token}" "${fulldomain}" "${zoneid}")"
|
|
|
+ _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
|
|
|
}
|
|
|
|
|
|
-################### Private functions below ##################################
|
|
|
-
|
|
|
# _get_zoneid
|
|
|
#
|
|
|
# _token=$1
|
|
@@ -216,11 +256,11 @@ _add_record() {
|
|
|
_debug "Record Set ID is:" "${_record_id}"
|
|
|
|
|
|
# Remove all records
|
|
|
- while [ "${_record_id}" != "0" ]; do
|
|
|
- _debug "Removing Record"
|
|
|
- _rm_record "${_token}" "${zoneid}" "${_record_id}"
|
|
|
- _record_id="$(_get_recordset_id "${_token}" "${_domain}" "${zoneid}")"
|
|
|
- done
|
|
|
+ _recursive_rm_record "${token}" "${_domain}" "${_zoneid}" "${_record_id}"
|
|
|
+ ret="$?"
|
|
|
+ if [ "${ret}" != "0" ]; then
|
|
|
+ return 1
|
|
|
+ fi
|
|
|
|
|
|
# Add brand new records with all old and new records
|
|
|
export _H2="Content-Type: application/json"
|