Merge "Refactor mlnx mechanism driver to support infiniband only"

This commit is contained in:
Jenkins 2015-06-07 18:47:57 +00:00 committed by Gerrit Code Review
commit ca3cdaaa47
4 changed files with 24 additions and 38 deletions

View File

@ -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]

View File

@ -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,

View File

@ -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)

View File

@ -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):