Tweak trove devstack plugin

Tweak the trove devstack plugin to force KVM if possible. This change
is semi-experimental. I would like to see how it performs in the gate,
it seems to be fine on my local machine. It takes some precautions to
only force kvm if it is possible.

In speaking with infra, there are also some known stability issues
with kvm and part of the experiment here is to see what those are. The
other part is to quantify the improvement that it brings to the trove
gate.

Change-Id: I209d3202b4f6414cd3430c11f2ccdb8d5b541d94
This commit is contained in:
Amrith Kumar 2016-12-16 18:42:58 -05:00
parent 48f4fa52f9
commit 47971156f3
1 changed files with 39 additions and 0 deletions

View File

@ -100,10 +100,49 @@ function iniset_conditional {
}
# tweak_nova() - update the nova hypervisor configuration if possible
function tweak_nova {
if [ -e /sys/module/kvm_*/parameters/nested ]; then
reconfigure_nova="F"
if [ -e /sys/module/kvm_intel/parameters/nested ]; then
if [[ "$(cat /sys/module/kvm_*/parameters/nested)" == "Y" ]]; then
reconfigure_nova="Y"
else
echo_summary "Found Intel with no support for nested KVM."
fi
elif [ -e /sys/module/kvm_amd/parameters/nested ]; then
if [[ "$(cat /sys/module/kvm_*/parameters/nested)" == "1" ]]; then
reconfigure_nova="Y"
else
echo_summary "Found AMD with no support for nested KVM."
fi
fi
if [ "${reconfigure_nova}" == "Y" ]; then
echo_summary "Configuring Nova to use KVM."
NOVA_CONF_DIR=${NOVA_CONF_DIR:-/etc/nova}
NOVA_CONF=${NOVA_CONF:-${NOVA_CONF_DIR}/nova.conf}
iniset $NOVA_CONF libvirt cpu_mode "none"
iniset $NOVA_CONF libvirt virt_type "kvm"
else
virt_type=$(iniget $NOVA_CONF libvirt virt_type)
echo_summary "Nested hypervisor not supported, using ${virt_type}."
fi
else
virt_type=$(iniget $NOVA_CONF libvirt virt_type)
echo_summary "Unable to configure Nova to use KVM, using ${virt_type}."
echo "Unable to configure Nova to use KVM, using ${virt_type}."
fi
}
# configure_trove() - Set config files, create data dirs, etc
function configure_trove {
setup_develop $TROVE_DIR
tweak_nova
# Create the trove conf dir and cache dirs if they don't exist
sudo install -d -o $STACK_USER ${TROVE_CONF_DIR} ${TROVE_AUTH_CACHE_DIR}