diff --git a/netbox/core/management/commands/syncdatasource.py b/netbox/core/management/commands/syncdatasource.py index 0e7b268dc..aa8137952 100644 --- a/netbox/core/management/commands/syncdatasource.py +++ b/netbox/core/management/commands/syncdatasource.py @@ -34,12 +34,13 @@ class Command(BaseCommand): for i, datasource in enumerate(datasources, start=1): self.stdout.write(f"[{i}] Syncing {datasource}... ", ending='') self.stdout.flush() - - datasource.enqueue_sync_job() - datasource.refresh_from_db() - - self.stdout.write(datasource.get_status_display()) - self.stdout.flush() + try: + datasource.sync() + self.stdout.write(datasource.get_status_display()) + self.stdout.flush() + except Exception as e: + DataSource.objects.filter(pk=datasource.pk).update(status=DataSourceStatusChoices.FAILED) + raise e if len(options['name']) > 1: self.stdout.write(f"Finished.") diff --git a/netbox/core/models/data.py b/netbox/core/models/data.py index 75b8e4b18..5785d7276 100644 --- a/netbox/core/models/data.py +++ b/netbox/core/models/data.py @@ -153,7 +153,7 @@ class DataSource(JobsMixin, PrimaryModel): return objectchange - def enqueue_sync_job(self, request=None): + def enqueue_sync_job(self, request): """ Enqueue a background job to synchronize the DataSource by calling sync(). """ @@ -165,8 +165,7 @@ class DataSource(JobsMixin, PrimaryModel): SyncDataSourceJob = import_string('core.jobs.SyncDataSourceJob') return SyncDataSourceJob.enqueue( instance=self, - user=(request.user if request else None), - run_now=(request is None), + user=request.user ) def get_backend(self):