Warning
This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.tools.error_reports.plugins.json
"""The module describes the ``json`` error plugin."""
import json
import logging
import os
import tempfile
from galaxy.util import string_as_bool
from . import ErrorPlugin
log = logging.getLogger(__name__)
[docs]class JsonPlugin(ErrorPlugin):
"""Write error report to a JSON file."""
plugin_type = "json"
[docs] def __init__(self, **kwargs):
self.app = kwargs["app"]
self.verbose = string_as_bool(kwargs.get("verbose", False))
self.redact_user_details_in_bugreport = self.app.config.redact_user_details_in_bugreport
self.user_submission = string_as_bool(kwargs.get("user_submission", False))
self.report_directory = kwargs.get("directory", tempfile.gettempdir())
if not os.path.exists(self.report_directory):
os.makedirs(self.report_directory)
[docs] def submit_report(self, dataset, job, tool, **kwargs):
"""Write the report to a json file."""
path = os.path.join(self.report_directory, str(dataset.id))
with open(path, "w") as handle:
data = {
"info": job.info,
"id": job.id,
"command_line": job.command_line,
"destination_id": job.destination_id,
"stderr": job.stderr,
"traceback": job.traceback,
"exit_code": job.exit_code,
"stdout": job.stdout,
"handler": job.handler,
"tool_version": job.tool_version,
"tool_xml": str(tool.config_file) if tool else None,
}
if self.redact_user_details_in_bugreport:
data["user"] = {"id": job.get_user().id}
else:
data["user"] = job.get_user().to_dict()
if "email" in kwargs:
data["email"] = kwargs["email"]
if "message" in kwargs:
data["message"] = kwargs["message"]
json.dump(data, handle, indent=2)
return (f"Wrote error report to {path}", "success")
__all__ = ("JsonPlugin",)