mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-24 17:38:37 -06:00
Drop enqueue_sync_job() method from DataSource
This commit is contained in:
parent
15f888ca65
commit
654e6e7e17
@ -7,6 +7,8 @@ from rest_framework.routers import APIRootView
|
|||||||
from rest_framework.viewsets import ReadOnlyModelViewSet
|
from rest_framework.viewsets import ReadOnlyModelViewSet
|
||||||
|
|
||||||
from core import filtersets
|
from core import filtersets
|
||||||
|
from core.choices import DataSourceStatusChoices
|
||||||
|
from core.jobs import SyncDataSourceJob
|
||||||
from core.models import *
|
from core.models import *
|
||||||
from netbox.api.metadata import ContentTypeMetadata
|
from netbox.api.metadata import ContentTypeMetadata
|
||||||
from netbox.api.viewsets import NetBoxModelViewSet, NetBoxReadOnlyModelViewSet
|
from netbox.api.viewsets import NetBoxModelViewSet, NetBoxReadOnlyModelViewSet
|
||||||
@ -36,7 +38,11 @@ class DataSourceViewSet(NetBoxModelViewSet):
|
|||||||
if not request.user.has_perm('core.sync_datasource', obj=datasource):
|
if not request.user.has_perm('core.sync_datasource', obj=datasource):
|
||||||
raise PermissionDenied(_("This user does not have permission to synchronize this data source."))
|
raise PermissionDenied(_("This user does not have permission to synchronize this data source."))
|
||||||
|
|
||||||
datasource.enqueue_sync_job(request)
|
# Enqueue the sync job & update the DataSource's status
|
||||||
|
SyncDataSourceJob.enqueue(instance=datasource, user=request.user)
|
||||||
|
datasource.status = DataSourceStatusChoices.QUEUED
|
||||||
|
DataSource.objects.filter(pk=datasource.pk).update(status=datasource.status)
|
||||||
|
|
||||||
serializer = serializers.DataSourceSerializer(datasource, context={'request': request})
|
serializer = serializers.DataSourceSerializer(datasource, context={'request': request})
|
||||||
|
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import hashlib
|
import hashlib
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import yaml
|
|
||||||
from fnmatch import fnmatchcase
|
from fnmatch import fnmatchcase
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
|
import yaml
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.contenttypes.fields import GenericForeignKey
|
from django.contrib.contenttypes.fields import GenericForeignKey
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
@ -12,7 +12,6 @@ from django.core.validators import RegexValidator
|
|||||||
from django.db import models
|
from django.db import models
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.module_loading import import_string
|
|
||||||
from django.utils.translation import gettext as _
|
from django.utils.translation import gettext as _
|
||||||
|
|
||||||
from netbox.constants import CENSOR_TOKEN, CENSOR_TOKEN_CHANGED
|
from netbox.constants import CENSOR_TOKEN, CENSOR_TOKEN_CHANGED
|
||||||
@ -23,7 +22,6 @@ from utilities.querysets import RestrictedQuerySet
|
|||||||
from ..choices import *
|
from ..choices import *
|
||||||
from ..exceptions import SyncError
|
from ..exceptions import SyncError
|
||||||
from ..signals import post_sync, pre_sync
|
from ..signals import post_sync, pre_sync
|
||||||
from .jobs import Job
|
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
'AutoSyncRecord',
|
'AutoSyncRecord',
|
||||||
@ -153,21 +151,6 @@ class DataSource(JobsMixin, PrimaryModel):
|
|||||||
|
|
||||||
return objectchange
|
return objectchange
|
||||||
|
|
||||||
def enqueue_sync_job(self, request):
|
|
||||||
"""
|
|
||||||
Enqueue a background job to synchronize the DataSource by calling sync().
|
|
||||||
"""
|
|
||||||
# Set the status to "syncing"
|
|
||||||
self.status = DataSourceStatusChoices.QUEUED
|
|
||||||
DataSource.objects.filter(pk=self.pk).update(status=self.status)
|
|
||||||
|
|
||||||
# Enqueue a sync job
|
|
||||||
SyncDataSourceJob = import_string('core.jobs.SyncDataSourceJob')
|
|
||||||
return SyncDataSourceJob.enqueue(
|
|
||||||
instance=self,
|
|
||||||
user=request.user
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_backend(self):
|
def get_backend(self):
|
||||||
backend_params = self.parameters or {}
|
backend_params = self.parameters or {}
|
||||||
return self.backend_class(self.source_url, **backend_params)
|
return self.backend_class(self.source_url, **backend_params)
|
||||||
|
@ -35,6 +35,8 @@ from utilities.htmx import htmx_partial
|
|||||||
from utilities.query import count_related
|
from utilities.query import count_related
|
||||||
from utilities.views import ContentTypePermissionRequiredMixin, GetRelatedModelsMixin, register_model_view
|
from utilities.views import ContentTypePermissionRequiredMixin, GetRelatedModelsMixin, register_model_view
|
||||||
from . import filtersets, forms, tables
|
from . import filtersets, forms, tables
|
||||||
|
from .choices import DataSourceStatusChoices
|
||||||
|
from .jobs import SyncDataSourceJob
|
||||||
from .models import *
|
from .models import *
|
||||||
|
|
||||||
|
|
||||||
@ -75,7 +77,11 @@ class DataSourceSyncView(BaseObjectView):
|
|||||||
|
|
||||||
def post(self, request, pk):
|
def post(self, request, pk):
|
||||||
datasource = get_object_or_404(self.queryset, pk=pk)
|
datasource = get_object_or_404(self.queryset, pk=pk)
|
||||||
job = datasource.enqueue_sync_job(request)
|
|
||||||
|
# Enqueue the sync job & update the DataSource's status
|
||||||
|
job = SyncDataSourceJob.enqueue(instance=datasource, user=request.user)
|
||||||
|
datasource.status = DataSourceStatusChoices.QUEUED
|
||||||
|
DataSource.objects.filter(pk=datasource.pk).update(status=datasource.status)
|
||||||
|
|
||||||
messages.success(request, f"Queued job #{job.pk} to sync {datasource}")
|
messages.success(request, f"Queued job #{job.pk} to sync {datasource}")
|
||||||
return redirect(datasource.get_absolute_url())
|
return redirect(datasource.get_absolute_url())
|
||||||
|
Loading…
Reference in New Issue
Block a user