def get_single_enb_status( device_serial: str, state_machine_manager: StateMachineManager) -> SingleEnodebStatus: try: handler = state_machine_manager.get_handler_by_serial(device_serial) except KeyError: return _empty_enb_status() # This namedtuple is missing IP and serial info status = get_enb_status(handler) # Get IP info ip = state_machine_manager.get_ip_of_serial(device_serial) def get_status_property(status: bool) -> SingleEnodebStatus.StatusProperty: if status: return SingleEnodebStatus.StatusProperty.Value('ON') return SingleEnodebStatus.StatusProperty.Value('OFF') # Build the message to return through gRPC enb_status = SingleEnodebStatus() enb_status.device_serial = device_serial enb_status.ip_address = ip enb_status.connected = get_status_property(status.enodeb_connected) enb_status.configured = get_status_property(status.enodeb_configured) enb_status.opstate_enabled = get_status_property(status.opstate_enabled) enb_status.rf_tx_on = get_status_property(status.rf_tx_on) enb_status.rf_tx_desired = get_status_property(status.rf_tx_desired) enb_status.gps_connected = get_status_property(status.gps_connected) enb_status.ptp_connected = get_status_property(status.ptp_connected) enb_status.mme_connected = get_status_property(status.mme_connected) enb_status.gps_longitude = status.gps_longitude enb_status.gps_latitude = status.gps_latitude enb_status.fsm_state = status.fsm_state return enb_status
def get_operational_states(enb_acs_manager: StateMachineManager, mconfig: mconfigs_pb2.EnodebD) -> List[State]: """ Returns: A list of State with EnodebStatus encoded as JSON """ states = [] configured_serial_ids = [] enb_status_by_serial = get_all_enb_status(enb_acs_manager) for serial_id in enb_status_by_serial: enb_status_dict = enb_status_by_serial[serial_id]._asdict() enb_status_dict['ip_address'] = enb_acs_manager.get_ip_of_serial( serial_id) serialized = json.dumps(enb_status_dict) state = State(type="single_enodeb", deviceID=serial_id, value=serialized.encode('utf-8')) configured_serial_ids.append(serial_id) states.append(state) # Get S1 connected eNBs s1_states = get_enb_s1_connected_states(configured_serial_ids, mconfig) for state in s1_states: states.append(state) return states
def get_operational_states( enb_acs_manager: StateMachineManager, mconfig: mconfigs_pb2.EnodebD, print_grpc_payload: bool = False, ) -> List[State]: """ Returns: A list of State with EnodebStatus encoded as JSON """ states = [] configured_serial_ids = [] enb_status_by_serial = get_all_enb_status(enb_acs_manager) # Get S1 connected eNBs enb_statuses = get_all_enb_state(print_grpc_payload) for serial_id in enb_status_by_serial: enb_status_dict = enb_status_by_serial[serial_id]._asdict() # Add IP address to state enb_status_dict['ip_address'] = enb_acs_manager.get_ip_of_serial( serial_id, ) # Add num of UEs connected num_ue_connected = enb_statuses.get(enb_status_dict['cell_id'], 0) enb_status_dict['ues_connected'] = num_ue_connected serialized = json.dumps(enb_status_dict) state = State( type="single_enodeb", deviceID=serial_id, value=serialized.encode('utf-8'), ) configured_serial_ids.append(serial_id) states.append(state) # Get state for externally configured enodebs s1_states = get_enb_s1_connected_states( enb_statuses, configured_serial_ids, mconfig, ) states.extend(s1_states) return states