#!/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 < /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" < /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" <