diff --git a/neutron/common/ovn/constants.py b/neutron/common/ovn/constants.py index c7b5726a22d..9cc5dfaef89 100644 --- a/neutron/common/ovn/constants.py +++ b/neutron/common/ovn/constants.py @@ -299,7 +299,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 cb2f5308057..29dafd92562 100644 --- a/neutron/common/ovn/utils.py +++ b/neutron/common/ovn/utils.py @@ -168,7 +168,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 1260ddf811e..e37eafcfa3e 100644 --- a/neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py +++ b/neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py @@ -193,6 +193,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 551c2bc05e0..bce8132691e 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 @@ -3415,6 +3415,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')