mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-10 22:02:17 -06:00
Record script execution time
This commit is contained in:
@@ -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():
|
||||
|
||||
@@ -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,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user