X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Fsfc%2FFull_Deploy%2Fsetup-docker-image.sh;fp=csit%2Fsuites%2Fsfc%2FFull_Deploy%2Fsetup-docker-image.sh;h=58ab38b2230353cc9030f01b547760f3fe85ebe1;hb=ae5b9eddd00923e97ab9d3b402e75db39f0feb9a;hp=eef3644551fca0b266c7f11116e560d1da271eeb;hpb=0cfc5e8d39493ddd1bf8750e2954d7185c8cb791;p=integration%2Ftest.git diff --git a/csit/suites/sfc/Full_Deploy/setup-docker-image.sh b/csit/suites/sfc/Full_Deploy/setup-docker-image.sh index eef3644551..58ab38b223 100755 --- a/csit/suites/sfc/Full_Deploy/setup-docker-image.sh +++ b/csit/suites/sfc/Full_Deploy/setup-docker-image.sh @@ -2,68 +2,78 @@ set -o xtrace set -o nounset #Do not allow for unset variables -#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 chmod a+x configure-ovs.sh -[ -e supervisord.conf ] || \ - wget https://raw.githubusercontent.com/socketplane/docker-ovs/master/supervisord.conf - -[ -e supervisor-stdout/supervisor-stdout-0.1.1.tar.gz ] || \ - wget https://pypi.python.org/packages/source/s/supervisor-stdout/supervisor-stdout-0.1.1.tar.gz --no-check-certificate - -[ -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 config user.email "yi.y.yang@intel.com" -git config user.name "Yi Yang" -git checkout -b v2.6.1 v2.6.1 -git am ../ovs_nsh_patches/v2.6.1/*.patch - -#compile ovs -./boot.sh -./configure --with-linux=/lib/modules/${K_VERSION}/build --prefix=/usr/local -make rpm-fedora RPMBUILD_OPT="--without check --without libcapng" -make DESTDIR=$WORK_DIR/ovs_install/openvswitch_2.6.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.6.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 . @@ -77,12 +87,5 @@ cp /usr/lib64/libpcre.so.1 . cp /usr/lib64/liblzma.so.5 . # build_ovs_docker -cd $WORK_DIR -sudo docker --version -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} .