Merge pull request #8096 from saad-ali/fixTemplateUpDown

Make MIG deletion during GCE kube down blocking, so that subsequent template deletion doesn't fail.
This commit is contained in:
Quinton Hoole 2015-05-12 17:05:13 -07:00
commit de0d59be05

View File

@ -643,16 +643,33 @@ function kube-down {
detect-project detect-project
echo "Bringing down cluster" echo "Bringing down cluster"
set +e # Do not stop on error
gcloud preview managed-instance-groups --zone "${ZONE}" delete \ # The gcloud APIs don't return machine parsable error codes/retry information. Therefore the best we can
# do is parse the output and special case particular responses we are interested in.
deleteCmdOutput=$(gcloud preview managed-instance-groups --zone "${ZONE}" delete \
--project "${PROJECT}" \ --project "${PROJECT}" \
--quiet \ --quiet \
"${NODE_INSTANCE_PREFIX}-group" || true "${NODE_INSTANCE_PREFIX}-group")
if [[ "$deleteCmdOutput" != "" ]]; then
# Managed instance group deletion is done asyncronously, we must wait for it to complete, or subsequent steps fail
deleteCmdOperationId=$(echo $deleteCmdOutput | grep "Operation:" | sed "s/.*Operation:\s//" | sed "s/\s.*//" | sed "s/ //g")
if [[ "$deleteCmdOperationId" != "" ]]; then
deleteCmdStatus="PENDING"
while [[ "$deleteCmdStatus" != "DONE" ]]
do
sleep 5
deleteCmdOperationOutput=$(gcloud preview managed-instance-groups --zone "${ZONE}" get-operation $deleteCmdOperationId)
deleteCmdStatus=$(echo $deleteCmdOperationOutput | grep -i "status:" | sed "s/.*status:\s//" | sed "s/\s.*//" | sed "s/ //g")
echo "Waiting for MIG deletion to complete. Current status: " $deleteCmdStatus
done
fi
fi
gcloud compute instance-templates delete \ gcloud compute instance-templates delete \
--project "${PROJECT}" \ --project "${PROJECT}" \
--quiet \ --quiet \
"${NODE_INSTANCE_PREFIX}-template" || true "${NODE_INSTANCE_PREFIX}-template"
# First delete the master (if it exists). # First delete the master (if it exists).
gcloud compute instances delete \ gcloud compute instances delete \
@ -660,14 +677,14 @@ function kube-down {
--quiet \ --quiet \
--delete-disks all \ --delete-disks all \
--zone "${ZONE}" \ --zone "${ZONE}" \
"${MASTER_NAME}" || true "${MASTER_NAME}"
# Delete the master pd (possibly leaked by kube-up if master create failed) # Delete the master pd (possibly leaked by kube-up if master create failed)
gcloud compute disks delete \ gcloud compute disks delete \
--project "${PROJECT}" \ --project "${PROJECT}" \
--quiet \ --quiet \
--zone "${ZONE}" \ --zone "${ZONE}" \
"${MASTER_NAME}"-pd || true "${MASTER_NAME}"-pd
# Find out what minions are running. # Find out what minions are running.
local -a minions local -a minions
@ -683,7 +700,7 @@ function kube-down {
--quiet \ --quiet \
--delete-disks boot \ --delete-disks boot \
--zone "${ZONE}" \ --zone "${ZONE}" \
"${minions[@]::10}" || true "${minions[@]::10}"
minions=( "${minions[@]:10}" ) minions=( "${minions[@]:10}" )
done done
@ -691,13 +708,13 @@ function kube-down {
gcloud compute firewall-rules delete \ gcloud compute firewall-rules delete \
--project "${PROJECT}" \ --project "${PROJECT}" \
--quiet \ --quiet \
"${MASTER_NAME}-https" || true "${MASTER_NAME}-https"
# Delete firewall rule for minions. # Delete firewall rule for minions.
gcloud compute firewall-rules delete \ gcloud compute firewall-rules delete \
--project "${PROJECT}" \ --project "${PROJECT}" \
--quiet \ --quiet \
"${MINION_TAG}-all" || true "${MINION_TAG}-all"
# Delete routes. # Delete routes.
local -a routes local -a routes
@ -709,7 +726,7 @@ function kube-down {
gcloud compute routes delete \ gcloud compute routes delete \
--project "${PROJECT}" \ --project "${PROJECT}" \
--quiet \ --quiet \
"${routes[@]::10}" || true "${routes[@]::10}"
routes=( "${routes[@]:10}" ) routes=( "${routes[@]:10}" )
done done
@ -719,10 +736,11 @@ function kube-down {
--project "${PROJECT}" \ --project "${PROJECT}" \
--region "${REGION}" \ --region "${REGION}" \
--quiet \ --quiet \
"${MASTER_NAME}-ip" || true "${MASTER_NAME}-ip"
export CONTEXT="${PROJECT}_${INSTANCE_PREFIX}" export CONTEXT="${PROJECT}_${INSTANCE_PREFIX}"
clear-kubeconfig clear-kubeconfig
set -e
} }
# Update a kubernetes cluster with latest source # Update a kubernetes cluster with latest source