nornir-collection 0.0.21__tar.gz → 0.0.23__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.21 → nornir_collection-0.0.23}/PKG-INFO +1 -1
  2. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/netconf/config_tasks.py +38 -25
  3. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection.egg-info/PKG-INFO +1 -1
  4. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/setup.py +1 -1
  5. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/LICENSE +0 -0
  6. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/README.md +0 -0
  7. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/__init__.py +0 -0
  8. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/batfish/__init__.py +0 -0
  9. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/batfish/assert_config.py +0 -0
  10. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/batfish/utils.py +0 -0
  11. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/__init__.py +0 -0
  12. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/__init__.py +0 -0
  13. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/cli/__init__.py +0 -0
  14. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/cli/config_tasks.py +0 -0
  15. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/cli/config_workflow.py +0 -0
  16. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/cli/show_tasks.py +0 -0
  17. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/netconf/__init__.py +0 -0
  18. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/netconf/config_workflow.py +0 -0
  19. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/netconf/nr_cfg_iosxe_netconf.py +0 -0
  20. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/netconf/ops_tasks.py +0 -0
  21. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/processor.py +0 -0
  22. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/pyats.py +0 -0
  23. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/restconf/__init__.py +0 -0
  24. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/restconf/cisco_rpc.py +0 -0
  25. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/restconf/config_workflow.py +0 -0
  26. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/restconf/tasks.py +0 -0
  27. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/configuration_management/utils.py +0 -0
  28. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/software_upgrade/__init__.py +0 -0
  29. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/software_upgrade/cisco_software_upgrade.py +0 -0
  30. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/software_upgrade/utils.py +0 -0
  31. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/support_api/__init__.py +0 -0
  32. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/support_api/api_calls.py +0 -0
  33. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/support_api/cisco_maintenance_report.py +0 -0
  34. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/support_api/cisco_support.py +0 -0
  35. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/support_api/reports.py +0 -0
  36. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/cisco/support_api/utils.py +0 -0
  37. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/fortinet/__init__.py +0 -0
  38. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/fortinet/utils.py +0 -0
  39. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/git.py +0 -0
  40. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/netbox/__init__.py +0 -0
  41. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/netbox/custom_script.py +0 -0
  42. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/netbox/inventory.py +0 -0
  43. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/netbox/set_device_status.py +0 -0
  44. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/netbox/sync_datasource.py +0 -0
  45. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/netbox/update_cisco_inventory_data.py +0 -0
  46. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/netbox/update_cisco_support_plugin_data.py +0 -0
  47. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/netbox/update_fortinet_inventory_data.py +0 -0
  48. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/netbox/update_prefixes_ip_addresses.py +0 -0
  49. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/netbox/update_purestorage_inventory_data.py +0 -0
  50. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/netbox/utils.py +0 -0
  51. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/netbox/verify_device_primary_ip.py +0 -0
  52. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/nornir_plugins/__init__.py +0 -0
  53. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/nornir_plugins/inventory/__init__.py +0 -0
  54. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/nornir_plugins/inventory/netbox.py +0 -0
  55. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/nornir_plugins/inventory/staggered_yaml.py +0 -0
  56. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/nornir_plugins/inventory/utils.py +0 -0
  57. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/purestorage/__init__.py +0 -0
  58. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/purestorage/utils.py +0 -0
  59. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection/utils.py +0 -0
  60. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection.egg-info/SOURCES.txt +0 -0
  61. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection.egg-info/dependency_links.txt +0 -0
  62. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection.egg-info/requires.txt +0 -0
  63. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/nornir_collection.egg-info/top_level.txt +0 -0
  64. {nornir_collection-0.0.21 → nornir_collection-0.0.23}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: nornir-collection
3
- Version: 0.0.21
3
+ Version: 0.0.23
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
@@ -236,6 +236,7 @@ def nc_edit_cleanup_portchannel(task: Task, verbose: bool = False) -> Result:
236
236
 
237
237
  # Create a empty list to add all current configured Port-channels and their associated interfaces
238
238
  current_po = {}
239
+ remove_po = {}
239
240
  if "Port-channel" in response["json"]["Cisco-IOS-XE-native:interface"]:
240
241
  # Loop through all Port-channels and add them and their associated interfaces as a list to the dict
241
242
  for po in response["json"]["Cisco-IOS-XE-native:interface"]["Port-channel"]:
@@ -412,6 +413,7 @@ def nc_edit_tpl_int_config(task: Task, tpl_startswith: str, verbose: bool = Fals
412
413
 
413
414
  #### Configure each interface with the Jinja2 rendered template #########################################
414
415
 
416
+ j2_task_text = "Render Jinja2 NETCONF interface payload template"
415
417
  # Track if the overall task has failed
416
418
  task_failed = False
417
419
  # The custom_result list will be filled with the result of each interface
@@ -425,33 +427,44 @@ def nc_edit_tpl_int_config(task: Task, tpl_startswith: str, verbose: bool = Fals
425
427
  for interface in interfaces:
426
428
  # Set the interface template name
427
429
  tpl_name = interface["int_template"]
428
- tpl_path = task.host[tpl_name]
429
-
430
- # Add additional interface data for Jinja2 **kwargs
431
- interface = add_interface_data(task=task, interface=interface)
432
- # Extract the interface name and the interface number into a variable and add the current
433
- # interface details for the Jinja2 **kwargs
434
- j2_kwargs = {
435
- "interface": {
436
- "interface_name": extract_interface_name(interface["name"]),
437
- "interface_number": extract_interface_number(interface["name"]),
438
- **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
+ }
439
445
  }
440
- }
441
446
 
442
- # Render the Jinja2 payload template and configure the NETCONF candidate datastore
443
- custom_result, task_failed = netconf_configure_jinja2_rendered_payload_template(
444
- task=task,
445
- j2_task_text="Render Jinja2 NETCONF interface payload template",
446
- j2_tpl_path=tpl_path,
447
- custom_result=custom_result,
448
- task_failed=task_failed,
449
- info_msg=tpl_path,
450
- verbose=verbose,
451
- int_name=interface["name"],
452
- j2_tpl_name=tpl_name,
453
- j2_kwargs=j2_kwargs,
454
- )
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
455
468
 
456
469
  # Return the Nornir NETCONF result
457
470
  return Result(host=task.host, custom_result=custom_result, failed=task_failed)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: nornir-collection
3
- Version: 0.0.21
3
+ Version: 0.0.23
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.21",
14
+ version="0.0.23",
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 \