From e965fc1f7990aa52b2733a5b2b717dd1ac81d69c Mon Sep 17 00:00:00 2001 From: Zach Loafman Date: Wed, 24 Dec 2014 07:49:10 -0800 Subject: [PATCH] GKE: Limit liveness.sh to server version >0.7.2 What I really want is https://github.com/GoogleCloudPlatform/kubernetes/issues/2953, but haven't had a chance to code that yet. Maybe it's time. (Then I'd remove the provider-specific test and just say "is it > 0.7.2, or does it claim to be capable of something from the future?" The latter covers the HEAD server case .. though just bumping the server version immediately after release might also accomplish that, too.) --- cluster/kube-env.sh | 20 ++++++++++++++++++++ hack/e2e-suite/liveness.sh | 16 +++++++++++++--- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/cluster/kube-env.sh b/cluster/kube-env.sh index ac9d74ac5fe..3847682b86a 100644 --- a/cluster/kube-env.sh +++ b/cluster/kube-env.sh @@ -30,3 +30,23 @@ if [[ -z "${color_start-}" ]]; then declare -r color_green="${color_start}0;32m" declare -r color_norm="${color_start}0m" fi + +# Returns the server version as MMmmpp, with MM as the major +# component, mm the minor component, and pp as the patch +# revision. e.g. 0.7.1 is echoed as 701, and 1.0.11 would be +# 10011. (This makes for easy integer comparison in bash.) +function kube_server_version() { + local server_version + local major + local minor + local patch + + # This sed expression is the POSIX BRE to match strings like: + # Server Version: &version.Info{Major:"0", Minor:"7+", GitVersion:"v0.7.0-dirty", GitCommit:"ad44234f7152e9c66bc2853575445c7071335e57", GitTreeState:"dirty"} + # and capture the GitVersion portion (which has the patch level) + server_version=$(${KUBECTL} --match-server-version=false version | grep "Server Version:") + read major minor patch < <( + echo ${server_version} | \ + sed "s/.*GitVersion:\"v\([0-9]\{1,\}\)\.\([0-9]\{1,\}\)\.\([0-9]\{1,\}\).*/\1 \2 \3/") + printf "%02d%02d%02d" ${major} ${minor} ${patch} | sed 's/^0*//' +} diff --git a/hack/e2e-suite/liveness.sh b/hack/e2e-suite/liveness.sh index 974002b50d4..32f0913b871 100755 --- a/hack/e2e-suite/liveness.sh +++ b/hack/e2e-suite/liveness.sh @@ -25,10 +25,20 @@ KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../.. source "${KUBE_ROOT}/cluster/kube-env.sh" source "${KUBE_ROOT}/cluster/$KUBERNETES_PROVIDER/util.sh" +liveness_tests="http exec" +if [[ ${KUBERNETES_PROVIDER} == "gke" ]]; then + server_version=$(kube_server_version) + if [[ ${server_version} -le 702 ]]; then + echo "GKE server version <= 0.7.2, limiting test to http (version = ${server_version})" + liveness_tests="http" + fi +fi + function teardown() { echo "Cleaning up test artifacts" - ${KUBECFG} delete pods/liveness-http - ${KUBECFG} delete pods/liveness-exec + for test in ${liveness_tests}; do + ${KUBECFG} delete pods/liveness-${test} + done } function waitForNotPending() { @@ -58,7 +68,7 @@ function waitForNotPending() { trap "teardown" EXIT -for test in http exec; do +for test in ${liveness_tests}; do echo "Liveness test: ${test}" ${KUBECFG} -c ${KUBE_ROOT}/examples/liveness/${test}-liveness.yaml create pods waitForNotPending