Revision 685ee993 lib/cli.py

b/lib/cli.py
26 26
import textwrap
27 27
import os.path
28 28
import copy
29
import time
29 30
from cStringIO import StringIO
30 31

  
31 32
from ganeti import utils
......
381 382
  interaction functions.
382 383

  
383 384
  """
385
  cl = luxi.Client()
386
  job = opcodes.Job(op_list=[op])
387
  jid = SubmitJob(job)
388

  
389
  query = {
390
    "object": "jobs",
391
    "fields": ["status"],
392
    "names": [jid],
393
    }
394

  
395
  while True:
396
    jdata = SubmitQuery(query)
397
    if not jdata:
398
      # job not found, go away!
399
      raise errors.JobLost("Job with id %s lost" % jid)
400

  
401
    status = jdata[0][0]
402
    if status in (opcodes.Job.STATUS_SUCCESS, opcodes.Job.STATUS_FAIL):
403
      break
404
    time.sleep(1)
405

  
406
  query["fields"].extend(["op_list", "op_status", "op_result"])
407
  jdata = SubmitQuery(query)
408
  if not jdata:
409
    raise errors.JobLost("Job with id %s lost" % jid)
410
  status, op_list, op_status, op_result = jdata[0]
411
  if status != opcodes.Job.STATUS_SUCCESS:
412
    raise errors.OpExecError(op_result[0])
413
  return op_result[0]
414

  
384 415
  if feedback_fn is None:
385 416
    feedback_fn = logger.ToStdout
386 417
  if proc is None:

Also available in: Unified diff