in modules/python/clusterloader2/slo/network_policy_scale.py [0:0]
def main():
parser = argparse.ArgumentParser(description="Network Policy Scale Test")
subparsers = parser.add_subparsers(dest="command")
# Sub-command for configure_clusterloader2
parser_configure = subparsers.add_parser(
"configure", help="Configure ClusterLoader2 overrides file"
)
parser_configure.add_argument(
"--number_of_groups",
type=int,
required=True,
help="Number of network policy groups to create",
)
parser_configure.add_argument(
"--clients_per_group",
type=int,
required=True,
help="Number of client pods per group",
)
parser_configure.add_argument(
"--servers_per_group",
type=int,
required=True,
help="Number of server pods per group",
)
parser_configure.add_argument(
"--workers_per_client",
type=int,
required=True,
help="Number of workers per client pod",
)
parser_configure.add_argument(
"--netpol_type",
type=str,
required=True,
choices=["k8s", "cnp", "ccnp"],
help="Type of network policy",
)
parser_configure.add_argument(
"--test_duration_secs", type=int, required=True, help="Test duration in seconds"
)
parser_configure.add_argument(
"--provider", type=str, required=True, help="Cloud provider name"
)
parser_configure.add_argument(
"--cilium_enabled",
type=str2bool,
choices=[True, False],
default=False,
help="Whether cilium is enabled. Must be either True or False",
)
parser_configure.add_argument(
"--cilium_envoy_enabled",
type=str2bool,
choices=[True, False],
default=False,
help="Whether cilium envoy is enabled. Must be either True or False",
)
parser_configure.add_argument(
"--cl2_override_file",
type=str,
required=True,
help="Path to the overrides of CL2 config file",
)
# Sub-command for execute_clusterloader2
parser_execute = subparsers.add_parser("execute", help="Execute scale up operation")
parser_execute.add_argument("--cl2_image", type=str, help="Name of the CL2 image")
parser_execute.add_argument(
"--cl2_config_dir", type=str, help="Path to the CL2 config directory"
)
parser_execute.add_argument(
"--cl2_report_dir", type=str, help="Path to the CL2 report directory"
)
parser_execute.add_argument(
"--cl2_config_file", type=str, help="Path to the CL2 config file"
)
parser_execute.add_argument(
"--kubeconfig", type=str, help="Path to the kubeconfig file"
)
parser_execute.add_argument("--provider", type=str, help="Cloud provider name")
# Sub-command for collect_clusterloader2
parser_collect = subparsers.add_parser("collect", help="Collect scale up data")
parser_collect.add_argument("--node_count", type=int, help="Number of nodes")
parser_collect.add_argument(
"--pod_count",
type=int,
nargs="?",
default=0,
help="Maximum number of pods per node",
)
parser_collect.add_argument(
"--cl2_report_dir", type=str, help="Path to the CL2 report directory"
)
parser_collect.add_argument("--cloud_info", type=str, help="Cloud information")
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_file", type=str, help="Path to the result file"
)
parser_collect.add_argument(
"--test_type",
type=str,
nargs="?",
default="default-config",
help="Description of test type",
)
args = parser.parse_args()
if args.command is None:
parser.print_help()
return
if args.command == "configure":
configure_clusterloader2(
args.number_of_groups,
args.clients_per_group,
args.servers_per_group,
args.workers_per_client,
args.netpol_type,
args.test_duration_secs,
args.cilium_enabled,
args.cilium_envoy_enabled,
args.cl2_override_file,
)
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,
scrape_containerd=False, # for network policy scale test, we don't need to scrape containerd for now
)
elif args.command == "collect":
collect_clusterloader2(
args.node_count,
args.pod_count,
args.cl2_report_dir,
args.cloud_info,
args.run_id,
args.run_url,
args.result_file,
args.test_type,
)