From: garciadeblas Date: Tue, 10 Sep 2024 16:10:53 +0000 (+0200) Subject: Add monitor loop for Gitea API operations X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=de0c2886d05d8a9b6b390a95e5d85aa9ed44d1ba;p=osm%2Fdevops.git Add monitor loop for Gitea API operations Change-Id: I76b2a3f6928e7cf64933e52d9fda34a978e1121b Signed-off-by: garciadeblas --- diff --git a/installers/mgmt-cluster/gitea/admin/api.sh b/installers/mgmt-cluster/gitea/admin/api.sh index 753e6b23..2c635cc8 100755 --- a/installers/mgmt-cluster/gitea/admin/api.sh +++ b/installers/mgmt-cluster/gitea/admin/api.sh @@ -23,6 +23,7 @@ set -ex HERE=$(dirname "$(readlink --canonicalize "$BASH_SOURCE")") . "$HERE/../library/functions.sh" . "$HERE/../library/trap.sh" +. "$HERE/../library/helpers.sh" SERVER_URL=$1 TOKEN=$2 @@ -30,20 +31,30 @@ VERB=$3 URI=$4 DATA=$5 -if [ -z "$DATA" ]; then - kubectl exec statefulset/gitea --container=gitea --namespace=gitea --quiet -- \ - curl --silent --fail \ - "${SERVER_URL}/api/v1/${URI}" \ - --request "${VERB}" \ - --header "Authorization: token ${TOKEN}" \ - --header 'Accept: application/json' -else - kubectl exec statefulset/gitea --container=gitea --namespace=gitea --quiet -- \ - curl --silent --fail \ - --request "$VERB" \ - "${SERVER_URL}/api/v1/${URI}" \ - --header "Authorization: token ${TOKEN}" \ - --header 'Accept: application/json' \ - --header 'Content-Type: application/json' \ - --data "${DATA}" +function gitea_api_operation() { + if [ -z "$DATA" ]; then + kubectl exec statefulset/gitea --container=gitea --namespace=gitea --quiet -- \ + curl --silent --fail \ + "${SERVER_URL}/api/v1/${URI}" \ + --request "${VERB}" \ + --header "Authorization: token ${TOKEN}" \ + --header 'Accept: application/json' + else + kubectl exec statefulset/gitea --container=gitea --namespace=gitea --quiet -- \ + curl --silent --fail \ + --request "$VERB" \ + "${SERVER_URL}/api/v1/${URI}" \ + --header "Authorization: token ${TOKEN}" \ + --header 'Accept: application/json' \ + --header 'Content-Type: application/json' \ + --data "${DATA}" + fi +} + +monitor_condition gitea_api_operation "Gitea API operation did not succeed yet...\n" 120 5 +RET=$? +if [[ $RET -ne 0 ]] +then + echo -e "\nFATAL: Gitea API operation did not succeed after several retries. ABORTED.\n" + exit $RET fi diff --git a/installers/mgmt-cluster/gitea/library/helpers.sh b/installers/mgmt-cluster/gitea/library/helpers.sh new file mode 100755 index 00000000..b61ec650 --- /dev/null +++ b/installers/mgmt-cluster/gitea/library/helpers.sh @@ -0,0 +1,40 @@ +####################################################################################### +# Copyright ETSI Contributors and Others. +# +# 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. +####################################################################################### + + +# Helper function to monitor progress of a condition +function monitor_condition() { + local CONDITION="$1" # Function with the condition + local MESSAGE="${2:-}" # Message during each check + local TIMEOUT="${3:-300}" # Timeout, in seconds (default: 5 minutes) + local STEP="${4:-2}" # Polling period (default: 2 seconds) + + "${CONDITION}" + RET=$? + until [ ${RET} -eq 0 ] || [ ${TIMEOUT} -le 0 ] + do + echo -en "${MESSAGE}" + + ((TIMEOUT-=${STEP})) + sleep "${STEP}" + + "${CONDITION}" + RET=$? + done + + return ${RET} +}