Ignore `console-access-protocol: spice` for s390x architecture. Causes libvirt.libvirtError: unsupported configuration: domain configuration does not support video model 'qxl'

Bug #2063190 reported by Aliaksandr Vasiuk
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Nova Compute Charm
Triaged
Medium
Unassigned

Bug Description

Hi,

# Environment #

* Ubuntu Jammy, OpenStack Yoga.
* Juju 2.9.45
* MAAS: 3.2.10-12065-g.0093bc7ec (3.2/stable snap)
* nova-cloud-controller:
  - charm: yoga/stable, rev 634
  - openstack: 25.2.0
* nova-compute:
  - charm: yoga/stable, rev 723
  - openstack: 25.2.1

# Issue description #

We have a mix of architectures in the cloud with a separate nova-compute charm installed for every arch: amd64, arm64, ppc64el, and s390x.
The `console-access-protocol` is configured centrally in `nova-cloud-controller` charm. This setting is propagated to all `nova-compute` applications related to the controller. We have it configured to "spice" and use spice for `amd64`, `arm64`, and `ppc64el`, and want to keep using it:
```
juju config nova-cloud-controller console-access-protocol
spice
```
But, spice is not supported by s390x architecture. We are happy to keep using `s390x` machine in the cloud without `spice`, but nova fails to work because `spice` is configured globally for all nova architectures.

# Steps to reproduce #

1. In a cloud with s390x nova-compute node configure `juju config nova-cloud-controller console-access-protocol=spice`
2. Try to deploy a virtual machine and wait until it goes to `ERROR` state
3. /var/log/nova/nova-compute.log says:
```
: libvirt.libvirtError: unsupported configuration: domain configuration does not support video model 'qxl'
2024-04-19 08:16:40.944 3017 ERROR nova.virt.libvirt.driver [req-4cf45bb5-0823-44c3-bcdf-ed6a0972c56b db682b8df0304e36b91345b7ce594aff 12b52497ff32492f888ae0ba837c2ae6 - 16b5db126dbb42fd804296790a3f9f6a 16b5db126dbb42fd804296790a3f9f6a] [instance: 18d408a5-18a3-4951-9238-84b56c708330] Failed to start libvirt guest: libvirt.libvirtError: unsupported configuration: domain configuration does not support video model 'qxl'
```
The full log is: https://pastebin.ubuntu.com/p/Mj3RbwTqP6/

To ensure that `spice` is the culprit, I edited `/etc/nova/nova.conf` and set the below
```
[spice]
# agent_enabled = True
# enabled = True
enabled = False
agent_enabled = False
```

Restarted `systemctl restart nova-compute` and VM new test VM scheduled successfully.

# Expected behavior #

I'm not sure what is expected here.
* Maybe if `spice` is configured globally, there should be just a warning for s390x that it is not supported but nova should proceed spanning VMs
* Maybe `console-access-protocol` shouldn't be configured globally at all. I'm not sure if it configured something on nova-cloud-controller side at all.
* Maybe there should be additional config point in `nova-compute` charm to disable `console-access-protocol`

# Juju env #

* juju status : https://pastebin.canonical.com/p/sJ4bKvycJH/

Best Regards,
Alex.

summary: - Ignore `console-access-protocol: spice` for s390x architecture
+ Ignore `console-access-protocol: spice` for s390x architecture. Causes
+ libvirt.libvirtError: unsupported configuration: domain configuration
+ does not support video model 'qxl'
Revision history for this message
Heather Lemon (hypothetical-lemon) wrote :

Hi Alex,

In the latest charm for nova-compute there is an additional config option to include cpu_models=

https://git.launchpad.net/charm-nova-compute/commit/?id=b57593f86dc0627d74a9264a9035a2c67fd69c01
https://charmhub.io/nova-compute/configuration?channel=latest/edge#cpu-models

list of upstream supported cpu architectures cpu_map
https://github.com/libvirt/libvirt/blob/master/src/cpu_map/index.xml

You could try including just the ones you want to use.

Cheers,
Heather Lemon

Revision history for this message
Aliaksandr Vasiuk (valexby) wrote :

Hi Heather,

Thank you a lot for the suggestion!

1. I see that this feature is not available yet for `yoga/edge`, I suppose it is only in `latest/edge`. Is there any timeline for when the feature will be available in `yoga/edge`?

2. I checked the list of specifications in `cpu_map`, and I don't see s390x platform there. Do I understand right your proposal to try to use another model in `cpu_models=` that doesn't support spice and see if it will work? Or there is no chance it will ever work if s390x is not in the cpu_map?

Best Regards,
Alex.

Revision history for this message
Alex Kavanagh (ajkavanagh) wrote :

Hi; I traced through the code in charm-nova-cloud-controller and charm-nova-compute and there's currently no way of overriding these settings in nova-compute. This would need to be an additional config item in the nova-compute charm to enable this. e.g. a direct "use-vnc" or a similar mechanism to the "config-flags" option, but more generalised to any section (although this might allow breakage in fairly spectacular and difficult to debug ways).

Triaging to wishlist as it would be a new feature.

Changed in charm-nova-compute:
importance: Undecided → Wishlist
status: New → Triaged
Revision history for this message
Junien F (axino) wrote :

Hi Alex,

Thank you for taking a look at the code. I'm surprised that you think the fix for this bug requires a new feature.

Let me elaborate : Spice console is not supported on s390x, period. As such, the charm code should just make the nova configs be rendered without the spice console stanzas if the architecture is s390x. I don't see the need for an additional config knob here.

What do you think ?

Thanks

Changed in charm-nova-compute:
importance: Wishlist → Undecided
status: Triaged → New
Revision history for this message
Alex Kavanagh (ajkavanagh) wrote :

Hi Junien

> Let me elaborate : Spice console is not supported on s390x, period. As such, the charm code should just make the nova configs be rendered without the spice console stanzas if the architecture is s390x. I don't see the need for an additional config knob here.

Yes, we could do that; it's a little more opinionated and less configurable, but it would definitely work. I'll re-triage.

Changed in charm-nova-compute:
status: New → Triaged
importance: Undecided → Medium
Revision history for this message
Junien F (axino) wrote :

Note for completeness : in an update in our internal ticket, it was said that s390x should support spice. I will update this bug as we get confirmation (or not) of this. Sorry about that.

Revision history for this message
Heather Lemon (hypothetical-lemon) wrote :

I'm re-posting an update to the internal ticket - I believe s390x works on qemu/kvm, but not with spice. Sorry for the confusion, there's not much documentation on s390x + spice.

I suggested setting the video driver to the vm to use vnc as that's the default graphics implementation, the default standard is qxl which is what isn't working.

 </video> vnc </video>

Outside of testing the changes to cpu_models=* and trying to change the video driver, I don't believe s390x + spice is possible.

https://charmhub.io/nova-compute/configuration?channel=latest/edge#cpu-models

Thanks,
Heather Lemon

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

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.