You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mc...@apache.org on 2013/04/06 02:35:14 UTC
[41/57] [abbrv] git commit: updated refs/heads/object_store to a872d6d
Cloudmonkey requester.py change to return clearer errors and implement a logic change for async calls.
Applied from review request:
https://reviews.apache.org/r/10151/
Signed-off-by: Rohit Yadav <bh...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/6e22843a
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/6e22843a
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/6e22843a
Branch: refs/heads/object_store
Commit: 6e22843acb6bbd61260849fac171bba61ac6650f
Parents: 1f206a4
Author: Funs Kessen <fu...@barred.org>
Authored: Fri Apr 5 22:25:34 2013 +0530
Committer: Rohit Yadav <bh...@apache.org>
Committed: Fri Apr 5 22:42:55 2013 +0530
----------------------------------------------------------------------
tools/cli/cloudmonkey/requester.py | 57 +++++++++++++++++++++++++-----
1 files changed, 47 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6e22843a/tools/cli/cloudmonkey/requester.py
----------------------------------------------------------------------
diff --git a/tools/cli/cloudmonkey/requester.py b/tools/cli/cloudmonkey/requester.py
index 5c4cd1e..d58c1af 100644
--- a/tools/cli/cloudmonkey/requester.py
+++ b/tools/cli/cloudmonkey/requester.py
@@ -32,6 +32,7 @@ try:
import types
import urllib
import urllib2
+ from urllib2 import urlopen, HTTPError
except ImportError, e:
print "Import error in %s : %s" % (__name__, e)
@@ -77,19 +78,20 @@ def make_request(command, args, logger, host, port,
logger_debug(logger, "Request sent: %s" % request_url)
connection = urllib2.urlopen(request_url)
response = connection.read()
- except Exception, e:
- error = str(e)
+ except HTTPError, e:
+ error = "%s: %s" % (e.msg, e.info().getheader('X-Description'))
logger_debug(logger, "Response received: %s" % response)
if error is not None:
- logger_debug(logger, error)
+ logger_debug(logger, "Error: error is not None, %s" % (error))
+ return response, error
return response, error
def monkeyrequest(command, args, isasync, asyncblock, logger, host, port,
apikey, secretkey, timeout, protocol, path):
-
+ fcommand = command
response = None
error = None
logger_debug(logger, "======== START Request ========")
@@ -106,7 +108,8 @@ def monkeyrequest(command, args, isasync, asyncblock, logger, host, port,
response = json.loads(str(response))
except ValueError, e:
error = "Error processing json response, %s" % e
- logger_debug(logger, "Error processing json", e)
+ logger_debug(logger, "Error processing json: %s" % e)
+
return response
response = process_json(response)
@@ -125,29 +128,63 @@ def monkeyrequest(command, args, isasync, asyncblock, logger, host, port,
progress = 1
while timeout > 0:
print '\r' + '.' * progress,
- time.sleep(pollperiod)
- timeout = timeout - pollperiod
+ sys.stdout.flush()
progress += 1
+ timeout = timeout - pollperiod
logger_debug(logger, "Job %s to timeout in %ds" % (jobid, timeout))
sys.stdout.flush()
- response, error = monkeyrequest(command, request, isasync,
+ if re.match("queryAsyncJobResult", fcommand):
+ # logger_debug(logger, "%d loop: Job %s" % (progress, jobid))
+ # sys.stdout.flush()
+ time.sleep(pollperiod)
+ else:
+ response, error = monkeyrequest(command, request, isasync,
asyncblock, logger,
host, port, apikey, secretkey,
timeout, protocol, path)
- 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']
- if jobstatus == 2:
+ 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:
error = "\rAsync job %s failed\nError %s, %s" % (jobid,
jobresult["errorcode"], jobresult["errortext"])
return response, error
elif jobstatus == 1:
print '\r',
return response, error
+ else:
+ logger_debug(logger, "We should not arrive here!")
+ sys.stdout.flush()
+
error = "Error: Async query timeout occurred for jobid %s" % jobid
return response, error