Revision 9d5ba39a

b/scripts/gnt-debug
30 30
from optparse import make_option
31 31

  
32 32
from ganeti.cli import *
33
from ganeti import cli
33 34
from ganeti import opcodes
34 35
from ganeti import constants
35 36
from ganeti import utils
......
69 70
  @return: the desired exit code
70 71

  
71 72
  """
73
  cl = cli.GetClient()
72 74
  fname = args[0]
73 75
  op_data = simplejson.loads(open(fname).read())
74 76
  op_list = [opcodes.OpCode.LoadOpCode(val) for val in op_data]
75
  job = opcodes.Job(op_list=op_list)
76
  jid = SubmitJob(job)
77
  jid = cli.SendJob(op_list, cl=cl)
77 78
  ToStdout("Job id: %s", jid)
78
  query = {
79
    "object": "jobs",
80
    "fields": ["status"],
81
    "names": [jid],
82
    }
83

  
84
  # wait for job to complete (either by success or failure)
85
  while True:
86
    jdata = SubmitQuery(query)
87
    if not jdata:
88
      # job not found, gone away!
89
      ToStderr("Job lost!")
90
      return 1
91

  
92
    status = jdata[0][0]
93
    ToStdout(status)
94
    if status in (opcodes.Job.STATUS_SUCCESS, opcodes.Job.STATUS_FAIL):
95
      break
96

  
97
    # sleep between checks
98
    time.sleep(0.5)
99

  
100
  # job has finished, get and process its results
101
  query["fields"].extend(["op_list", "op_status", "op_result"])
102
  jdata = SubmitQuery(query)
103
  if not jdata:
104
    # job not found, gone away!
105
    ToStderr("Job lost!")
106
    return 1
107
  ToStdout(jdata[0])
108
  status, op_list, op_status, op_result = jdata[0]
109
  for idx, op in enumerate(op_list):
110
    ToStdout("%s %s %s %s", idx, op.OP_ID, op_status[idx], op_result[idx])
79
  cli.PollJob(jid, cl=cl)
111 80
  return 0
112 81

  
113 82

  

Also available in: Unified diff