Add search indexers for DataSource, DataFile

This commit is contained in:
jeremystretch 2023-01-31 14:16:29 -05:00
parent a8ed149840
commit efcc3500e2
3 changed files with 33 additions and 0 deletions

8
netbox/core/apps.py Normal file
View File

@ -0,0 +1,8 @@
from django.apps import AppConfig
class CoreConfig(AppConfig):
name = "core"
def ready(self):
from . import data_backends, search

View File

@ -1,6 +1,7 @@
import logging import logging
from extras.choices import JobResultStatusChoices from extras.choices import JobResultStatusChoices
from netbox.search.backends import search_backend
from .choices import * from .choices import *
from .exceptions import SyncError from .exceptions import SyncError
from .models import DataSource from .models import DataSource
@ -17,6 +18,10 @@ def sync_datasource(job_result, *args, **kwargs):
try: try:
job_result.start() job_result.start()
datasource.sync() datasource.sync()
# Update the search cache for DataFiles belonging to this source
search_backend.cache(datasource.datafiles.iterator())
except SyncError as e: except SyncError as e:
job_result.set_status(JobResultStatusChoices.STATUS_ERRORED) job_result.set_status(JobResultStatusChoices.STATUS_ERRORED)
job_result.save() job_result.save()

20
netbox/core/search.py Normal file
View File

@ -0,0 +1,20 @@
from netbox.search import SearchIndex, register_search
from . import models
@register_search
class DataSourceIndex(SearchIndex):
model = models.DataSource
fields = (
('name', 100),
('url', 300),
('description', 500),
)
@register_search
class DataFileIndex(SearchIndex):
model = models.DataFile
fields = (
('path', 200),
)