Skip to content

root_controller_server_cli

drunc.grpc_testing_tools.root_controller_server_cli

Command-line interface for RootController gRPC Server

This module provides a standalone CLI for starting RootController servers. It handles argument parsing and delegates to the main server runner function.

Functions

main()

Main entry point for RootController server CLI.

Parses command-line arguments and starts the RootController server with the specified configuration parameters.

Source code in drunc/grpc_testing_tools/root_controller_server_cli.py
def main():
    """
    Main entry point for RootController server CLI.

    Parses command-line arguments and starts the RootController server
    with the specified configuration parameters.
    """
    parser = argparse.ArgumentParser(
        description="Start a RootController gRPC server",
        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
    )

    # Required arguments
    parser.add_argument(
        "--port",
        type=int,
        required=True,
        help="TCP port number for the RootController server to bind to",
    )
    parser.add_argument(
        "--workers",
        type=int,
        required=True,
        help="Maximum number of worker threads for the gRPC server",
    )
    parser.add_argument(
        "--log-file",
        required=True,
        help="Path to log file for server output and error messages",
    )
    parser.add_argument(
        "--manager-port",
        type=int,
        required=True,
        help="Port number of the Manager server to connect to",
    )

    args = parser.parse_args()

    try:
        print(f"Starting RootController on port {args.port}")
        print(f"Connecting to Manager on port {args.manager_port}")
        print(f"Logging to: {args.log_file}")

        # Start the RootController server with parsed arguments
        run_root_controller_server(
            controller_max_workers=args.workers,
            server_port=args.port,
            manager_port=args.manager_port,
            log_file=args.log_file,
        )

    except KeyboardInterrupt:
        print("\nRootController interrupted by user")
    except Exception as e:
        print(f"RootController failed: {e}", file=sys.stderr)
        sys.exit(1)