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.)
This commit is contained in:
Zach Loafman 2014-12-24 07:49:10 -08:00
parent 4e417b98b5
commit e965fc1f79
2 changed files with 33 additions and 3 deletions

View File

@ -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*//'
}

View File

@ -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