nornir-collection 0.0.22__tar.gz → 0.0.24__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.
Files changed (64) hide show
  1. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/PKG-INFO +1 -1
  2. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/netconf/config_tasks.py +37 -25
  3. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/netbox/inventory.py +2 -2
  4. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection.egg-info/PKG-INFO +1 -1
  5. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/setup.py +1 -1
  6. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/LICENSE +0 -0
  7. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/README.md +0 -0
  8. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/__init__.py +0 -0
  9. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/batfish/__init__.py +0 -0
  10. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/batfish/assert_config.py +0 -0
  11. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/batfish/utils.py +0 -0
  12. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/__init__.py +0 -0
  13. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/__init__.py +0 -0
  14. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/cli/__init__.py +0 -0
  15. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/cli/config_tasks.py +0 -0
  16. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/cli/config_workflow.py +0 -0
  17. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/cli/show_tasks.py +0 -0
  18. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/netconf/__init__.py +0 -0
  19. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/netconf/config_workflow.py +0 -0
  20. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/netconf/nr_cfg_iosxe_netconf.py +0 -0
  21. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/netconf/ops_tasks.py +0 -0
  22. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/processor.py +0 -0
  23. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/pyats.py +0 -0
  24. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/restconf/__init__.py +0 -0
  25. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/restconf/cisco_rpc.py +0 -0
  26. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/restconf/config_workflow.py +0 -0
  27. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/restconf/tasks.py +0 -0
  28. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/configuration_management/utils.py +0 -0
  29. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/software_upgrade/__init__.py +0 -0
  30. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/software_upgrade/cisco_software_upgrade.py +0 -0
  31. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/software_upgrade/utils.py +0 -0
  32. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/support_api/__init__.py +0 -0
  33. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/support_api/api_calls.py +0 -0
  34. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/support_api/cisco_maintenance_report.py +0 -0
  35. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/support_api/cisco_support.py +0 -0
  36. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/support_api/reports.py +0 -0
  37. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/cisco/support_api/utils.py +0 -0
  38. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/fortinet/__init__.py +0 -0
  39. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/fortinet/utils.py +0 -0
  40. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/git.py +0 -0
  41. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/netbox/__init__.py +0 -0
  42. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/netbox/custom_script.py +0 -0
  43. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/netbox/set_device_status.py +0 -0
  44. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/netbox/sync_datasource.py +0 -0
  45. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/netbox/update_cisco_inventory_data.py +0 -0
  46. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/netbox/update_cisco_support_plugin_data.py +0 -0
  47. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/netbox/update_fortinet_inventory_data.py +0 -0
  48. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/netbox/update_prefixes_ip_addresses.py +0 -0
  49. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/netbox/update_purestorage_inventory_data.py +0 -0
  50. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/netbox/utils.py +0 -0
  51. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/netbox/verify_device_primary_ip.py +0 -0
  52. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/nornir_plugins/__init__.py +0 -0
  53. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/nornir_plugins/inventory/__init__.py +0 -0
  54. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/nornir_plugins/inventory/netbox.py +0 -0
  55. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/nornir_plugins/inventory/staggered_yaml.py +0 -0
  56. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/nornir_plugins/inventory/utils.py +0 -0
  57. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/purestorage/__init__.py +0 -0
  58. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/purestorage/utils.py +0 -0
  59. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection/utils.py +0 -0
  60. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection.egg-info/SOURCES.txt +0 -0
  61. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection.egg-info/dependency_links.txt +0 -0
  62. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection.egg-info/requires.txt +0 -0
  63. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/nornir_collection.egg-info/top_level.txt +0 -0
  64. {nornir_collection-0.0.22 → nornir_collection-0.0.24}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: nornir-collection
3
- Version: 0.0.22
3
+ Version: 0.0.24
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
@@ -413,6 +413,7 @@ def nc_edit_tpl_int_config(task: Task, tpl_startswith: str, verbose: bool = Fals
413
413
 
414
414
  #### Configure each interface with the Jinja2 rendered template #########################################
415
415
 
416
+ j2_task_text = "Render Jinja2 NETCONF interface payload template"
416
417
  # Track if the overall task has failed
417
418
  task_failed = False
418
419
  # The custom_result list will be filled with the result of each interface
@@ -426,33 +427,44 @@ def nc_edit_tpl_int_config(task: Task, tpl_startswith: str, verbose: bool = Fals
426
427
  for interface in interfaces:
427
428
  # Set the interface template name
428
429
  tpl_name = interface["int_template"]
429
- tpl_path = task.host[tpl_name]
430
-
431
- # Add additional interface data for Jinja2 **kwargs
432
- interface = add_interface_data(task=task, interface=interface)
433
- # Extract the interface name and the interface number into a variable and add the current
434
- # interface details for the Jinja2 **kwargs
435
- j2_kwargs = {
436
- "interface": {
437
- "interface_name": extract_interface_name(interface["name"]),
438
- "interface_number": extract_interface_number(interface["name"]),
439
- **interface,
430
+ # Check if the interface template name is in the host inventory
431
+ if tpl_name in task.host:
432
+ # Set the interface template path
433
+ tpl_path = task.host[tpl_name]
434
+
435
+ # Add additional interface data for Jinja2 **kwargs
436
+ interface = add_interface_data(task=task, interface=interface)
437
+ # Extract the interface name and the interface number into a variable and add the current
438
+ # interface details for the Jinja2 **kwargs
439
+ j2_kwargs = {
440
+ "interface": {
441
+ "interface_name": extract_interface_name(interface["name"]),
442
+ "interface_number": extract_interface_number(interface["name"]),
443
+ **interface,
444
+ }
440
445
  }
441
- }
442
446
 
443
- # Render the Jinja2 payload template and configure the NETCONF candidate datastore
444
- custom_result, task_failed = netconf_configure_jinja2_rendered_payload_template(
445
- task=task,
446
- j2_task_text="Render Jinja2 NETCONF interface payload template",
447
- j2_tpl_path=tpl_path,
448
- custom_result=custom_result,
449
- task_failed=task_failed,
450
- info_msg=tpl_path,
451
- verbose=verbose,
452
- int_name=interface["name"],
453
- j2_tpl_name=tpl_name,
454
- j2_kwargs=j2_kwargs,
455
- )
447
+ # Render the Jinja2 payload template and configure the NETCONF candidate datastore
448
+ custom_result, task_failed = netconf_configure_jinja2_rendered_payload_template(
449
+ task=task,
450
+ j2_task_text=j2_task_text,
451
+ j2_tpl_path=tpl_path,
452
+ custom_result=custom_result,
453
+ task_failed=task_failed,
454
+ info_msg=tpl_path,
455
+ verbose=verbose,
456
+ int_name=interface["name"],
457
+ j2_tpl_name=tpl_name,
458
+ j2_kwargs=j2_kwargs,
459
+ )
460
+ # Else the interface template name is not in the host inventory
461
+ else:
462
+ custom_result.append(
463
+ f"{task_result(text=j2_task_text, changed=False, level_name='ERROR', failed=True)}\n"
464
+ f"'{interface['name']} ({tpl_name})' -> NornirResponse <Success: False>\n"
465
+ f"-> Interface template '{tpl_name}' not found in the host inventory"
466
+ )
467
+ task_failed = True
456
468
 
457
469
  # Return the Nornir NETCONF result
458
470
  return Result(host=task.host, custom_result=custom_result, failed=task_failed)
@@ -91,8 +91,8 @@ def _load_interface_data(task: Task, all_interfaces: List[Dict], enrich_vlan_dat
91
91
  # Dict keys for comprehension to include only some key-value pairs
92
92
  # fmt: off
93
93
  include_keys = [
94
- "name", "int_template", "description", "type", "lag", "count_ipaddresses",
95
- "count_fhrp_groups", "int_peer_device", "int_config_context", "enabled",
94
+ "name", "int_template", "description", "type", "lag", "mode", "untagged_vlan", "tagged_vlans",
95
+ "count_ipaddresses", "count_fhrp_groups", "int_peer_device", "int_config_context", "enabled",
96
96
  ]
97
97
  # fmt: on
98
98
  # Make some normalization to the device interfaces data with the interface_filter list and others
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: nornir-collection
3
- Version: 0.0.22
3
+ Version: 0.0.24
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.22",
14
+ version="0.0.24",
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 \