Public bug reported:

Description
===========

Change I2ddf0f4d768b698e980594dd67206464a9cea37b changed all console
URLs to have the token attached as a nested query parameter inside an
outer "path" query parameter, e.g. "?path=?token=***".

While this was necessary for NoVNC support, it appears to have broken
Ironic serial consoles, which use the nova-serialproxy service, which
apparently is not aware that it needs to parse the token in this manner.
It uses websockify.

To test, I enabled debug mode and added some extra logging in the nova-
serialproxy to prove that "token" was empty in this function:
https://github.com/openstack/nova/blob/stable/rocky/nova/objects/console_auth_token.py#L143

Steps to reproduce
==================

1. Have Ironic set up to allow web/serial consoles 
(https://docs.openstack.org/ironic/pike/admin/console.html). I believe this 
also requires having nova-serialproxy deployed.
2. Launch an Ironic instance and attempt to access the console via Horizon.


Expected result
===============

The serial console loads in the web interface; "Status: Opened" is
displayed in the bottom. Console is interactive assuming the node has
booted properly.


Actual result
=============

The serial console loads, but is blank; "Status: Closed" is displayed in
the bottom. nova-serialproxy logs indicate the token was expired or
invalid. The console never becomes interactive, but does not indicate
there is an error in Horizon (at least on my deployment.)

Environment
===========

OpenStack Rocky release, deployed with Kolla-Ansible.

** 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/1845243

Title:
  Nested 'path' query param in console URL breaks serialproxy

Status in OpenStack Compute (nova):
  New

Bug description:
  Description
  ===========

  Change I2ddf0f4d768b698e980594dd67206464a9cea37b changed all console
  URLs to have the token attached as a nested query parameter inside an
  outer "path" query parameter, e.g. "?path=?token=***".

  While this was necessary for NoVNC support, it appears to have broken
  Ironic serial consoles, which use the nova-serialproxy service, which
  apparently is not aware that it needs to parse the token in this
  manner. It uses websockify.

  To test, I enabled debug mode and added some extra logging in the
  nova-serialproxy to prove that "token" was empty in this function:
  
https://github.com/openstack/nova/blob/stable/rocky/nova/objects/console_auth_token.py#L143

  Steps to reproduce
  ==================

  1. Have Ironic set up to allow web/serial consoles 
(https://docs.openstack.org/ironic/pike/admin/console.html). I believe this 
also requires having nova-serialproxy deployed.
  2. Launch an Ironic instance and attempt to access the console via Horizon.

  
  Expected result
  ===============

  The serial console loads in the web interface; "Status: Opened" is
  displayed in the bottom. Console is interactive assuming the node has
  booted properly.

  
  Actual result
  =============

  The serial console loads, but is blank; "Status: Closed" is displayed
  in the bottom. nova-serialproxy logs indicate the token was expired or
  invalid. The console never becomes interactive, but does not indicate
  there is an error in Horizon (at least on my deployment.)

  Environment
  ===========

  OpenStack Rocky release, deployed with Kolla-Ansible.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1845243/+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

Reply via email to