def get_process_state(self): """Get the states of processes""" with self._lock: return dict_proto(self._process_state, ProcessState)
def _process_device_placement(self, placement_tuple): self._faucetizer.process_device_placement( placement_tuple[0], dict_proto(placement_tuple[1], DevicePlacement), placement_tuple[2])
def _initialize_forchestrator(self): forch_config = dict_proto(yaml.safe_load(self.FORCH_CONFIG), ForchConfig) self._forchestrator = Forchestrator(forch_config)
def _initialize_state_collector(self): forch_config = dict_proto(yaml.safe_load(self.FORCH_CONFIG), ForchConfig) self._faucet_state_collector = FaucetStateCollector(forch_config, is_faucetizer_enabled=False)
def _process_device_behavior(self, behavior_tuple): self._faucetizer.process_device_behavior( behavior_tuple[0], dict_proto(behavior_tuple[1], DeviceBehavior), behavior_tuple[2])
def test_ports_states(self): """Test the port states with different signals""" static_device_behaviors = { '00:0X:00:00:00:01': {'segment': 'SEG_A', 'port_behavior': 'cleared'}, '00:0Y:00:00:00:02': {'port_behavior': 'cleared'} } authentication_results = { '00:0X:00:00:00:01': {'segment': 'SEG_X'}, '00:0Z:00:00:00:03': {'segment': 'SEG_C'}, '00:0A:00:00:00:04': {'segment': 'SEG_D'}, '00:0B:00:00:00:05': {'segment': 'SEG_E'} } testing_results = [ ('00:0X:00:00:00:01', 'failed'), ('00:0Y:00:00:00:02', 'passed'), ('00:0Z:00:00:00:03', 'failed'), ('00:0A:00:00:00:04', 'passed') ] unauthenticated_devices = ['00:0X:00:00:00:01', '00:0A:00:00:00:04'] expired_device_vlans = [ ('00:0B:00:00:00:05', 600), ('00:0B:00:00:00:05', 500), ] # load static device behaviors for mac, device_behavior_map in static_device_behaviors.items(): self._port_state_manager.handle_static_device_behavior( mac, dict_proto(device_behavior_map, DeviceBehavior)) # devices are authenticated for mac, device_behavior_map in authentication_results.items(): self._port_state_manager.handle_device_behavior( mac, dict_proto(device_behavior_map, DeviceBehavior)) expected_states = { '00:0X:00:00:00:01': self.OPERATIONAL, '00:0Z:00:00:00:03': self.SEQUESTERED, '00:0A:00:00:00:04': self.SEQUESTERED, '00:0B:00:00:00:05': self.SEQUESTERED } self._verify_ports_states(expected_states) expected_received_device_behaviors = [ ('00:0X:00:00:00:01', 'SEG_A', True), ('00:0X:00:00:00:01', 'SEG_A', True), ('00:0Z:00:00:00:03', 'TESTING', False), ('00:0A:00:00:00:04', 'TESTING', False), ('00:0B:00:00:00:05', 'TESTING', False) ] self._verify_received_device_behaviors(expected_received_device_behaviors) # received testing results for devices for testing_result in testing_results: self._port_state_manager.handle_testing_result( self._encapsulate_testing_result(*testing_result)) expected_states = { '00:0X:00:00:00:01': self.OPERATIONAL, '00:0Z:00:00:00:03': self.INFRACTED, '00:0A:00:00:00:04': self.OPERATIONAL, '00:0B:00:00:00:05': self.SEQUESTERED } self._verify_ports_states(expected_states) expected_received_device_behaviors.extend([('00:0A:00:00:00:04', 'SEG_D', False)]) self._verify_received_device_behaviors(expected_received_device_behaviors) # devices are unauthenticated for mac in unauthenticated_devices: self._port_state_manager.handle_device_behavior(mac, DeviceBehavior()) expected_states = { '00:0X:00:00:00:01': self.OPERATIONAL, '00:0Z:00:00:00:03': self.INFRACTED, '00:0B:00:00:00:05': self.SEQUESTERED } self._verify_ports_states(expected_states) expected_received_device_behaviors.extend([('00:0A:00:00:00:04', '', False)]) self._verify_received_device_behaviors(expected_received_device_behaviors) # devices are expired for expired_device_vlan in expired_device_vlans: mac = expired_device_vlan[0] expired_vlan = expired_device_vlan[1] self._port_state_manager.handle_device_placement( mac, DevicePlacement(switch='switch', port=1), False, expired_vlan) expired_received_device_placements = [('00:0B:00:00:00:05', False, False)] self._verify_received_device_placements(expired_received_device_placements)
def get_vrrp_state(self): """Get VRRP states""" with self._lock: return dict_proto(self._vrrp_state, VrrpState)