diff --git a/nova/virt/libvirt.xml.template b/nova/virt/libvirt.xml.template index 9a216e14b85..1272dc7a357 100644 --- a/nova/virt/libvirt.xml.template +++ b/nova/virt/libvirt.xml.template @@ -6,6 +6,7 @@ #if $type == 'lxc' exe /sbin/init + console=ttyS0 #else if $type == 'uml' #set $root_disk_bus = 'uml' #set $ephemeral_disk_bus = 'uml' diff --git a/nova/virt/libvirt/connection.py b/nova/virt/libvirt/connection.py index bcb58b6fb8d..af780430e8c 100644 --- a/nova/virt/libvirt/connection.py +++ b/nova/virt/libvirt/connection.py @@ -880,7 +880,7 @@ def _wait_for_boot(): timer = utils.LoopingCall(_wait_for_boot) return timer.start(interval=0.5, now=True) - def _flush_xen_console(self, virsh_output): + def _flush_libvirt_console(self, virsh_output): LOG.info(_('virsh said: %r'), virsh_output) virsh_output = virsh_output[0].strip() @@ -919,11 +919,17 @@ def get_console_output(self, instance): virsh_output = utils.execute('virsh', 'ttyconsole', instance['name']) - data = self._flush_xen_console(virsh_output) + data = self._flush_libvirt_console(virsh_output) fpath = self._append_to_file(data, console_log) elif FLAGS.libvirt_type == 'lxc': # LXC is also special - LOG.info(_("Unable to read LXC console"), instance=instance) + virsh_output = utils.execute('virsh', + '-c', + 'lxc:///', + 'ttyconsole', + instance['name']) + data = self._flush_libvirt_console(virsh_output) + fpath = self._append_to_file(data, console_log) else: fpath = console_log