Merge "Refactor mlnx mechanism driver to support infiniband only"
This commit is contained in:
commit
ca3cdaaa47
@ -59,14 +59,14 @@ VIF_TYPE_802_QBG = '802.1qbg'
|
||||
VIF_TYPE_802_QBH = '802.1qbh'
|
||||
VIF_TYPE_HYPERV = 'hyperv'
|
||||
VIF_TYPE_MIDONET = 'midonet'
|
||||
VIF_TYPE_MLNX_HOSTDEV = 'hostdev'
|
||||
VIF_TYPE_IB_HOSTDEV = 'ib_hostdev'
|
||||
VIF_TYPE_HW_VEB = 'hw_veb'
|
||||
VIF_TYPE_VROUTER = 'vrouter'
|
||||
VIF_TYPE_OTHER = 'other'
|
||||
VIF_TYPES = [VIF_TYPE_UNBOUND, VIF_TYPE_BINDING_FAILED, VIF_TYPE_OVS,
|
||||
VIF_TYPE_IVS, VIF_TYPE_BRIDGE, VIF_TYPE_802_QBG,
|
||||
VIF_TYPE_802_QBH, VIF_TYPE_HYPERV, VIF_TYPE_MIDONET,
|
||||
VIF_TYPE_MLNX_HOSTDEV, VIF_TYPE_HW_VEB,
|
||||
VIF_TYPE_IB_HOSTDEV, VIF_TYPE_HW_VEB,
|
||||
VIF_TYPE_DVS, VIF_TYPE_OTHER, VIF_TYPE_DISTRIBUTED,
|
||||
VIF_TYPE_VROUTER]
|
||||
|
||||
|
@ -36,18 +36,11 @@ class MlnxMechanismDriver(mech_agent.SimpleAgentMechanismDriverBase):
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
# REVISIT(irenab): update supported_vnic_types to contain
|
||||
# only VNIC_DIRECT once its possible to specify
|
||||
# vnic_type via nova API/GUI. Currently VNIC_NORMAL is included
|
||||
# to enable VM creation via GUI. It should be noted, that if
|
||||
# several MDs are capable to bring bind port on chosen host, the
|
||||
# first listed MD will bind the port for VNIC_NORMAL
|
||||
super(MlnxMechanismDriver, self).__init__(
|
||||
agent_type=n_const.AGENT_TYPE_MLNX,
|
||||
vif_type=portbindings.VIF_TYPE_MLNX_HOSTDEV,
|
||||
vif_type=portbindings.VIF_TYPE_IB_HOSTDEV,
|
||||
vif_details={portbindings.CAP_PORT_FILTER: False},
|
||||
supported_vnic_types=[portbindings.VNIC_DIRECT,
|
||||
portbindings.VNIC_NORMAL])
|
||||
supported_vnic_types=[portbindings.VNIC_DIRECT])
|
||||
|
||||
def get_allowed_network_types(self, agent=None):
|
||||
return [p_constants.TYPE_LOCAL, p_constants.TYPE_FLAT,
|
||||
|
@ -162,6 +162,7 @@ class AgentMechanismBaseTestCase(base.BaseTestCase):
|
||||
AGENTS = None
|
||||
AGENTS_DEAD = None
|
||||
AGENTS_BAD = None
|
||||
VNIC_TYPE = portbindings.VNIC_NORMAL
|
||||
|
||||
def _check_unbound(self, context):
|
||||
self.assertIsNone(context._bound_segment_id)
|
||||
@ -193,7 +194,8 @@ class AgentMechanismGenericTestCase(AgentMechanismBaseTestCase):
|
||||
def test_unknown_type(self):
|
||||
context = FakePortContext(self.AGENT_TYPE,
|
||||
self.AGENTS,
|
||||
self.UNKNOWN_TYPE_SEGMENTS)
|
||||
self.UNKNOWN_TYPE_SEGMENTS,
|
||||
vnic_type=self.VNIC_TYPE)
|
||||
self.driver.bind_port(context)
|
||||
self._check_unbound(context)
|
||||
|
||||
@ -207,14 +209,16 @@ class AgentMechanismLocalTestCase(AgentMechanismBaseTestCase):
|
||||
def test_type_local(self):
|
||||
context = FakePortContext(self.AGENT_TYPE,
|
||||
self.AGENTS,
|
||||
self.LOCAL_SEGMENTS)
|
||||
self.LOCAL_SEGMENTS,
|
||||
vnic_type=self.VNIC_TYPE)
|
||||
self.driver.bind_port(context)
|
||||
self._check_bound(context, self.LOCAL_SEGMENTS[1])
|
||||
|
||||
def test_type_local_dead(self):
|
||||
context = FakePortContext(self.AGENT_TYPE,
|
||||
self.AGENTS_DEAD,
|
||||
self.LOCAL_SEGMENTS)
|
||||
self.LOCAL_SEGMENTS,
|
||||
vnic_type=self.VNIC_TYPE)
|
||||
self.driver.bind_port(context)
|
||||
self._check_unbound(context)
|
||||
|
||||
@ -229,14 +233,16 @@ class AgentMechanismFlatTestCase(AgentMechanismBaseTestCase):
|
||||
def test_type_flat(self):
|
||||
context = FakePortContext(self.AGENT_TYPE,
|
||||
self.AGENTS,
|
||||
self.FLAT_SEGMENTS)
|
||||
self.FLAT_SEGMENTS,
|
||||
vnic_type=self.VNIC_TYPE)
|
||||
self.driver.bind_port(context)
|
||||
self._check_bound(context, self.FLAT_SEGMENTS[1])
|
||||
|
||||
def test_type_flat_bad(self):
|
||||
context = FakePortContext(self.AGENT_TYPE,
|
||||
self.AGENTS_BAD,
|
||||
self.FLAT_SEGMENTS)
|
||||
self.FLAT_SEGMENTS,
|
||||
vnic_type=self.VNIC_TYPE)
|
||||
self.driver.bind_port(context)
|
||||
self._check_unbound(context)
|
||||
|
||||
@ -252,14 +258,16 @@ class AgentMechanismVlanTestCase(AgentMechanismBaseTestCase):
|
||||
def test_type_vlan(self):
|
||||
context = FakePortContext(self.AGENT_TYPE,
|
||||
self.AGENTS,
|
||||
self.VLAN_SEGMENTS)
|
||||
self.VLAN_SEGMENTS,
|
||||
vnic_type=self.VNIC_TYPE)
|
||||
self.driver.bind_port(context)
|
||||
self._check_bound(context, self.VLAN_SEGMENTS[1])
|
||||
|
||||
def test_type_vlan_bad(self):
|
||||
context = FakePortContext(self.AGENT_TYPE,
|
||||
self.AGENTS_BAD,
|
||||
self.VLAN_SEGMENTS)
|
||||
self.VLAN_SEGMENTS,
|
||||
vnic_type=self.VNIC_TYPE)
|
||||
self.driver.bind_port(context)
|
||||
self._check_unbound(context)
|
||||
|
||||
|
@ -33,9 +33,10 @@ with mock.patch.dict(sys.modules,
|
||||
|
||||
|
||||
class MlnxMechanismBaseTestCase(base.AgentMechanismBaseTestCase):
|
||||
VIF_TYPE = portbindings.VIF_TYPE_MLNX_HOSTDEV
|
||||
VIF_TYPE = portbindings.VIF_TYPE_IB_HOSTDEV
|
||||
CAP_PORT_FILTER = False
|
||||
AGENT_TYPE = constants.AGENT_TYPE_MLNX
|
||||
VNIC_TYPE = portbindings.VNIC_DIRECT
|
||||
|
||||
GOOD_MAPPINGS = {'fake_physical_network': 'fake_bridge'}
|
||||
GOOD_CONFIGS = {'interface_mappings': GOOD_MAPPINGS}
|
||||
@ -77,25 +78,9 @@ class MlnxMechanismFlatTestCase(MlnxMechanismBaseTestCase,
|
||||
pass
|
||||
|
||||
|
||||
class MlnxMechanismVnicTypeTestCase(MlnxMechanismBaseTestCase,
|
||||
base.AgentMechanismVlanTestCase):
|
||||
|
||||
def _check_vif_type_for_vnic_type(self, vnic_type,
|
||||
expected_vif_type):
|
||||
context = base.FakePortContext(self.AGENT_TYPE,
|
||||
self.AGENTS,
|
||||
self.VLAN_SEGMENTS,
|
||||
vnic_type)
|
||||
self.driver.bind_port(context)
|
||||
self.assertEqual(expected_vif_type, context._bound_vif_type)
|
||||
|
||||
def test_vnic_type_direct(self):
|
||||
self._check_vif_type_for_vnic_type(portbindings.VNIC_DIRECT,
|
||||
portbindings.VIF_TYPE_MLNX_HOSTDEV)
|
||||
|
||||
def test_vnic_type_normal(self):
|
||||
self._check_vif_type_for_vnic_type(portbindings.VNIC_NORMAL,
|
||||
self.VIF_TYPE)
|
||||
class MlnxMechanismVlanTestCase(MlnxMechanismBaseTestCase,
|
||||
base.AgentMechanismVlanTestCase):
|
||||
pass
|
||||
|
||||
|
||||
class MlnxMechanismVifDetailsTestCase(MlnxMechanismBaseTestCase):
|
||||
|
Loading…
Reference in New Issue
Block a user