mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-18 21:48:16 -06:00
14438 script job run
This commit is contained in:
parent
5981fc958d
commit
9543169025
@ -16,7 +16,7 @@ from core.choices import JobStatusChoices
|
|||||||
from core.models import Job
|
from core.models import Job
|
||||||
from extras.api.serializers import ScriptOutputSerializer
|
from extras.api.serializers import ScriptOutputSerializer
|
||||||
from extras.choices import LogLevelChoices
|
from extras.choices import LogLevelChoices
|
||||||
from extras.models import ScriptModule
|
from extras.models import ScriptModule, Script as ScriptModel
|
||||||
from extras.signals import clear_events
|
from extras.signals import clear_events
|
||||||
from ipam.formfields import IPAddressFormField, IPNetworkFormField
|
from ipam.formfields import IPAddressFormField, IPNetworkFormField
|
||||||
from ipam.validators import MaxPrefixLengthValidator, MinPrefixLengthValidator, prefix_validator
|
from ipam.validators import MaxPrefixLengthValidator, MinPrefixLengthValidator, prefix_validator
|
||||||
@ -485,8 +485,7 @@ def run_script(data, job, request=None, commit=True, **kwargs):
|
|||||||
"""
|
"""
|
||||||
job.start()
|
job.start()
|
||||||
|
|
||||||
module = ScriptModule.objects.get(pk=job.object_id)
|
script = ScriptModel.objects.get(pk=job.object_id).python_class()
|
||||||
script = module.scripts.get(job.name)()
|
|
||||||
|
|
||||||
logger = logging.getLogger(f"netbox.scripts.{script.full_name}")
|
logger = logging.getLogger(f"netbox.scripts.{script.full_name}")
|
||||||
logger.info(f"Running script (commit={commit})")
|
logger.info(f"Running script (commit={commit})")
|
||||||
|
@ -1252,7 +1252,6 @@ class ScriptView(ContentTypePermissionRequiredMixin, View):
|
|||||||
# Allow execution only if RQ worker process is running
|
# Allow execution only if RQ worker process is running
|
||||||
if not get_workers_for_queue('default'):
|
if not get_workers_for_queue('default'):
|
||||||
messages.error(request, "Unable to run script: RQ worker process not running.")
|
messages.error(request, "Unable to run script: RQ worker process not running.")
|
||||||
|
|
||||||
elif form.is_valid():
|
elif form.is_valid():
|
||||||
job = Job.enqueue(
|
job = Job.enqueue(
|
||||||
run_script,
|
run_script,
|
||||||
@ -1263,7 +1262,7 @@ class ScriptView(ContentTypePermissionRequiredMixin, View):
|
|||||||
interval=form.cleaned_data.pop('_interval'),
|
interval=form.cleaned_data.pop('_interval'),
|
||||||
data=form.cleaned_data,
|
data=form.cleaned_data,
|
||||||
request=copy_safe_request(request),
|
request=copy_safe_request(request),
|
||||||
job_timeout=script.job_timeout,
|
job_timeout=script.python_class.job_timeout,
|
||||||
commit=form.cleaned_data.pop('_commit')
|
commit=form.cleaned_data.pop('_commit')
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1329,11 +1328,10 @@ class ScriptResultView(ContentTypePermissionRequiredMixin, View):
|
|||||||
return 'extras.view_script'
|
return 'extras.view_script'
|
||||||
|
|
||||||
def get(self, request, job_pk):
|
def get(self, request, job_pk):
|
||||||
object_type = ContentType.objects.get_by_natural_key(app_label='extras', model='scriptmodule')
|
object_type = ContentType.objects.get_by_natural_key(app_label='extras', model='script')
|
||||||
job = get_object_or_404(Job.objects.all(), pk=job_pk, object_type=object_type)
|
job = get_object_or_404(Job.objects.all(), pk=job_pk, object_type=object_type)
|
||||||
|
|
||||||
module = job.object
|
script = job.object
|
||||||
script = module.scripts[job.name]()
|
|
||||||
|
|
||||||
# If this is an HTMX request, return only the result HTML
|
# If this is an HTMX request, return only the result HTML
|
||||||
if request.htmx:
|
if request.htmx:
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
<ol class="breadcrumb">
|
<ol class="breadcrumb">
|
||||||
<li class="breadcrumb-item"><a href="{% url 'extras:script_list' %}">{% trans "Scripts" %}</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'extras:script_list' %}">{% trans "Scripts" %}</a></li>
|
||||||
<li class="breadcrumb-item"><a href="{% url 'extras:script_list' %}#module.{{ script.module }}">{{ script.module|bettertitle }}</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'extras:script_list' %}#module.{{ script.module }}">{{ script.module|bettertitle }}</a></li>
|
||||||
<li class="breadcrumb-item"><a href="{% url 'extras:script' module=script.module name=script.class_name %}">{{ script }}</a></li>
|
<li class="breadcrumb-item"><a href="{% url 'extras:script' script.id %}">{{ script }}</a></li>
|
||||||
<li class="breadcrumb-item">{{ job.created|annotated_date }}</li>
|
<li class="breadcrumb-item">{{ job.created|annotated_date }}</li>
|
||||||
</ol>
|
</ol>
|
||||||
</nav>
|
</nav>
|
||||||
|
Loading…
Reference in New Issue
Block a user