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