ipfabric_netbox 3.2.1__tar.gz → 3.2.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ipfabric_netbox might be problematic. Click here for more details.

Files changed (65) hide show
  1. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/PKG-INFO +10 -11
  2. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/README.md +9 -10
  3. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/__init__.py +1 -1
  4. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/exceptions.py +2 -2
  5. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/utilities/ipfutils.py +15 -8
  6. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/pyproject.toml +1 -1
  7. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/api/__init__.py +0 -0
  8. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/api/nested_serializers.py +0 -0
  9. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/api/serializers.py +0 -0
  10. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/api/urls.py +0 -0
  11. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/api/views.py +0 -0
  12. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/choices.py +0 -0
  13. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/data/transform_map.json +0 -0
  14. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/filtersets.py +0 -0
  15. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/forms.py +0 -0
  16. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/jobs.py +0 -0
  17. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0001_initial.py +0 -0
  18. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0002_ipfabricsnapshot_status.py +0 -0
  19. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0003_ipfabricsource_type_and_more.py +0 -0
  20. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0004_ipfabricsync_auto_merge.py +0 -0
  21. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0005_alter_ipfabricrelationshipfield_source_model_and_more.py +0 -0
  22. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0006_alter_ipfabrictransformmap_target_model.py +0 -0
  23. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0007_prepare_custom_fields.py +0 -0
  24. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0008_prepare_transform_maps.py +0 -0
  25. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0009_transformmap_changes_for_netbox_v4_2.py +0 -0
  26. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0010_remove_uuid_from_get_or_create.py +0 -0
  27. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/__init__.py +0 -0
  28. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/models.py +0 -0
  29. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/navigation.py +0 -0
  30. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/signals.py +0 -0
  31. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/tables.py +0 -0
  32. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/template_content.py +0 -0
  33. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/diff.html +0 -0
  34. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/json.html +0 -0
  35. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/logs_pending.html +0 -0
  36. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/merge_form.html +0 -0
  37. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/site_topology_button.html +0 -0
  38. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/site_topology_modal.html +0 -0
  39. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/snapshotdata.html +0 -0
  40. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/sync_delete.html +0 -0
  41. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/transform_map_field_map.html +0 -0
  42. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/transform_map_relationship_map.html +0 -0
  43. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabric_table.html +0 -0
  44. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabricbranch.html +0 -0
  45. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabricsnapshot.html +0 -0
  46. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabricsource.html +0 -0
  47. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabricsync.html +0 -0
  48. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabrictransformmap.html +0 -0
  49. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabrictransformmap_list.html +0 -0
  50. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabrictransformmap_restore.html +0 -0
  51. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/partials/branch_all.html +0 -0
  52. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/partials/branch_progress.html +0 -0
  53. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/partials/branch_status.html +0 -0
  54. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/partials/job_logs.html +0 -0
  55. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/partials/sync_last_branch.html +0 -0
  56. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/sync_list.html +0 -0
  57. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/static/ipfabric_netbox/css/rack.css +0 -0
  58. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/tests/__init__.py +0 -0
  59. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/tests/test_models.py +0 -0
  60. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/urls.py +0 -0
  61. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/utilities/__init__.py +0 -0
  62. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/utilities/logging.py +0 -0
  63. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/utilities/nbutils.py +0 -0
  64. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/utilities/transform_map.py +0 -0
  65. {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/views.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: ipfabric_netbox
3
- Version: 3.2.1
3
+ Version: 3.2.3
4
4
  Summary: NetBox plugin to sync IP Fabric data into NetBox
5
5
  License: MIT
6
6
  Keywords: netbox,ipfabric,plugin,sync
@@ -57,19 +57,18 @@ The plugin uses IP Fabric collect network data utilizing the [IP Fabric Python S
57
57
  - Diff Visualization
58
58
 
59
59
  ## NetBox Compatibility
60
- These are the minimum NetBox versions for corresponding plugin version. Following minor versions should work too, but they are not tested.
60
+ These are the required NetBox versions for corresponding plugin version. Any other versions won't work due to breaking changes in NetBox codebase.
61
61
 
62
62
  | Netbox Version | Plugin Version |
63
63
  |----------------|----------------|
64
- | 3.4 | <=1.0.11 |
65
- | 3.5 | <=1.0.11 |
66
- | 3.6 | <=1.0.11 |
67
- | 3.7 | >=2.0.0 |
68
- | 4.0 | >=3.0.0 |
69
- | 4.0.1 | >=3.0.1 |
70
- | 4.1.0 | >=3.1.0 |
71
- | 4.1.5 | >=3.1.1 |
72
- | 4.2.0 | >=3.2.0 |
64
+ | 4.2.4 and up | 3.2.2 and up |
65
+ | 4.2.0 - 4.2.3 | 3.2.0 |
66
+ | 4.1.5 - 4.1.11 | 3.1.1 - 3.1.3 |
67
+ | 4.1.0 - 4.1.4 | 3.1.0 |
68
+ | 4.0.1 | 3.0.1 - 3.0.3 |
69
+ | 4.0.0 | 3.0.0 |
70
+ | 3.7.0 - 3.7.8 | 2.0.0 - 2.0.6 |
71
+ | 3.4.0 - 3.6.9 | 1.0.0 - 1.0.11 |
73
72
 
74
73
  ## Screenshots
75
74
 
@@ -28,19 +28,18 @@ The plugin uses IP Fabric collect network data utilizing the [IP Fabric Python S
28
28
  - Diff Visualization
29
29
 
30
30
  ## NetBox Compatibility
31
- These are the minimum NetBox versions for corresponding plugin version. Following minor versions should work too, but they are not tested.
31
+ These are the required NetBox versions for corresponding plugin version. Any other versions won't work due to breaking changes in NetBox codebase.
32
32
 
33
33
  | Netbox Version | Plugin Version |
34
34
  |----------------|----------------|
35
- | 3.4 | <=1.0.11 |
36
- | 3.5 | <=1.0.11 |
37
- | 3.6 | <=1.0.11 |
38
- | 3.7 | >=2.0.0 |
39
- | 4.0 | >=3.0.0 |
40
- | 4.0.1 | >=3.0.1 |
41
- | 4.1.0 | >=3.1.0 |
42
- | 4.1.5 | >=3.1.1 |
43
- | 4.2.0 | >=3.2.0 |
35
+ | 4.2.4 and up | 3.2.2 and up |
36
+ | 4.2.0 - 4.2.3 | 3.2.0 |
37
+ | 4.1.5 - 4.1.11 | 3.1.1 - 3.1.3 |
38
+ | 4.1.0 - 4.1.4 | 3.1.0 |
39
+ | 4.0.1 | 3.0.1 - 3.0.3 |
40
+ | 4.0.0 | 3.0.0 |
41
+ | 3.7.0 - 3.7.8 | 2.0.0 - 2.0.6 |
42
+ | 3.4.0 - 3.6.9 | 1.0.0 - 1.0.11 |
44
43
 
45
44
  ## Screenshots
46
45
 
@@ -5,7 +5,7 @@ class NetboxIPFabricConfig(PluginConfig):
5
5
  name = "ipfabric_netbox"
6
6
  verbose_name = "NetBox IP Fabric SoT Plugin"
7
7
  description = "Sync IP Fabric into NetBox"
8
- version = "3.2.1"
8
+ version = "3.2.3"
9
9
  base_url = "ipfabric"
10
10
  min_version = "4.2.4"
11
11
 
@@ -14,11 +14,11 @@ class ErrorMixin(Exception):
14
14
  self.coalesce_fields = context
15
15
 
16
16
 
17
- class SearchError(LookupError, ErrorMixin):
17
+ class SearchError(ErrorMixin, LookupError):
18
18
  def __str__(self):
19
19
  return f"{self.model} with these keys not found: {self.coalesce_fields}."
20
20
 
21
21
 
22
- class SyncDataError(SyncError, ErrorMixin):
22
+ class SyncDataError(ErrorMixin, SyncError):
23
23
  def __str__(self):
24
24
  return f"Sync failed for {self.model}: coalesce_fields={self.coalesce_fields} defaults={self.defaults}."
@@ -302,7 +302,6 @@ class IPFabricSyncRunner(object):
302
302
  query_filter = {
303
303
  "and": [{"vendor": ["neq", vendor]} for vendor in excluded_vendors]
304
304
  }
305
- # filter = {"and": [{"vendor": ["neq", "aws"]}, {"vendor": ["neq", "azure"]}]}
306
305
 
307
306
  if ingestion_sites := self.settings.get("sites"):
308
307
  site_filter = {
@@ -311,13 +310,14 @@ class IPFabricSyncRunner(object):
311
310
  query_filter["and"].append(site_filter)
312
311
 
313
312
  self.logger.log_info(
314
- f"Creating site filter {json.dumps(site_filter)}", obj=self.sync
313
+ f"Creating site filter `{json.dumps(site_filter)}`",
314
+ obj=self.sync,
315
315
  )
316
316
  else:
317
317
  site_filter = {}
318
318
 
319
319
  data["site"] = self.client.inventory.sites.all(
320
- snapshot_id=self.settings["snapshot_id"]
320
+ snapshot_id=self.settings["snapshot_id"], filters=site_filter
321
321
  )
322
322
 
323
323
  data["device"] = self.client.inventory.devices.all(
@@ -331,14 +331,21 @@ class IPFabricSyncRunner(object):
331
331
  )
332
332
 
333
333
  data["interface"] = self.client.inventory.interfaces.all(
334
- snapshot_id=self.settings["snapshot_id"]
334
+ snapshot_id=self.settings["snapshot_id"], filters=site_filter
335
335
  )
336
336
 
337
+ inventory_item_filter = {
338
+ "and": [
339
+ {"sn": ["empty", False]},
340
+ {"name": ["empty", False]},
341
+ ]
342
+ }
343
+ if site_filter:
344
+ inventory_item_filter["and"].append(site_filter)
345
+
337
346
  data["inventoryitem"] = self.client.inventory.pn.all(
338
347
  snapshot_id=self.settings["snapshot_id"],
339
- filters={
340
- "and": [{"sn": ["empty", False]}, {"name": ["empty", False]}]
341
- },
348
+ filters=inventory_item_filter,
342
349
  )
343
350
 
344
351
  data["vlan"] = self.client.technology.vlans.site_summary.all(
@@ -363,7 +370,7 @@ class IPFabricSyncRunner(object):
363
370
  data[
364
371
  "ipaddress"
365
372
  ] = self.client.technology.addressing.managed_ip_ipv4.all(
366
- snapshot_id=self.settings["snapshot_id"]
373
+ snapshot_id=self.settings["snapshot_id"], filters=site_filter
367
374
  )
368
375
  except Exception as e:
369
376
  self.logger.log_failure(
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ipfabric_netbox"
3
- version = "3.2.1"
3
+ version = "3.2.3"
4
4
  description = "NetBox plugin to sync IP Fabric data into NetBox"
5
5
  authors = [{name = "Solution Architecture <solution.architecture@ipfabric.io>"}]
6
6
  license = "MIT"