summaryrefslogtreecommitdiff
path: root/openstack/etc/systemd/system/openvswitch-wait-for-bind@.service
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2015-02-18 23:15:58 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2015-03-09 11:47:24 +0000
commita405070d275132dc02435dc4d5bffee16f78e702 (patch)
tree8622f19718db6d0f4d01c95f2c5f485f40746d20 /openstack/etc/systemd/system/openvswitch-wait-for-bind@.service
parente18f497f2adfcfd6c53644ffbaf2c8f0e191573e (diff)
downloaddefinitions-a405070d275132dc02435dc4d5bffee16f78e702.tar.gz
Add wait-for-bind script between openvswitch and network-pre
Ordering openvswitch before networkd is not sufficient alone, because openvswitch doesn't wait for all its initial config to complete before reporting that it has finished starting.
Diffstat (limited to 'openstack/etc/systemd/system/openvswitch-wait-for-bind@.service')
-rw-r--r--openstack/etc/systemd/system/openvswitch-wait-for-bind@.service16
1 files changed, 16 insertions, 0 deletions
diff --git a/openstack/etc/systemd/system/openvswitch-wait-for-bind@.service b/openstack/etc/systemd/system/openvswitch-wait-for-bind@.service
new file mode 100644
index 00000000..a736fe3d
--- /dev/null
+++ b/openstack/etc/systemd/system/openvswitch-wait-for-bind@.service
@@ -0,0 +1,16 @@
+# Open vSwitch doesn't wait for all the interfaces to be configured before
+# reporting "started", but we need to start networkd after they have been bound,
+# so this unit waits for the interface to be bound before continuing, and is
+# ordered before network-pre.target, which networkd orders itself after.
+[Unit]
+Description=Wait for Open vSwitch to bind %i
+Requires=openvswitch.service
+After=openvswitch.service
+Before=network-pre.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=true
+ExecStart=/bin/sh -c \
+ 'while ! readlink /sys/class/net/$1/master; do sleep 1; done' \
+ - %I