[Federation] Unjoin only the joined clusters while bringing down the federation control plane.

A few other minor improvements.
pull/6/head
Madhusudan.C.S 2017-03-09 15:29:34 -08:00
parent c2907e4cdc
commit ed10bb7643
4 changed files with 32 additions and 8 deletions

View File

@ -416,4 +416,10 @@ function cleanup-federation-api-objects {
$host_kubectl delete pods,svc,rc,deployment,secret -lapp=federated-cluster
# Delete all resources in FEDERATION_NAMESPACE.
$host_kubectl delete pvc,pv,pods,svc,rc,deployment,secret --namespace=${FEDERATION_NAMESPACE} --all
$host_kubectl delete ns ${FEDERATION_NAMESPACE}
# Poll until the namespace is completely gone.
while $host_kubectl get namespace ${FEDERATION_NAMESPACE} >/dev/null 2>&1; do
sleep 5
done
}

View File

@ -24,9 +24,27 @@ KUBE_ROOT=$(readlink -m $(dirname "${BASH_SOURCE}")/../../)
# $KUBEDNS_CONFIGMAP_NAME and $KUBEDNS_CONFIGMAP_NAMESPACE.
source "${KUBE_ROOT}/federation/cluster/common.sh"
# federation_clusters returns a list of all the clusters in
# federation, if at all the federation control plane exists
# and there are any clusters registerd.
function federation_clusters() {
if clusters=$("${KUBE_ROOT}/cluster/kubectl.sh" \
--context="${FEDERATION_KUBE_CONTEXT}" \
-o jsonpath --template '{.items[*].metadata.name}' \
get clusters) ; then
echo ${clusters}
return
fi
echo ""
}
# unjoin_clusters unjoins all the clusters from federation.
function unjoin_clusters() {
for context in $(federation_cluster_contexts); do
# Unjoin only those clusters that are registered with the
# given federation. This is slightly different than
# joining clusters where we join all the clusters in the
# current kubeconfig with the "federation" prefix.
for context in $(federation_clusters); do
kube::log::status "Unjoining cluster \"${context}\" from federation \"${FEDERATION_NAME}\""
"${KUBE_ROOT}/federation/develop/kubefed.sh" unjoin \
@ -48,6 +66,7 @@ if cleanup-federation-api-objects; then
# cloud provider cleanups are implemented in the individual test
# `AfterEach` blocks.
# Also, we wait only if the cleanup succeeds.
kube::log::status "Waiting for 2 minutes to allow controllers to clean up federation components..."
sleep 2m
else
echo "Couldn't cleanup federation api objects"

View File

@ -79,6 +79,9 @@ function init() {
local -r kube_registry="${KUBE_REGISTRY:-gcr.io/${project}}"
local -r kube_version="$(get_version)"
kube::log::status "DNS_ZONE_NAME: \"${DNS_ZONE_NAME}\", DNS_PROVIDER: \"${DNS_PROVIDER}\""
kube::log::status "Image: \"${kube_registry}/hyperkube-amd64:${kube_version}\""
"${KUBE_ROOT}/federation/develop/kubefed.sh" init \
"${FEDERATION_NAME}" \
--host-cluster-context="${HOST_CLUSTER_CONTEXT}" \

View File

@ -22,13 +22,9 @@ KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
source "${KUBE_ROOT}/cluster/kube-util.sh"
#A little hack to get the last zone. we always deploy federated cluster to the last zone.
#TODO(colhom): deploy federated control plane to multiple underlying clusters in robust way
lastZone=""
for zone in ${E2E_ZONES};do
lastZone="$zone"
done
: "${FEDERATION_HOST_CLUSTER_ZONE?Must set FEDERATION_HOST_CLUSTER_ZONE env var}"
(
set-federation-zone-vars "$zone"
set-federation-zone-vars "${FEDERATION_HOST_CLUSTER_ZONE}"
"${KUBE_ROOT}/hack/ginkgo-e2e.sh" $@
)