Remove trailing whitespace in all files
[integration/test.git] / csit / suites / sfc / Full_Deploy / setup-docker-image.sh
1 #!/bin/bash
2
3 set -o xtrace
4 set -o nounset #Do not allow for unset variables
5 set -e #Exit script if a command fails
6
7 function build_ovs() {
8     K_VERSION=$(uname -r)
9
10     if [[ "${OVS_VERSION}" != "2.6.1" && "${OVS_VERSION}" != "2.9.2" ]]; then
11         echo "Unsupported OVS version ${OVS_VERSION}"
12         exit 1
13     fi
14
15     echo "Building OVS ${OVS_VERSION}"
16
17     # install running kernel devel packages
18     sudo yum -y install centos-release yum-utils @'Development Tools' rpm-build
19     REPO=$(repoquery --enablerepo=C* -i kernel-devel-${K_VERSION} | grep Repository | sed 's/Repo.*:[ \t]*//')
20     sudo yum -y --enablerepo=${REPO} install kernel-{devel,debug-devel,headers}-${K_VERSION}
21
22     TMP=$(mktemp -d)
23     pushd ${TMP}
24
25     git clone https://github.com/openvswitch/ovs.git
26     cd ovs
27     git checkout v${OVS_VERSION}
28
29     if [[ "${OVS_VERSION}" == "2.6.1" ]]; then
30         echo "Will apply nsh patches for OVS version 2.6.1"
31         git clone https://github.com/yyang13/ovs_nsh_patches.git ../ovs_nsh_patches
32         git apply ../ovs_nsh_patches/v2.6.1_centos7/*.patch
33     fi
34
35     sed -e 's/@VERSION@/0.0.1/' rhel/openvswitch-fedora.spec.in > /tmp/ovs.spec
36     sudo yum-builddep -y /tmp/ovs.spec
37     rm /tmp/ovs.spec
38     ./boot.sh
39     ./configure --with-linux=/lib/modules/${K_VERSION}/build --prefix=/usr/local --disable-libcapng
40     # dont use libcap, we wont have the proper libraries in the docker image
41     make rpm-fedora RPMBUILD_OPT="--without check --without libcapng"
42     # we dont need the kernel module (yet)
43     # make rpm-fedora-kmod RPMBUILD_OPT="-D 'kversion ${K_VERSION}'"
44     make DESTDIR=${TMP}/ovs_install/openvswitch_${OVS_VERSION} install
45
46     popd
47
48     # copy rpms and installation
49     mkdir -p ovs_package
50     find ${TMP}/ovs/rpm/rpmbuild/RPMS -name "*.rpm" | xargs -i cp {} ovs_package/
51     tar cvzf ovs_package/openvswitch_${OVS_VERSION}.tgz -C ${TMP}/ovs_install .
52
53     rm -rf ${TMP}
54 }
55
56 ODL_STREAM=$1
57
58 # build ovs
59 [ "${ODL_STREAM}" == "oxygen" ] && OVS_VERSION="2.6.1" || OVS_VERSION="2.9.2"
60 build_ovs
61
62 # install ovs
63 sudo yum -y install ovs_package/openvswitch-${OVS_VERSION}-*.rpm
64 # without libcapng, we have to run as root
65 sudo sed -i 's/^OVS_USER_ID/#OVS_USER_ID/' /etc/sysconfig/openvswitch
66 sudo systemctl enable openvswitch
67 sudo systemctl start openvswitch
68 sudo ovs-vsctl --retry -t 10 show
69
70 # download supervisor to run OVS as a service inside the docker busybox image
71 wget https://raw.githubusercontent.com/socketplane/docker-ovs/master/configure-ovs.sh
72 chmod a+x configure-ovs.sh
73 wget https://raw.githubusercontent.com/socketplane/docker-ovs/master/supervisord.conf
74 wget https://pypi.python.org/packages/source/s/supervisor-stdout/supervisor-stdout-0.1.1.tar.gz --no-check-certificate
75
76 # busybox image is missing some libs, take them from the host
77 cp /usr/lib64/libcrypto.so.10 .
78 cp /usr/lib64/libssl.so.10 .
79 cp /usr/lib64/libgssapi_krb5.so.2 .
80 cp /usr/lib64/libkrb5.so.3 .
81 cp /usr/lib64/libcom_err.so.2 .
82 cp /usr/lib64/libk5crypto.so.3 .
83 cp /usr/lib64/libkrb5support.so.0 .
84 cp /usr/lib64/libkeyutils.so.1 .
85 cp /usr/lib64/libselinux.so.1 .
86 cp /usr/lib64/libpcre.so.1 .
87 cp /usr/lib64/liblzma.so.5 .
88
89 # build_ovs_docker
90 sudo docker build -t ovs-docker --build-arg OVS_VERSION=${OVS_VERSION} .
91