cli: Show progress during polling for async jobs

If asyncblock is set to true, prints dots as polling requests are made.
When result is obtained, dots are wiped and result is printed.

Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
This commit is contained in:
Rohit Yadav 2013-01-04 15:15:21 -08:00
parent 9a66beb658
commit c7563cb7bd

View File

@ -266,7 +266,11 @@ class CloudMonkeyShell(cmd.Cmd, object):
command = "queryAsyncJobResult" command = "queryAsyncJobResult"
requests = {'jobid': jobId} requests = {'jobid': jobId}
timeout = int(self.timeout) timeout = int(self.timeout)
pollperiod = 3
while timeout > 0: while timeout > 0:
progress = int((int(self.timeout) - timeout) / pollperiod ) + 1
print '\r' + '.' * progress,
sys.stdout.flush()
response = process_json(conn.make_request_with_auth(command, response = process_json(conn.make_request_with_auth(command,
requests)) requests))
responsekeys = filter(lambda x: 'response' in x, responsekeys = filter(lambda x: 'response' in x,
@ -282,9 +286,10 @@ class CloudMonkeyShell(cmd.Cmd, object):
jobresult["errortext"]) jobresult["errortext"])
return return
elif jobstatus == 1: elif jobstatus == 1:
print '\r',
return response return response
time.sleep(4) time.sleep(pollperiod)
timeout = timeout - 4 timeout = timeout - pollperiod
logger.debug("job: %s to timeout in %ds" % (jobId, timeout)) logger.debug("job: %s to timeout in %ds" % (jobId, timeout))
self.print_shell("Error:", "Async query timeout for jobid=", jobId) self.print_shell("Error:", "Async query timeout for jobid=", jobId)