From 1a058d77939819ef8a00130064bfb9ca4f108ebe Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Sun, 16 Jun 2013 18:33:34 +0530 Subject: [PATCH 1/2] cloudmonkey: Bump up version of cloudmonkey to 4.2.xx Signed-off-by: Rohit Yadav --- tools/cli/cloudmonkey/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cli/cloudmonkey/config.py b/tools/cli/cloudmonkey/config.py index aaf97ebd25d..36f7e77ed82 100644 --- a/tools/cli/cloudmonkey/config.py +++ b/tools/cli/cloudmonkey/config.py @@ -18,7 +18,7 @@ # Use following rules for versioning: # - -__version__ = "4.1.0-0" +__version__ = "4.2.0-0" __description__ = "Command Line Interface for Apache CloudStack" __maintainer__ = "Rohit Yadav" __maintaineremail__ = "bhaisaab@apache.org" From 10f9516015121fc0521616d3b6d675ac7561c7d9 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Sun, 16 Jun 2013 18:34:32 +0530 Subject: [PATCH 2/2] cloumonkey: Remove junk from requester.py This fix removes junk from 6e22843acb6bbd61260849fac171bba61ac6650f which was supposed to just improve error messages and not messup the whole async block logic and go into an infinite recursion or fail with some key error. Signed-off-by: Rohit Yadav --- tools/cli/cloudmonkey/requester.py | 47 +++++++----------------------- 1 file changed, 11 insertions(+), 36 deletions(-) diff --git a/tools/cli/cloudmonkey/requester.py b/tools/cli/cloudmonkey/requester.py index d2dae6dfc3f..b06e1fc99e3 100644 --- a/tools/cli/cloudmonkey/requester.py +++ b/tools/cli/cloudmonkey/requester.py @@ -125,61 +125,36 @@ def monkeyrequest(command, args, isasync, asyncblock, logger, host, port, command = "queryAsyncJobResult" request = {'jobid': jobid} timeout = int(timeout) - pollperiod = 3 + pollperiod = 2 progress = 1 while timeout > 0: print '\r' + '.' * progress, sys.stdout.flush() - progress += 1 + time.sleep(pollperiod) timeout = timeout - pollperiod + progress += 1 logger_debug(logger, "Job %s to timeout in %ds" % (jobid, timeout)) - sys.stdout.flush() - if re.match("queryAsyncJobResult", command): - time.sleep(pollperiod) - else: - response, error = monkeyrequest(command, request, isasync, - asyncblock, logger, - host, port, apikey, secretkey, - timeout, protocol, path) + response, error = make_request(command, request, logger, + host, port, apikey, secretkey, + protocol, path) + if error is not None: + return response, error + response = process_json(response) responsekeys = filter(lambda x: 'response' in x, response.keys()) if len(responsekeys) < 1: - time.sleep(pollperiod) continue result = response[responsekeys[0]] jobstatus = result['jobstatus'] - jobresultcode = result['jobresultcode'] - try: - jobresult = result["jobresult"] - logger_debug(logger, "jobresult %s" % (jobresult)) - sys.stdout.flush() - return response, None - except KeyError: - logger_debug(logger, "No jobresult yet %s" % (result)) - sys.stdout.flush() - - if jobresultcode != 0: - error = "Error: resultcode %d for jobid %s" % (jobresultcode, - jobid) - logger_debug(logger, "%s" % (error)) - return response, error - else: - # if we get a valid respons resultcode give back results - response, error = monkeyrequest(command, request, isasync, - asyncblock, logger, - host, port, apikey, secretkey, - timeout, protocol, path) - logger_debug(logger, "Ok: %s" % (jobid)) - return response, error - if jobstatus == 2: + jobresult = result["jobresult"] error = "\rAsync job %s failed\nError %s, %s" % (jobid, jobresult["errorcode"], jobresult["errortext"]) return response, error elif jobstatus == 1: - print '\r', + print "\r" + " " * progress, return response, error else: logger_debug(logger, "We should not arrive here!")