From 99d50e7af90d2e02f6598ae0e3de44da8e3846a7 Mon Sep 17 00:00:00 2001 From: David Hoese <david.hoese@ssec.wisc.edu> Date: Fri, 24 Jul 2020 14:45:23 -0500 Subject: [PATCH] Try some fancier PVC checks --- .gitlab-ci.yml | 2 +- helpers/create_pvc.sh | 35 +++++++++++++++++++++++++++-------- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8e3e702..f954618 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -64,7 +64,7 @@ create geotiff storage: # copy secret kubeconfig to the mounted (pwd) directory - cp $kubekorner_k3s_config . - kubeconfig=$(basename $kubekorner_k3s_config) - - ./helpers/create_pvc.sh "$ns" "production/geotiff-pvc.yaml" "$kubeconfig" + - ./helpers/create_pvc.sh "$ns" "production/geotiff-pvc.yaml" "cspp-geo-geo2grid" "$kubeconfig" # this job doesn't actually need any artifacts from previous jobs dependencies: [] rules: diff --git a/helpers/create_pvc.sh b/helpers/create_pvc.sh index bb61979..20e7dd9 100755 --- a/helpers/create_pvc.sh +++ b/helpers/create_pvc.sh @@ -1,16 +1,23 @@ #!/usr/bin/env bash -if [[ $# -eq 2 ]]; then +fail() { + echo "$@" + exit 3 +} + +if [[ $# -eq 3 ]]; then ns=$1 - pvc=$2 + pvc_file=$2 + pvc_name=$3 EXTRA_ARGS="--namespace $ns" -elif [[ $# -eq 3 ]]; then +elif [[ $# -eq 4 ]]; then ns=$1 - pvc=$2 - kubeconfig=$3 + pvc_file=$2 + pvc_name=$3 + kubeconfig=$4 EXTRA_ARGS="--namespace $ns --kubeconfig $kubeconfig" else - echo "Usage: ./create_pvc.sh <kubernetes namespace> <PVC YAML definition> <kubernetes config file>" + echo "Usage: ./create_pvc.sh <kubernetes namespace> <PVC YAML definition> <PVC name> [<kubernetes config file>]" exit 1 fi @@ -19,11 +26,23 @@ fi # didn't change. Let's make sure it exists on the cluster and if so, don't # try to recreate it. if [[ $CI_PIPELINE_SOURCE == "pipeline" ]]; then - pvc_exists=$(kubectl $EXTRA_ARGS get pvc $pvc -o jsonpath="{.metadata.name}" || echo "") + pvc_exists=$(kubectl $EXTRA_ARGS get pvc $pvc_name -o jsonpath="{.metadata.name}" || echo "") if [[ "$pvc_exists" != "" ]]; then # it exists exit 0 fi fi -kubectl $EXTRA_ARGS replace -f $pvc \ No newline at end of file +pvc_pending=$(kubectl $EXTRA_ARGS get pvc $pvc_name -o jsonpath="{.status.phase}" || echo "") +if [[ $pvc_pending == "" ]]; then + echo "PVC does not exist, creating..." +elif [[ $pvc_pending != "Pending" ]]; then + echo "PVC already exists and is not pending. Manually 'helm uninstall' all bound pods" + exit 2 +else + echo "PVC exists but is pending, deleting..." +# kubectl $EXTRA_ARGS delete $pvc_name || fail "Could not delete existing PVC" +fi + + +kubectl $EXTRA_ARGS replace -f $pvc_file \ No newline at end of file -- GitLab