diff --git a/client/galaxy/scripts/apps/admin.js b/client/galaxy/scripts/apps/admin.js index 831c65c54cd..f3d2ba2b54e 100644 --- a/client/galaxy/scripts/apps/admin.js +++ b/client/galaxy/scripts/apps/admin.js @@ -14,6 +14,7 @@ import DataTables from "components/admin/DataTables.vue"; import DataTypes from "components/admin/DataTypes.vue"; import DataManagerView from "components/admin/DataManager/DataManagerView.vue"; import DataManagerRouter from "components/admin/DataManager/DataManagerRouter.vue"; +import ErrorStack from "components/admin/ErrorStack.vue"; import DisplayApplications from "components/admin/DisplayApplications.vue"; import Vue from "vue"; import { serverPath } from "utils/serverPath"; @@ -34,6 +35,7 @@ window.app = function app(options, bootstrapped) { "(/)admin(/)users": "show_users", "(/)admin(/)roles": "show_roles", "(/)admin(/)groups": "show_groups", + "(/)admin(/)error_stack": "show_error_stack", "(/)admin(/)display_applications": "show_display_applications", "(/)admin(/)tool_versions": "show_tool_versions", "(/)admin(/)quotas": "show_quotas", @@ -129,6 +131,10 @@ window.app = function app(options, bootstrapped) { this._display_vue_helper(DataTypes); }, + show_error_stack: function() { + this._display_vue_helper(ErrorStack); + }, + show_display_applications: function() { this._display_vue_helper(DisplayApplications); }, diff --git a/client/galaxy/scripts/apps/panels/admin-panel.js b/client/galaxy/scripts/apps/panels/admin-panel.js index dbd4eb4c4f9..bf44e4175a9 100644 --- a/client/galaxy/scripts/apps/panels/admin-panel.js +++ b/client/galaxy/scripts/apps/panels/admin-panel.js @@ -133,7 +133,8 @@ var AdminPanel = Backbone.View.extend({ }, { title: _l("View error logs"), - url: "admin/tool_errors" + url: "admin/error_stack", + target: "__use_router__" } ] } diff --git a/client/galaxy/scripts/components/admin/AdminServices.js b/client/galaxy/scripts/components/admin/AdminServices.js index 965f188a11a..22c0c1c2e33 100644 --- a/client/galaxy/scripts/components/admin/AdminServices.js +++ b/client/galaxy/scripts/components/admin/AdminServices.js @@ -1,6 +1,11 @@ import { getAppRoot } from "onload/loadConfig"; import axios from "axios"; +export function getErrorStack() { + let url = `${getAppRoot()}api/tools/error_stack`; + return axios.get(url); +} + export function getDisplayApplications() { let url = `${getAppRoot()}api/display_applications`; return axios.get(url); diff --git a/client/galaxy/scripts/components/admin/ErrorStack.vue b/client/galaxy/scripts/components/admin/ErrorStack.vue new file mode 100644 index 00000000000..d594074daed --- /dev/null +++ b/client/galaxy/scripts/components/admin/ErrorStack.vue @@ -0,0 +1,54 @@ + + diff --git a/lib/galaxy/webapps/galaxy/api/tools.py b/lib/galaxy/webapps/galaxy/api/tools.py index 30372025c0e..c439f0d2041 100644 --- a/lib/galaxy/webapps/galaxy/api/tools.py +++ b/lib/galaxy/webapps/galaxy/api/tools.py @@ -5,6 +5,7 @@ from json import dumps import galaxy.queue_worker from galaxy import exceptions, managers, util, web from galaxy.managers.collections_util import dictify_dataset_collection_instance +from galaxy.tools import global_tool_errors from galaxy.util.json import safe_dumps from galaxy.util.odict import odict from galaxy.visualization.genomes import GenomeRegion @@ -424,6 +425,15 @@ class ToolsController(BaseAPIController, UsesVisualizationMixin): create_payload.update(files_payload) return self._create(trans, create_payload, **kwd) + @expose_api + @web.require_admin + def error_stack(self, trans, **kwd): + """ + GET /api/tools/error_stack + Returns global tool error stack + """ + return global_tool_errors.error_stack + @expose_api_anonymous def create(self, trans, payload, **kwd): """ diff --git a/lib/galaxy/webapps/galaxy/buildapp.py b/lib/galaxy/webapps/galaxy/buildapp.py index 9d1153c15f0..e0566679756 100644 --- a/lib/galaxy/webapps/galaxy/buildapp.py +++ b/lib/galaxy/webapps/galaxy/buildapp.py @@ -102,6 +102,7 @@ def app_factory(global_conf, load_app_kwds={}, **kwargs): webapp.add_client_route('/admin/data_tables', 'admin') webapp.add_client_route('/admin/data_types', 'admin') webapp.add_client_route('/admin/data_manager{path_info:.*}', 'admin') + webapp.add_client_route('/admin/error_stack', 'admin') webapp.add_client_route('/admin/users', 'admin') webapp.add_client_route('/admin/display_applications', 'admin') webapp.add_client_route('/admin/roles', 'admin') @@ -320,6 +321,7 @@ def populate_api_routes(webapp, app): webapp.mapper.connect('/api/tools/fetch', action='fetch', controller='tools', conditions=dict(method=["POST"])) webapp.mapper.connect('/api/tools/all_requirements', action='all_requirements', controller="tools") + webapp.mapper.connect('/api/tools/error_stack', action='error_stack', controller="tools") webapp.mapper.connect('/api/tools/{id:.+?}/build', action='build', controller="tools") webapp.mapper.connect('/api/tools/{id:.+?}/reload', action='reload', controller="tools") webapp.mapper.connect('/api/tools/tests_summary', action='tests_summary', controller="tools") diff --git a/lib/galaxy/webapps/galaxy/controllers/admin.py b/lib/galaxy/webapps/galaxy/controllers/admin.py index e03bfe0288c..b06bfa4841e 100644 --- a/lib/galaxy/webapps/galaxy/controllers/admin.py +++ b/lib/galaxy/webapps/galaxy/controllers/admin.py @@ -17,7 +17,6 @@ from galaxy import ( from galaxy.actions.admin import AdminActions from galaxy.exceptions import ActionInputError, MessageException from galaxy.model import tool_shed_install as install_model -from galaxy.tools import global_tool_errors from galaxy.util import ( nice_size, sanitize_text, @@ -903,11 +902,6 @@ class AdminGalaxy(controller.JSAppLauncher, AdminActions, UsesQuotaMixin, QuotaP message=message, status=status) - @web.expose - @web.require_admin - def tool_errors(self, trans, **kwd): - return trans.fill_template('admin/tool_errors.mako', tool_errors=global_tool_errors.error_stack) - @web.expose @web.require_admin def center(self, trans, **kwd): diff --git a/templates/admin/tool_errors.mako b/templates/admin/tool_errors.mako deleted file mode 100644 index 7843f0034ff..00000000000 --- a/templates/admin/tool_errors.mako +++ /dev/null @@ -1,27 +0,0 @@ -<%inherit file="/base.mako"/> - -<%def name="title()">Tool Errors - -

Tool Errors

- -

-Internal Tool Error log -

- - - - - - - - -%for error in tool_errors: - - - - - - -%endfor -
TimePhaseFileError
${error['time']}${error['phase']}${error['file']}${error['error']}
-