mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-27 16:50:23 +00:00
ci: move kubectl_retry() to utils.sh to be able to import it
Signed-off-by: Rakshith R <rar@redhat.com>
(cherry picked from commit a15892a87a
)
This commit is contained in:
parent
342867a197
commit
6a4194c701
@ -4,8 +4,10 @@ ROOK_VERSION=${ROOK_VERSION:-"v1.6.2"}
|
|||||||
ROOK_DEPLOY_TIMEOUT=${ROOK_DEPLOY_TIMEOUT:-300}
|
ROOK_DEPLOY_TIMEOUT=${ROOK_DEPLOY_TIMEOUT:-300}
|
||||||
ROOK_URL="https://raw.githubusercontent.com/rook/rook/${ROOK_VERSION}/cluster/examples/kubernetes/ceph"
|
ROOK_URL="https://raw.githubusercontent.com/rook/rook/${ROOK_VERSION}/cluster/examples/kubernetes/ceph"
|
||||||
ROOK_BLOCK_POOL_NAME=${ROOK_BLOCK_POOL_NAME:-"newrbdpool"}
|
ROOK_BLOCK_POOL_NAME=${ROOK_BLOCK_POOL_NAME:-"newrbdpool"}
|
||||||
KUBECTL_RETRY=5
|
|
||||||
KUBECTL_RETRY_DELAY=10
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
||||||
|
# shellcheck disable=SC1091
|
||||||
|
[ ! -e "${SCRIPT_DIR}"/utils.sh ] || source "${SCRIPT_DIR}"/utils.sh
|
||||||
|
|
||||||
trap log_errors ERR
|
trap log_errors ERR
|
||||||
|
|
||||||
@ -30,56 +32,6 @@ rook_version() {
|
|||||||
echo "${ROOK_VERSION#v}" | cut -d'.' -f"${1}"
|
echo "${ROOK_VERSION#v}" | cut -d'.' -f"${1}"
|
||||||
}
|
}
|
||||||
|
|
||||||
kubectl_retry() {
|
|
||||||
local retries=0 action="${1}" ret=0 stdout stderr
|
|
||||||
shift
|
|
||||||
|
|
||||||
# temporary files for kubectl output
|
|
||||||
stdout=$(mktemp rook-kubectl-stdout.XXXXXXXX)
|
|
||||||
stderr=$(mktemp rook-kubectl-stderr.XXXXXXXX)
|
|
||||||
|
|
||||||
while ! kubectl "${action}" "${@}" 2>"${stderr}" 1>"${stdout}"
|
|
||||||
do
|
|
||||||
# in case of a failure when running "create", ignore errors with "AlreadyExists"
|
|
||||||
if [ "${action}" == 'create' ]
|
|
||||||
then
|
|
||||||
# count lines in stderr that do not have "AlreadyExists"
|
|
||||||
ret=$(grep -cvw 'AlreadyExists' "${stderr}")
|
|
||||||
if [ "${ret}" -eq 0 ]
|
|
||||||
then
|
|
||||||
# Success! stderr is empty after removing all "AlreadyExists" lines.
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
retries=$((retries+1))
|
|
||||||
if [ ${retries} -eq ${KUBECTL_RETRY} ]
|
|
||||||
then
|
|
||||||
ret=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
|
|
||||||
# log stderr and empty the tmpfile
|
|
||||||
cat "${stderr}" > /dev/stderr
|
|
||||||
true > "${stderr}"
|
|
||||||
echo "kubectl_retry ${*} failed, will retry in ${KUBECTL_RETRY_DELAY} seconds"
|
|
||||||
|
|
||||||
sleep ${KUBECTL_RETRY_DELAY}
|
|
||||||
|
|
||||||
# reset ret so that a next working kubectl does not cause a non-zero
|
|
||||||
# return of the function
|
|
||||||
ret=0
|
|
||||||
done
|
|
||||||
|
|
||||||
# write output so that calling functions can consume it
|
|
||||||
cat "${stdout}" > /dev/stdout
|
|
||||||
cat "${stderr}" > /dev/stderr
|
|
||||||
|
|
||||||
rm -f "${stdout}" "${stderr}"
|
|
||||||
|
|
||||||
return ${ret}
|
|
||||||
}
|
|
||||||
|
|
||||||
function deploy_rook() {
|
function deploy_rook() {
|
||||||
kubectl_retry create -f "${ROOK_URL}/common.yaml"
|
kubectl_retry create -f "${ROOK_URL}/common.yaml"
|
||||||
|
|
||||||
|
54
scripts/utils.sh
Executable file
54
scripts/utils.sh
Executable file
@ -0,0 +1,54 @@
|
|||||||
|
#!/bin/bash -E
|
||||||
|
|
||||||
|
KUBECTL_RETRY=5
|
||||||
|
KUBECTL_RETRY_DELAY=10
|
||||||
|
|
||||||
|
kubectl_retry() {
|
||||||
|
local retries=0 action="${1}" ret=0 stdout stderr
|
||||||
|
shift
|
||||||
|
|
||||||
|
# temporary files for kubectl output
|
||||||
|
stdout=$(mktemp rook-kubectl-stdout.XXXXXXXX)
|
||||||
|
stderr=$(mktemp rook-kubectl-stderr.XXXXXXXX)
|
||||||
|
|
||||||
|
while ! kubectl "${action}" "${@}" 2>"${stderr}" 1>"${stdout}"
|
||||||
|
do
|
||||||
|
# in case of a failure when running "create", ignore errors with "AlreadyExists"
|
||||||
|
if [ "${action}" == 'create' ]
|
||||||
|
then
|
||||||
|
# count lines in stderr that do not have "AlreadyExists"
|
||||||
|
ret=$(grep -cvw 'AlreadyExists' "${stderr}")
|
||||||
|
if [ "${ret}" -eq 0 ]
|
||||||
|
then
|
||||||
|
# Success! stderr is empty after removing all "AlreadyExists" lines.
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
retries=$((retries+1))
|
||||||
|
if [ ${retries} -eq ${KUBECTL_RETRY} ]
|
||||||
|
then
|
||||||
|
ret=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
# log stderr and empty the tmpfile
|
||||||
|
cat "${stderr}" > /dev/stderr
|
||||||
|
true > "${stderr}"
|
||||||
|
echo "kubectl_retry ${*} failed, will retry in ${KUBECTL_RETRY_DELAY} seconds"
|
||||||
|
|
||||||
|
sleep ${KUBECTL_RETRY_DELAY}
|
||||||
|
|
||||||
|
# reset ret so that a next working kubectl does not cause a non-zero
|
||||||
|
# return of the function
|
||||||
|
ret=0
|
||||||
|
done
|
||||||
|
|
||||||
|
# write output so that calling functions can consume it
|
||||||
|
cat "${stdout}" > /dev/stdout
|
||||||
|
cat "${stderr}" > /dev/stderr
|
||||||
|
|
||||||
|
rm -f "${stdout}" "${stderr}"
|
||||||
|
|
||||||
|
return ${ret}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user