From 6276052cc8a6e05a66e6d3c519eff781b99f4ae1 Mon Sep 17 00:00:00 2001 From: Hari Sekhon Date: Mon, 23 Oct 2017 10:31:01 +0200 Subject: [PATCH 1/6] abstracted out docker_compose_path_version() --- docker.sh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docker.sh b/docker.sh index ccd396c5..ceddcba2 100755 --- a/docker.sh +++ b/docker.sh @@ -90,6 +90,29 @@ declare_if_inside_docker(){ fi } +docker_compose_path_version(){ + local path="$1" + local dir_base="$2" + if [ -z "${DOCKER_SERVICE:-}" ]; then + echo "Error: \$DOCKER_SERVICE has not been set in environment yet, was check_docker_available() called first?" + exit 1 + fi + set +e + local version="$(docker-compose exec "$DOCKER_SERVICE" ls "$path" -1 --color=no | + grep --color=no -- "$dir_base" | + tr -d '\r' | + tee /dev/stderr | + tail -n 1 | + sed "s/$dir_base//" + )" + set -e + if [ -z "$version" ]; then + echo "Error: failed to find docker compose path version from path $path for $dir_base!" + exit 1 + fi + echo "$version" +} + docker_compose_port(){ local env_var="${1:-}" local name="${2:-}" From 5de5542d7ba27fae102acd00558cc263009dd020 Mon Sep 17 00:00:00 2001 From: Hari Sekhon Date: Mon, 23 Oct 2017 10:44:52 +0200 Subject: [PATCH 2/6] abstracted out docker_compose_version_test() --- docker.sh | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/docker.sh b/docker.sh index ceddcba2..d912498b 100755 --- a/docker.sh +++ b/docker.sh @@ -113,6 +113,34 @@ docker_compose_path_version(){ echo "$version" } +docker_compose_version_test(){ + local name="${1:-}" + local version="${2:-}" + if [ -z "$name" ]; then + "ERROR: missing first arg for name to docker_compose_version_test()" + exit 1 + fi + if [ -z "$version" ]; then + "ERROR: missing second arg for version to docker_compose_version_test()" + exit 1 + fi + if [ "$version" = "latest" ]; then + echo "latest version, fetching latest version from DockerHub master branch" + local version="$(dockerhub_latest_version "$name")" + echo "expecting version '$version'" + fi + hr + found_version="$(docker_compose_path_version / "$name"-)" + echo "found $name version $found_version" + hr + if [[ "$found_version" =~ $version* ]]; then + echo "$name docker version matches expected (found '$found_version', expected '$version')" + else + echo "Docker container version does not match expected version! (found '$found_version', expected '$version')" + exit 1 + fi +} + docker_compose_port(){ local env_var="${1:-}" local name="${2:-}" From 44e71ee5a96a54cfd5a197d49d7f6a93fe3633dd Mon Sep 17 00:00:00 2001 From: Hari Sekhon Date: Mon, 23 Oct 2017 10:49:00 +0200 Subject: [PATCH 3/6] improved awk regex to extract h2o version --- docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker.sh b/docker.sh index d912498b..4d2401e1 100755 --- a/docker.sh +++ b/docker.sh @@ -191,7 +191,7 @@ dockerhub_latest_version(){ echo "Error: no repo passed to dockerhub_latest_version for first arg" fi set +e - local version="$(curl -s "https://raw.githubusercontent.com/HariSekhon/Dockerfiles/master/$repo/Dockerfile" | awk -F= '/^ARG[[:space:]]+[A-Za-z_]+_VERSION=/ {print $2; exit}')" + local version="$(curl -s "https://raw.githubusercontent.com/HariSekhon/Dockerfiles/master/$repo/Dockerfile" | awk -F= '/^ARG[[:space:]]+[A-Za-z0-9_]+_VERSION=/ {print $2; exit}')" set -e if [ -z "$version" ]; then version='.*' From b08801fb42332e04067dc503d4ae5e3de9bf66f8 Mon Sep 17 00:00:00 2001 From: Hari Sekhon Date: Tue, 24 Oct 2017 17:48:55 +0200 Subject: [PATCH 4/6] added negate support to retry --- utils.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/utils.sh b/utils.sh index ff26b875..c79aec01 100755 --- a/utils.sh +++ b/utils.sh @@ -575,6 +575,11 @@ retry(){ else sleep_secs=1 fi + local negate="" + if [ "$1" == '!' ]; then + negate=1 + shift + fi local cmd="${@:-}" if [ -z "$cmd" ]; then echo "ERROR: no command passed to retry() for \$3" @@ -586,8 +591,11 @@ retry(){ while true; do let try_number+=1 echo -n "try $try_number: " - if $cmd; then - timestamp "Succeeded after $SECONDS secs" + if [ -n "$negate" ] && ! $cmd; then + timestamp "Command failed after $SECONDS secs" + break + elif $cmd; then + timestamp "Command succeeded after $SECONDS secs" break fi if [ $SECONDS -gt $max_secs ]; then From 343188981832e3d60063d78abe6b7efa6ee68f10 Mon Sep 17 00:00:00 2001 From: Hari Sekhon Date: Tue, 24 Oct 2017 18:35:21 +0200 Subject: [PATCH 5/6] update utils.sh --- utils.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/utils.sh b/utils.sh index c79aec01..a1ec98af 100755 --- a/utils.sh +++ b/utils.sh @@ -591,9 +591,11 @@ retry(){ while true; do let try_number+=1 echo -n "try $try_number: " - if [ -n "$negate" ] && ! $cmd; then - timestamp "Command failed after $SECONDS secs" - break + if [ -n "$negate" ]; then + if ! $cmd; then + timestamp "Command failed after $SECONDS secs" + break + fi elif $cmd; then timestamp "Command succeeded after $SECONDS secs" break From 5a5483d6338ffaebd121614ddbbc76f7154ea04f Mon Sep 17 00:00:00 2001 From: Hari Sekhon Date: Fri, 27 Oct 2017 16:42:19 +0200 Subject: [PATCH 6/6] update utils.sh --- utils.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils.sh b/utils.sh index a1ec98af..47e268bf 100755 --- a/utils.sh +++ b/utils.sh @@ -244,7 +244,7 @@ print_debug_env(){ #eval echo "export ${name}_PORT=$`echo ${name}_PORT`" # instead of just name_PORT, find all PORTS in environment and print them # while read line to preserve CASSANDRA_PORTS=7199 9042 - env | egrep "^$name.*_" | grep -v -e 'DEFAULT$' -e 'VERSIONS$' | sort | while read env_var; do + env | egrep "^$name.*_" | grep -v -e 'DEFAULT=' -e 'VERSIONS=' | sort | while read env_var; do # sed here to quote export CASSANDRA_PORTS=7199 9042 => export CASSANDRA_PORTS="7199 9042" eval echo "'export $env_var'" | sed 's/=/="/;s/$/"/' done