ensure-dirs: Set permissions on queue lock file
[ganeti-local] / lib / cli.py
index 06c460f..4aeb162 100644 (file)
@@ -804,7 +804,8 @@ NODE_LIST_OPT = cli_option("-n", "--node", dest="nodes", default=[],
                            " 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>",
@@ -2260,7 +2261,7 @@ class _RunWhileClusterStoppedHelper:
     """
     # 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?
@@ -2660,18 +2661,7 @@ def GenericList(resource, fields, names, unit, separator, header, cl=None,
   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_)
 
@@ -3016,10 +3006,6 @@ class JobExecutor(object):
     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
@@ -3101,33 +3087,31 @@ class JobExecutor(object):
     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))
 
@@ -3151,9 +3135,9 @@ class JobExecutor(object):
         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]