-#set -e #Exit script if a command fails
-
-WORK_DIR=`pwd`
-
-# bootstrap_centos
-EL_VERSION=$(grep -oP '\d+\.\d+.\d+' /etc/centos-release)
-K_VERSION=$(uname -r)
-APT="sudo yum update -y centos-release"
-$APT || (echo "Failed to update centos release info" && exit 1)
-
-APT="sudo yum install -y --enablerepo=C${EL_VERSION}-base --enablerepo=C${EL_VERSION}-updates kernel-devel-${K_VERSION} kernel-debug-devel-${K_VERSION} kernel-headers-${K_VERSION}"
-$APT || (echo "Failed to install kernel devel packages" && exit 1)
-
-APT="sudo yum install -y git python-devel vim autoconf automake libtool systemd-units rpm-build openssl openssl-devel groff graphviz selinux-policy-devel python python-twisted-core python-zope-interface python-twisted-web PyQt4 python-six desktop-file-utils procps-ng wget"
-$APT || (echo "Failed to install ovs requirement packages" && exit 1)
-
-cd $WORK_DIR
-[ -e configure-ovs.sh ] || \
- wget https://raw.githubusercontent.com/socketplane/docker-ovs/master/configure-ovs.sh
+set -e #Exit script if a command fails
+
+function build_ovs() {
+ K_VERSION=$(uname -r)
+
+ if [[ "${OVS_VERSION}" != "2.6.1" && "${OVS_VERSION}" != "2.9.2" ]]; then
+ echo "Unsupported OVS version ${OVS_VERSION}"
+ exit 1
+ fi
+
+ echo "Building OVS ${OVS_VERSION}"
+
+ # install running kernel devel packages
+ sudo yum -y install centos-release yum-utils @'Development Tools' rpm-build
+ REPO=$(repoquery --enablerepo=C* -i kernel-devel-${K_VERSION} | grep Repository | sed 's/Repo.*:[ \t]*//')
+ sudo yum -y --enablerepo=${REPO} install kernel-{devel,debug-devel,headers}-${K_VERSION}
+
+ TMP=$(mktemp -d)
+ pushd ${TMP}
+
+ git clone https://github.com/openvswitch/ovs.git
+ cd ovs
+ git checkout v${OVS_VERSION}
+
+ if [[ "${OVS_VERSION}" == "2.6.1" ]]; then
+ echo "Will apply nsh patches for OVS version 2.6.1"
+ git clone https://github.com/yyang13/ovs_nsh_patches.git ../ovs_nsh_patches
+ git apply ../ovs_nsh_patches/v2.6.1_centos7/*.patch
+ fi
+
+ sed -e 's/@VERSION@/0.0.1/' rhel/openvswitch-fedora.spec.in > /tmp/ovs.spec
+ sudo yum-builddep -y /tmp/ovs.spec
+ rm /tmp/ovs.spec
+ ./boot.sh
+ ./configure --with-linux=/lib/modules/${K_VERSION}/build --prefix=/usr/local --disable-libcapng
+ # dont use libcap, we wont have the proper libraries in the docker image
+ make rpm-fedora RPMBUILD_OPT="--without check --without libcapng"
+ # we dont need the kernel module (yet)
+ # make rpm-fedora-kmod RPMBUILD_OPT="-D 'kversion ${K_VERSION}'"
+ make DESTDIR=${TMP}/ovs_install/openvswitch_${OVS_VERSION} install
+
+ popd
+
+ # copy rpms and installation
+ mkdir -p ovs_package
+ find ${TMP}/ovs/rpm/rpmbuild/RPMS -name "*.rpm" | xargs -i cp {} ovs_package/
+ tar cvzf ovs_package/openvswitch_${OVS_VERSION}.tgz -C ${TMP}/ovs_install .
+
+ rm -rf ${TMP}
+}
+
+ODL_STREAM=$1
+
+# build ovs
+[ "${ODL_STREAM}" == "oxygen" ] && OVS_VERSION="2.6.1" || OVS_VERSION="2.9.2"
+build_ovs
+
+# install ovs
+sudo yum -y install ovs_package/openvswitch-${OVS_VERSION}-*.rpm
+# without libcapng, we have to run as root
+sudo sed -i 's/^OVS_USER_ID/#OVS_USER_ID/' /etc/sysconfig/openvswitch
+sudo systemctl enable openvswitch
+sudo systemctl start openvswitch
+sudo ovs-vsctl --retry -t 10 show
+
+# download supervisor to run OVS as a service inside the docker busybox image
+wget https://raw.githubusercontent.com/socketplane/docker-ovs/master/configure-ovs.sh