" times, if not given defaults to all nodes)",
completion_suggest=OPT_COMPL_ONE_NODE)
-NODEGROUP_OPT = cli_option("-g", "--node-group",
+NODEGROUP_OPT_NAME = "--node-group"
+NODEGROUP_OPT = cli_option("-g", NODEGROUP_OPT_NAME,
dest="nodegroup",
help="Node group (name or uuid)",
metavar="<nodegroup>",
"""
# Pause watcher by acquiring an exclusive lock on watcher state file
self.feedback_fn("Blocking watcher")
- watcher_block = utils.FileLock.Open(constants.WATCHER_STATEFILE)
+ watcher_block = utils.FileLock.Open(constants.WATCHER_LOCK_FILE)
try:
# TODO: Currently, this just blocks. There's no timeout.
# TODO: Should it be a shared lock?
if not names:
names = None
- if (force_filter or
- (names and len(names) == 1 and qlang.MaybeFilter(names[0]))):
- try:
- (filter_text, ) = names
- except ValueError:
- raise errors.OpPrereqError("Exactly one argument must be given as a"
- " filter")
-
- logging.debug("Parsing '%s' as filter", filter_text)
- filter_ = qlang.ParseFilter(filter_text)
- else:
- filter_ = qlang.MakeSimpleFilter("name", names)
+ filter_ = qlang.MakeFilter(names, force_filter)
response = cl.Query(resource, fields, filter_)
self.jobs = []
self.opts = opts
self.feedback_fn = feedback_fn
- if feedback_fn:
- self._info_fn = feedback_fn
- else:
- self._info_fn = ToStdout
self._counter = itertools.count()
@staticmethod
if self.verbose:
ok_jobs = [row[2] for row in self.jobs if row[1]]
if ok_jobs:
- self._info_fn("Submitted jobs %s", utils.CommaJoin(ok_jobs))
+ ToStdout("Submitted jobs %s", utils.CommaJoin(ok_jobs))
# first, remove any non-submitted jobs
self.jobs, failures = compat.partition(self.jobs, lambda x: x[1])
for idx, _, jid, name in failures:
- self._info_fn("Failed to submit job%s: %s",
- self._IfName(name, " for %s"), jid)
+ ToStderr("Failed to submit job%s: %s", self._IfName(name, " for %s"), jid)
results.append((idx, False, jid))
while self.jobs:
(idx, _, jid, name) = self._ChooseJob()
- self._info_fn("Waiting for job %s%s ...",
- jid, self._IfName(name, " for %s"))
+ ToStdout("Waiting for job %s%s ...", jid, self._IfName(name, " for %s"))
try:
job_result = PollJob(jid, cl=self.cl, feedback_fn=self.feedback_fn)
success = True
except errors.JobLost, err:
_, job_result = FormatError(err)
- self._info_fn("Job %s%s has been archived, cannot check its result",
- jid, self._IfName(name, " for %s"))
+ ToStderr("Job %s%s has been archived, cannot check its result",
+ jid, self._IfName(name, " for %s"))
success = False
except (errors.GenericError, luxi.ProtocolError), err:
_, job_result = FormatError(err)
success = False
# the error message will always be shown, verbose or not
- self._info_fn("Job %s%s has failed: %s",
- jid, self._IfName(name, " for %s"), job_result)
+ ToStderr("Job %s%s has failed: %s",
+ jid, self._IfName(name, " for %s"), job_result)
results.append((idx, success, job_result))
self.SubmitPending()
for _, status, result, name in self.jobs:
if status:
- self._info_fn("%s: %s", result, name)
+ ToStdout("%s: %s", result, name)
else:
- self._info_fn("Failure for %s: %s", name, result)
+ ToStderr("Failure for %s: %s", name, result)
return [row[1:3] for row in self.jobs]