From de6650874da1470f10d4561fd1e33829eaef3414 Mon Sep 17 00:00:00 2001
From: Jeffrey Zhang <jeffrey.zhang@99cloud.net>
Date: Sat, 19 Mar 2016 00:24:44 +0800
Subject: [PATCH] Start the haproxy by using haproxy-system-wrapper

haproxy-system-wrapper is a solution for systemd from upstream. it can
handle the reload graceful.

Change-Id: I6a3d141af065e429bd1be1b7252f5c6df1fda3bb
Closes-Bug: #1559238
---
 .../roles/haproxy/templates/haproxy.json.j2   |  2 +-
 docker/haproxy/Dockerfile.j2                  |  3 +--
 docker/haproxy/ensure_latest_config.sh        |  4 +++-
 docker/haproxy/extend_start.sh                | 19 -------------------
 4 files changed, 5 insertions(+), 23 deletions(-)
 delete mode 100644 docker/haproxy/extend_start.sh

diff --git a/ansible/roles/haproxy/templates/haproxy.json.j2 b/ansible/roles/haproxy/templates/haproxy.json.j2
index d838dad832..c95dd77031 100644
--- a/ansible/roles/haproxy/templates/haproxy.json.j2
+++ b/ansible/roles/haproxy/templates/haproxy.json.j2
@@ -1,5 +1,5 @@
 {
-    "command": "/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid",
+    "command": "/usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid",
     "config_files": [
         {
             "source": "{{ container_config_directory }}/haproxy.cfg",
diff --git a/docker/haproxy/Dockerfile.j2 b/docker/haproxy/Dockerfile.j2
index e4ee3664df..38f5dc5c14 100644
--- a/docker/haproxy/Dockerfile.j2
+++ b/docker/haproxy/Dockerfile.j2
@@ -14,7 +14,6 @@ RUN apt-get install -y --no-install-recommends haproxy \
 {% endif %}
 
 COPY ensure_latest_config.sh /usr/local/bin/kolla_ensure_haproxy_latest_config
-COPY extend_start.sh /usr/local/bin/kolla_extend_start
-RUN chmod 755 /usr/local/bin/kolla_extend_start /usr/local/bin/kolla_ensure_haproxy_latest_config
+RUN chmod 755 /usr/local/bin/kolla_ensure_haproxy_latest_config
 
 {{ include_footer }}
diff --git a/docker/haproxy/ensure_latest_config.sh b/docker/haproxy/ensure_latest_config.sh
index 9a34f17587..4b84f3aedb 100644
--- a/docker/haproxy/ensure_latest_config.sh
+++ b/docker/haproxy/ensure_latest_config.sh
@@ -1,12 +1,14 @@
 #!/bin/bash
 
+set -o errexit
+
 CURRENT_CONFIG_HASH=$(sha1sum /etc/haproxy/haproxy.cfg | cut -f1 -d' ')
 NEW_CONFIG_HASH=$(sha1sum /var/lib/kolla/config_files/haproxy.cfg | cut -f1 -d' ')
 
 if [[ $CURRENT_CONFIG_HASH != $NEW_CONFIG_HASH ]]; then
     changed=changed
     python /usr/local/bin/kolla_set_configs
-    /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -sf $(cat /run/haproxy.pid)
+    kill -USR2 $(pgrep -f /usr/sbin/haproxy-systemd-wrapper)
 fi
 
 echo $changed
diff --git a/docker/haproxy/extend_start.sh b/docker/haproxy/extend_start.sh
deleted file mode 100644
index e2d13f4840..0000000000
--- a/docker/haproxy/extend_start.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-# We are intentionally not using exec so we can reload the haproxy config later
-echo "Running command: '${CMD}'"
-$CMD
-
-retry=0
-# The loop breaks only when haproxy.pid get missing even after 3 re-try.
-while [[ $retry -lt 3 ]]; do
-    if [[ ! -e /run/haproxy.pid || ! -d /proc/$(cat /run/haproxy.pid) ]]; then
-        retry=$((retry+1))
-        sleep 2
-        continue
-    fi
-    retry=0
-    sleep 5
-done
-
-exit 1