Skip to content

Commit 356fb6b

Browse files
committed
flux-resource: ensure empty resource sets can display a queue
Problem: When there are no resources in a given state, flux-resource(1) list creates an empty resource set for that state so that a line with zero resources appears in output. However, this is confusing when there are configured queues because the {queue} column will be empty since an empty resource set cannot have any associated properties or queues. Now that the ResourceSetExtra class allows a queue to be set manually, create an empty resource set for each configured queue (or if -q, --queue was specified, each queue given on the cmdline). This will cause an empty resource set for each queue to be displayed in output. Fixes #6166
1 parent caa6acc commit 356fb6b

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

src/cmd/flux-resource.py

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,7 @@ def constraint_combinations(rset):
566566
return [rset.copy_constraint(x) for x in constraint_combinations(rset)]
567567

568568

569-
def resources_uniq_lines(resources, states, formatter, config):
569+
def resources_uniq_lines(resources, states, formatter, config, queues=None):
570570
"""
571571
Generate a set of resource sets that would produce unique lines given
572572
the ResourceSet formatter argument. Include only the provided states
@@ -591,6 +591,15 @@ def resources_uniq_lines(resources, states, formatter, config):
591591

592592
fmt = flux.util.OutputFormat(uniq_fmt, headings=formatter.headings)
593593

594+
# Get a list of configured queues if a specific list of queues
595+
# was not supplied by the caller. If no queues are configured then
596+
# one "anonymous" queue is simulated with [None]
597+
if not queues:
598+
if config and "queues" in config:
599+
queues = config["queues"].keys()
600+
else:
601+
queues = [None]
602+
594603
# Create a mapping of resources sets that generate uniq "lines":
595604
lines = {}
596605
for state in states:
@@ -600,13 +609,14 @@ def resources_uniq_lines(resources, states, formatter, config):
600609
# resource set for output purposes. O/w the output for this
601610
# state would be suppressed.
602611
#
603-
rset = ResourceSetExtra(flux_config=config)
604-
rset.state = state
605-
key = fmt.format(rset)
606-
if key not in lines:
607-
lines[key] = rset
608-
else:
609-
lines[key].add(rset)
612+
for queue in queues:
613+
rset = ResourceSetExtra(flux_config=config, queue=queue)
614+
rset.state = state
615+
key = fmt.format(rset)
616+
if key not in lines:
617+
lines[key] = rset
618+
else:
619+
lines[key].add(rset)
610620
continue
611621

612622
for rset in split_by_property_combinations(resources[state]):
@@ -692,7 +702,9 @@ def list_handler(args):
692702
fmt = FluxResourceConfig("list").load().get_format_string(args.format)
693703
formatter = flux.util.OutputFormat(fmt, headings=headings)
694704

695-
lines = resources_uniq_lines(resources, args.states, formatter, config)
705+
lines = resources_uniq_lines(
706+
resources, args.states, formatter, config, queues=args.queue
707+
)
696708
items = sort_output(args, lines.values())
697709
formatter.print_items(items, no_header=args.no_header)
698710

0 commit comments

Comments
 (0)