def test_find_peer_trunk(self): bridger = net_br.NetworkBridgerTA(self.adpt, self.host_uuid) # No failover, shouldn't have a peer nbs = pvm_net.NetBridge.wrap(self.mgr_nbr_resp) resp = bridger._find_peer_trunk(nbs[0], nbs[0].seas[0].primary_adpt) self.assertIsNone(resp) # Failover, should have a peer nbs = pvm_net.NetBridge.wrap(self.mgr_nbr_fo_resp) resp = bridger._find_peer_trunk(nbs[0], nbs[0].seas[0].primary_adpt) self.assertEqual(nbs[0].seas[1].primary_adpt, resp)
def test_find_available_trunks_load_balance(self): """Tests finding the trunk with load balancing enabled.""" # Set load balancing to True nb = pvm_net.NetBridge.wrap(self.mgr_nbr_fo_resp)[0] nb.load_balance = True bridger = net_br.NetworkBridgerTA(self.adpt, self.host_uuid) # Even though there is a free VEA, it should come back as None. This # is because there is only one free VEA, but we need to balance across # two. trunks = bridger._find_available_trunks(nb) self.assertIsNone(trunks)
def test_remove_vlan_from_nb_lb(self): """Validates a load balance remove leaves an additional adpt.""" # Mock Data net_bridge = pvm_net.NetBridge.wrap(self.mgr_nbr_resp)[0] net_bridge.load_balance = True # Run the remove bridger = net_br.NetworkBridgerTA(self.adpt, self.host_uuid) bridger._remove_vlan_from_nb(net_bridge, 1000) # Validate that we left the trunk but no new additional VLANs self.assertEqual(1, len(net_bridge.seas[0].addl_adpts)) self.assertEqual(0, len(net_bridge.seas[0].addl_adpts[0].tagged_vlans))
def test_reassign_arbitrary_vid(self): nb = self._setup_reassign_arbitrary_vid() # Make this function return itself. def return_self(*kargs, **kwargs): nb_wrap = pvm_net.NetBridge.wrap(kargs[0].entry) self.assertEqual(4093, nb_wrap.seas[0].addl_adpts[0].pvid) return kargs[0].entry self.adpt.update_by_path.side_effect = return_self bridger = net_br.NetworkBridgerTA(self.adpt, self.host_uuid) bridger._reassign_arbitrary_vid(4094, 4093, nb) # Make sure the mocks were called. Only one update needed. self.assertEqual(1, self.adpt.update_by_path.call_count)
def test_find_available_min_trunk(self, mock_trunk_list): nb = mock.MagicMock() trunk_addl = mock.MagicMock() trunk_addl.tagged_vlans = ['a', 'b', 'c'] trunk_addl2 = mock.MagicMock() trunk_addl2.tagged_vlans = ['e', 'f'] trunk_addl3 = mock.MagicMock() trunk_addl3.tagged_vlans = ['g', 'h', 'i'] sea = mock.MagicMock() sea.addl_adpts = [trunk_addl, trunk_addl2, trunk_addl3] nb.seas = [sea] bridger = net_br.NetworkBridgerTA(self.adpt, self.host_uuid) bridger._find_available_trunks(nb) # Validate the trunk list is called with the second additional adapter mock_trunk_list.assert_called_with(nb, trunk_addl2)
def test_find_available_trunks(self): nb = pvm_net.NetBridge.wrap(self.mgr_nbr_resp)[0] bridger = net_br.NetworkBridgerTA(self.adpt, self.host_uuid) trunks = bridger._find_available_trunks(nb) self.assertIsNotNone(trunks)