Copied from https://bugs.launchpad.net/neutron/+bug/1938575 ----------------------------------------------------------- The SetPort class from the openstack client does not support --extra-dhcp-option [1] (overcloud) $ openstack port set --extra-dhcp-option name=mtu,value=1700,ip-version=4 port-test-202 usage: openstack port set [-h] [--description <description>] [--device <device-id>] [--mac-address <mac-address>] [--device-owner <device-owner>] [--vnic-type <vnic-type>] [--host <host-id>] [--dns-domain dns-domain] [--dns-name <dns-name>] [--enable | --disable] [--name <name>] [--fixed-ip subnet=<subnet>,ip-address=<ip-address>] [--no-fixed-ip] [--binding-profile <binding-profile>] [--no-binding-profile] [--qos-policy <qos-policy>] [--security-group <security-group>] [--no-security-group] [--enable-port-security | --disable-port-security] [--allowed-address ip-address=<ip-address>[,mac-address=<mac-address>]] [--no-allowed-address] [--data-plane-status <status>] [--tag <tag>] [--no-tag] <port> openstack port set: error: unrecognized arguments: --extra-dhcp-option port-test-202 The UpdatePort class from the neutron client supports --extra-dhcp-opt [2] This is aligned with the neutron API [3] (overcloud) $ neutron port-update port-test-202 --extra-dhcp-opt opt_name=mtu,opt_value=1750,ip_version=4 neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead. Updated port: port-test-202 (overcloud) $ neutron port-show port-test-202 | grep mtu neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead. | | {"opt_name": "mtu", "opt_value": "1750", "ip_version": 4} | [1] https://opendev.org/openstack/python-openstackclient/src/commit/ed87f7949ef1ef580ed71b9820e16823c0466472/openstackclient/network/v2/port.py#L703 [2] https://github.com/openstack/python-neutronclient/blob/2f047b15957308e84dcb72baee3415b8bf5a470a/neutronclient/neutron/v2_0/port.py#L305 [3] https://docs.openstack.org/api-ref/network/v2/?expanded=update-port-detail#update-port
Verified on `RHOS-16.2-RHEL-8-20230926.n.1`. RPM: rpm -qa | grep openstackclient python3-openstackclient-4.0.2-2.20230404115110.54bf2c0.el8ost.noarch ``` openstack --os-cloud overcloud port set usage: openstack port set [-h] [--description <description>] [--device <device-id>] [--mac-address <mac-address>] [--device-owner <device-owner>] [--vnic-type <vnic-type>] [--host <host-id>] [--dns-domain dns-domain] [--dns-name <dns-name>] [--enable | --disable] [--name <name>] [--fixed-ip subnet=<subnet>,ip-address=<ip-address>] [--no-fixed-ip] [--binding-profile <binding-profile>] [--no-binding-profile] [--qos-policy <qos-policy>] [--security-group <security-group>] [--no-security-group] [--enable-port-security | --disable-port-security] [--allowed-address ip-address=<ip-address>[,mac-address=<mac-address>]] [--no-allowed-address] [--extra-dhcp-option name=<name>[,value=<value>,ip-version={4,6}]] [--data-plane-status <status>] [--tag <tag>] [--no-tag] <port> ```
Forgot to mention that it also works: ``` overcloud) [stack@undercloud-0 tempest]$ openstack port set --extra-dhcp-option name=domain-name,value=fistro.com port (overcloud) [stack@undercloud-0 tempest]$ openstack port show port -c extra_dhcp_opts +-----------------+----------------------------------------------------------------+ | Field | Value | +-----------------+----------------------------------------------------------------+ | extra_dhcp_opts | ip_version='4', opt_name='domain-name', opt_value='fistro.com' | +-----------------+----------------------------------------------------------------+ ```