summaryrefslogtreecommitdiff
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
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.
-rw-r--r--openstack/etc/systemd/system/openvswitch-wait-for-bind@.service16
-rw-r--r--openstack/manifest1
2 files changed, 17 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
diff --git a/openstack/manifest b/openstack/manifest
index 8c7b9915..9229606a 100644
--- a/openstack/manifest
+++ b/openstack/manifest
@@ -141,6 +141,7 @@
0100644 0 0 /etc/systemd/system/openvswitch-setup.service
0100644 0 0 /etc/systemd/system/openvswitch-db-server.service
0100644 0 0 /etc/systemd/system/openvswitch.service
+0100644 0 0 /etc/systemd/system/openvswitch-wait-for-bind@.service
0100755 0 0 /usr/share/openstack/openstack-neutron-network-configuration-for-one-node
0100644 0 0 /etc/systemd/system/openstack-neutron-network-configuration-one-node.service
0100644 0 0 /etc/systemd/system/openvswitch-initialize-db.service