diff options
author | Andreea Proca <andreea.b.proca@intel.com> | 2014-02-14 13:58:43 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-02-14 12:25:30 +0000 |
commit | f186b4c7c6c975638e60b30a512d669dc6dc390f (patch) | |
tree | 2717fc901874505d4d86ee7f2c1c26f019229a9f /scripts/send-error-report | |
parent | 2ab1a2bccfbb4ed90fe3b877d1be80817ba32099 (diff) | |
download | openembedded-core-f186b4c7c6c975638e60b30a512d669dc6dc390f.tar.gz openembedded-core-f186b4c7c6c975638e60b30a512d669dc6dc390f.tar.bz2 openembedded-core-f186b4c7c6c975638e60b30a512d669dc6dc390f.zip |
report-error.bbclass: new class to save build information when errors occur
Class is used to save data about errors after every task that failed.
Errors saved as json files in ERROR_REPORT_DIR (defaults to tmp/log/error-report).
To use this class one has to add INHERIT += "report-error" to local.conf.
scripts/send-error-report is a simple script that sends the json file
to a HTTP server that collects data (git://git.yoctoproject.org/error-report-web
is a Django web interface that can be used to receive and visualize
the error reports). The script will give you an URL where you can
find your report.
Signed-off-by: Andreea Proca <andreea.b.proca@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/send-error-report')
-rwxr-xr-x | scripts/send-error-report | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/scripts/send-error-report b/scripts/send-error-report new file mode 100755 index 0000000000..0d85776340 --- /dev/null +++ b/scripts/send-error-report @@ -0,0 +1,78 @@ +#!/usr/bin/env python + +# Sends an error report (if the report-error class was enabled) to a remote server. +# +# Copyright (C) 2013 Intel Corporation +# Author: Andreea Proca <andreea.b.proca@intel.com> + + + +import httplib, urllib, os, sys, json + + +def sendData(json_file, server): + + if os.path.isfile(json_file): + + home = os.path.expanduser("~") + userfile = os.path.join(home, ".oe-send-error") + if os.path.isfile(userfile): + with open(userfile) as g: + username = g.readline() + email = g.readline() + else: + print("Please enter your name and your email (optionally), they'll be saved in the file you send.") + username = raw_input("Name: ") + email = raw_input("E-mail (not required): ") + if len(username) > 0 and len(username) < 50: + with open(userfile, "w") as g: + g.write(username + "\n") + g.write(email + "\n") + else: + print("Invalid inputs, try again.") + return + + with open(json_file) as f: + data = f.read() + + try: + jsondata = json.loads(data) + jsondata['username'] = username.strip() + jsondata['email'] = email.strip() + data = json.dumps(jsondata, indent=4, sort_keys=True) + except: + print("Invalid json data") + return + + try: + params = urllib.urlencode({'data': data}) + headers = {"Content-type": "application/json"} + conn = httplib.HTTPConnection(server) + conn.request("POST", "/ClientPost/", params, headers) + response = conn.getresponse() + print response.status, response.reason + res = response.read() + if response.status == 200: + print res + else: + print("There was a problem submiting your data") + conn.close() + except: + print("Server connection failed") + + else: + print("No data file found.") + + +if __name__ == '__main__': + print ("\nSends an error report (if the report-error class was enabled) to a remote server.") + if len(sys.argv) < 2: + print("\nThis scripts sends the contents of a file to an upstream server.") + print("\nUsage: send-error-report <error_fileName> [server]") + print("\nIf this is the first when sending a report you'll be asked for your name and optionally your email address.") + print("They will be associated with your report.\n") + + elif len(sys.argv) == 3: + sendData(sys.argv[1], sys.argv[2]) + else: + sendData(sys.argv[1], "localhost:8000") |