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