Skip to content
This repository has been archived by the owner on Jun 20, 2024. It is now read-only.

Commit

Permalink
[proxy] use logs for getting proxy-env and proxy-config
Browse files Browse the repository at this point in the history
It's ugly, but beats arg-parsing, inspecting the container and piecing
the address together from exposed ports.

We could just use the host from DOCKER_HOST, but that will fail in the
case of a host with multiple IPs, where the proxy only listens on one.
  • Loading branch information
paulbellamy committed Jun 10, 2015
1 parent fe6d05f commit f0921ef
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 1 deletion.
2 changes: 1 addition & 1 deletion proxy/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ func (proxy *Proxy) ListenAndServe() error {
listener = tls.NewListener(listener, proxy.TLSConfig.Config)
}

Info.Println("proxy listening")
Info.Println("proxy listening on", proxy.ListenAddr)

return (&http.Server{Handler: proxy}).Serve(listener)
}
13 changes: 13 additions & 0 deletions test/650_proxy_env_test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#! /bin/bash

. ./config.sh

start_suite "Configure the docker daemon for the proxy"

weave_on $HOST1 launch-proxy

CMD="run -e WEAVE_CIDR=10.2.1.4/24 $BASE_IMAGE $CHECK_ETHWE_UP"
assert_raises "eval '$(weave_on $HOST1 proxy-env)' ; docker $CMD"
assert_raises "docker $(weave_on $HOST1 proxy-config) $CMD"

end_suite
24 changes: 24 additions & 0 deletions weave
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ IMAGE_VERSION=${VERSION:-$IMAGE_VERSION}
DOCKERHUB_USER=weaveworks
BASE_EXEC_IMAGE=$DOCKERHUB_USER/weaveexec
EXEC_IMAGE=$BASE_EXEC_IMAGE:$IMAGE_VERSION
PROXY_HOST=${PROXY_HOST:-$(echo "${DOCKER_HOST#tcp://}" | cut -s -d: -f1)}
PROXY_HOST=${PROXY_HOST:-127.0.0.1}

# Define some regular expressions for matching addresses.
# The regexp here is far from precise, but good enough.
Expand All @@ -41,6 +43,8 @@ usage() {
echo "weave hide [<cidr> ...]"
echo "weave ps [<container_id> ...]"
echo "weave status"
echo "weave proxy-env"
echo "weave proxy-config"
echo "weave version"
echo "weave stop"
echo "weave stop-dns"
Expand Down Expand Up @@ -69,6 +73,7 @@ exec_remote() {
-e WEAVE_PORT \
-e WEAVE_CONTAINER_NAME \
-e DOCKER_BRIDGE \
-e PROXY_HOST="$PROXY_HOST" \
$WEAVEEXEC_DOCKER_ARGS $EXEC_IMAGE --local "$@"
}

Expand Down Expand Up @@ -171,6 +176,7 @@ MTU=65535
PORT=${WEAVE_PORT:-6783}
HTTP_PORT=6784
DNS_HTTP_PORT=6785
PROXY_PORT=12375
PROXY_CONTAINER_NAME=weaveproxy


Expand Down Expand Up @@ -805,6 +811,18 @@ proxy_args() {
done
}

proxy_addr() {
if addr=$(docker logs weaveproxy | grep -oE "proxy listening on .*"); then
addr=${addr##* }
host=${addr%:*}
port=${addr#*:}
echo "${1}tcp://${host:-$PROXY_HOST}:${port:-$PROXY_PORT}"
return 0
fi
echo "$PROXY_CONTAINER_NAME container is not present. Have you launched it?" >&2
return 1
}

##########################################################################################

[ $(id -u) = 0 ] || {
Expand Down Expand Up @@ -953,6 +971,12 @@ case "$COMMAND" in
wait_for_log $PROXY_CONTAINER_NAME "proxy listening"
echo $PROXY_CONTAINER
;;
proxy-env)
proxy_addr "export DOCKER_HOST="
;;
proxy-config)
proxy_addr "-H="
;;
connect)
[ $# -gt 0 ] || usage
if [ "$1" == "--replace" ]; then
Expand Down

0 comments on commit f0921ef

Please sign in to comment.