def __init__(self, bridge, test_vlans, trunk_iface, event_queue_append): self._ovs_helper = OvsHelper() self._logger = get_logger('device_discovery') self._bridge = bridge self._test_vlans = test_vlans self._polling_timer = None self._fdb_snapshot = None self._trunk_iface = trunk_iface self._trunk_ofport = None self._event_queue_append = event_queue_append
def _create_netns_with_veth_pair(self, index): ovs = OvsHelper() iface1 = 'dev%s' % index iface2 = 'netns0' vnet = 'vnet%s' % index ovs.create_veth_pair(iface1, iface2) ovs._run_shell('sudo ip netns add %s' % vnet) ovs._run_shell('sudo ip link set %s netns %s' % (iface2, vnet)) ovs._run_shell('sudo ip -n %s addr add 10.1.1.%s/24 dev %s' % (vnet, index, iface2)) ovs._run_shell('sudo ip -n %s link set %s up' % (vnet, iface2))
def __init__(self, target, tunnel_ip, ovs_bridge): self._logger = get_logger('daqclient') self._logger.info('Using target %s', target) self._channel = grpc.insecure_channel(target) self._stub = None self._mac_sessions = {} self._lock = threading.Lock() self._tunnel_ip = tunnel_ip self._endpoint_handler = OvsHelper() self._ovs_bridge = ovs_bridge # Assigned VLAN is always set to 0 for non-FOT DAQ Client self._assigned_vlan = 0
def setup(self): """Setup device coupler""" self._ovs_helper = OvsHelper() self._network_helper = NetworkHelper(self._trunk_iface, self._OVS_BRIDGE, self._test_vlans) self._network_helper.setup() self._event_queue = Queue() self._workers_executor = ThreadPoolExecutor( max_workers=self._WORKER_COUNT) self._device_discovery = DeviceDiscovery(self._OVS_BRIDGE, self._test_vlans, self._trunk_iface, self.add_event_to_queue) self._source_ip = self._ovs_helper.get_interface_ip() target_str = '%s:%s' % (self._daq_grpc_ip, self._daq_grpc_port) self._daq_client = DAQClient(target_str, self._source_ip, self._OVS_BRIDGE)
def test_ovs_bridge_vlan(self): """Test adding interfaces to OVS bridge with VLANs""" ovs = OvsHelper() bridge = 'test_br' ovs.delete_ovs_bridge(bridge) ovs.create_ovs_bridge(bridge) for index in range(1, 5): self._create_netns_with_veth_pair(index) iface = 'dev%s' % index tag = 200 + index % 2 ovs.add_iface_to_bridge(bridge, iface) ovs.set_native_vlan(iface, tag) retcode, _, _ = ovs._run_shell_no_raise( 'sudo ip netns exec vnet1 ping -c 3 10.1.1.3') self.assertEqual(retcode, 0) retcode, _, _ = ovs._run_shell_no_raise( 'sudo ip netns exec vnet1 ping -c 3 10.1.1.4') self.assertEqual(retcode, 1) for index in range(1, 5): vnet = 'vnet%s' % index self._delete_netns(vnet) ovs.delete_ovs_bridge(bridge)
def __init__(self, trunk_iface, bridge, test_vlans): self._ovs_helper = OvsHelper() self._logger = get_logger('networkhelper') self._trunk_iface = trunk_iface self._bridge = bridge self._test_vlans = list(range(test_vlans[0], test_vlans[1] + 1))
def _delete_netns(self, vnet): ovs = OvsHelper() ovs._run_shell('sudo ip netns del %s' % vnet)