From c7b74b2090c6aa11c75f74ce550ec0219909d10f Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 2 Mar 2020 13:29:32 -0500 Subject: [PATCH] Fixes #4300: Pass "commit" argument when executing scripts via REST API --- docs/release-notes/version-2.7.md | 3 ++- netbox/extras/api/views.py | 7 ++++--- netbox/extras/tests/test_api.py | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/release-notes/version-2.7.md b/docs/release-notes/version-2.7.md index 9743b15d9..958df54eb 100644 --- a/docs/release-notes/version-2.7.md +++ b/docs/release-notes/version-2.7.md @@ -9,11 +9,12 @@ ## Bug Fixes -* [#4277](https://github.com/netbox-community/netbox/issues/4277) - Fix filtering of clusters by tenant * [#4274](https://github.com/netbox-community/netbox/issues/4274) - Fix incorrect schema definition of `int` type choicefields +* [#4277](https://github.com/netbox-community/netbox/issues/4277) - Fix filtering of clusters by tenant * [#4282](https://github.com/netbox-community/netbox/issues/4282) - Fix label on export button for device types * [#4285](https://github.com/netbox-community/netbox/issues/4285) - Include A/Z termination sites in provider circuits table * [#4295](https://github.com/netbox-community/netbox/issues/4295) - Fix assignment of parent LAG during interface bulk edit +* [#4300](https://github.com/netbox-community/netbox/issues/4300) - Pass "commit" argument when executing scripts via REST API * [#4301](https://github.com/netbox-community/netbox/issues/4301) - Fix exception when deleting device type with components --- diff --git a/netbox/extras/api/views.py b/netbox/extras/api/views.py index 167768861..aa9e380ba 100644 --- a/netbox/extras/api/views.py +++ b/netbox/extras/api/views.py @@ -14,7 +14,7 @@ from extras.models import ( ConfigContext, CustomFieldChoice, ExportTemplate, Graph, ImageAttachment, ObjectChange, ReportResult, Tag, ) from extras.reports import get_report, get_reports -from extras.scripts import get_script, get_scripts +from extras.scripts import get_script, get_scripts, run_script from utilities.api import FieldChoicesViewSet, IsAuthenticatedOrLoginNotRequired, ModelViewSet from . import serializers @@ -265,8 +265,9 @@ class ScriptViewSet(ViewSet): input_serializer = serializers.ScriptInputSerializer(data=request.data) if input_serializer.is_valid(): - output = script.run(input_serializer.data['data']) - script.output = output + data = input_serializer.data['data'] + commit = input_serializer.data['commit'] + script.output, execution_time = run_script(script, data, request, commit) output_serializer = serializers.ScriptOutputSerializer(script) return Response(output_serializer.data) diff --git a/netbox/extras/tests/test_api.py b/netbox/extras/tests/test_api.py index 223e5a530..3e6e43789 100644 --- a/netbox/extras/tests/test_api.py +++ b/netbox/extras/tests/test_api.py @@ -582,7 +582,7 @@ class ScriptTest(APITestCase): var2 = IntegerVar() var3 = BooleanVar() - def run(self, data): + def run(self, data, commit=True): self.log_info(data['var1']) self.log_success(data['var2'])