[ovs-dev] [PATCH ovn v1] vagrant: Port Vagrantfile to build and test OVN

Numan Siddique numans at ovn.org
Thu Oct 31 18:50:57 UTC 2019


On Fri, Sep 27, 2019 at 8:26 AM Flavio Fernandes <flavio at flaviof.com> wrote:
>
> Revisit Vagrantfile for OVN, so these distros can be used
> to build OVN and run its tests:
>   - centos7
>   - debian-8
>   - fedora-29
>
> Vagrant box fedora/23-cloud-base is not working anymore, so it
> got bumped to fedora-29.
>
> This patch assumes that OVS source is located on same directory
> where this OVN source is located (i.e.: ../ovs).
>
> Provisioning makes no attempt to build and install openvswitch
> kernel modules, but it will build ovs on each VM in order to
> support OVN.
>
> Signed-off-by: Flavio Fernandes <flavio at flaviof.com>

Thanks for the patch. I applied this to master.

Please note that, I didn't test this patch.


> ---
> Items looking for feedback:
>
> - There is an OVN test failing, which needs a closer look:
>   77: ovn -- 1 LR with distributed router gateway port FAILED (ovn.at:9175)

Looks like it's timing related. I see this same test case failing
sometimes when I run with "-j10".

>
> - Is building + using the OVS kernel important for OVN's sake?
I don't think so. The distro ovs kernel module should be good enough.

>
> - Maybe we should use a different verion of the Vagrant boxes (e.g. Centos 8)
I haven't used this vagrant file. But moving to centos 8 sounds good to me.


>
> - The provisioning is not building rpms+deb packages. It is possible that is
>   a show stopper before we merge this patch.

If this fails, feel free to submit another patch.

Numan

>
>
> Vagrantfile | 141 +++++++++++++++++++++++-----------------------------
>  1 file changed, 62 insertions(+), 79 deletions(-)
>
> diff --git a/Vagrantfile b/Vagrantfile
> index fbd772a1b..07ed0b0e0 100644
> --- a/Vagrantfile
> +++ b/Vagrantfile
> @@ -5,7 +5,7 @@
>  VAGRANTFILE_API_VERSION = "2"
>  Vagrant.require_version ">=1.7.0"
>
> -$bootstrap_fedora = <<SCRIPT
> +$bootstrap_ovs_fedora = <<SCRIPT
>  dnf -y update
>  dnf -y install autoconf automake openssl-devel libtool \
>                 python-devel python3-devel \
> @@ -17,7 +17,7 @@ dnf -y install autoconf automake openssl-devel libtool \
>  echo "search extra update built-in" >/etc/depmod.d/search_path.conf
>  SCRIPT
>
> -$bootstrap_debian = <<SCRIPT
> +$bootstrap_ovs_debian = <<SCRIPT
>  aptitude -y update
>  aptitude -y upgrade
>  aptitude -y install -R \
> @@ -33,7 +33,7 @@ aptitude -y install -R \
>                  lftp
>  SCRIPT
>
> -$bootstrap_centos = <<SCRIPT
> +$bootstrap_ovs_centos = <<SCRIPT
>  yum -y update
>  yum -y install autoconf automake openssl-devel libtool \
>                 python-twisted-core python-zope-interface \
> @@ -44,104 +44,87 @@ yum -y install autoconf automake openssl-devel libtool \
>  SCRIPT
>
>  $configure_ovs = <<SCRIPT
> -cd /vagrant
> +cd /vagrant/ovs
>  ./boot.sh
>  [ -f Makefile ] && ./configure && make distclean
> -mkdir -p ~/build
> -cd ~/build
> -/vagrant/configure --with-linux=/lib/modules/`uname -r`/build --enable-silent-rules
> +mkdir -pv ~/build/ovs
> +cd ~/build/ovs
> +/vagrant/ovs/configure --prefix=/usr
>  SCRIPT
>
>  $build_ovs = <<SCRIPT
> -cd ~/build
> -make
> +cd ~/build/ovs
> +make -j$(($(nproc) + 1)) V=0
> +make install
>  SCRIPT
>
> -$test_kmod = <<SCRIPT
> -cd ~/build
> -make check-kmod RECHECK=yes
> -SCRIPT
> -
> -$install_rpm = <<SCRIPT
> -cd ~/build
> -PACKAGE_VERSION=`autom4te -l Autoconf -t 'AC_INIT:$2' /vagrant/configure.ac`
> -make && make dist
> -rpmdev-setuptree
> -cp openvswitch-$PACKAGE_VERSION.tar.gz $HOME/rpmbuild/SOURCES
> -rpmbuild --bb -D "kversion `uname -r`" /vagrant/rhel/openvswitch-kmod-fedora.spec
> -rpmbuild --bb --without check /vagrant/rhel/openvswitch-fedora.spec
> -rpm -e openvswitch
> -rpm -ivh $HOME/rpmbuild/RPMS/x86_64/openvswitch-$PACKAGE_VERSION-1.fc23.x86_64.rpm
> -systemctl enable openvswitch
> -systemctl start openvswitch
> -systemctl status openvswitch
> -SCRIPT
> -
> -$install_centos_rpm = <<SCRIPT
> -cd ~/build
> -PACKAGE_VERSION=`autom4te -l Autoconf -t 'AC_INIT:$2' /vagrant/configure.ac`
> -make && make dist
> -rpmdev-setuptree
> -cp openvswitch-$PACKAGE_VERSION.tar.gz $HOME/rpmbuild/SOURCES
> -rpmbuild --bb -D "kversion `uname -r`" /vagrant/rhel/openvswitch-kmod-fedora.spec
> -rpmbuild --bb --without check /vagrant/rhel/openvswitch-fedora.spec
> -rpm -e openvswitch
> -rpm -ivh $HOME/rpmbuild/RPMS/x86_64/openvswitch-$PACKAGE_VERSION-1.x86_64.rpm
> -systemctl enable openvswitch
> -systemctl start openvswitch
> -systemctl status openvswitch
> +$configure_ovn = <<SCRIPT
> +cd /vagrant/ovn
> +./boot.sh
> +[ -f Makefile ] && \
> +./configure --prefix=/usr --with-ovs-source=/vagrant/ovs \
> +  --with-ovs-build=${HOME}/build/ovs && make distclean
> +mkdir -pv ~/build/ovn
> +cd ~/build/ovn
> +/vagrant/ovn/configure --prefix=/usr --with-ovs-source=/vagrant/ovs \
> +  --with-ovs-build=${HOME}/build/ovs
>  SCRIPT
>
> -$install_deb = <<SCRIPT
> -cd ~/build
> -PACKAGE_VERSION=`autom4te -l Autoconf -t 'AC_INIT:$2' /vagrant/configure.ac`
> -make dist
> -cd ~/
> -ln -sf ~/build/openvswitch-$PACKAGE_VERSION.tar.gz openvswitch_$PACKAGE_VERSION.orig.tar.gz
> -rm -rf ~/openvswitch-$PACKAGE_VERSION
> -tar xzf openvswitch_$PACKAGE_VERSION.orig.tar.gz
> -cd ~/openvswitch-$PACKAGE_VERSION
> -debuild -us -uc
> -dpkg -i ../openvswitch-{common,switch}*deb
> -systemctl enable openvswitch-switch
> -systemctl start openvswitch-switch
> -systemctl status openvswitch-switch
> +$build_ovn = <<SCRIPT
> +cd ~/build/ovn
> +make -j$(($(nproc) + 1))
> +make install
>  SCRIPT
>
> -$test_ovs_system_userspace = <<SCRIPT
> -cd ~/build
> -make check-system-userspace RECHECK=yes
> +$test_ovn = <<SCRIPT
> +cd ~/build/ovn
> +make check RECHECK=yes
>  SCRIPT
>
>  Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
>    config.vm.define "debian-8" do |debian|
>         debian.vm.box = "debian/jessie64"
> -       debian.vm.synced_folder ".", "/vagrant", type: "rsync"
> -       debian.vm.provision "bootstrap", type: "shell", inline: $bootstrap_debian
> -       debian.vm.provision "configure_ovs", type: "shell", inline: $configure_ovs
> +       debian.vm.synced_folder ".", "/vagrant", disabled: true
> +       debian.vm.synced_folder ".", "/vagrant/ovn", type: "rsync"
> +       debian.vm.synced_folder "../ovs", "/vagrant/ovs", type: "rsync"
> +       debian.vm.provision "bootstrap_ovs", type: "shell",
> +                           inline: $bootstrap_ovs_debian
> +       debian.vm.provision "configure_ovs", type: "shell",
> +                           inline: $configure_ovs
>         debian.vm.provision "build_ovs", type: "shell", inline: $build_ovs
> -       debian.vm.provision "test_ovs_kmod", type: "shell", inline: $test_kmod
> -       debian.vm.provision "test_ovs_system_userspace", type: "shell", inline: $test_ovs_system_userspace
> -       debian.vm.provision "install_deb", type: "shell", inline: $install_deb
> +       debian.vm.provision "configure_ovn", type: "shell",
> +                           inline: $configure_ovn
> +       debian.vm.provision "build_ovn", type: "shell", inline: $build_ovn
> +       debian.vm.provision "test_ovn", type: "shell", inline: $test_ovn
>    end
> -  config.vm.define "fedora-23" do |fedora|
> -       fedora.vm.box = "fedora/23-cloud-base"
> -       fedora.vm.synced_folder ".", "/vagrant", type: "rsync"
> -       fedora.vm.provision "bootstrap", type: "shell", inline: $bootstrap_fedora
> -       fedora.vm.provision "configure_ovs", type: "shell", inline: $configure_ovs
> +  config.vm.define "fedora-29" do |fedora|
> +       fedora.vm.box = "fedora/29-cloud-base"
> +       fedora.vm.synced_folder ".", "/vagrant", disabled: true
> +       fedora.vm.synced_folder ".", "/vagrant/ovn", type: "rsync"
> +       fedora.vm.synced_folder "../ovs", "/vagrant/ovs", type: "rsync"
> +       fedora.vm.provision "bootstrap_ovs", type: "shell",
> +                           inline: $bootstrap_ovs_fedora
> +       fedora.vm.provision "configure_ovs", type: "shell",
> +                           inline: $configure_ovs
>         fedora.vm.provision "build_ovs", type: "shell", inline: $build_ovs
> -       fedora.vm.provision "test_ovs_kmod", type: "shell", inline: $test_kmod
> -       fedora.vm.provision "test_ovs_system_userspace", type: "shell", inline: $test_ovs_system_userspace
> -       fedora.vm.provision "install_rpm", type: "shell", inline: $install_rpm
> +       fedora.vm.provision "configure_ovn", type: "shell",
> +                           inline: $configure_ovn
> +       fedora.vm.provision "build_ovn", type: "shell", inline: $build_ovn
> +       fedora.vm.provision "test_ovn", type: "shell", inline: $test_ovn
>    end
>    config.vm.define "centos-7" do |centos|
>         centos.vm.box = "centos/7"
> -       centos.vm.synced_folder ".", "/vagrant", type: "rsync"
> -       centos.vm.provision "bootstrap", type: "shell", inline: $bootstrap_centos
> -       centos.vm.provision "configure_ovs", type: "shell", inline: $configure_ovs
> +       centos.vm.synced_folder ".", "/vagrant", disabled: true
> +       centos.vm.synced_folder ".", "/vagrant/ovn", type: "rsync"
> +       centos.vm.synced_folder "../ovs", "/vagrant/ovs", type: "rsync"
> +       centos.vm.provision "bootstrap_ovs", type: "shell",
> +                           inline: $bootstrap_ovs_centos
> +       centos.vm.provision "configure_ovs", type: "shell",
> +                           inline: $configure_ovs
>         centos.vm.provision "build_ovs", type: "shell", inline: $build_ovs
> -       centos.vm.provision "test_ovs_kmod", type: "shell", inline: $test_kmod
> -       centos.vm.provision "test_ovs_system_userspace", type: "shell", inline: $test_ovs_system_userspace
> -       centos.vm.provision "install_rpm", type: "shell", inline: $install_centos_rpm
> +       centos.vm.provision "configure_ovn", type: "shell",
> +                           inline: $configure_ovn
> +       centos.vm.provision "build_ovn", type: "shell", inline: $build_ovn
> +       centos.vm.provision "test_ovn", type: "shell", inline: $test_ovn
>    end
>  end
> --
> 2.17.1
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev


More information about the dev mailing list