From bf1395f06adc7dc6c0f017332383b541942d204f Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Mon, 1 Dec 2014 20:54:02 -0800 Subject: [PATCH 1/2] use a here-doc instead of kubecfg run --- hack/e2e-suite/services.sh | 54 +++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/hack/e2e-suite/services.sh b/hack/e2e-suite/services.sh index 3935269092..eb8e5f0899 100755 --- a/hack/e2e-suite/services.sh +++ b/hack/e2e-suite/services.sh @@ -48,7 +48,59 @@ function do_teardown() { function start_service() { echo "Starting service '$1' on port $2 with $3 replicas" svcs_to_clean+=("$1") - ${KUBECFG} -s "$2" -p 9376 run kubernetes/serve_hostname "$3" "$1" + ${KUBECTL} create -f - << __EOF__ + { + "kind": "ReplicationController", + "apiVersion": "v1beta1", + "id": "$1", + "namespace": "default", + "desiredState": { + "replicas": $3, + "replicaSelector": { + "name": "$1" + }, + "podTemplate": { + "desiredState": { + "manifest": { + "version": "v1beta2", + "containers": [ + { + "name": "$1", + "image": "kubernetes/serve_hostname", + "ports": [ + { + "containerPort": 9376, + "protocol": "TCP" + } + ], + } + ], + } + }, + "labels": { + "name": "$1" + } + } + } + } +__EOF__ + ${KUBECTL} create -f - << __EOF__ + { + "kind": "Service", + "apiVersion": "v1beta1", + "id": "$1", + "namespace": "default", + "port": $2, + "protocol": "TCP", + "labels": { + "name": "$1" + }, + "selector": { + "name": "$1" + }, + "containerPort": 9376, + } +__EOF__ } # Args: From 2486331d341a47dd3b0707406e3add3e06144095 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Mon, 1 Dec 2014 21:55:21 -0800 Subject: [PATCH 2/2] Add an e2e case for public IPs --- hack/e2e-suite/services.sh | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/hack/e2e-suite/services.sh b/hack/e2e-suite/services.sh index eb8e5f0899..96bd1e17de 100755 --- a/hack/e2e-suite/services.sh +++ b/hack/e2e-suite/services.sh @@ -33,6 +33,20 @@ function sort_args() { printf "%s\n" "$@" | sort -n | tr '\n\r' ' ' | sed 's/ */ /g' } +# Join args $2... with $1 between them. +# Example: join ", " x y z => x, y, z +function join() { + local sep item + sep=$1 + shift + echo -n "${1:-}" + shift + for item; do + echo -n "${sep}${item}" + done + echo +} + svcs_to_clean=() function do_teardown() { local svc @@ -45,6 +59,7 @@ function do_teardown() { # $1: service name # $2: service port # $3: service replica count +# $4: public IPs (optional, string e.g. "1.2.3.4 5.6.7.8") function start_service() { echo "Starting service '$1' on port $2 with $3 replicas" svcs_to_clean+=("$1") @@ -84,6 +99,12 @@ function start_service() { } } __EOF__ + # Convert '1.2.3.4 5.6.7.8' => '"1.2.3.4", "5.6.7.8"' + local ip ips_array=() public_ips + for ip in ${4:-}; do + ips_array+=("\"${ip}\"") + done + public_ips=$(join ", " "${ips_array[@]:+${ips_array[@]}}") ${KUBECTL} create -f - << __EOF__ { "kind": "Service", @@ -99,6 +120,7 @@ __EOF__ "name": "$1" }, "containerPort": 9376, + "publicIPs": [ ${public_ips} ] } __EOF__ } @@ -249,7 +271,8 @@ master="${MASTER_NAME}" svc1_name="service1" svc1_port=80 svc1_count=3 -start_service "${svc1_name}" "${svc1_port}" "${svc1_count}" +svc1_publics="192.168.1.1 192.168.1.2" +start_service "${svc1_name}" "${svc1_port}" "${svc1_count}" "${svc1_publics}" svc2_name="service2" svc2_port=80 @@ -279,11 +302,19 @@ fi echo "Verifying the portals from the host" wait_for_service_up "${svc1_name}" "${svc1_ip}" "${svc1_port}" \ "${svc1_count}" "${svc1_pods}" +for ip in ${svc1_publics}; do + wait_for_service_up "${svc1_name}" "${ip}" "${svc1_port}" \ + "${svc1_count}" "${svc1_pods}" +done wait_for_service_up "${svc2_name}" "${svc2_ip}" "${svc2_port}" \ "${svc2_count}" "${svc2_pods}" echo "Verifying the portals from a container" verify_from_container "${svc1_name}" "${svc1_ip}" "${svc1_port}" \ "${svc1_count}" "${svc1_pods}" +for ip in ${svc1_publics}; do + verify_from_container "${svc1_name}" "${ip}" "${svc1_port}" \ + "${svc1_count}" "${svc1_pods}" +done verify_from_container "${svc2_name}" "${svc2_ip}" "${svc2_port}" \ "${svc2_count}" "${svc2_pods}"