Coverage for netbox_data_import/__init__.py: 100.00%
33 statements
« prev ^ index » next coverage.py v7.17.0, created at 2026-10-30 09:47 +0000
« prev ^ index » next coverage.py v7.17.0, created at 2026-10-30 09:47 +0000
1# SPDX-License-Identifier: Apache-2.0
2# Copyright (C) 2025 Marcin Zieba <marcinpsk@gmail.com>
3from typing import Any
5from netbox.plugins import PluginConfig
7from .preview_limits import MAX_PLAN_BYTES
9__version__ = "2.17.0"
12class NetBoxDataImportConfig(PluginConfig):
13 """NetBox plugin configuration for the Data Import plugin."""
15 name = "netbox_data_import"
16 verbose_name = "NetBox Data Import"
17 description = "NetBox plugin for importing data from external DCIM systems"
18 version = __version__
19 base_url = "data-import"
20 author = "Marcin Zieba"
21 author_email = "marcinpsk@gmail.com"
22 min_version = "4.6.9"
23 graphql_schema = "graphql.schema.schema"
24 middleware = ["netbox_data_import.branching.BranchRefusalMiddleware"]
26 default_settings: dict[str, Any] = {
27 # A deployment that names no allowlist reaches no origin, rather than every origin.
28 "inference_backend_origin_allowlist": [],
29 "preview_max_plan_bytes": MAX_PLAN_BYTES,
30 }
32 @classmethod
33 def validate(cls, user_config, netbox_version):
34 """Reject a malformed plugin configuration before the application serves a request."""
35 super().validate(user_config, netbox_version)
37 from django.core.exceptions import ImproperlyConfigured
39 from .inference_settings import InvalidInferenceConfiguration, validate_plugin_settings
40 from .preview_limits import InvalidPreviewConfiguration, preview_plan_byte_limit
42 try:
43 validate_plugin_settings(user_config)
44 preview_plan_byte_limit(user_config["preview_max_plan_bytes"])
45 except (InvalidInferenceConfiguration, InvalidPreviewConfiguration) as exc:
46 raise ImproperlyConfigured(f"Plugin {cls.__module__} has an invalid configuration: {exc}") from exc
48 def ready(self):
49 """Import the modules NetBox does not load, and register the Cable display vocabulary and netbox-branching."""
50 super().ready()
52 from . import branching, cable_disclosure, jobs, termination_proposal
54 cable_disclosure.register()
55 branching.register()
58config = NetBoxDataImportConfig