summaryrefslogtreecommitdiffstats
path: root/build/instack_ovs.sh
diff options
context:
space:
mode:
Diffstat (limited to 'build/instack_ovs.sh')
-rwxr-xr-xbuild/instack_ovs.sh401
1 files changed, 0 insertions, 401 deletions
diff --git a/build/instack_ovs.sh b/build/instack_ovs.sh
deleted file mode 100755
index 4c258a4..0000000
--- a/build/instack_ovs.sh
+++ /dev/null
@@ -1,401 +0,0 @@
-#!/bin/bash
-##############################################################################
-# Copyright (c) 2015 Red Hat Inc. and others.
-# therbert@redhat.com
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-set -e
-declare -i CNT
-
-echo "==============================="
-echo executing $0 $@
-echo path is $PATH
-
-usage() {
- echo run BuildAndTestOVS -h for help
-}
-
-while getopts "a:dg:hi:p:tu:v" opt; do
- case "$opt" in
- a)
- kernel_major=${OPTARG}
- ;;
- d)
- DPDK="yes"
- setdpdk="-d"
- ;;
- g)
- TAG=${OPTARG}
- ;;
- h|\?)
- usage
- exit 1
- ;;
- i)
- kernel_minor=${OPTARG}
- ;;
- p)
- OVS_PATCH=${OPTARG}
- ;;
- t)
- TESTRPM="yes"
- ;;
- u)
- OVS_REPO_URL=${OPTARG}
- ;;
- v)
- verbose="yes"
- ;;
- esac
-done
-#
-# Default Config options
-#
-echo ===============================================
-echo Default Configuration Options.
-echo ===============================================
-echo option NOCHECK is set to $NOCHECK
-echo build DPDK option is set to $DPDK
-echo DPDK Patch URL is set to $DPDK_PATCH
-echo DPDK Version is set to $DPDK_VERSION
-echo Option for OVS Kernel Module is set to $KMOD
-echo ===============================================
-if [[ $NOCHECK =~ "yes" ]]; then
- setnocheck="-c"
-fi
-if [[ $KMOD =~ "yes" ]]; then
- setkmod="-k"
-fi
-
-
-
-if [ -z $OVS_REPO_URL ]; then
- OVS_REPO_URL=https://github.com/openvswitch/ovs.git
-fi
-
-if [ ! -z $kernel_major ] && [ ! -z $kernel_minor ]; then
- kernel_version=$kernel_major.$kernel_minor
- echo ===================
- echo Will install kernel version: major is $kernel_major and minor is $kernel_minor
- echo ===================
-else
- echo Will use default kernel in ovs test vm
-fi
-
-if [ -z ${WORKSPACE+1} ]; then
- # We are not being run by Jenkins.
- export WORKSPACE=$HOME/opnfv/ovsnfv
- mkdir -p opnfv
- cd opnfv
- git clone https://git.opnfv.org/ovsnfv
-fi
-
-export BUILD_BASE=$WORKSPACE/build
-
-if [ ! -d $BUILD_BASE ]
-then
- mkdir -p $BUILD_BASE
-fi
-
-if [ ! -f $BUILD_BASE/config ]; then
- touch $BUILD_BASE/config
-fi
-
-export PATH=$PATH:$WORKSPACE/ci:$BUILD_BASE
-source $BUILD_BASE/config
-
-cd $BUILD_BASE
-export TOPDIR=$BUILD_BASE
-
-export TMP_RELEASE_DIR=$TOPDIR/release
-if [ ! -d $TMP_RELEASE_DIR ]; then
- mkdir -p $TMP_RELEASE_DIR
-fi
-
-export CACHE_DIR=$TOPDIR/cache
-if [ ! -d $CACHE_DIR ]; then
- mkdir -p $CACHE_DIR
-fi
-export TMPDIR=$TOPDIR/scratch
-if [ ! -d $SCRATCH_DIR ]; then
- mkdir -p $SCRATCH_DIR
-fi
-
-rdo_images_uri=https://ci.centos.org/artifacts/rdo/images/liberty/delorean/stable
-
-vm_index=4
-RDO_RELEASE=liberty
-SSH_OPTIONS=(-o StrictHostKeyChecking=no -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null)
-OPNFV_NETWORK_TYPES="admin_network private_network public_network storage_network"
-
-# check for dependancy packages
-for i in rpm-build createrepo libguestfs-tools python-docutils bsdtar; do
- if ! rpm -q $i > /dev/null; then
- sudo yum install -y $i
- fi
-done
-
-# RDO Manager expects a stack user to exist, this checks for one
-# and creates it if you are root
-if ! id stack > /dev/null; then
- sudo useradd stack;
- sudo echo 'stack ALL=(root) NOPASSWD:ALL' | sudo tee -a /etc/sudoers.d/stack
- sudo echo 'Defaults:stack !requiretty' | sudo tee -a /etc/sudoers.d/stack
- sudo chmod 0440 /etc/sudoers.d/stack
- echo 'Added user stack'
-fi
-
-# ensure that I can ssh as the stack user
-if ! sudo grep "$(cat ~/.ssh/id_rsa.pub)" /home/stack/.ssh/authorized_keys; then
- if ! sudo ls -d /home/stack/.ssh/ ; then
- sudo mkdir /home/stack/.ssh
- sudo chown stack:stack /home/stack/.ssh
- sudo chmod 700 /home/stack/.ssh
- fi
- USER=$(whoami) sudo sh -c "cat ~$USER/.ssh/id_rsa.pub >> /home/stack/.ssh/authorized_keys"
- sudo chown stack:stack /home/stack/.ssh/authorized_keys
-fi
-
-# clean up stack user previously build instack disk images
-ssh -T ${SSH_OPTIONS[@]} stack@localhost "rm -f instack*.qcow2"
-
-# Yum repo setup for building the undercloud
-if ! rpm -q rdo-release > /dev/null && [ "$1" != "-master" ]; then
- sudo yum -y install yum-plugin-priorities
- sudo yum-config-manager --disable openstack-${RDO_RELEASE}
- sudo curl -o /etc/yum.repos.d/delorean.repo http://trunk.rdoproject.org/centos7-liberty/current-passed-ci/delorean.repo
- sudo curl -o /etc/yum.repos.d/delorean-deps.repo http://trunk.rdoproject.org/centos7-liberty/delorean-deps.repo
- sudo rm -f /etc/yum.repos.d/delorean-current.repo
-elif [ "$1" == "-master" ]; then
- sudo yum -y install yum-plugin-priorities
- sudo yum-config-manager --disable openstack-${RDO_RELEASE}
- sudo curl -o /etc/yum.repos.d/delorean.repo http://trunk.rdoproject.org/centos7/current-passed-ci/delorean.repo
- sudo curl -o /etc/yum.repos.d/delorean-deps.repo http://trunk.rdoproject.org/centos7-liberty/delorean-deps.repo
- sudo rm -f /etc/yum.repos.d/delorean-current.repo
-fi
-
-# ensure the undercloud package is installed so we can build the undercloud
-if ! rpm -q instack-undercloud > /dev/null; then
- sudo yum install -y python-tripleoclient
-fi
-
-# ensure openvswitch is installed
-if ! rpm -q openvswitch > /dev/null; then
- sudo yum install -y openvswitch
-fi
-
-# ensure libvirt is installed
-if ! rpm -q libvirt-daemon-kvm > /dev/null; then
- sudo yum install -y libvirt-daemon-kvm
-fi
-
-# clean this up incase it's there
-sudo rm -f /tmp/instack.answers
-
-# ensure that no previous undercloud VMs are running
-sudo ../ci/clean.sh
-# and rebuild the bare undercloud VMs
-ssh -T ${SSH_OPTIONS[@]} stack@localhost <<EOI
- set -e
- NODE_COUNT=5 NODE_CPU=2 NODE_MEM=8192 TESTENV_ARGS="--baremetal-bridge-names 'brbm brbm1 brbm2 brbm3'" instack-virt-setup
-EOI
-
-# let dhcp happen so we can get the ip
-# just wait instead of checking until we see an address
-# because there may be a previous lease that needs
-# to be cleaned up
-sleep 5
-
-# get the undercloud ip address
-UNDERCLOUD=$(grep instack /var/lib/libvirt/dnsmasq/default.leases | awk '{print $3}' | head -n 1)
-if [ -z "$UNDERCLOUD" ]; then
- #if not found then dnsmasq may be using leasefile-ro
- instack_mac=$(ssh -T ${SSH_OPTIONS[@]} stack@localhost "virsh domiflist instack" | grep default | \
- grep -Eo "[0-9a-f\]+:[0-9a-f\]+:[0-9a-f\]+:[0-9a-f\]+:[0-9a-f\]+:[0-9a-f\]+")
- UNDERCLOUD=$(arp -e | grep ${instack_mac} | awk {'print $1'})
-
- if [ -z "$UNDERCLOUD" ]; then
- echo "\n\nNever got IP for Instack. Can Not Continue."
- exit 1
- fi
-else
- echo -e "${blue}\rInstack VM has IP $UNDERCLOUD${reset}"
-fi
-
-# ensure that we can ssh to the undercloud
-CNT=10
-while ! ssh -T ${SSH_OPTIONS[@]} "root@$UNDERCLOUD" "echo ''" > /dev/null && [ $CNT -gt 0 ]; do
- echo -n "."
- sleep 3
- CNT=CNT-1
-done
-# TODO fail if CNT=0
-
-# yum update undercloud and reboot.
-ssh -T ${SSH_OPTIONS[@]} "root@$UNDERCLOUD" <<EOI
- set -e
-
- echo "----------------------------------------------------------------"
- echo yum update and install pciutils prereqs for DPDK tools and samples.
- echo
- yum -y update
- yum -y install pciutils libvirt
-EOI
-
-# reboot VM
-ssh -T ${SSH_OPTIONS[@]} stack@localhost <<EOI
- virsh reboot instack
-EOI
-sleep 30
-
-# yum repo, triple-o package and ssh key setup for the undercloud
-echo "Install epel-release on undercloud"
-ssh -T ${SSH_OPTIONS[@]} "root@$UNDERCLOUD" <<EOI
- set -e
-
- if ! rpm -q epel-release > /dev/null; then
- yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- fi
-
- yum -y install yum-plugin-priorities
- curl -o /etc/yum.repos.d/delorean.repo http://trunk.rdoproject.org/centos7-liberty/current-passed-ci/delorean.repo
- curl -o /etc/yum.repos.d/delorean-deps.repo http://trunk.rdoproject.org/centos7-liberty/delorean-deps.repo
-
- cp /root/.ssh/authorized_keys /home/stack/.ssh/authorized_keys
- chown stack:stack /home/stack/.ssh/authorized_keys
-EOI
-#
-# If using special kernel version, install on undercloud vm.
-#
-if [ ! -z $kernel_version ]; then
- echo "Install special kernel version $kernel_version on undercloud"
- ssh -T ${SSH_OPTIONS[@]} "root@$UNDERCLOUD" <<EOI
- set -e
- yum -y install gcc ncurses ncurses-devel bc xz rpm-build
- echo wget --quiet http://mirrors.neterra.net/elrepo/kernel/el6/x86_64/RPMS/kernel-ml-$kernel_version-1.el6.elrepo.x86_64.rpm
- wget --quiet http://mirrors.neterra.net/elrepo/kernel/el6/x86_64/RPMS/kernel-ml-$kernel_version-1.el6.elrepo.x86_64.rpm
- echo wget --quiet http://mirrors.neterra.net/elrepo/kernel/el6/x86_64/RPMS/kernel-ml-devel-$kernel_version-1.el6.elrepo.x86_64.rpm
- wget --quiet http://mirrors.neterra.net/elrepo/kernel/el6/x86_64/RPMS/kernel-ml-devel-$kernel_version-1.el6.elrepo.x86_64.rpm
- echo rpm -i kernel-ml-$kernel_version-1.el6.elrepo.x86_64.rpm
- rpm -i kernel-ml-$kernel_version-1.el6.elrepo.x86_64.rpm
- echo rpm -i kernel-ml-devel-$kernel_version-1.el6.elrepo.x86_64.rpm
- rpm -i kernel-ml-devel-$kernel_version-1.el6.elrepo.x86_64.rpm
-
- echo cd /lib/modules/$kernel_version-1.el6.elrepo.x86_64
- cd /lib/modules/$kernel_version-1.el6.elrepo.x86_64
- echo rm -f build
- rm -f build
- echo ln -s /usr/src/kernels/$kernel_version-1.el6.elrepo.x86_64 build
- ln -s /usr/src/kernels/$kernel_version-1.el6.elrepo.x86_64 build
- #echo rm -f source
- #rm -f source
- #echo ln -s ./build source
- #ln -s ./build source
-EOI
-else
- #
- # Install latest stable kernel.
- #
- echo "Install devel-kernel and elrepo on undercloud"
- ssh -T ${SSH_OPTIONS[@]} "root@$UNDERCLOUD" <<EOI
- echo Install latest stable kernel
- set -e
- yum install -y kernel kernel-devel
- rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
- rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
-EOI
-fi
-
-# copy instackenv file for future virt deployments
-echo copy instackenv file for future virt deployments
-if [ ! -d stack ]; then mkdir stack; fi
-scp ${SSH_OPTIONS[@]} stack@$UNDERCLOUD:instackenv.json stack/instackenv.json
-
-
-#
-# If using special kernel version, reboot undercloud vm
-#
-echo If using special kernel version, reboot undercloud vm
-if [ -z $kernel_version ]; then
- ssh -T ${SSH_OPTIONS[@]} stack@localhost <<EOI
- virsh reboot instack
-EOI
- sleep 15
-fi
-
-#
-# Copy build and test scripts to undercloud vm.
-# If special kernel is required, build rpm on undercloud vm otherwise build
-# it locally.
-#
-echo Copy build and test scripts to undercloud vm.
-echo BUILD_BASE is $BUILD_BASE
-scp ${SSH_OPTIONS[@]} $BUILD_BASE/build_ovs_rpm.sh stack@$UNDERCLOUD:
-scp ${SSH_OPTIONS[@]} $BUILD_BASE/test_ovs_rpm.sh stack@$UNDERCLOUD:
-#
-# build dpdk rpm locally.
-#
-if [[ "$DPDK" =~ "yes" ]]; then
- echo Build DPDK RPMs
- ./build_dpdk_rpm.sh -g $DPDK_VERSION
-fi
-#
-# Build rpm on undercloud if custom kernel module is required otherwise build
-# locally.
-#
-if [ ! -z $kernel_version ]; then
- echo build rpm on undercloud with kernel version $kernel_version
- ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
- ./build_ovs_rpm.sh -a $kernel_major $setnocheck -g $TAG -i $kernel_minor -k -p $OVS_PATCH -u $OVS_REPO_URL
-EOI
- scp ${SSH_OPTIONS[@]} stack@UNDERCLOUD:*.rpm $RPMDIR/RPMS/
-elif [[ "$DPDK" =~ "yes" ]]; then
- echo Build ovs with DPDK locally
- #
- # Build locally and copy RPMS to undercloud vm for testing
- # and copy RPMS to temporary release dir.
- #
- ./build_ovs_rpm.sh $setnocheck -d -g $TAG -p $OVS_PATCH -u $OVS_REPO_URL
-else
- # Build locally and copy RPMS to undercloud vm for testing
- # and copy RPMS to temporary release dir.
- #
- echo build OVS rpm locally
- ./build_ovs_rpm.sh $setnocheck -g $TAG $setkmod -p $OVS_PATCH -u $OVS_REPO_URL
-fi
-#
-# Test rpm on undercloud vm
-# TODO: Undercloud VM doesn't support sse3 instruction needed set to run DPDK
-#
-if [ ! -z $TESTRPM ]; then
- if [ -z $DPDK ]; then
- echo "-----------------------------------------"
- echo Test rpm on undercloud vm
- echo Copy all RPMS to undercloud for testing.
- echo
- scp ${SSH_OPTIONS[@]} $RPMDIR/RPMS/x86_64/* stack@$UNDERCLOUD:
- scp ${SSH_OPTIONS[@]} $RPMDIR/SOURCES/dpdk*.rpm stack@$UNDERCLOUD:
- ssh -T ${SSH_OPTIONS[@]} "stack@$UNDERCLOUD" <<EOI
- ./test_ovs_rpm.sh $setdpdk $setkmod
-EOI
- else
- echo "-----------------------------------------"
- echo "TODO: Undercloud VM doesn't support sse3 instruction needed DPDK."
- echo "DPDK is required, therefore test DPDK/OVS RPM in host"
- echo
- ./test_ovs_rpm.sh $setdpdk $setkmod
- fi
-fi
-
-#
-# If tests pass, copy rpms to release dir
-#
-echo copy rpms to release dir
-echo copy rpms from undercloud back to $TMP_RELEASE_DIR in host
-cp $RPMDIR/RPMS/x86_64/* $TMP_RELEASE_DIR
-
-exit 0