|
|
@@ -14,6 +14,7 @@ from core.forms import ManagedFileForm
|
|
|
from core.models import Job
|
|
|
from core.tables import JobTable
|
|
|
from dcim.models import Device, DeviceRole, Platform
|
|
|
+from extras.choices import LogLevelChoices
|
|
|
from extras.dashboard.forms import DashboardWidgetAddForm, DashboardWidgetForm
|
|
|
from extras.dashboard.utils import get_widget_class
|
|
|
from netbox.constants import DEFAULT_ACTION_PERMISSIONS
|
|
|
@@ -30,6 +31,7 @@ from utilities.templatetags.builtins.filters import render_markdown
|
|
|
from utilities.views import ContentTypePermissionRequiredMixin, get_viewname, register_model_view
|
|
|
from virtualization.models import VirtualMachine
|
|
|
from . import filtersets, forms, tables
|
|
|
+from .constants import LOG_LEVEL_RANK
|
|
|
from .models import *
|
|
|
from .scripts import run_script
|
|
|
from .tables import ReportResultsTable, ScriptResultsTable
|
|
|
@@ -1119,22 +1121,27 @@ class ScriptResultView(TableMixin, generic.ObjectView):
|
|
|
tests = None
|
|
|
table = None
|
|
|
index = 0
|
|
|
+
|
|
|
+ log_threshold = LOG_LEVEL_RANK.get(request.GET.get('log_threshold', LogLevelChoices.LOG_DEFAULT))
|
|
|
if job.data:
|
|
|
+
|
|
|
if 'log' in job.data:
|
|
|
if 'tests' in job.data:
|
|
|
tests = job.data['tests']
|
|
|
|
|
|
for log in job.data['log']:
|
|
|
- index += 1
|
|
|
- result = {
|
|
|
- 'index': index,
|
|
|
- 'time': log.get('time'),
|
|
|
- 'status': log.get('status'),
|
|
|
- 'message': log.get('message'),
|
|
|
- 'object': log.get('obj'),
|
|
|
- 'url': log.get('url'),
|
|
|
- }
|
|
|
- data.append(result)
|
|
|
+ log_level = LOG_LEVEL_RANK.get(log.get('status'), LogLevelChoices.LOG_DEFAULT)
|
|
|
+ if log_level >= log_threshold:
|
|
|
+ index += 1
|
|
|
+ result = {
|
|
|
+ 'index': index,
|
|
|
+ 'time': log.get('time'),
|
|
|
+ 'status': log.get('status'),
|
|
|
+ 'message': log.get('message'),
|
|
|
+ 'object': log.get('obj'),
|
|
|
+ 'url': log.get('url'),
|
|
|
+ }
|
|
|
+ data.append(result)
|
|
|
|
|
|
table = ScriptResultsTable(data, user=request.user)
|
|
|
table.configure(request)
|
|
|
@@ -1146,17 +1153,19 @@ class ScriptResultView(TableMixin, generic.ObjectView):
|
|
|
for method, test_data in tests.items():
|
|
|
if 'log' in test_data:
|
|
|
for time, status, obj, url, message in test_data['log']:
|
|
|
- index += 1
|
|
|
- result = {
|
|
|
- 'index': index,
|
|
|
- 'method': method,
|
|
|
- 'time': time,
|
|
|
- 'status': status,
|
|
|
- 'object': obj,
|
|
|
- 'url': url,
|
|
|
- 'message': message,
|
|
|
- }
|
|
|
- data.append(result)
|
|
|
+ log_level = LOG_LEVEL_RANK.get(status, LogLevelChoices.LOG_DEFAULT)
|
|
|
+ if log_level >= log_threshold:
|
|
|
+ index += 1
|
|
|
+ result = {
|
|
|
+ 'index': index,
|
|
|
+ 'method': method,
|
|
|
+ 'time': time,
|
|
|
+ 'status': status,
|
|
|
+ 'object': obj,
|
|
|
+ 'url': url,
|
|
|
+ 'message': message,
|
|
|
+ }
|
|
|
+ data.append(result)
|
|
|
|
|
|
table = ReportResultsTable(data, user=request.user)
|
|
|
table.configure(request)
|
|
|
@@ -1174,6 +1183,8 @@ class ScriptResultView(TableMixin, generic.ObjectView):
|
|
|
'script': job.object,
|
|
|
'job': job,
|
|
|
'table': table,
|
|
|
+ 'log_levels': dict(LogLevelChoices),
|
|
|
+ 'log_threshold': request.GET.get('log_threshold', LogLevelChoices.LOG_DEFAULT)
|
|
|
}
|
|
|
|
|
|
if job.data and 'log' in job.data:
|