コード例 #1
0
def main():
    """
    Top-level function for enodebd
    """
    service = MagmaService('enodebd', mconfigs_pb2.EnodebD())
    logger.init()

    # Optionally pipe errors to Sentry
    sentry_init(service_name=service.name,
                sentry_mconfig=service.shared_mconfig.sentry_config)

    # State machine manager for tracking multiple connected eNB devices.
    state_machine_manager = StateMachineManager(service)

    # Statistics manager
    stats_mgr = StatsManager(state_machine_manager)
    stats_mgr.run()

    # Start TR-069 thread
    server_thread = Thread(
        target=tr069_server,
        args=(state_machine_manager, ),
        daemon=True,
    )
    server_thread.start()

    print_grpc_payload = service.config.get('print_grpc_payload', False)

    # Add all servicers to the server
    enodebd_servicer = EnodebdRpcServicer(
        state_machine_manager,
        print_grpc_payload,
    )
    enodebd_servicer.add_to_server(service.rpc_server)

    # Register function to get service status
    def get_enodebd_status():
        return get_service_status_old(state_machine_manager)

    service.register_get_status_callback(get_enodebd_status)

    # Register a callback function for GetOperationalStates service303 function
    def get_enodeb_operational_states() -> List[State]:
        return get_operational_states(
            state_machine_manager,
            service.mconfig,
            print_grpc_payload,
        )

    service.register_operational_states_callback(get_enodeb_operational_states)

    # Set eNodeBD iptables rules due to exposing public IP to eNodeB
    service.loop.create_task(set_enodebd_iptables_rule())

    # Run the service loop
    service.run()

    # Cleanup the service
    service.close()
コード例 #2
0
def main():
    """
    Main co-routine for linkstatsd
    :return: None
    """
    parser = create_parser()
    args = parser.parse_args()

    # set up logging
    logging.basicConfig(
        level=logging.DEBUG if args.verbose else logging.INFO,
        format=
        "[%(asctime)s %(levelname)s %(filename)s:%(lineno)d] %(message)s",
    )

    # Get service config
    service = MagmaService("linkstatsd", wifi_mconfigs_pb2.Linkstatsd())

    # Create stats collector
    collector = LinkstatsCollector(service.loop, service.config,
                                   service.mconfig)

    # Create network state manager
    state_mgr = NetworkStateManager(service.loop, service.config,
                                    service.mconfig)

    # Start state manager's state-updating loop
    state_mgr.start()

    # Register callback function to sync state with the cloud
    service.register_get_status_callback(state_mgr.get_state)

    # Start collector loop
    collector.start_collector()

    if SDWatchdog.has_notify():
        # Create systemd watchdog
        sdwatchdog = SDWatchdog([collector, state_mgr], update_status=True)
        # Start watchdog loop
        service.loop.create_task(sdwatchdog.run())

    # Run the service loop
    service.run()

    # Cleanup the service
    service.close()
コード例 #3
0
def main():
    """
    Top-level function for enodebd
    """
    service = MagmaService('enodebd')

    # State machine manager for tracking multiple connected eNB devices.
    state_machine_manager = StateMachineManager(service)

    # Statistics manager
    stats_mgr = StatsManager(state_machine_manager)
    stats_mgr.run()

    # Start TR-069 thread
    server_thread = Thread(target=tr069_server,
                           args=(state_machine_manager, ),
                           daemon=True)
    server_thread.start()

    # Add all servicers to the server
    enodebd_servicer = EnodebdRpcServicer(state_machine_manager)
    enodebd_servicer.add_to_server(service.rpc_server)

    # Register function to get service status
    def get_enodebd_status():
        return get_service_status_old(state_machine_manager)

    service.register_get_status_callback(get_enodebd_status)

    # Register a callback function for GetOperationalStates service303 function
    def get_enodeb_operational_states() -> List[State]:
        return get_operational_states(state_machine_manager)

    service.register_operational_states_callback(get_enodeb_operational_states)

    # Set eNodeBD iptables rules due to exposing public IP to eNodeB
    service.loop.create_task(set_enodebd_iptables_rule())

    # Run the service loop
    service.run()

    # Cleanup the service
    service.close()
コード例 #4
0
def main():
    """
    Top-level function for enodebd
    """
    service = MagmaService('enodebd')

    # Statistics manager
    stats_mgr = StatsManager()
    stats_mgr.run()

    # We incorrectly assume that we are dealing with a Baicells device here.
    # When this assumption is invalidated (after the device reports its
    # make and model, then we recreate a new handler to use
    acs_state_machine = BaicellsHandler(service, stats_mgr)
    state_machine_pointer = StateMachinePointer(acs_state_machine)

    # Start TR-069 thread
    server_thread = Thread(target=tr069_server,
                           args=(state_machine_pointer, ),
                           daemon=True)
    server_thread.start()

    # Add all servicers to the server
    enodebd_servicer = EnodebdRpcServicer(state_machine_pointer)
    enodebd_servicer.add_to_server(service.rpc_server)

    # Register function to get service status
    def get_status():
        return get_enodeb_status(state_machine_pointer.state_machine)

    service.register_get_status_callback(get_status)

    # Set eNodeBD iptables rules due to exposing public IP to eNodeB
    service.loop.create_task(set_enodebd_iptables_rule())

    # Run the service loop
    service.run()

    # Cleanup the service
    service.close()