Files
neutron/neutron/tests/contrib/gate_hook.sh
T
Slawek Kaplonski 73f111e7e8 Use nested virt in scenario jobs
virt_type option in nova-compute will be now set to "kvm" instead
of "qemu" if test job will be running on node which supports
nested virtualization.
In case of nodes where it's not supported, devstack will
automatically switch it to "qemu" again. It's in [1].

This should improve time of booting vms so tests should be finished
faster and there should be less errors with ssh to instance timeouts.

[1]
http://git.openstack.org/cgit/openstack-dev/devstack/tree/lib/nova#n289

Change-Id: Ia361f33f0b103ed44ef372c1464b3c0473a19291
2018-08-19 07:35:49 +00:00

152 lines
4.5 KiB
Bash

#!/usr/bin/env bash
set -ex
VENV=${1:-"dsvm-functional"}
FLAVOR=${2:-"all"}
GATE_DEST=$BASE/new
NEUTRON_PATH=$GATE_DEST/neutron
GATE_HOOKS=$NEUTRON_PATH/neutron/tests/contrib/hooks
DEVSTACK_PATH=$GATE_DEST/devstack
LOCAL_CONF=$DEVSTACK_PATH/late-local.conf
RALLY_EXTRA_DIR=$NEUTRON_PATH/rally-jobs/extra
DSCONF=/tmp/devstack-tools/bin/dsconf
# Install devstack-tools used to produce local.conf; we can't rely on
# test-requirements.txt because the gate hook is triggered before neutron is
# installed
sudo -H pip install virtualenv
virtualenv /tmp/devstack-tools
/tmp/devstack-tools/bin/pip install -U devstack-tools==0.4.0
# Inject config from hook into localrc
function load_rc_hook {
local hook="$1"
local tmpfile
local config
tmpfile=$(tempfile)
config=$(cat $GATE_HOOKS/$hook)
echo "[[local|localrc]]" > $tmpfile
$DSCONF setlc_raw $tmpfile "$config"
$DSCONF merge_lc $LOCAL_CONF $tmpfile
rm -f $tmpfile
}
# Inject config from hook into local.conf
function load_conf_hook {
local hook="$1"
$DSCONF merge_lc $LOCAL_CONF $GATE_HOOKS/$hook
}
# Tweak gate configuration for our rally scenarios
function load_rc_for_rally {
for file in $(ls $RALLY_EXTRA_DIR/*.setup); do
tmpfile=$(tempfile)
config=$(cat $file)
echo "[[local|localrc]]" > $tmpfile
$DSCONF setlc_raw $tmpfile "$config"
$DSCONF merge_lc $LOCAL_CONF $tmpfile
rm -f $tmpfile
done
}
case $VENV in
"dsvm-functional"|"dsvm-fullstack"|"dsvm-functional-python35"|"dsvm-fullstack-python35")
# The following need to be set before sourcing
# configure_for_func_testing.
GATE_STACK_USER=stack
PROJECT_NAME=neutron
IS_GATE=True
LOCAL_CONF=$DEVSTACK_PATH/local.conf
source $DEVSTACK_PATH/functions
source $NEUTRON_PATH/devstack/lib/ovs
source $NEUTRON_PATH/tools/configure_for_func_testing.sh
configure_host_for_func_testing
# Because of bug present in current Ubuntu Xenial kernel version
# we need a fix for VXLAN local tunneling.
if [[ "$VENV" =~ "dsvm-fullstack" ]]; then
# The OVS_BRANCH variable is used by git checkout. In the case below,
# we use openvswitch commit 138df3e563de9da0e5a4155b3534a69621495742
# that contains a fix for usage of VXLAN tunnels on a single node
# (commit 741f47cf35df2bfc7811b2cff75c9bb8d05fd26f) and is compatible
# with kernel 4.4.119
# NOTE(slaweq): Replace with a release tag when one is available.
# See commit 138df3e563de9da0e5a4155b3534a69621495742 (on the ovs repo).
OVS_BRANCH="138df3e563de9da0e5a4155b3534a69621495742"
compile_ovs_kernel_module
fi
# prepare base environment for ./stack.sh
load_rc_hook stack_base
# enable monitoring
load_rc_hook dstat
;;
"api"|"api-pecan"|"full-iptables_hybrid"|"full-pecan"|"dsvm-scenario-ovs"|"dsvm-scenario-linuxbridge")
# TODO(ihrachys) consider feeding result of ext-list into tempest.conf
load_rc_hook api_all_extensions
if [ "${FLAVOR}" = "dvrskip" ]; then
load_rc_hook disable_dvr_tests
fi
load_conf_hook quotas
load_rc_hook dns
load_rc_hook qos
load_rc_hook segments
load_rc_hook trunk
load_conf_hook vlan_provider
load_conf_hook osprofiler
load_conf_hook availability_zone
if [[ "$VENV" =~ "dsvm-scenario" ]]; then
# Use nested_virt, if node don't support it, Devstack's will
# automatically switch it back to "qemu"
export DEVSTACK_GATE_LIBVIRT_TYPE=kvm
load_rc_hook ubuntu_image
fi
if [[ "$VENV" =~ "dsvm-scenario-linuxbridge" ]]; then
load_conf_hook iptables_verify
fi
if [[ "$VENV" =~ "pecan" ]]; then
load_conf_hook pecan
fi
if [[ "$VENV" =~ "iptables_hybrid" ]]; then
load_conf_hook iptables_hybrid
fi
if [[ "$VENV" != "dsvm-scenario-linuxbridge" ]]; then
load_conf_hook tunnel_types
load_rc_hook log # bug 1743463
fi
if [[ "$VENV" =~ "dsvm-scenario-linuxbridge" ]]; then
# linuxbridge doesn't support gre
load_conf_hook linuxbridge_type_drivers
else
load_conf_hook openvswitch_type_drivers
fi
if [[ "$FLAVOR" = "dvrskip" ]]; then
load_conf_hook disable_dvr
fi
if [[ "$VENV" =~ "dsvm-scenario-ovs" ]]; then
load_conf_hook dvr
fi
;;
"rally")
load_rc_for_rally
;;
*)
echo "Unrecognized environment $VENV".
exit 1
esac
export DEVSTACK_LOCALCONF=$(cat $LOCAL_CONF)
$BASE/new/devstack-gate/devstack-vm-gate.sh