rhel: Add OVSREQUIRES to automatically bring up OpenFlow interface dependencies
authorThomas Graf <tgraf@redhat.com>
Fri, 25 Jan 2013 16:31:56 +0000 (17:31 +0100)
committerBen Pfaff <blp@nicira.com>
Fri, 25 Jan 2013 18:34:11 +0000 (10:34 -0800)
The use of OpenFlow controllers may require for a subset of
the network (typically the management network intrerface) to be
brought up before the openvswitch service is started.

The newly introduced key "OVSREQUIRES" allows to specify a
list of interfaces that need the be brought up before the
openvswitch service is autostarted. It is also possible to
build a chain of bridge dependencies.

TYPE=OVSBridge
OVSREQURIES="em1"
[...]

A special UPPEDSTACK var that is passed along avoids getting
lost in dependency loops.

Signed-off-by: Thomas Graf <tgraf@redhat.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
rhel/etc_sysconfig_network-scripts_ifup-ovs

index efafead..3538721 100755 (executable)
@@ -34,6 +34,25 @@ if [ ! -x ${OTHERSCRIPT} ]; then
        OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-eth"
 fi
 
+check_recursion()
+{
+       [ -n "${UPPEDSTACK}" ] && for _r in ${UPPEDSTACK}; do
+               [ "$_r" = "$1" ] && return 1
+       done
+
+       return 0
+}
+
+if [ -z "${UPPEDSTACK}" ]; then
+       UPPEDSTACK="${DEVICE}"
+fi
+
+[ -n "${OVSREQUIRES}" ] && for _i in ${OVSREQUIRES}; do
+       if ( check_recursion "$_i" ); then
+               UPPEDSTACK="${UPPEDSTACK} $_i" /sbin/ifup "$_i"
+       fi
+done
+
 [ -f /var/lock/subsys/openvswitch ] || /sbin/service openvswitch start
 
 case "$TYPE" in