def get_partitions_info()

in src/common/schedulers/slurm_commands.py [0:0]


def get_partitions_info(command_timeout=DEFAULT_GET_INFO_COMMAND_TIMEOUT) -> List[SlurmPartition]:
    """
    Retrieve slurm partition info from scontrol.

    This function considers only partitions managed by ParallelCluster.
    """
    partitions = list(PartitionNodelistMapping.instance().get_partitions())
    grep_filter = _get_partition_grep_filter(partitions)
    show_partition_info_command = (
        f"{SCONTROL} show partitions -o {grep_filter} " + '| grep -oP "^PartitionName=\\K(\\S+)| State=\\K(\\S+)"'
    )
    # It's safe to use the function affected by B604 since the command is fully built in this code
    partition_info_str = check_command_output(
        show_partition_info_command, timeout=command_timeout, shell=True  # nosec B604
    )
    partitions_info = _parse_partition_name_and_state(partition_info_str)
    return [
        SlurmPartition(
            partition_name,
            _get_all_partition_nodes(partition_name),
            partition_state,
        )
        for partition_name, partition_state in partitions_info
    ]