Public bug reported: Testing with pike on an OVM 3.4.4 xen compute node, Oracle Linux instances do not have working console logging in horizon. (on kvm compute, they are fine)
Note: The OL 7.3 image used to create these instances is marked with --property vm_mode=hvm On kvm the relevant configuration is similar to this: <serial type='file'> <source path='/var/lib/nova/instances/210817e9-9579-425d-a1f6-366c64826bc8/console.log'/> <target port='0'/> <alias name='serial0'/> </serial> <serial type='pty'> <source path='/dev/pts/11'/> <target port='1'/> <alias name='serial1'/> </serial> <console type='file'> <source path='/var/lib/nova/instances/210817e9-9579-425d-a1f6-366c64826bc8/console.log'/> <target type='serial' port='0'/> <alias name='serial0'/> </console> By making experimental changes (adding in "xen") to the create_console method in https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L4569 def _create_consoles(self, virt_type, guest_cfg, instance, flavor, image_meta): # NOTE(markus_z): Beware! Below are so many conditionals that it is # easy to lose track. Use this chart to figure out your case: # # case | is serial | has | is qemu | resulting # | enabled? | virtlogd? | or kvm? | devices # -------------------------------------------------- # 1 | no | no | no | pty* # 2 | no | no | yes | file + pty # 3 | no | yes | no | see case 1 # 4 | no | yes | yes | pty with logd # 5 | yes | no | no | see case 1 # 6 | yes | no | yes | tcp + pty # 7 | yes | yes | no | see case 1 # 8 | yes | yes | yes | tcp with logd # * exception: virt_type "parallels" doesn't create a device if virt_type == 'parallels': pass elif virt_type not in ("qemu", "kvm", "xen"): log_path = self._get_console_log_path(instance) self._create_pty_device(guest_cfg, vconfig.LibvirtConfigGuestConsole, log_path=log_path) elif (virt_type in ("qemu", "kvm") and self._is_s390x_guest(image_meta)): self._create_consoles_s390x(guest_cfg, instance, flavor, image_meta) elif virt_type in ("qemu", "kvm", "xen"): self._create_consoles_qemu_kvm(guest_cfg, instance, flavor, image_meta) This allows for the creation of similar configuration on xen, which then looks to allow the console logging to work correctly. The instance also had a modified /etc/default/grub, like so: ... GRUB_TERMINAL="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8" I do not know if this works correctly in all cases, a more complete test matrix may be needed here. ** Affects: nova Importance: Undecided Status: New -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to OpenStack Compute (nova). https://bugs.launchpad.net/bugs/1728924 Title: console logging does not work for OL instances on xen compute Status in OpenStack Compute (nova): New Bug description: Testing with pike on an OVM 3.4.4 xen compute node, Oracle Linux instances do not have working console logging in horizon. (on kvm compute, they are fine) Note: The OL 7.3 image used to create these instances is marked with --property vm_mode=hvm On kvm the relevant configuration is similar to this: <serial type='file'> <source path='/var/lib/nova/instances/210817e9-9579-425d-a1f6-366c64826bc8/console.log'/> <target port='0'/> <alias name='serial0'/> </serial> <serial type='pty'> <source path='/dev/pts/11'/> <target port='1'/> <alias name='serial1'/> </serial> <console type='file'> <source path='/var/lib/nova/instances/210817e9-9579-425d-a1f6-366c64826bc8/console.log'/> <target type='serial' port='0'/> <alias name='serial0'/> </console> By making experimental changes (adding in "xen") to the create_console method in https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L4569 def _create_consoles(self, virt_type, guest_cfg, instance, flavor, image_meta): # NOTE(markus_z): Beware! Below are so many conditionals that it is # easy to lose track. Use this chart to figure out your case: # # case | is serial | has | is qemu | resulting # | enabled? | virtlogd? | or kvm? | devices # -------------------------------------------------- # 1 | no | no | no | pty* # 2 | no | no | yes | file + pty # 3 | no | yes | no | see case 1 # 4 | no | yes | yes | pty with logd # 5 | yes | no | no | see case 1 # 6 | yes | no | yes | tcp + pty # 7 | yes | yes | no | see case 1 # 8 | yes | yes | yes | tcp with logd # * exception: virt_type "parallels" doesn't create a device if virt_type == 'parallels': pass elif virt_type not in ("qemu", "kvm", "xen"): log_path = self._get_console_log_path(instance) self._create_pty_device(guest_cfg, vconfig.LibvirtConfigGuestConsole, log_path=log_path) elif (virt_type in ("qemu", "kvm") and self._is_s390x_guest(image_meta)): self._create_consoles_s390x(guest_cfg, instance, flavor, image_meta) elif virt_type in ("qemu", "kvm", "xen"): self._create_consoles_qemu_kvm(guest_cfg, instance, flavor, image_meta) This allows for the creation of similar configuration on xen, which then looks to allow the console logging to work correctly. The instance also had a modified /etc/default/grub, like so: ... GRUB_TERMINAL="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8" I do not know if this works correctly in all cases, a more complete test matrix may be needed here. To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/1728924/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp