[Bug 2126923] Re: ovn_dhcp4_global_options doesn't support keys with a list of values

Leah Goldberg 2126923 at bugs.launchpad.net
Fri Feb 27 19:12:19 UTC 2026


***** Verification for NOBLE (LTS) *****

##### Before enabling -proposed #####

# current installed package

ubuntu at rs-noble-caracal:~$ apt-cache policy neutron-server
neutron-server:
  Installed: 2:24.1.0-0ubuntu1
  Candidate: 2:24.1.0-0ubuntu1
 *** 2:24.1.0-0ubuntu1 500
        500 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     2:24.0.0-0ubuntu1 500
        500 http://archive.ubuntu.com/ubuntu noble/main amd64 Packages

# checking status of neutron server and verifying it is active

ubuntu at rs-noble-caracal:~$ sudo systemctl status neutron-server
● neutron-server.service - OpenStack Neutron Server
     Loaded: loaded (/usr/lib/systemd/system/neutron-server.service; enabled; preset: enabled)
     Active: active (running) since Tue 2026-02-24 08:31:16 EST; 3 days ago
       Docs: man:neutron-server(1)
   Main PID: 62045 (/usr/bin/python)
      Tasks: 6 (limit: 19137)
     Memory: 361.4M (peak: 363.0M)
        CPU: 12min 28.012s
     CGroup: /system.slice/neutron-server.service
             ├─62045 "/usr/bin/python3 /usr/bin/neutron-server --config-file=/etc/neutron/neutron.conf --config-file=/etc/neutron/plugins/ml2/>
             ├─62357 "neutron-server: api worker (/usr/bin/python3 /usr/bin/neutron-server --config-file=/etc/neutron/neutron.conf --config-fi>
             ├─62360 "neutron-server: RpcWorker (/usr/bin/python3 /usr/bin/neutron-server --config-file=/etc/neutron/neutron.conf --config-fil>
             ├─62361 "neutron-server: RpcReportsWorker (/usr/bin/python3 /usr/bin/neutron-server --config-file=/etc/neutron/neutron.conf --con>
             ├─62362 "neutron-server: MaintenanceWorker (/usr/bin/python3 /usr/bin/neutron-server --config-file=/etc/neutron/neutron.conf --co>
             └─62363 "neutron-server: periodic worker (/usr/bin/python3 /usr/bin/neutron-server --config-file=/etc/neutron/neutron.conf --conf>

Feb 24 08:31:16 rs-noble-caracal systemd[1]: Started neutron-server.service - OpenStack Neutron Server.
Feb 24 08:31:16 rs-noble-caracal neutron-server[62045]: 2 RLock(s) were not greened, to fix this error make sure you run eventlet.monkey_patch>

# Editing the `ml2_conf.ini` file

sudo micro /etc/neutron/plugins/ml2/ml2_conf.ini

# Changed the value of `ovn_dhcp4_global_options` to contain multiple
values

ovn_dhcp4_global_options = foo.bar,baz.qux

# Stop and start the neutron server

ubuntu at rs-noble-caracal:~$ sudo systemctl stop neutron-server
ubuntu at rs-noble-caracal:~$ sudo systemctl start neutron-server

# Check the status and see the neutron server is dead

ubuntu at rs-noble-caracal:~$ sudo systemctl status neutron-server
○ neutron-server.service - OpenStack Neutron Server
     Loaded: loaded (/usr/lib/systemd/system/neutron-server.service; enabled; preset: enabled)
     Active: inactive (dead) since Fri 2026-02-27 10:49:50 EST; 29s ago
   Duration: 4.645s
       Docs: man:neutron-server(1)
    Process: 226577 ExecStart=/etc/init.d/neutron-server systemd-start (code=exited, status=0/SUCCESS)
   Main PID: 226577 (code=exited, status=0/SUCCESS)
        CPU: 5.238s

Feb 27 10:49:40 rs-noble-caracal systemd[1]: Started neutron-server.service - OpenStack Neutron Server.
Feb 27 10:49:41 rs-noble-caracal neutron-server[226577]: 2 RLock(s) were not greened, to fix this error make sure you run eventlet.monkey_patch() >
Feb 27 10:49:50 rs-noble-caracal systemd[1]: neutron-server.service: Deactivated successfully.
Feb 27 10:49:50 rs-noble-caracal systemd[1]: neutron-server.service: Consumed 5.238s CPU time, 1.8M memory peak, 0B memory swap peak.

##### Enabling -proposed #####

ubuntu at rs-noble-caracal:~$ sudo add-apt-repository "deb
http://archive.ubuntu.com/ubuntu/ noble-proposed main restricted
universe multiverse"

ubuntu at rs-noble-caracal:~$ sudo apt update

ubuntu at rs-noble-caracal:~$ sudo apt install -y \
    neutron-server=2:24.1.0-0ubuntu1.1 \
    neutron-common=2:24.1.0-0ubuntu1.1 \
    neutron-plugin-ml2=2:24.1.0-0ubuntu1.1 \
    python3-neutron=2:24.1.0-0ubuntu1.1

##### After enabling -proposed #####

# installed package

ubuntu at rs-noble-caracal:~$ apt-cache policy neutron-server
neutron-server:
  Installed: 2:24.1.0-0ubuntu1.1
  Candidate: 2:24.1.0-0ubuntu1.1
  Version table:
 *** 2:24.1.0-0ubuntu1.1 100
        100 http://archive.ubuntu.com/ubuntu noble-proposed/main amd64 Packages
        100 /var/lib/dpkg/status
     2:24.1.0-0ubuntu1 500
        500 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages
     2:24.0.0-0ubuntu1 500
        500 http://archive.ubuntu.com/ubuntu noble/main amd64 Packages

# Changed the value of `ovn_dhcp4_global_options` to contain multiple values
# again since the upgrade reset the state of the `ml2_conf.ini` file

ovn_dhcp4_global_options = foo.bar,baz.qux

# stopping, starting, and viewing status of neutron server

ubuntu at rs-noble-caracal:~$ sudo systemctl stop neutron-server
ubuntu at rs-noble-caracal:~$ sudo systemctl start neutron-server
ubuntu at rs-noble-caracal:~$ sudo systemctl status neutron-server
● neutron-server.service - OpenStack Neutron Server
     Loaded: loaded (/usr/lib/systemd/system/neutron-server.service; enabled; preset: enabled)
     Active: active (running) since Fri 2026-02-27 11:31:54 EST; 2s ago
       Docs: man:neutron-server(1)
   Main PID: 233031 (neutron-server)
      Tasks: 1 (limit: 19137)
     Memory: 131.6M (peak: 131.8M)
        CPU: 2.795s
     CGroup: /system.slice/neutron-server.service
             └─233031 /usr/bin/python3 /usr/bin/neutron-server --config-file=/etc/neutron/neutron.conf --config-file=/etc/neutron/plugins/ml2/ml2_>

Feb 27 11:31:54 rs-noble-caracal systemd[1]: Started neutron-server.service - OpenStack Neutron Server.
Feb 27 11:31:54 rs-noble-caracal neutron-server[233031]: 2 RLock(s) were not greened, to fix this error make sure you run eventlet.monkey_patch() >

***********************************************

I confirm that neutron-server version 2:24.1.0-0ubuntu1.1 from noble-
proposed fixes LP: #2126923 on Noble (LTS). Verified by reproducing the
failure with multiple values in ovn_dhcp4_global_options on
2:24.1.0-0ubuntu1, then confirming neutron-server starts successfully
with the same configuration after upgrading to 2:24.1.0-0ubuntu1.1.

** Tags removed: verification-needed-noble
** Tags added: verification-done-noble

-- 
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to Ubuntu Cloud Archive.
https://bugs.launchpad.net/bugs/2126923

Title:
  ovn_dhcp4_global_options doesn't support keys with a list of values

Status in Ubuntu Cloud Archive:
  In Progress
Status in Ubuntu Cloud Archive caracal series:
  In Progress
Status in Ubuntu Cloud Archive dalmatian series:
  In Progress
Status in Ubuntu Cloud Archive epoxy series:
  In Progress
Status in Ubuntu Cloud Archive flamingo series:
  In Progress
Status in neutron:
  Fix Released
Status in neutron package in Ubuntu:
  Fix Committed
Status in neutron source package in Noble:
  Fix Committed
Status in neutron source package in Questing:
  Fix Committed

Bug description:
  [ Impact ]

   * The Neutron configuration option `ovn_dhcp4_global_options` does not 
     correctly support multiple values for DHCP keys. When multiple values are 
     specified the neutron-server fails while parsing the configuration and does
     not start.

   * Backporting this fix would allow users to list multiple values in the 
     `ovn_dhcp4_global_options` without requiring configuration workarounds.

   * The uploaded fix allows the config file, `ml2_conf.ini`, to correctly handle 
     multiple values in `ovn_dhcp4_global_options`.

  [ Test Plan ]

   * [0] The following versions of Ubuntu-OpenStack will be tested
         - UCA: jammy-caracal
         - UCA: noble-dalmatian
         - UCA: noble-epoxy
         - UCA: noble-flamingo
         - LTS: noble-caracal
         - LTS: questing-flamingo

   * [1] Deploy an OpenStack environment on the target series using regress-stack
         in a multipass VM. 
         
         For Jammy/Noble, it can be set up following the instructions on the 
         regress-stack README.md. 
         
         For Questing, follow these instructions:
         https://github.com/canonical/se-wiki/wiki/Regress-Stack-How-to
   
   * [2] Check the status of the neutron server to see that it is active/running
         Jammy/Noble: sudo systemctl status neutron-server
         Questing: sudo systemctl status neutron-rpc-server.service
   
   * [3] Edit the `ml2_conf.ini` file and change `ovn_dhcp4_global_options` to
         contain multiple values like `ovn_dhcp4_global_options = foo.bar;baz.qux`
   
   * [4] Stop the neutron-server
         Jammy/Noble: sudo systemctl stop neutron-server
         Questing: sudo systemctl stop neutron-rpc-server.service

   * [5] Start the neutron-server and watch it fail to start
         Jammy/Noble: sudo systemctl start neutron-server
         Questing: sudo systemctl start neutron-rpc-server.service

   * [6] Apply the patch.
     
   * [7] Stop, start, and check status of neutron-server again.
         Before the patch, it will not start correctly. 
         After the patch, it should start correctly.

  [ Where problems could occur ]

   * This change modifies how `ovn_dhcp4_global_options` options are parsed. A
     regression could possibly cause a failure to apply DHCP options all together
     due to an incorrect formatting in options sent to OVN.

  [ Other Info ]

   * Upstream commit to neutron (master): 
     https://review.opendev.org/c/openstack/neutron/+/963944 

  ===========================================================

  [ Original Bug Description ]

  
  When using `ovn_dhcp4_global_options` under `[ovn]` in `ml2_conf.ini` it will cause `neutron server` to crash when attempting to parse the configuration if a key provided contains a list seperated by commas.

  For example if setting `domain_search_list` with more than one domain.

  ```
  [ovn]
  ovn_dhcp4_global_options = domain_search_list:foo.bar,baz.qux
  ```

  Expected output would be that `neutron server` doesn't crash when
  attempting to parse such configuration and correctly applies these
  options within `OVN`.

  Experienced within OpenStack Epoxy.

  Not currently blocking anything as it is possible to patch
  `_get_ovn_dhcpv4_opts` in
  `neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py` with
  the following

  ```
  options['domain_search_list'] = "\"foo.bar,baz.qux\""
  ```

To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-archive/+bug/2126923/+subscriptions




More information about the Ubuntu-openstack-bugs mailing list