diff --git a/neutron/common/ovn/constants.py b/neutron/common/ovn/constants.py index 40b900654cc..06642799a9b 100644 --- a/neutron/common/ovn/constants.py +++ b/neutron/common/ovn/constants.py @@ -302,7 +302,9 @@ MCAST_FLOOD_UNREGISTERED = 'mcast_flood_unregistered' EXTERNAL_PORT_TYPES = (portbindings.VNIC_DIRECT, portbindings.VNIC_DIRECT_PHYSICAL, - portbindings.VNIC_MACVTAP) + portbindings.VNIC_MACVTAP, + portbindings.VNIC_BAREMETAL, + ) NEUTRON_AVAILABILITY_ZONES = 'neutron-availability-zones' OVN_CMS_OPTIONS = 'ovn-cms-options' diff --git a/neutron/common/ovn/utils.py b/neutron/common/ovn/utils.py index 023f1fad817..9a6e3eb5618 100644 --- a/neutron/common/ovn/utils.py +++ b/neutron/common/ovn/utils.py @@ -164,7 +164,12 @@ def get_lsp_dhcp_opts(port, ip_version): # in OVN. lsp_dhcp_disabled = False lsp_dhcp_opts = {} - if is_network_device_port(port): + vnic_type = port.get(portbindings.VNIC_TYPE, portbindings.VNIC_NORMAL) + + # NOTE(lucasagomes): Baremetal does not yet work with OVN's built-in + # DHCP server, disable it for now + if (is_network_device_port(port) or + vnic_type == portbindings.VNIC_BAREMETAL): lsp_dhcp_disabled = True else: mapping = constants.SUPPORTED_DHCP_OPTS_MAPPING[ip_version] diff --git a/neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py b/neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py index 3ef023709ba..7a4d197f437 100644 --- a/neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py +++ b/neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py @@ -197,6 +197,7 @@ class OVNMechanismDriver(api.MechanismDriver): portbindings.VNIC_DIRECT_PHYSICAL, portbindings.VNIC_MACVTAP, portbindings.VNIC_VHOST_VDPA, + portbindings.VNIC_BAREMETAL, ] self.vif_details = { portbindings.VIF_TYPE_OVS: { diff --git a/neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py b/neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py index d7b396b8775..d7f2aea348f 100644 --- a/neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py +++ b/neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py @@ -3539,6 +3539,10 @@ class TestOVNMechanismDriverSecurityGroup(MechDriverSetupBase, self._test_create_port_with_vnic_type( portbindings.VNIC_MACVTAP) + def test_create_port_with_vnic_baremetal(self): + self._test_create_port_with_vnic_type( + portbindings.VNIC_BAREMETAL) + def test_update_port_with_sgs(self): with self.network() as n, self.subnet(n): sg1 = self._create_empty_sg('sg1')