def METHOD_NAME() -> None:
    args = parse_args()
    if args.verbose:
        logging.basicConfig(level=logging.DEBUG)
    else:
        logging.basicConfig(level=logging.INFO)
    dry_run = args.dry_run
    kube_client = KubeClient()
    all_nodes = get_all_nodes(kube_client)
    log.debug(f"found nodes in cluster {[node.metadata.name for node in all_nodes]}")
    # we depend on iam credentials existing on the host for this to run.
    # anywhere else, and you'll need to set credentials using environment variables
    # we also make the assumption that all nodes are in the same region here
    region = all_nodes[0].metadata.labels["failure-domain.beta.kubernetes.io/region"]
    ec2_client = boto3.client("ec2", region)
    filtered_nodes = nodes_for_cleanup(ec2_client, all_nodes)
    if logging.DEBUG >= logging.root.level:
        log.debug(
            f"nodes to be deleted: {[node.metadata.name for node in filtered_nodes]}"
        )
    if not dry_run:
        success, errors = terminate_nodes(
            kube_client, [node.metadata.name for node in filtered_nodes]
        )
    else:
        success, errors = [], []
        log.info("dry run mode detected: not deleting nodes")
    for node_name in success:
        log.info(f"successfully deleted node {node_name}")
    for node_name, exception in errors:
        log.error(f"error deleting node: {node_name}: {exception}")
    if errors:
        sys.exit(1)