Can't set "pointer_model = None" in nova.conf
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
In Progress
|
Low
|
melanie witt | ||
oslo.config |
Won't Fix
|
Undecided
|
Unassigned |
Bug Description
Description
===========
nova.conf includes option pointer_model. The help text in the config has 2 "possible values" sections (copied below) specifying either "None" or "<None>" as correct values. Neither of these is accepted by Nova. Here are the error messages from nova-compute.log:
2020-03-03 11:05:17.233 228915 ERROR nova ConfigFileValue
2020-03-03 11:06:24.761 229290 ERROR nova ConfigFileValue
#
# Generic property to specify the pointer type.
#
# Input devices allow interaction with a graphical framebuffer. For
# example to provide a graphic tablet for absolute cursor movement.
#
# If set, the 'hw_pointer_model' image property takes precedence over
# this configuration option.
#
# Possible values:
#
# * None: Uses default behavior provided by drivers (mouse on PS2 for
# libvirt x86)
# * ps2mouse: Uses relative movement. Mouse connected by PS2
# * usbtablet: Uses absolute movement. Tablet connect by USB
#
# Related options:
#
# * usbtablet must be configured with VNC enabled or SPICE enabled and SPICE
# agent disabled. When used with libvirt the instance mode should be
# configured as HVM.
# (string value)
# Possible values:
# <None> - <No description provided>
# ps2mouse - <No description provided>
# usbtablet - <No description provided>
#pointer_model = usbtablet
Steps to reproduce
==================
On an openstack hypervisor:
1. Edit nova.conf and change line "#pointer_model = usbtablet" to either "pointer_model = None" or "pointer_model = <None>"
2. Restart nova-compute service
3. Tail nova-compute.log
Expected result
===============
Nova runs without errors and does not load the USB driver.
Actual result
=============
Nova throws the error described above.
Environment
===========
1. Openstack version is Rocky:
root@us01odc-
ii nova-common 2:18.2.
ii nova-compute 2:18.2.
ii nova-compute-kvm 2:18.2.
ii nova-compute-
ii python-nova 2:18.2.
ii python-novaclient 2:11.0.
2. Hypervisor: libvirt+KVM
root@us01odc-
libvirtd (libvirt) 4.0.0
root@us01odc-
QEMU emulator version 2.11.1(Debian 1:2.11+
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers
3. Storage type: local LVM
root@us01odc-
LVM version: 2.02.176(2) (2017-11-03)
Library version: 1.02.145 (2017-11-03)
Driver version: 4.39.0
Configuration: ./configure --build=
3. Networking: neutron
Logs & Configs
==============
nova-compute.log:
2020-03-04 10:48:34.774 116036 ERROR nova
2020-03-04 10:48:36.616 116046 INFO os_vif [-] Loaded VIF plugins: ovs, linux_bridge
2020-03-04 10:48:36.688 116046 WARNING oslo_config.cfg [req-20c7f0dd-
nova-network is deprecated, as are any related configuration options.
). Its value may be silently ignored in the future.
2020-03-04 10:48:36.703 116046 WARNING oslo_config.cfg [req-20c7f0dd-
2020-03-04 10:48:36.721 116046 INFO nova.virt.driver [req-20c7f0dd-
2020-03-04 10:48:36.779 116046 WARNING oslo_config.cfg [req-20c7f0dd-
nova-network is deprecated, as are any related configuration options.
). Its value may be silently ignored in the future.
2020-03-04 10:48:36.783 116046 WARNING os_brick.
2020-03-04 10:48:36.786 116046 CRITICAL nova [req-20c7f0dd-
2020-03-04 10:48:36.786 116046 ERROR nova Traceback (most recent call last):
2020-03-04 10:48:36.786 116046 ERROR nova File "/usr/bin/
2020-03-04 10:48:36.786 116046 ERROR nova sys.exit(main())
2020-03-04 10:48:36.786 116046 ERROR nova File "/usr/lib/
2020-03-04 10:48:36.786 116046 ERROR nova service.wait()
2020-03-04 10:48:36.786 116046 ERROR nova File "/usr/lib/
2020-03-04 10:48:36.786 116046 ERROR nova _launcher.wait()
2020-03-04 10:48:36.786 116046 ERROR nova File "/usr/lib/
2020-03-04 10:48:36.786 116046 ERROR nova status, signo = self._wait_
2020-03-04 10:48:36.786 116046 ERROR nova File "/usr/lib/
2020-03-04 10:48:36.786 116046 ERROR nova self.conf.
2020-03-04 10:48:36.786 116046 ERROR nova File "/usr/lib/
2020-03-04 10:48:36.786 116046 ERROR nova _sanitize(opt, getattr(self, opt_name)))
2020-03-04 10:48:36.786 116046 ERROR nova File "/usr/lib/
2020-03-04 10:48:36.786 116046 ERROR nova return self._get(name)
2020-03-04 10:48:36.786 116046 ERROR nova File "/usr/lib/
2020-03-04 10:48:36.786 116046 ERROR nova value, loc = self._do_get(name, group, namespace)
2020-03-04 10:48:36.786 116046 ERROR nova File "/usr/lib/
2020-03-04 10:48:36.786 116046 ERROR nova % (opt.name, str(ve)))
2020-03-04 10:48:36.786 116046 ERROR nova ConfigFileValue
2020-03-04 10:48:36.786 116046 ERROR nova
nova.conf:
root@us01odc-
[DEFAULT]
lock_path = /var/lock/nova
state_path = /var/lib/nova
default_
reserved_
reserved_
reserved_host_cpus = 2
cpu_allocation_
ram_allocation_
my_ip = 10.195.50.242
use_neutron = true
firewall_driver = nova.virt.
debug = false
verbose = false
transport_url = rabbit:
auth_strategy = keystone
[api]
auth_strategy = keystone
[api_database]
connection = sqlite:
[barbican]
[cache]
[cells]
enable = False
[cinder]
[compute]
[conductor]
[console]
[consoleauth]
[cors]
[database]
connection = sqlite:
[devices]
[ephemeral_
[filter_scheduler]
[glance]
api_server = http://
[guestfs]
[healthcheck]
[hyperv]
[ironic]
[key_manager]
[keystone]
[keystone_
auth_url = http://
memcached_servers = us01odc-
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = nova
password = <pwd>
[libvirt]
virt_type = kvm
cpu_mode = host-passthrough
[matchmaker_redis]
[metrics]
[mks]
[neutron]
url = http://
service_
metadata_
auth_type = password
auth_url = http://
project_name = service
project_domain_name = default
username = neutron
user_domain_name = default
password = <pwd>
region_name = us01-p01
[notifications]
[osapi_v21]
[oslo_concurrency]
lock_path = /var/lib/nova/tmp
[oslo_messaging
[oslo_messaging
[oslo_messaging
[oslo_messaging
[oslo_messaging
[oslo_middleware]
[oslo_policy]
[pci]
[placement]
os_region_name = openstack
auth_type = password
auth_url = http://
project_name = service
project_domain_name = Default
username = placement
user_domain_name = Default
password = <pwd>
region_name = us01-p01
[placement_
[powervm]
[profiler]
[quota]
[rdp]
[remote_debug]
[scheduler]
[serial_console]
[service_user]
[spice]
[upgrade_levels]
[vault]
[vendordata_
[vmware]
[vnc]
enabled = True
server_listen = 0.0.0.0
server_
novncproxy_base_url = http://
[workarounds]
[wsgi]
[xenserver]
[xvp]
[zvm]
Changed in oslo.config: | |
status: | New → Won't Fix |
tags: | added: config libvirt |
This looks valid to me. When someone tries to set None in the config file, the StrOpt appears to be unable to treat it as anything other than a string. So the true None will not match the string 'None'.
I see several other examples under nova/conf/ especially in nova/conf/ libvirt. py where a None choice is represented as 'none' likely for this reason.
We will need to change the current None choice to be 'none' and handle it accordingly in the code.