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.
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/PKG-INFO +10 -11
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/README.md +9 -10
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/__init__.py +1 -1
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/exceptions.py +2 -2
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/utilities/ipfutils.py +15 -8
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/pyproject.toml +1 -1
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/api/__init__.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/api/nested_serializers.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/api/serializers.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/api/urls.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/api/views.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/choices.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/data/transform_map.json +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/filtersets.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/forms.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/jobs.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0001_initial.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0002_ipfabricsnapshot_status.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0003_ipfabricsource_type_and_more.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0004_ipfabricsync_auto_merge.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0005_alter_ipfabricrelationshipfield_source_model_and_more.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0006_alter_ipfabrictransformmap_target_model.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0007_prepare_custom_fields.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0008_prepare_transform_maps.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0009_transformmap_changes_for_netbox_v4_2.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/0010_remove_uuid_from_get_or_create.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/migrations/__init__.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/models.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/navigation.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/signals.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/tables.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/template_content.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/diff.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/json.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/logs_pending.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/merge_form.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/site_topology_button.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/site_topology_modal.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/snapshotdata.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/sync_delete.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/transform_map_field_map.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/inc/transform_map_relationship_map.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabric_table.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabricbranch.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabricsnapshot.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabricsource.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabricsync.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabrictransformmap.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabrictransformmap_list.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/ipfabrictransformmap_restore.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/partials/branch_all.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/partials/branch_progress.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/partials/branch_status.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/partials/job_logs.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/partials/sync_last_branch.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/ipfabric_netbox/sync_list.html +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/templates/static/ipfabric_netbox/css/rack.css +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/tests/__init__.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/tests/test_models.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/urls.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/utilities/__init__.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/utilities/logging.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/utilities/nbutils.py +0 -0
- {ipfabric_netbox-3.2.1 → ipfabric_netbox-3.2.3}/ipfabric_netbox/utilities/transform_map.py +0 -0
- {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.
|
|
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
|
|
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
|
-
|
|
|
65
|
-
| 3
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
| 4.0
|
|
69
|
-
| 4.0.
|
|
70
|
-
|
|
|
71
|
-
| 4.
|
|
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
|
|
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
|
-
|
|
|
36
|
-
| 3
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
| 4.0
|
|
40
|
-
| 4.0.
|
|
41
|
-
|
|
|
42
|
-
| 4.
|
|
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
|
|
|
@@ -14,11 +14,11 @@ class ErrorMixin(Exception):
|
|
|
14
14
|
self.coalesce_fields = context
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
class SearchError(
|
|
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(
|
|
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)}",
|
|
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(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|