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