def main()

in modules/python/clusterloader2/network-load/network_load.py [0:0]


def main():
    parser = argparse.ArgumentParser(description="network-load test")
    subparsers = parser.add_subparsers(dest="command")

    # Sub-command for configure_clusterloader2
    parser_configure = subparsers.add_parser("configure", help="Override CL2 config file")
    parser_configure.add_argument("--cl2-override-file", type=str, required=True, help="Path to the overrides of CL2 config file")
    parser_configure.add_argument("--operation-timeout", type=str, required=True, help="Timeout before failing the scale up test")
    parser_configure.add_argument("--provider", type=str, required=True, help="Cloud provider name")
    parser_configure.add_argument("--deployment-recreation-count", type=int, required=True, help="Number of times to recreate deployments")
    parser_configure.add_argument("--cpu-per-node", type=int, required=True, help="CPU per node")
    parser_configure.add_argument("--node-count", type=int, required=True, help="Number of nodes")
    parser_configure.add_argument("--fortio-servers-per-node", type=int, required=True, help="Number of Fortio servers per node")
    parser_configure.add_argument("--fortio-clients-per-node", type=int, required=True, help="Number of Fortio clients per node")
    parser_configure.add_argument("--fortio-client-queries-per-second", type=int, required=True, help="Queries per second for each Fortio client pod. NOT queries per second per connection")
    parser_configure.add_argument("--fortio-client-connections", type=int, required=True, help="Number of simultaneous connections for each Fortio client")
    parser_configure.add_argument("--fortio-namespaces", type=int, required=True, help="Number of namespaces, each with their own service. Fortio clients query servers in the same namespace. Be weary of integer division causing less pods than expected regarding this parameter, pods, and pods per node.")
    parser_configure.add_argument("--fortio-deployments-per-namespace", type=int, required=True, help="Number of Fortio server deployments (and number of client deployments) per service/partition. Be weary of integer division causing less pods than expected regarding this parameter, namespaces, pods, and pods per node.")
    parser_configure.add_argument("--apply-fqdn-cnp", type=str2bool, choices=[True, False], default=False, help="Apply CNP that will generate DNS metrics")

    # Sub-command for execute_clusterloader2
    parser_execute = subparsers.add_parser("execute", help="Execute scale up operation")
    parser_execute.add_argument("--cl2-image", type=str, required=True, help="Name of the CL2 image")
    parser_execute.add_argument("--cl2-config-dir", type=str, required=True, help="Path to the CL2 config directory")
    parser_execute.add_argument("--cl2-report-dir", type=str, required=True, help="Path to the CL2 report directory")
    parser_execute.add_argument("--cl2-config-file", type=str, required=True, help="Path to the CL2 config file")
    parser_execute.add_argument("--kubeconfig", type=str, required=True, help="Path to the kubeconfig file")
    parser_execute.add_argument("--provider", type=str, required=True, help="Cloud provider name")

    # Sub-command for collect_clusterloader2
    parser_collect = subparsers.add_parser("collect", help="Collect scale up data")
    parser_collect.add_argument("--cl2-report-dir", type=str, required=True, help="Path to the CL2 report directory")
    parser_collect.add_argument("--cloud-info", type=str, required=True, help="Cloud information")
    parser_collect.add_argument("--run-id", type=str, required=True, help="Run ID")
    parser_collect.add_argument("--run-url", type=str, required=True, help="Run URL")
    parser_collect.add_argument("--result-file", type=str, required=True, help="Path to the result file")
    parser_collect.add_argument("--test-type", type=str, default="default-config", help="Description of test type")
    parser_collect.add_argument("--deployment-recreation-count", type=int, required=True, help="Number of times to recreate deployments")
    parser_collect.add_argument("--cpu-per-node", type=int, required=True, help="CPU per node")
    parser_collect.add_argument("--node-count", type=int, required=True, help="Number of nodes")
    parser_collect.add_argument("--fortio-servers-per-node", type=int, required=True, help="Number of Fortio servers per node")
    parser_collect.add_argument("--fortio-clients-per-node", type=int, required=True, help="Number of Fortio clients per node")
    parser_collect.add_argument("--fortio-client-queries-per-second", type=int, required=True, help="Queries per second for each Fortio client pod. NOT queries per second per connection")
    parser_collect.add_argument("--fortio-client-connections", type=int, required=True, help="Number of simultaneous connections for each Fortio client")
    parser_collect.add_argument("--fortio-namespaces", type=int, required=True, help="Number of namespaces, each with their own service. Fortio clients query servers in the same namespace. Be weary of integer division causing less pods than expected regarding this parameter, pods, and pods per node.")
    parser_collect.add_argument("--fortio-deployments-per-namespace", type=int, required=True, help="Number of Fortio server deployments (and number of client deployments) per service/partition. Be weary of integer division causing less pods than expected regarding this parameter, namespaces, pods, and pods per node.")
    parser_collect.add_argument("--apply-fqdn-cnp", type=str2bool, choices=[True, False], default=False, help="Apply CNP that will generate DNS metrics")

    args = parser.parse_args()

    if args.command == "configure":
        configure_clusterloader2(
            args.cl2_override_file,
            args.operation_timeout,
            args.provider,
            args.deployment_recreation_count,
            args.cpu_per_node,
            args.node_count,
            args.fortio_servers_per_node,
            args.fortio_clients_per_node,
            args.fortio_client_queries_per_second,
            args.fortio_client_connections,
            args.fortio_namespaces,
            args.fortio_deployments_per_namespace,
            args.apply_fqdn_cnp
        )
    elif args.command == "execute":
        execute_clusterloader2(args.cl2_image, args.cl2_config_dir, args.cl2_report_dir, args.cl2_config_file,
                               args.kubeconfig, args.provider)
    elif args.command == "collect":
        collect_clusterloader2(
            args.cl2_report_dir, args.cloud_info, args.run_id, args.run_url, args.result_file,
            args.deployment_recreation_count,
            args.cpu_per_node,
            args.node_count,
            args.fortio_servers_per_node,
            args.fortio_clients_per_node,
            args.fortio_client_queries_per_second,
            args.fortio_client_connections,
            args.fortio_namespaces,
            args.fortio_deployments_per_namespace,
            args.apply_fqdn_cnp,
            test_type=args.test_type,
        )