********** Verification for NOBLE (ubuntu) **********
##### Before enabling -proposed #####
# current installed package
ubuntu@rs-noble-caracal:~/regress-stack$ apt-cache policy neutron-server
neutron-server:
Installed: 2:24.1.0-0ubuntu1
Candidate: 2:24.1.0-0ubuntu1
Version table:
*** 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
# Changed the value of `ovn_dhcp4_global_options`
# to contain multiple values in the `ml2_conf.ini` file
sudo micro /etc/neutron/plugins/ml2/ml2_conf.ini
ovn_dhcp4_global_options = ntp_server:1.2.3.4,wpad:1.2.3.5;1.2.3.6
# Restart the neutron server
ubuntu@rs-noble-caracal:~$ sudo systemctl restart neutron-server
ubuntu@rs-noble-caracal:~$ sudo systemctl daemon-reload
# Create a new network and subnet
ubuntu@rs-noble-caracal:~$ openstack network create test-network
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2026-03-20T19:16:52Z |
| description | |
| dns_domain | |
| id | 758cf395-dabc-463a-8e1e-e9bc7956cffd |
| ipv4_address_scope | None |
| ipv6_address_scope | None |
| is_default | False |
| is_vlan_transparent | None |
| l2_adjacency | True |
| mtu | 1442 |
| name | test-network |
| port_security_enabled | True |
| project_id | d453b4c0b04e415eb7816336ac2a1c1a |
| provider:network_type | None |
| provider:physical_network | None |
| provider:segmentation_id | None |
| qos_policy_id | None |
| revision_number | 1 |
| router:external | Internal |
| segments | None |
| shared | False |
| status | ACTIVE |
| subnets | |
| tags | |
| tenant_id | d453b4c0b04e415eb7816336ac2a1c1a |
| updated_at | 2026-03-20T19:16:53Z |
+---------------------------+--------------------------------------+
ubuntu@rs-noble-caracal:~$ openstack subnet create --network test-network
--subnet-range 192.168.100.0/24 --dhcp test-subnet
+----------------------+--------------------------------------+
| Field | Value |
+----------------------+--------------------------------------+
| allocation_pools | 192.168.100.2-192.168.100.254 |
| cidr | 192.168.100.0/24 |
| created_at | 2026-03-20T19:17:13Z |
| description | |
| dns_nameservers | |
| dns_publish_fixed_ip | None |
| enable_dhcp | True |
| gateway_ip | 192.168.100.1 |
| host_routes | |
| id | 844ce809-d178-4eda-a2d4-b82b0efaeede |
| ip_version | 4 |
| ipv6_address_mode | None |
| ipv6_ra_mode | None |
| name | test-subnet |
| network_id | 758cf395-dabc-463a-8e1e-e9bc7956cffd |
| project_id | d453b4c0b04e415eb7816336ac2a1c1a |
| revision_number | 0 |
| segment_id | None |
| service_types | |
| subnetpool_id | None |
| tags | |
| updated_at | 2026-03-20T19:17:13Z |
+----------------------+--------------------------------------+
# See that multiple values are parsed incorrectly
ubuntu@rs-noble-caracal:~$ sudo ovn-nbctl list DHCP_Options
_uuid : d67464b9-5fb3-4434-b1ca-11d6ee4eb65f
cidr : "192.168.100.0/24"
external_ids : {"neutron:revision_number"="0",
subnet_id="844ce809-d178-4eda-a2d4-b82b0efaeede"}
options :
{classless_static_route="{169.254.169.254/32,192.168.100.2,
0.0.0.0/0,192.168.100.1}", dns_server="{127.0.0.53}", lease_time="600",
mtu="1442", ntp_server="1.2.3.4", router="192.168.100.1",
server_id="192.168.100.1", server_mac="fa:16:3e:16:5e:ae",
wpad="1.2.3.5;1.2.3.6"}
*** Note wpad="1.2.3.5;1.2.3.6" (semi-colon) is incorrect
# Delete the network and subnet
ubuntu@rs-noble-caracal:~$ openstack subnet delete test-subnet
ubuntu@rs-noble-caracal:~$ openstack network delete test-network
### Enabling -proposed #####
ubuntu@rs-noble-caracal:~$ sudo add-apt-repository "deb
http://archive.ubuntu.com/ubuntu/ noble-proposed main restricted
universe multiverse"
ubuntu@rs-noble-caracal:~$ sudo apt update
ubuntu@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@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
# Create a new network and subnet again
ubuntu@rs-noble-caracal:~$ openstack network create test-network
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2026-03-20T19:28:58Z |
| description | |
| dns_domain | |
| id | cebb2d47-966a-41e5-ba15-44bfbc1f007b |
| ipv4_address_scope | None |
| ipv6_address_scope | None |
| is_default | False |
| is_vlan_transparent | None |
| l2_adjacency | True |
| mtu | 1442 |
| name | test-network |
| port_security_enabled | True |
| project_id | d453b4c0b04e415eb7816336ac2a1c1a |
| provider:network_type | None |
| provider:physical_network | None |
| provider:segmentation_id | None |
| qos_policy_id | None |
| revision_number | 1 |
| router:external | Internal |
| segments | None |
| shared | False |
| status | ACTIVE |
| subnets | |
| tags | |
| tenant_id | d453b4c0b04e415eb7816336ac2a1c1a |
| updated_at | 2026-03-20T19:28:58Z |
+---------------------------+--------------------------------------+
ubuntu@rs-noble-caracal:~$ openstack subnet create --network test-network
--subnet-range 192.168.100.0/24 --dhcp test-subnet
+----------------------+--------------------------------------+
| Field | Value |
+----------------------+--------------------------------------+
| allocation_pools | 192.168.100.2-192.168.100.254 |
| cidr | 192.168.100.0/24 |
| created_at | 2026-03-20T19:29:08Z |
| description | |
| dns_nameservers | |
| dns_publish_fixed_ip | None |
| enable_dhcp | True |
| gateway_ip | 192.168.100.1 |
| host_routes | |
| id | dd8ca8c8-fe5d-4945-a4fc-66caaa100cd8 |
| ip_version | 4 |
| ipv6_address_mode | None |
| ipv6_ra_mode | None |
| name | test-subnet |
| network_id | cebb2d47-966a-41e5-ba15-44bfbc1f007b |
| project_id | d453b4c0b04e415eb7816336ac2a1c1a |
| revision_number | 0 |
| segment_id | None |
| service_types | |
| subnetpool_id | None |
| tags | |
| updated_at | 2026-03-20T19:29:08Z |
+----------------------+--------------------------------------+
# See that multiple values are parsed correctly
ubuntu@rs-noble-caracal:~$ sudo ovn-nbctl list DHCP_Options
_uuid : e8dc9498-22df-4b17-8c78-b426fa4f2691
cidr : "192.168.100.0/24"
external_ids : {"neutron:revision_number"="0",
subnet_id="dd8ca8c8-fe5d-4945-a4fc-66caaa100cd8"}
options :
{classless_static_route="{169.254.169.254/32,192.168.100.2,
0.0.0.0/0,192.168.100.1}", dns_server="{127.0.0.53}", lease_time="600",
mtu="1442", ntp_server="1.2.3.4", router="192.168.100.1",
server_id="192.168.100.1", server_mac="fa:16:3e:07:c3:15", wpad="{1.2.3.5,
1.2.3.6}"}
*** Note wpad="1.2.3.5,1.2.3.6" (comma) is now correct
# Checking neutron-server status is okay
ubuntu@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-03-20 15:28:45 EDT; 5min ago
Docs: man:neutron-server(1)
Main PID: 6420 (/usr/bin/python)
Tasks: 6 (limit: 19137)
Memory: 360.1M (peak: 360.8M)
CPU: 10.844s
CGroup: /system.slice/neutron-server.service
[...]
***********************************************
I confirm that neutron-server version 2:24.1.0-0ubuntu1.1
from noble-proposed fixes LP: #2126923 on Noble (ubuntu).
** Description changed:
[ 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`.
[ UPDATED 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
+ * [0] The following versions of Ubuntu-OpenStack will be tested
+ - UCA: jammy-caracal
+ - UCA: noble-dalmatian
+ - UCA: noble-epoxy
+ - UCA: noble-flamingo
+ - ubuntu: noble-caracal
+ - ubuntu: 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] Edit the `ml2_conf.ini` file and change `ovn_dhcp4_global_options` to
- contain multiple values like
- `ovn_dhcp4_global_options = ntp_server:1.2.3.4,wpad:1.2.3.5;1.2.3.6`
+ * [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
- * [3] Restart the neutron server after updating the `ml2_conf.ini` file
- Jammy/Noble: sudo systemctl restart neutron-server
- Questing: sudo systemctl restart neutron-rpc-server.service
+ * [2] Edit the `ml2_conf.ini` file and change `ovn_dhcp4_global_options` to
+ contain multiple values like
+ `ovn_dhcp4_global_options = ntp_server:1.2.3.4,wpad:1.2.3.5;1.2.3.6`
- * [4] Create a new network and a subnet on that network
- `openstack network create test-network`
- `openstack subnet create \
- --network test-network \
- --subnet-range 192.168.100.0/24 \
- --dhcp \
- test-subnet`
-
- * [5] Check to see that multiple values are parsed incorrectly in
- OVN Northbound database
- `sudo ovn-nbctl list DHCP_Options`
- Incorrect options will look like wpad="1.2.3.5;1.2.3.6"
- (with a semi-colon)
+ * [3] Restart the neutron server after updating the `ml2_conf.ini` file
+ Jammy/Noble: sudo systemctl restart neutron-server
+ Questing: sudo systemctl restart neutron-rpc-server.service
- * [6] Delete the network and subnet created
- `openstack subnet delete test-subnet`
- `openstack network delete test-network`
+ * [4] Create a new network and a subnet on that network
+ `openstack network create test-network`
+ `openstack subnet create \
+ --network test-network \
+ --subnet-range 192.168.100.0/24 \
+ --dhcp \
+ test-subnet`
- * [7] Apply the patch
+ * [5] Check to see that multiple values are parsed incorrectly in
+ OVN Northbound database
+ `sudo ovn-nbctl list DHCP_Options`
+ Incorrect options will look like wpad="1.2.3.5;1.2.3.6"
+ (with a semi-colon)
- * [8] Create a new network and subnet again
- (using same commands from step 4)
+ * [6] Delete the network and subnet created
+ `openstack subnet delete test-subnet`
+ `openstack network delete test-network`
- * [9] Check to see that multiple values are now parsed correctly in
- OVN Northbound database.
- Correct options will look like wpad="{1.2.3.5, 1.2.3.6}"
- (with a comma)
+ * [7] Apply the patch
- * [10] Check the status of the neutron server to make sure it is running.
- Jammy/Noble: sudo systemctl status neutron-server
- Questing: sudo systemctl status neutron-rpc-server.service
+ * [8] Create a new network and subnet again
+ (using same commands from step 4)
+
+ * [9] Check to see that multiple values are now parsed correctly in
+ OVN Northbound database.
+ Correct options will look like wpad="{1.2.3.5, 1.2.3.6}"
+ (with a comma)
+
+ * [10] Check the status of the neutron server to make sure it is running.
+ Jammy/Noble: sudo systemctl status neutron-server
+ Questing: sudo systemctl status neutron-rpc-server.service
[ 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\""
```
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2126923
Title:
ovn_dhcp4_global_options doesn't support keys with a list of values
To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-archive/+bug/2126923/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs