Revision f2921752

b/lib/cli.py
994 994
      cl = GetClient()
995 995
    self.cl = cl
996 996
    self.verbose = verbose
997
    self.jobs = []
997 998

  
998 999
  def QueueJob(self, name, *ops):
999
    """Submit a job for execution.
1000
    """Record a job for later submit.
1000 1001

  
1001 1002
    @type name: string
1002 1003
    @param name: a description of the job, will be used in WaitJobSet
1003 1004
    """
1004
    job_id = SendJob(ops, cl=self.cl)
1005
    self.queue.append((job_id, name))
1005
    self.queue.append((name, ops))
1006

  
1007

  
1008
  def SubmitPending(self):
1009
    """Submit all pending jobs.
1010

  
1011
    """
1012
    results = self.cl.SubmitManyJobs([row[1] for row in self.queue])
1013
    for ((status, data), (name, _)) in zip(results, self.queue):
1014
      self.jobs.append((status, data, name))
1006 1015

  
1007 1016
  def GetResults(self):
1008 1017
    """Wait for and return the results of all jobs.
......
1013 1022
        there will be the error message
1014 1023

  
1015 1024
    """
1025
    if not self.jobs:
1026
      self.SubmitPending()
1016 1027
    results = []
1017 1028
    if self.verbose:
1018
      ToStdout("Submitted jobs %s", ", ".join(row[0] for row in self.queue))
1019
    for jid, name in self.queue:
1029
      ok_jobs = [row[1] for row in self.jobs if row[0]]
1030
      if ok_jobs:
1031
        ToStdout("Submitted jobs %s", ", ".join(ok_jobs))
1032
    for submit_status, jid, name in self.jobs:
1033
      if not submit_status:
1034
        ToStderr("Failed to submit job for %s: %s", name, jid)
1035
        results.append((False, jid))
1036
        continue
1020 1037
      if self.verbose:
1021 1038
        ToStdout("Waiting for job %s for %s...", jid, name)
1022 1039
      try:
......
1041 1058
    if wait:
1042 1059
      return self.GetResults()
1043 1060
    else:
1044
      for jid, name in self.queue:
1045
        ToStdout("%s: %s", jid, name)
1061
      if not self.jobs:
1062
        self.SubmitPending()
1063
      for status, result, name in self.jobs:
1064
        if status:
1065
          ToStdout("%s: %s", result, name)
1066
        else:
1067
          ToStderr("Failure for %s: %s", name, result)

Also available in: Unified diff