summaryrefslogtreecommitdiff
path: root/devstack
diff options
context:
space:
mode:
Diffstat (limited to 'devstack')
-rw-r--r--devstack/plugin.sh39
1 files changed, 39 insertions, 0 deletions
diff --git a/devstack/plugin.sh b/devstack/plugin.sh
index 504958ec..e38a5834 100644
--- a/devstack/plugin.sh
+++ b/devstack/plugin.sh
@@ -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}