NoVNC console fails to connect

Bug #1793416 reported by Guilherme Giacon on 2018-09-20
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
nova-hyper
Undecided
Unassigned

Bug Description

I have deployed DevStack with two nodes, one node with Keystone, Cinder, Glance, Horizon, Nova and Neutron, and the second node just with Nova compute and Neutron agent services. When deploying an instance I cannot connect to console via NoVNC. Looking into it I found out that DevStack created a multi cells implementation and created nova-novncproxy for cell 1
from systemd service file <email address hidden>
ExecStart = /usr/bin/nova-novncproxy --config-file /etc/nova/nova_cell1.conf --web /opt/stack/noVNC

But nova-consoleauth was created connecting to API MQ, from systemd file <email address hidden>
ExecStart = /usr/bin/nova-consoleauth --config-file /etc/nova/nova.conf

I created another nova-consoleauth connected to cell 1 MQ then I realized in that case the rpcapi of nova-consoleauth was not implemented with routing mechanism to the right MQ for the cell, so I changed nova/consoleauth/rpcapi.py creating an instance of ClientRouter object to be able to route to the right cell MQ when we have multi-cells, and the console access worked, bellow is the diff of stable/queens and the changes I have made

[root@wltpnj22nce-h-pe1dlsc-001 system]# diff /opt/stack/nova/nova/consoleauth/rpcapi.py /opt/stack/nova/nova/consoleauth/rpcapi.py_bkp
75,76c75
< default_client = rpc.get_client(target, version_cap=version_cap)
< self.router = rpc.ClientRouter(default_client)
---
> self.client = rpc.get_client(target, version_cap=version_cap)
89c88
< if not self.router.client(ctxt).can_send_version('2.1'):
---
> if not self.client.can_send_version('2.1'):
93c92
< cctxt = self.router.client(ctxt).prepare(version=version)
---
> cctxt = self.client.prepare(version=version)
97c96
< cctxt = self.router.client(ctxt).prepare()
---
> cctxt = self.client.prepare()
101c100
< cctxt = self.router.client(ctxt).prepare()
---
> cctxt = self.client.prepare()

I was wondering if such code should be there (also checked Rocky) for the multi-cells use case, or something wrong with Devstack version I used or even I am missing something on console access authorization and console token checking should work.
I have attached the rpcapi.py file I have changed.

Guilherme Giacon (giacogu) wrote :
Guilherme Giacon (giacogu) wrote :

Thinking about a little more, when we have multi-cells, we should have nova-novncproxy service instance for each cell, and have each instance has its own endpoint (novncproxy_base_url). I think it might be an issue how Devstack deploys this use case, this report maybe should be against devstack project.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Bug attachments