mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-03-11 09:04:54 +00:00
diagnostics: Individual module check framework
Each module will implement its own diagnostics. The diagnostics module will provide a common, standardized mechanism for running these diagnostics.
This commit is contained in:
parent
eae507d456
commit
fc00cb6bd9
@ -19,11 +19,14 @@
|
||||
Plinth module for running diagnostics
|
||||
"""
|
||||
|
||||
from django.http import Http404
|
||||
from django.template.response import TemplateResponse
|
||||
from gettext import gettext as _
|
||||
import importlib
|
||||
|
||||
from plinth import actions
|
||||
from plinth import cfg
|
||||
from plinth import module_loader
|
||||
from plinth.errors import ActionError
|
||||
|
||||
|
||||
@ -55,3 +58,24 @@ def test(request):
|
||||
{'title': _('Diagnostic Test'),
|
||||
'diagnostics_output': output,
|
||||
'diagnostics_error': error})
|
||||
|
||||
def module(request, module_name):
|
||||
"""Return diagnostics for a particular module."""
|
||||
found = False
|
||||
for module_import_path in module_loader.loaded_modules:
|
||||
if module_name == module_import_path.split('.')[-1]:
|
||||
found = True
|
||||
break
|
||||
|
||||
if not found:
|
||||
raise Http404('Module does not exist or not loaded')
|
||||
|
||||
loaded_module = importlib.import_module(module_import_path)
|
||||
results = []
|
||||
if hasattr(loaded_module, 'diagnose'):
|
||||
results = loaded_module.diagnose()
|
||||
|
||||
return TemplateResponse(request, 'diagnostics_module.html',
|
||||
{'title': _('Diagnostic Test'),
|
||||
'module_name': module_name,
|
||||
'results': results})
|
||||
|
||||
52
plinth/modules/diagnostics/templates/diagnostics_module.html
Normal file
52
plinth/modules/diagnostics/templates/diagnostics_module.html
Normal file
@ -0,0 +1,52 @@
|
||||
{% extends 'base.html' %}
|
||||
{% comment %}
|
||||
#
|
||||
# This file is part of Plinth.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
{% endcomment %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h2>Diagnostic Results</h2>
|
||||
|
||||
<h3>Module: {{ module_name }}</h3>
|
||||
|
||||
{% if results %}
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<table class="table table-bordered table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Test</th>
|
||||
<th>Result</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for test, result in results %}
|
||||
<tr>
|
||||
<td>{{ test }}</td>
|
||||
<td>{{ result }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<p>This module does not support diagnostics</p>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
@ -26,4 +26,6 @@ urlpatterns = patterns( # pylint: disable-msg=C0103
|
||||
'plinth.modules.diagnostics.diagnostics',
|
||||
url(r'^sys/diagnostics/$', 'index', name='index'),
|
||||
url(r'^sys/diagnostics/test/$', 'test', name='test'),
|
||||
url(r'^sys/diagnostics/module/(?P<module_name>[a-z\-]+)/$', 'module',
|
||||
name='module'),
|
||||
)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user