Skip to content

Commit 635a4cc

Browse files
committed
flux-jobs: support constraint query string with -f, --filter
Problem: There is no way to provide an arbitrary constraint to flux-jobs(1). Update the `-f, --filter` option of flux-jobs(1) to take a query string that will be passed to the JobList constraint parameter instead of the filter paramter.
1 parent 12d87a8 commit 635a4cc

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

src/cmd/flux-jobs.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020
from flux.hostlist import Hostlist
2121
from flux.idset import IDset
2222
from flux.job import JobID, JobInfo, JobInfoFormat, JobList, job_fields_to_attrs
23+
from flux.job.list import JobListConstraintParser
2324
from flux.job.stats import JobStats
2425
from flux.util import (
2526
FilterAction,
27+
FilterActionConcatenate,
2628
FilterActionSetUpdate,
2729
FilterTrueAction,
2830
UtilConfig,
@@ -153,32 +155,30 @@ def fetch_jobs_flux(args, fields, flux_handle=None):
153155
if args.filter:
154156
LOGGER.warning("Both -a and --filter specified, ignoring -a")
155157
else:
156-
args.filter.update(["pending", "running", "inactive"])
158+
args.filter = "pending,running,inactive"
157159

158160
if not args.filter:
159-
args.filter = {"pending", "running"}
161+
args.filter = "pending,running"
160162

161-
constraint = None
162163
if args.include:
163164
try:
164-
constraint = {"ranks": [IDset(args.include).encode()]}
165+
args.filter += " ranks:" + IDset(args.include).encode()
165166
except ValueError:
166167
try:
167-
constraint = {"hostlist": [Hostlist(args.include).encode()]}
168+
args.filter += " host:" + Hostlist(args.include).encode()
168169
except ValueError:
169170
raise ValueError(f"-i/--include: invalid targets: {args.include}")
170171

171172
jobs_rpc = JobList(
172173
flux_handle,
173174
ids=args.jobids,
174175
attrs=attrs,
175-
filters=args.filter,
176176
user=args.user,
177177
max_entries=args.count,
178178
since=since,
179179
name=args.name,
180180
queue=args.queue,
181-
constraint=constraint,
181+
constraint=JobListConstraintParser().parse(args.filter),
182182
)
183183

184184
jobs = jobs_rpc.jobs()
@@ -231,10 +231,9 @@ def parse_args():
231231
parser.add_argument(
232232
"-f",
233233
"--filter",
234-
action=FilterActionSetUpdate,
235-
metavar="STATE|RESULT",
236-
default=set(),
237-
help="List jobs with specific job state or result",
234+
action=FilterActionConcatenate,
235+
metavar="QUERY",
236+
help="Restrict jobs using a constraint query string",
238237
)
239238
parser.add_argument(
240239
"--since",

0 commit comments

Comments
 (0)