nornir-collection 0.0.25__tar.gz → 0.0.26__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.
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/PKG-INFO +1 -1
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/utils.py +0 -2
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/netbox/inventory.py +1 -1
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/netbox/update_prefixes_ip_addresses.py +31 -28
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection.egg-info/PKG-INFO +1 -1
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/setup.py +1 -1
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/LICENSE +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/README.md +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/__init__.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/batfish/__init__.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/batfish/assert_config.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/batfish/utils.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/__init__.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/__init__.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/cli/__init__.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/cli/config_tasks.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/cli/config_workflow.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/cli/show_tasks.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/netconf/__init__.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/netconf/config_tasks.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/netconf/config_workflow.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/netconf/nr_cfg_iosxe_netconf.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/netconf/ops_tasks.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/processor.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/pyats.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/restconf/__init__.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/restconf/cisco_rpc.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/restconf/config_workflow.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/configuration_management/restconf/tasks.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/software_upgrade/__init__.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/software_upgrade/cisco_software_upgrade.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/software_upgrade/utils.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/support_api/__init__.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/support_api/api_calls.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/support_api/cisco_maintenance_report.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/support_api/cisco_support.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/support_api/reports.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/support_api/utils.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/fortinet/__init__.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/fortinet/utils.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/git.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/netbox/__init__.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/netbox/custom_script.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/netbox/set_device_status.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/netbox/sync_datasource.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/netbox/update_cisco_inventory_data.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/netbox/update_cisco_support_plugin_data.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/netbox/update_fortinet_inventory_data.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/netbox/update_purestorage_inventory_data.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/netbox/utils.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/netbox/verify_device_primary_ip.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/nornir_plugins/__init__.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/nornir_plugins/inventory/__init__.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/nornir_plugins/inventory/netbox.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/nornir_plugins/inventory/staggered_yaml.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/nornir_plugins/inventory/utils.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/purestorage/__init__.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/purestorage/utils.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/utils.py +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection.egg-info/SOURCES.txt +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection.egg-info/dependency_links.txt +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection.egg-info/requires.txt +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection.egg-info/top_level.txt +0 -0
- {nornir_collection-0.0.25 → nornir_collection-0.0.26}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: nornir-collection
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.26
|
4
4
|
Summary: Nornir-Collection contains network automation functions and complete IaC workflows with Nornir and other python libraries. It contains Nornir tasks and general functions in Nornir style.
|
5
5
|
Author: Willi Kubny
|
6
6
|
Author-email: willi.kubny@gmail.ch
|
@@ -234,9 +234,7 @@ def add_interface_data(task: Task, interface: dict) -> dict:
|
|
234
234
|
"""
|
235
235
|
# If the interface is part of a Port-channel
|
236
236
|
if "lag" in interface and interface["lag"] is not None:
|
237
|
-
# Set the int_config_context of the Port-channel to the int_config_context of the interface
|
238
237
|
po_interface = [i for i in task.host["interfaces"] if i["name"] == interface["lag"]["name"]]
|
239
|
-
interface["int_config_context"] = po_interface[0]["int_config_context"]
|
240
238
|
interface["description"] = po_interface[0]["description"]
|
241
239
|
interface["portchannel_number"] = extract_interface_number(interface["lag"]["name"])
|
242
240
|
|
@@ -92,7 +92,7 @@ def _load_interface_data(task: Task, all_interfaces: List[Dict], enrich_vlan_dat
|
|
92
92
|
# fmt: off
|
93
93
|
include_keys = [
|
94
94
|
"name", "int_template", "description", "type", "lag", "mode", "untagged_vlan", "tagged_vlans",
|
95
|
-
"count_ipaddresses", "count_fhrp_groups", "int_peer_device", "
|
95
|
+
"count_ipaddresses", "count_fhrp_groups", "int_peer_device", "enabled",
|
96
96
|
]
|
97
97
|
# fmt: on
|
98
98
|
# Make some normalization to the device interfaces data with the interface_filter list and others
|
@@ -306,6 +306,24 @@ def nmap_scan_host_ip_or_subnet(hosts: str) -> list:
|
|
306
306
|
return nmap_scan_result
|
307
307
|
|
308
308
|
|
309
|
+
def nmap_double_check_ips(ip_list: dict) -> list:
|
310
|
+
"""
|
311
|
+
TBD
|
312
|
+
"""
|
313
|
+
verified_ips = []
|
314
|
+
# Nmap scan ip-addresses of the maybe_delete_ips list
|
315
|
+
for ip in ip_list:
|
316
|
+
# Scan the prefix with nmap
|
317
|
+
scan_result = nmap_scan_host_ip_or_subnet(hosts=ip["address"])
|
318
|
+
# Add the nmap scan result to the inactive_ips list with the ID of the ip-address
|
319
|
+
if scan_result:
|
320
|
+
# As a single ip-address is scanned the scan_result can have only one list item
|
321
|
+
verified_ips.append({"id": ip["id"], **scan_result[0]})
|
322
|
+
|
323
|
+
# Return the verified ip-addresses list
|
324
|
+
return verified_ips
|
325
|
+
|
326
|
+
|
309
327
|
def get_ipfabric_data_for_prefix(prefix: dict) -> tuple:
|
310
328
|
"""
|
311
329
|
TBD
|
@@ -571,15 +589,8 @@ def delete_inactive_auto_discovered_ip_addresses(
|
|
571
589
|
maybe_delete_ips = create_ip_list(
|
572
590
|
loop_list=prefix["discovered_ips"], check_list=prefix["datasource_ips"], is_in_both=False
|
573
591
|
)
|
574
|
-
|
575
|
-
|
576
|
-
# Nmap scan ip-addresses of the maybe_delete_ips list
|
577
|
-
for ip in maybe_delete_ips:
|
578
|
-
# Scan the prefix with nmap
|
579
|
-
scan_result = nmap_scan_host_ip_or_subnet(hosts=ip["address"])
|
580
|
-
# Add the nmal scan result to the inactive_ips list
|
581
|
-
if scan_result:
|
582
|
-
delete_ips.extend(scan_result)
|
592
|
+
# Nmap scan ip-addresses of the maybe_delete_ips list
|
593
|
+
delete_ips = nmap_double_check_ips(ip_list=maybe_delete_ips)
|
583
594
|
|
584
595
|
# If ip-addresses have been found
|
585
596
|
if delete_ips:
|
@@ -659,14 +670,8 @@ def update_inactive_ip_addresses(nb_url: str, prefix: dict, ds: Literal["nmap",
|
|
659
670
|
maybe_active_ips = create_ip_list(
|
660
671
|
loop_list=prefix["inactive_ips"], check_list=prefix["datasource_ips"], is_in_both=False
|
661
672
|
)
|
662
|
-
|
663
|
-
|
664
|
-
for ip in maybe_active_ips:
|
665
|
-
# Scan the prefix with nmap
|
666
|
-
scan_result = nmap_scan_host_ip_or_subnet(hosts=ip["address"])
|
667
|
-
# Add the nmal scan result to the inactive_ips list
|
668
|
-
if scan_result:
|
669
|
-
active_ips.extend(scan_result)
|
673
|
+
# Nmap scan ip-addresses of the maybe_active_ips list
|
674
|
+
active_ips = nmap_double_check_ips(ip_list=maybe_active_ips)
|
670
675
|
|
671
676
|
# If ip-addresses have been found
|
672
677
|
if active_ips:
|
@@ -722,21 +727,16 @@ def update_active_ip_addresses(
|
|
722
727
|
resp=resp, nb_type="ip", data=active_ips, ds=ds, task_text=task_text, text=text
|
723
728
|
)
|
724
729
|
result.extend(sub_result)
|
725
|
-
|
730
|
+
if sub_failed:
|
731
|
+
failed = True
|
732
|
+
result.append(f"-> Payload:\n{payload}")
|
726
733
|
|
727
734
|
# Update the ip-addresses with the status 'active' that are not part of the datacenter list
|
728
735
|
maybe_inactive_ips = create_ip_list(
|
729
736
|
loop_list=prefix["active_ips"], check_list=prefix["datasource_ips"], is_in_both=False
|
730
737
|
)
|
731
|
-
|
732
|
-
|
733
|
-
# Nmap scan ip-addresses of the maybe_inactive_ips list
|
734
|
-
for ip in maybe_inactive_ips:
|
735
|
-
# Scan the prefix with nmap
|
736
|
-
scan_result = nmap_scan_host_ip_or_subnet(hosts=ip["address"])
|
737
|
-
# Add the nmal scan result to the inactive_ips list
|
738
|
-
if scan_result:
|
739
|
-
inactive_ips.extend(scan_result)
|
738
|
+
# Nmap scan ip-addresses of the maybe_inactive_ips list
|
739
|
+
inactive_ips = nmap_double_check_ips(ip_list=maybe_inactive_ips)
|
740
740
|
# Create a new list to exclude the overwrite_active ip-addresses
|
741
741
|
inactive_ips = [ip for ip in inactive_ips if ip["address"] not in overwrite_active]
|
742
742
|
|
@@ -756,7 +756,10 @@ def update_active_ip_addresses(
|
|
756
756
|
resp=resp, nb_type="ip", data=inactive_ips, ds=ds, task_text=task_text, text=text
|
757
757
|
)
|
758
758
|
result.extend(sub_result)
|
759
|
-
|
759
|
+
if sub_failed:
|
760
|
+
failed = True
|
761
|
+
result.append(f"-> Data for Payload:\n{inactive_ips}")
|
762
|
+
result.append(f"-> Payload:\n{payload}")
|
760
763
|
|
761
764
|
return result, failed
|
762
765
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: nornir-collection
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.26
|
4
4
|
Summary: Nornir-Collection contains network automation functions and complete IaC workflows with Nornir and other python libraries. It contains Nornir tasks and general functions in Nornir style.
|
5
5
|
Author: Willi Kubny
|
6
6
|
Author-email: willi.kubny@gmail.ch
|
@@ -11,7 +11,7 @@ with open("requirements.txt", encoding="utf-8") as f:
|
|
11
11
|
|
12
12
|
setuptools.setup(
|
13
13
|
name="nornir-collection",
|
14
|
-
version="0.0.
|
14
|
+
version="0.0.26",
|
15
15
|
author="Willi Kubny",
|
16
16
|
author_email="willi.kubny@gmail.ch",
|
17
17
|
description="Nornir-Collection contains network automation functions and complete IaC workflows with \
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/batfish/assert_config.py
RENAMED
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
|
{nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/support_api/reports.py
RENAMED
File without changes
|
{nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/cisco/support_api/utils.py
RENAMED
File without changes
|
{nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/fortinet/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/netbox/custom_script.py
RENAMED
File without changes
|
{nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/netbox/set_device_status.py
RENAMED
File without changes
|
{nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/netbox/sync_datasource.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/nornir_plugins/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/purestorage/__init__.py
RENAMED
File without changes
|
{nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection/purestorage/utils.py
RENAMED
File without changes
|
File without changes
|
{nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection.egg-info/SOURCES.txt
RENAMED
File without changes
|
File without changes
|
{nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection.egg-info/requires.txt
RENAMED
File without changes
|
{nornir_collection-0.0.25 → nornir_collection-0.0.26}/nornir_collection.egg-info/top_level.txt
RENAMED
File without changes
|
File without changes
|