From c562af3a13a54b8e2d143db8d7f73c8f2096498d Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 14 Aug 2019 10:12:30 -0400 Subject: [PATCH] Record script execution time --- netbox/extras/scripts.py | 13 ++++++++++++- netbox/extras/views.py | 4 +++- netbox/templates/extras/script.html | 13 +++++++++++-- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/netbox/extras/scripts.py b/netbox/extras/scripts.py index ba4192b56..fac44a530 100644 --- a/netbox/extras/scripts.py +++ b/netbox/extras/scripts.py @@ -1,6 +1,7 @@ from collections import OrderedDict import inspect import pkgutil +import time from django import forms from django.conf import settings @@ -220,10 +221,14 @@ def run_script(script, data, commit=True): exists outside of the Script class to ensure it cannot be overridden by a script author. """ output = None + start_time = None + end_time = None try: with transaction.atomic(): + start_time = time.time() output = script.run(data) + end_time = time.time() if not commit: raise AbortTransaction() except AbortTransaction: @@ -239,7 +244,13 @@ def run_script(script, data, commit=True): "Database changes have been reverted automatically." ) - return output + # Calculate execution time + if end_time is not None: + execution_time = end_time - start_time + else: + execution_time = None + + return output, execution_time def get_scripts(): diff --git a/netbox/extras/views.py b/netbox/extras/views.py index 6b87c27de..6ef68b995 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -402,14 +402,16 @@ class ScriptView(PermissionRequiredMixin, View): script = self._get_script(module, name) form = script.as_form(request.POST) output = None + execution_time = None if form.is_valid(): commit = form.cleaned_data.pop('_commit') - run_script(script, form.cleaned_data, commit) + output, execution_time = run_script(script, form.cleaned_data, commit) return render(request, 'extras/script.html', { 'module': module, 'script': script, 'form': form, 'output': output, + 'execution_time': execution_time, }) diff --git a/netbox/templates/extras/script.html b/netbox/templates/extras/script.html index 454a2b582..c2b9bd205 100644 --- a/netbox/templates/extras/script.html +++ b/netbox/templates/extras/script.html @@ -30,12 +30,12 @@
- {% if script.log %} + {% if execution_time %}
- Script Output + Script Log
@@ -49,8 +49,17 @@ + {% empty %} + + + {% endfor %}
{% log_level level %} {{ message }}
+ No log output +
+