def get_node_list()

in src/slurm_plugin/slurm_resources.py [0:0]


def get_node_list(nodenames):
    """
    Convert nodenames to a list of nodes.

    Example input nodenames: "queue1-st-c5xlarge-[1,3,4-5],queue1-st-c5large-20"
    Example output [queue1-st-c5xlarge-1, queue1-st-c5xlarge-3, queue1-st-c5xlarge-4, queue1-st-c5xlarge-5,
    queue1-st-c5large-20]
    """
    matches = []
    if type(nodenames) is str:
        matches = re.findall(r"((([a-z0-9\-]+)-(st|dy)-([a-z0-9\-]+)-)(\[[\d+,-]+\]|\d+))(,|$)", nodenames)
        # [('queue1-st-c5xlarge-[1,3,4-5]', 'queue1-st-c5xlarge-', 'queue1', 'st', 'c5xlarge', '[1,3,4-5]'),
        # ('queue1-st-c5large-20', 'queue1-st-c5large-', 'queue1', 'st', 'c5large', '20')]
    node_list = []
    if not matches:
        raise InvalidNodenameError
    for match in matches:
        nodename, prefix, _, _, _, nodes, _ = match
        if "[" not in nodes:
            # Single nodename
            node_list.append(nodename)
        else:
            # Multiple nodenames
            try:
                node_range = convert_range_to_list(nodes.strip("[]"))
            except ValueError:
                raise InvalidNodenameError
            node_list += [prefix + str(n) for n in node_range]
    return node_list