In Debian yes, at least until they move to systemd.
In Ubuntu /etc/init.d/openvswitch-switch will be called too late, the db and 
switch need to be brought up right after dbus starts or you will go into 
failsafe, this needs to be done for clients that will have /home mounted via 
nfs or iSCSI.
> Date: Mon, 7 May 2012 12:38:43 -0700> Subject: Re: [ovs-dev] [PATCH] debian: 
> Add network integration scripts.
> From: gshe...@nicira.com
> To: gdahl...@hotmail.com
> CC: b...@nicira.com; d...@openvswitch.com
> 
> Hello Greg,
> On Mon, May 7, 2012 at 11:10 AM, Greg Dahlman <gdahl...@hotmail.com> wrote:
> >
> >
> > I am very sorry I was  not signed up on the dev mailing-list, just 
> > following it from the archives so I couldn't reply to the previous email
> > I was referencing the patch I attached at the end of this email.  There was 
> > an on list discussion about how it was not working on Ubuntu,   if you 
> > replace the allow-ovs stanza with auto it will work fine, I think that this 
> > is an issue with ubuntu's customization to network-manager, it will ignore 
> > interfaces that are defined as auto.
> >  > What is "the failsafe boot delay"?
> >>
> >> > Upstart wants to know the pid of the daemons so running ovs-ctl will
> >> > be a challenge without getting deep into the code.
> >>
> >> The pids are available in the .pid files.diff --git a/debian/ifupdown.sh 
> >> b/debian/ifupdown.sh
> >
> > The limitation is upstart, it can only track one or two additional forks 
> > deep and it wants to own the pid tracking.
> > If you have your hosts interface on a ovs interface the init script will 
> > not start soon enough, in the script /etc/init/failsafe.conf  they call 
> > /bin/plymouth --ping.  If that fails they call sleep for about  120 
> > seconds, by using upstart and bringing ovs up earlier it prevents this.
> > legacy init scripts are called after "(filesystem and static-network-up) or 
> > failsafe-boot"  so the /bin/plymouth --ping command in failsafe-boot will 
> > always fail.
> 
> Currently, the openvswitch startup script is
> /etc/init.d/openvswitch-switch. My idea was to add a hook in this
> script that will grep for "allow-ovs" in /etc/network/interfaces and
> do a "ifup --allow=ovs ${list of ovs bridges}". Wouldn't this solves
> the issue you are trying to fix?
> 
> 
> >
> > new file mode 100755
> > index 0000000..ea36a0d
> > --- /dev/null
> > +++ b/debian/ifupdown.sh
> > @@ -0,0 +1,87 @@
> > +#! /bin/sh
> > +# Copyright (c) 2012 Nicira, Inc.
> > +#
> > +# Licensed under the Apache License, Version 2.0 (the "License");
> > +# you may not use this file except in compliance with the License.
> > +# You may obtain a copy of the License at:
> > +#
> > +# http://www.apache.org/licenses/LICENSE-2.0
> > +#
> > +# Unless required by applicable law or agreed to in writing, software
> > +# distributed under the License is distributed on an "AS IS" BASIS,
> > +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> > +# See the License for the specific language governing permissions and
> > +# limitations under the License.
> > +
> > +# Have a look at /usr/share/doc/openvswitch-switch/README.Debian
> > +# for more information about configuring the /etc/network/interfaces.
> > +
> > +if [ -z "${IF_OVS_TYPE}" ]; then
> > + exit 0
> > +fi
> > +
> > +ovs_vsctl() {
> > + ovs-vsctl --no-wait --timeout=5 "$@"
> > +}
> > +
> > +if (ovs_vsctl --version) > /dev/null 2>&1; then :; else
> > + exit 0
> > +fi
> > +
> > +if [ "${MODE}" = "start" ]; then
> > + eval OVS_EXTRA=\"${IF_OVS_EXTRA}\"
> > +
> > + case "${IF_OVS_TYPE}" in
> > + OVSBridge)
> > + ovs_vsctl -- --may-exist add-br "${IFACE}" ${IF_OVS_OPTIONS}\
> > + ${OVS_EXTRA+-- $OVS_EXTRA}
> > +
> > + if [ ! -z "${IF_OVS_PORTS}" ]; then
> > + ifup --allow="${IFACE}" ${IF_OVS_PORTS}
> > + fi
> > + ;;
> > + OVSPort)
> > + ovs_vsctl -- --may-exist add-port "${IF_OVS_BRIDGE}"\
> > + "${IFACE}" ${IF_OVS_OPTIONS} \
> > + ${OVS_EXTRA+-- $OVS_EXTRA}
> > +
> > + ifconfig "${IFACE}" up
> > + ;;
> > + OVSIntPort)
> > + ovs_vsctl -- --may-exist add-port "${IF_OVS_BRIDGE}"\
> > + "${IFACE}" ${IF_OVS_OPTIONS} -- set Interface "${IFACE}"\
> > + type=internal ${OVS_EXTRA+-- $OVS_EXTRA}
> > +
> > + ifconfig "${IFACE}" up
> > + ;;
> > + OVSBond)
> > + ovs_vsctl -- --fake-iface add-bond "${IF_OVS_BRIDGE}"\
> > + "${IFACE}" ${IF_OVS_BONDS} ${IF_OVS_OPTIONS} \
> > + ${OVS_EXTRA+-- $OVS_EXTRA}
> > +
> > + ifconfig "${IFACE}" up
> > + ;;
> > + *)
> > + exit 0
> > + ;;
> > + esac
> > +elif [ "${MODE}" = "stop" ]; then
> > + case "${IF_OVS_TYPE}" in
> > + OVSBridge)
> > + if [ ! -z "${IF_OVS_PORTS}" ]; then
> > + ifdown --allow="${IFACE}" ${IF_OVS_PORTS}
> > + fi
> > +
> > + ovs_vsctl -- --if-exists del-br "${IFACE}"
> > + ;;
> > + OVSPort|OVSIntPort|OVSBond)
> > + ovs_vsctl -- --if-exists del-port "${IF_OVS_BRIDGE}" "${IFACE}"
> > + ;;
> > + *)
> > + exit 0
> > + ;;
> > + esac
> > +fi
> > +
> > +exit 0
> > diff --git a/debian/openvswitch-switch.README.Debian 
> > b/debian/openvswitch-switch.README.Debian
> > index ef92d3e..8580451 100644
> > --- a/debian/openvswitch-switch.README.Debian
> > +++ b/debian/openvswitch-switch.README.Debian
> > @@ -14,3 +14,120 @@ README.Debian for openvswitch-switch
> > switch implementation.
> >
> > -- Ben Pfaff , Mon, 30 Aug 2010 09:51:19 -0700
> > +
> > +Debian network scripts integration
> > +----------------------------------
> > +This package lets a user to optionally configure Open vSwitch bridges
> > +and ports from /etc/network/interfaces. Please refer to the interfaces(5)
> > +manpage for more details regarding /etc/network/interfaces.
> > +
> > +The stanzas that configure the OVS bridges should begin with "allow-ovs"
> > +followed by name of the bridge. Here is an example.
> > +allow-ovs br0
> > +
> > +The stanzas that configure the OVS ports should begin with
> > +"allow-${bridge-name}" followed by name of the port. Here is an example.
> > +allow-br0 eth0
> > +
> > +The following OVS specific "command" options are supported:
> > +
> > + - ovs_type: This can either be OVSBridge, OVSPort, OVSIntPort or OVSBond
> > + depending on whether you configure a bridge, port, an internal port or
> > + a bond. This is a required option.
> > +
> > + - ovs_ports: This option specifies all the ports that belong to a bridge.
> > +
> > + - ovs_bridge: This options specifies a bridge to which a port belongs.
> > + This is a required option for a port.
> > +
> > + - ovs_bonds: This option specifies the list of physical interfaces to be
> > + bonded together.
> > +
> > + - ovs_options: This option lets you add extra arguments to a ovs-vsctl
> > + command. See examples.
> > +
> > + - ovs_extra: This option lets you run additional ovs-vsctl commands,
> > + separated by "--" (double dash). Variables can be part of the "ovs_extra"
> > + option. You can provide all the standard environmental variables
> > + described in the interfaces(5) man page. You can also pass shell
> > + commands.
> > +
> > +More implementation specific details can be seen in the examples.
> > +
> > +Examples:
> > +--------
> > +ex 1: A standalone bridge.
> > +
> > +allow-ovs br0
> > +iface br0 inet static
> > + address 192.168.1.1
> > + netmask 255.255.255.0
> > + ovs_type OVSBridge
> > +
> > +ex 2: A bridge with one port.
> > +
> > +allow-ovs br0
> > +iface br0 inet dhcp
> > + ovs_type OVSBridge
> > + ovs_ports eth0
> > +
> > +allow-br0 eth0
> > +iface eth0 inet manual
> > + ovs_bridge br0
> > + ovs_type OVSPort
> > +
> > +ex 3: A bridge with multiple physical ports.
> > +
> > +allow-ovs br0
> > +iface br0 inet dhcp
> > + ovs_type OVSBridge
> > + ovs_ports eth0 eth1
> > +
> > +allow-br0 eth0
> > +iface eth0 inet manual
> > + ovs_bridge br0
> > + ovs_type OVSPort
> > +
> > +allow-br0 eth1
> > +iface eth1 inet manual
> > + ovs_bridge br0
> > + ovs_type OVSPort
> > +
> > +ex 4: A bridge with an OVS internal port.
> > +
> > +allow-ovs br1
> > +iface br1 inet static
> > + address 192.168.1.1
> > + netmask 255.255.255.0
> > + ovs_type OVSBridge
> > + ovs_ports vlan100
> > +
> > +allow-br1 vlan100
> > +iface vlan100 inet manual
> > + ovs_bridge br1
> > + ovs_type OVSIntPort
> > + ovs_options tag=100
> > + ovs_extra set interface ${IFACE} external-ids:iface-id=$(hostname -s)
> > +
> > +ex 5: Bonding.
> > +
> > +allow-ovs br2
> > +iface br2 inet static
> > + address 192.170.1.1
> > + netmask 255.255.255.0
> > + ovs_type OVSBridge
> > + ovs_ports bond0
> > +
> > +allow-br2 bond0
> > +iface bond0 inet manual
> > + ovs_bridge br2
> > + ovs_type OVSBond
> > + ovs_bonds eth2 eth3
> > + ovs_options bond_mode=balance-tcp lacp=active
> > +
> > +ex 6: Create and destroy bridges.
> > +
> > +ifup --allow=ovs $list_of_bridges
> > +ifdown --allow=ovs $list_of_bridges
> > +
> > +-- Gurucharan Shetty , Fri, 04 May 2012 12:58:19 -0700
> > diff --git a/debian/openvswitch-switch.install 
> > b/debian/openvswitch-switch.install
> > index 557429b..4d7a15b 100644
> > --- a/debian/openvswitch-switch.install
> > +++ b/debian/openvswitch-switch.install
> > @@ -11,3 +11,4 @@ usr/share/openvswitch/scripts/ovs-ctl
> > usr/share/openvswitch/scripts/ovs-lib
> > usr/share/openvswitch/scripts/ovs-save
> > usr/share/openvswitch/vswitch.ovsschema
> > +debian/ifupdown.sh usr/share/openvswitch/scripts
> > diff --git a/debian/openvswitch-switch.postinst 
> > b/debian/openvswitch-switch.postinst
> > index 7b9d7bc..22ce434 100755
> > --- a/debian/openvswitch-switch.postinst
> > +++ b/debian/openvswitch-switch.postinst
> > @@ -33,6 +33,11 @@ case "$1" in
> > fi
> > done
> > fi
> > +
> > + ln -s /usr/share/openvswitch/scripts/ifupdown.sh \
> > + /etc/network/if-pre-up.d/openvswitch || true
> > + ln -s /usr/share/openvswitch/scripts/ifupdown.sh \
> > + /etc/network/if-post-down.d/openvswitch || true
> > ;;
> >
> > abort-upgrade|abort-remove|abort-deconfigure)
> > diff --git a/debian/openvswitch-switch.postrm 
> > b/debian/openvswitch-switch.postrm
> > index baf37c8..ab963e2 100755
> > --- a/debian/openvswitch-switch.postrm
> > +++ b/debian/openvswitch-switch.postrm
> > @@ -26,6 +26,8 @@ case "$1" in
> > rm -f /etc/default/openvswitch-switch
> > rm -f /var/log/openvswitch/ovs-vswitchd.log* || true
> > rm -f /var/log/openvswitch/ovsdb-server.log* || true
> > + rm -f /etc/network/if-pre-up.d/openvswitch || true
> > + rm -f /etc/network/if-post-down.d/openvswitch || true
> > ;;
> >
> > remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
> > --
> > 1.7.2.5
> >> Date: Mon, 7 May 2012 09:14:26 -0700
> >> From: b...@nicira.com
> >> To: gdahl...@hotmail.com
> >> CC: d...@openvswitch.com
> >> Subject: Re: [ovs-dev] [PATCH] debian: Add network integration scripts.
> >>
> >> On Sun, May 06, 2012 at 12:08:43AM -0700, Greg Dahlman wrote:
> >> > I wrote a really quick and dirty upstart script to test this out on
> >> > Ubuntu 12.04, it works very well but you need to use auto vs
> >> > allow-ovs in the network file.I will work on getting this into the
> >> > git repo after I test a bit and break out the functions but this
> >> > script will get you going and help you avoid the failsafe boot
> >> > delay.
> >>
> >> Is your message in reply to some other message? I don't understand
> >> the context.
> >>
> >> What do you mean by "auto vs allow-ovs in the network file"?
> >>
> >> What is "the failsafe boot delay"?
> >>
> >> > Upstart wants to know the pid of the daemons so running ovs-ctl will
> >> > be a challenge without getting deep into the code.
> >>
> >> The pids are available in the .pid files.
> >
> > _______________________________________________
> > dev mailing list
> > dev@openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev
                                          
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to