diff --git a/stackrc b/stackrc index d7727517e0..51bcbfeef4 100644 --- a/stackrc +++ b/stackrc @@ -564,8 +564,12 @@ VIRT_DRIVER=${VIRT_DRIVER:-$DEFAULT_VIRT_DRIVER} case "$VIRT_DRIVER" in ironic|libvirt) LIBVIRT_TYPE=${LIBVIRT_TYPE:-kvm} - if [[ "$os_VENDOR" =~ (Debian) ]]; then - LIBVIRT_GROUP=libvirt + if [[ "$os_VENDOR" =~ (Debian|Ubuntu) ]]; then + # The groups change with newer libvirt. Older Ubuntu used + # 'libvirtd', but now uses libvirt like Debian. Do a quick check + # to see if libvirtd group already exists to handle grenade's case. + LIBVIRT_GROUP=$(cut -d ':' -f 1 /etc/group | grep 'libvirtd$' || true) + LIBVIRT_GROUP=${LIBVIRT_GROUP:-libvirt} else LIBVIRT_GROUP=libvirtd fi diff --git a/tools/fixup_stuff.sh b/tools/fixup_stuff.sh index 4dec95eb4d..6f680b860e 100755 --- a/tools/fixup_stuff.sh +++ b/tools/fixup_stuff.sh @@ -67,6 +67,33 @@ else echo_summary "WARNING: unable to reserve keystone ports" fi +# Ubuntu Cloud Archive +#--------------------- +# We've found that Libvirt on Xenial is flaky and crashes enough to be +# a regular top e-r bug. Opt into Ubuntu Cloud Archive if on Xenial to +# get newer Libvirt. +if [[ "$DISTRO" = "xenial" ]]; then + # This pulls in apt-add-repository + install_package "software-properties-common" + # Use UCA for newer libvirt. Should give us libvirt 2.5.0. + if [[ -f /etc/ci/mirror_info.sh ]] ; then + # If we are on a nodepool provided host and it has told us about where + # we can find local mirrors then use that mirror. + source /etc/ci/mirror_info.sh + + sudo apt-add-repository -y "deb $NODEPOOL_UCA_MIRROR xenial-updates/ocata main" + + # Disable use of libvirt wheel here as presence of mirror implies + # presence of cached wheel build against older libvirt binary. + # TODO(clarkb) figure out how to use wheel again. + sudo bash -c 'echo "no-binary = libvirt-python" >> /etc/pip.conf' + else + # Otherwise use upstream UCA + sudo add-apt-repository -y cloud-archive:ocata + fi + sudo apt-get update +fi + # Python Packages # ---------------