Added upload_debug_report()
* Partial replacement for major_exception() * Splitting that function into smaller parts
This commit is contained in:
parent
77238ad41a
commit
5c817717e7
1 changed files with 47 additions and 0 deletions
|
|
@ -282,5 +282,52 @@ def strip_colors(string):
|
||||||
return string
|
return string
|
||||||
|
|
||||||
|
|
||||||
|
def upload_debug_report(report, reason='DEBUG'):
|
||||||
|
"""Upload debug report to CRASH_SERVER as specified in wk.cfg.net."""
|
||||||
|
import pathlib
|
||||||
|
import requests
|
||||||
|
from wk.cfg.net import CRASH_SERVER as server
|
||||||
|
LOG.info('Uploading debug report to %s', server.get('Name', '?'))
|
||||||
|
|
||||||
|
# Check if the required server details are available
|
||||||
|
if not all(server.get(key, False) for key in ('Name', 'Url', 'User')):
|
||||||
|
msg = 'Server details missing, aborting upload.'
|
||||||
|
LOG.error(msg)
|
||||||
|
print_error(msg)
|
||||||
|
raise UserWarning(msg)
|
||||||
|
|
||||||
|
# Set filename (based on the logging config if possible)
|
||||||
|
## NOTE: This is using a gross assumption on the logging setup
|
||||||
|
## That's why there's such a broad exception if something goes wrong
|
||||||
|
## TODO: Test under all platforms
|
||||||
|
root_logger = logging.getLogger()
|
||||||
|
try:
|
||||||
|
filename = root_logger.handlers[0].baseFilename
|
||||||
|
filename = pathlib.Path(filename).name
|
||||||
|
filename = re.sub(r'^(.*)_(\d{4}-\d{2}-\d{2}.*)', r'\1', filename)
|
||||||
|
except Exception: #pylint: disable=broad-except
|
||||||
|
filename = 'Unknown'
|
||||||
|
filename = '{base}_{reason}_{datetime}.log'.format(
|
||||||
|
base=filename,
|
||||||
|
reason=reason,
|
||||||
|
datetime=time.strftime('%Y-%m-%d_%H%M%S%z'),
|
||||||
|
)
|
||||||
|
LOG.debug('filename: %s', filename)
|
||||||
|
|
||||||
|
# Upload report
|
||||||
|
url = '{}/{}'.format(server['Url'], filename)
|
||||||
|
response = requests.put(
|
||||||
|
url,
|
||||||
|
data=report,
|
||||||
|
headers=server.get('Headers', {'X-Requested-With': 'XMLHttpRequest'}),
|
||||||
|
auth=(server['User'], server.get('Pass', '')),
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check response
|
||||||
|
if not response.ok:
|
||||||
|
# Using generic exception since we don't care why this failed
|
||||||
|
raise Exception('Failed to upload report')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print("This file is not meant to be called directly.")
|
print("This file is not meant to be called directly.")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue