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

1# SPDX-License-Identifier: Apache-2.0 

2# Copyright (C) 2025 Marcin Zieba <marcinpsk@gmail.com> 

3from typing import Any 

4 

5from netbox.plugins import PluginConfig 

6 

7from .preview_limits import MAX_PLAN_BYTES 

8 

9__version__ = "2.17.0" 

10 

11 

12class NetBoxDataImportConfig(PluginConfig): 

13 """NetBox plugin configuration for the Data Import plugin.""" 

14 

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"] 

25 

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 } 

31 

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) 

36 

37 from django.core.exceptions import ImproperlyConfigured 

38 

39 from .inference_settings import InvalidInferenceConfiguration, validate_plugin_settings 

40 from .preview_limits import InvalidPreviewConfiguration, preview_plan_byte_limit 

41 

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 

47 

48 def ready(self): 

49 """Import the modules NetBox does not load, and register the Cable display vocabulary and netbox-branching.""" 

50 super().ready() 

51 

52 from . import branching, cable_disclosure, jobs, termination_proposal 

53 

54 cable_disclosure.register() 

55 branching.register() 

56 

57 

58config = NetBoxDataImportConfig