From ffd66ad77ff07fff9812836b832bbcd952a61fff Mon Sep 17 00:00:00 2001 From: Adam Gandelman Date: Mon, 17 Nov 2014 12:26:08 -0800 Subject: [PATCH] Log early boot of Ironic VMs to serial with sgabios This adds sgabios to the list of packages for Ironic and configures the libvirt domain to redirect BIOS messages to serial via sgabios, when console logging is enabled. The sgabios package in Ubuntu currently has an apparmor bug, so that is worked around here. This allows visibility into early boot of Ironic nodes and should help get to the bottom of a frequent failure we're seeing in the gate. Change-Id: Ifd18851e2d23d198d36e67883a81afc6a92d2a58 Related-Bug: #1393099 --- files/apts/ironic | 1 + files/rpms/ironic | 1 + lib/ironic | 8 ++++++++ tools/ironic/scripts/configure-vm | 2 ++ tools/ironic/templates/vm.xml | 1 + 5 files changed, 13 insertions(+) diff --git a/files/apts/ironic b/files/apts/ironic index 45fdeccbb4..f6c7b74494 100644 --- a/files/apts/ironic +++ b/files/apts/ironic @@ -12,6 +12,7 @@ python-libvirt qemu qemu-kvm qemu-utils +sgabios syslinux tftpd-hpa xinetd diff --git a/files/rpms/ironic b/files/rpms/ironic index e646f3a8aa..0a46314964 100644 --- a/files/rpms/ironic +++ b/files/rpms/ironic @@ -9,6 +9,7 @@ net-tools openssh-clients openvswitch python-libguestfs +sgabios syslinux tftp-server xinetd diff --git a/lib/ironic b/lib/ironic index afe69f2df8..a8a78d42b2 100644 --- a/lib/ironic +++ b/lib/ironic @@ -147,6 +147,14 @@ function install_ironic { if [[ "$IRONIC_IPXE_ENABLED" == "True" ]] ; then install_apache_wsgi fi + + if [[ "$IRONIC_VM_LOG_CONSOLE" == "True" ]] && is_ubuntu; then + # Ubuntu packaging+apparmor issue prevents libvirt from loading + # the ROM from /usr/share/misc. Workaround by installing it directly + # to a directory that it can read from. (LP: #1393548) + sudo rm -rf /usr/share/qemu/sgabios.bin + sudo cp /usr/share/misc/sgabios.bin /usr/share/qemu/sgabios.bin + fi } # install_ironicclient() - Collect sources and prepare diff --git a/tools/ironic/scripts/configure-vm b/tools/ironic/scripts/configure-vm index 4c42c491c5..378fcb85ad 100755 --- a/tools/ironic/scripts/configure-vm +++ b/tools/ironic/scripts/configure-vm @@ -78,8 +78,10 @@ def main(): params['emulator'] = "/usr/bin/qemu-kvm" if args.console_log: + params['bios_serial'] = "" params['console_log'] = CONSOLE_LOG % {'console_log': args.console_log} else: + params['bios_serial'] = '' params['console_log'] = '' libvirt_template = source_template % params conn = libvirt.open("qemu:///system") diff --git a/tools/ironic/templates/vm.xml b/tools/ironic/templates/vm.xml index 4f40334b7d..ae7d685256 100644 --- a/tools/ironic/templates/vm.xml +++ b/tools/ironic/templates/vm.xml @@ -6,6 +6,7 @@ hvm + %(bios_serial)s