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 @@
+
+
+
+ {{ messageText }}
+
+
+ No errors available.
+
+
+
+
+
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%def>
-
-
Tool Errors
-
-
-Internal Tool Error log
-
-
-
-
-%for error in tool_errors:
-
- | ${error['time']} |
- ${error['phase']} |
- ${error['file']} |
- ${error['error']} |
-
-%endfor
-
-