def main()

in modules/python/csi/csi.py [0:0]


def main():
    parser = argparse.ArgumentParser(description="CSI Benchmark.")
    subparsers = parser.add_subparsers(dest="command")

    # Sub-command for validate
    parser_validate = subparsers.add_parser("validate", help="Validate node count")
    parser_validate.add_argument("node_label", type=str, help="Node label selector")
    parser_validate.add_argument("node_count", type=int, help="Number of nodes")
    parser_validate.add_argument("operation_timeout", type=int, help="Timeout for the operation in seconds")

    # Sub-command for execute_attach_detach
    parser_execute = subparsers.add_parser("execute", help="Execute attach detach test")
    parser_execute.add_argument("disk_number", type=int, help="Disk number")
    parser_execute.add_argument("storage_class", type=str, help="Storage class")
    parser_execute.add_argument("wait_time", type=int, help="Wait time before deletion")
    parser_execute.add_argument("result_dir", type=str, help="Result directory")

    # Sub-command for collect_attach_detach
    parser_collect = subparsers.add_parser("collect", help="Collect attach detach test results")
    parser_collect.add_argument("case_name", type=str, help="Case name")
    parser_collect.add_argument("node_number", type=int, help="Node number")
    parser_collect.add_argument("disk_number", type=int, help="Disk number")
    parser_collect.add_argument("storage_class", type=str, help="Storage class")
    parser_collect.add_argument("cloud_info", type=str, help="Cloud info")
    parser_collect.add_argument("run_id", type=str, help="Run ID")
    parser_collect.add_argument("run_url", type=str, help="Run URL")
    parser_collect.add_argument("result_dir", type=str, help="Result directory")

    args = parser.parse_args()
    if args.command == "validate":
        validate_node_count(args.node_label, args.node_count, args.operation_timeout)
    elif args.command == "execute":
        execute_attach_detach(args.disk_number, args.storage_class, args.wait_time, args.result_dir)
    elif args.command == "collect":
        collect_attach_detach(args.case_name, args.node_number, args.disk_number, args.storage_class,
                              args.cloud_info, args.run_id, args.run_url, args.result_dir)