Remove trailing whitespace in all files
[integration/test.git] / csit / suites / sfc / Full_Deploy / setup-docker-image.sh
index 1b2f31fc1a4b2434e8beb43c38f8e6adee1d1048..62c1ca6b8353fda160a2904d03f0f9bb0994fb58 100755 (executable)
@@ -1,67 +1,79 @@
 #!/bin/bash
 
 set -o xtrace
-set -o nounset #Don't allow for unset variables
-#set -e #Exit script if a command fails
-
-# bootstrap_centos
-WORK_DIR=`pwd`
-if sudo yum install -y "kernel-devel-uname-r == $(uname -r)"; then
-   echo "Kernel-devel installed correctly"
-else
-   echo "Warning: Errors issued when installing kernel-devel"
-fi
-
-APT="sudo yum install -y git kernel-debug-devel kernel-headers 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"
-if $APT; then
-  echo "Pacakges installed correctly"
-else
-  echo "Installation of packages failed"
-  exit 1
-fi
-
-cd $WORK_DIR
-[ -e configure-ovs.sh ] || \
-   wget https://raw.githubusercontent.com/socketplane/docker-ovs/master/configure-ovs.sh
+set -o nounset #Do not allow for unset variables
+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
 chmod a+x configure-ovs.sh
-[ -e supervisord.conf ] || \
-   wget https://raw.githubusercontent.com/socketplane/docker-ovs/master/supervisord.conf
-
-[ -e ovs_nsh_patches ] || \
-   git clone https://github.com/yyang13/ovs_nsh_patches.git
-[ -e ovs ] || \
-   git clone https://github.com/openvswitch/ovs.git
-
-cd ovs
-git reset --hard 7d433ae57ebb90cd68e8fa948a096f619ac4e2d8
-cp ../ovs_nsh_patches/*.patch ./
-git apply *.patch
-
-#compile ovs
-./boot.sh
-./configure --with-linux=/lib/modules/`uname -r`/build --prefix=/usr/local
-make rpm-fedora RPMBUILD_OPT="--without check --without libcapng"
-make DESTDIR=$WORK_DIR/ovs_install/openvswitch_2.5.90-1 install
-
-#copy rpms and installation
-mkdir -p $WORK_DIR/ovs_package
-find . -name "*.rpm"|xargs -I[] cp [] $WORK_DIR/ovs_package
-tar cvzf $WORK_DIR/ovs_package/openvswitch_2.5.90-1.tgz -C $WORK_DIR/ovs_install .
-
-# install_ovs
-cd $WORK_DIR/ovs_package
-CMD='sudo yum list installed openvswitch'
-if $CMD; then
-  echo "openvswitch already installed"
-else
-  sudo yum --nogpgcheck -y install `find . -regex "\./openvswitch-[0-9,.,-].*"`
-fi
-
-#start ovs
-sudo /sbin/service openvswitch start
-
-#prepare libraries for docker image in busybox
-cd $WORK_DIR
+wget https://raw.githubusercontent.com/socketplane/docker-ovs/master/supervisord.conf
+wget https://pypi.python.org/packages/source/s/supervisor-stdout/supervisor-stdout-0.1.1.tar.gz --no-check-certificate
+
+# busybox image is missing some libs, take them from the host
 cp /usr/lib64/libcrypto.so.10 .
 cp /usr/lib64/libssl.so.10 .
 cp /usr/lib64/libgssapi_krb5.so.2 .
@@ -75,11 +87,5 @@ cp /usr/lib64/libpcre.so.1 .
 cp /usr/lib64/liblzma.so.5 .
 
 # build_ovs_docker
-cd $WORK_DIR
-if [ -z `sudo docker images | awk '/^ovs-docker / {print $1}'` ];
- then
-   sudo docker build -t ovs-docker .
-fi
-
-
+sudo docker build -t ovs-docker --build-arg OVS_VERSION=${OVS_VERSION} .