aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docker/openvswitch/openvswitch-base/Dockerfile.j24
-rw-r--r--docker/openvswitch/openvswitch-base/ovs_wrapper.sh19
2 files changed, 22 insertions, 1 deletions
diff --git a/docker/openvswitch/openvswitch-base/Dockerfile.j2 b/docker/openvswitch/openvswitch-base/Dockerfile.j2
index 5ae3dc15b..52ee47a44 100644
--- a/docker/openvswitch/openvswitch-base/Dockerfile.j2
+++ b/docker/openvswitch/openvswitch-base/Dockerfile.j2
@@ -33,10 +33,12 @@ LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build
{% endblock %}
COPY extend_start.sh /usr/local/bin/kolla_extend_start
+COPY ovs_wrapper.sh /usr/local/bin/ovs_wrapper
# NOTE(hrw): Upstream moved tcpdump to /usr/bin/ in 4.99 version (used in Debian)
RUN if [ -e /usr/sbin/tcpdump ]; then mv /usr/sbin/tcpdump /usr/bin/tcpdump; fi \
&& touch /usr/local/bin/kolla_openvswitch_extend_start \
- && chmod 644 /usr/local/bin/kolla_extend_start /usr/local/bin/kolla_openvswitch_extend_start
+ && chmod 644 /usr/local/bin/kolla_extend_start /usr/local/bin/kolla_openvswitch_extend_start \
+ && chmod 755 /usr/local/bin/ovs_wrapper
{% block openvswitch_base_footer %}{% endblock %}
diff --git a/docker/openvswitch/openvswitch-base/ovs_wrapper.sh b/docker/openvswitch/openvswitch-base/ovs_wrapper.sh
new file mode 100644
index 000000000..552c496ac
--- /dev/null
+++ b/docker/openvswitch/openvswitch-base/ovs_wrapper.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env bash
+
+catch_term() {
+ ovs-appctl -T1 -t /run/openvswitch/$1.$child.ctl exit
+ exit 0
+}
+
+catch_quit() {
+ ovs-appctl -T1 -t /run/openvswitch/$1.$child.ctl exit
+ exit 0
+}
+
+trap catch_term SIGTERM
+trap catch_quit SIGQUIT
+
+"$@" &
+
+child=$!
+wait "$child"