helpers.bash 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. function inst_id2port() {
  2. echo $((41000+${1}-1))
  3. }
  4. function start_consul() {
  5. stop_consul
  6. docker run -d \
  7. --name=pr_consul \
  8. -p 8500:8500 \
  9. -p 8300-8302:8300-8302/tcp \
  10. -p 8300-8302:8300-8302/udp \
  11. -h consul \
  12. progrium/consul -server -bootstrap
  13. sleep 2
  14. }
  15. function stop_consul() {
  16. echo "consul started"
  17. docker stop pr_consul || true
  18. # You cannot destroy a container in Circle CI. So do not attempt destroy in circleci
  19. if [ -z "$CIRCLECI" ]; then
  20. docker rm -f pr_consul || true
  21. fi
  22. }
  23. function start_dnet() {
  24. stop_dnet $1 $2
  25. name="dnet-$1-$2"
  26. if [ -z "$5" ]
  27. then
  28. hport=$((41000+${1}-1))
  29. cport=2385
  30. hopt=""
  31. else
  32. hport=$5
  33. cport=$5
  34. hopt="-H tcp://0.0.0.0:${cport}"
  35. fi
  36. mkdir -p /tmp/dnet/${name}
  37. tomlfile="/tmp/dnet/${name}/libnetwork.toml"
  38. cat > ${tomlfile} <<EOF
  39. title = "LibNetwork Configuration file"
  40. [daemon]
  41. debug = false
  42. defaultnetwork = "${3}"
  43. defaultdriver = "${4}"
  44. labels = ["com.docker.network.driver.overlay.bind_interface=eth0"]
  45. [datastore]
  46. embedded = false
  47. EOF
  48. if [ "${4}" == "overlay" ]
  49. then
  50. bridge_ip=$(docker inspect --format '{{.NetworkSettings.Gateway}}' pr_consul)
  51. cat >> ${tomlfile} <<EOF
  52. [datastore.client]
  53. provider = "consul"
  54. Address = "${bridge_ip}:8500"
  55. EOF
  56. fi
  57. docker run \
  58. -d \
  59. --name=${name} \
  60. --privileged \
  61. -p ${hport}:${cport} \
  62. -v $(pwd)/:/go/src/github.com/docker/libnetwork \
  63. -v /tmp:/tmp \
  64. -w /go/src/github.com/docker/libnetwork \
  65. golang:1.4 ./cmd/dnet/dnet -d -D ${hopt} -c ${tomlfile}
  66. sleep 2
  67. }
  68. function skip_for_circleci() {
  69. if [ -n "$CIRCLECI" ]; then
  70. skip
  71. fi
  72. }
  73. function stop_dnet() {
  74. name="dnet-$1-$2"
  75. rm -rf /tmp/dnet/${name} || true
  76. docker stop ${name} || true
  77. # You cannot destroy a container in Circle CI. So do not attempt destroy in circleci
  78. if [ -z "$CIRCLECI" ]; then
  79. docker rm -f ${name} || true
  80. fi
  81. }
  82. function dnet_cmd() {
  83. hport=$1
  84. shift
  85. ./cmd/dnet/dnet -H tcp://127.0.0.1:${hport} $*
  86. }