From 6b49eb0cc82fe4982e0c7f2a8b7f01f65b56f776 Mon Sep 17 00:00:00 2001 From: omid Date: Mon, 24 Jun 2024 14:44:26 -0400 Subject: [PATCH] Releasing v24.6 --- pkgs/clean-pkg/changelog/2024/june.rst | 18 + .../sdk_generator/output/github_clean.json | 62 +- .../src/genie/libs/clean/__init__.py | 2 +- .../cat9k/{ => c9800}/c9800_cl/stages.py | 0 .../genie/libs/clean/stages/iosxe/stages.py | 3 +- .../mock_data/iosxe/mock_data.yaml | 119 ++ .../test_install_remove_inactive.py | 81 ++ .../src/genie/libs/clean/stages/stages.py | 95 ++ .../stages/tests/test_configure_interfaces.py | 63 + .../genie/libs/clean/stages/tests/utils.py | 6 +- pkgs/conf-pkg/changelog/2024/june.rst | 32 + pkgs/conf-pkg/src/genie/libs/conf/__init__.py | 2 +- .../src/genie/libs/conf/interface/__init__.py | 19 +- .../conf/interface/iosxe/cat9k/__init__.py | 2 + .../interface/iosxe/cat9k/c9500/__init__.py | 2 + .../iosxe/cat9k/c9500/c9500_28C8D/__init__.py | 2 + .../cat9k/c9500/c9500_28C8D/interface.py | 78 + .../libs/conf/interface/iosxe/interface.py | 126 +- .../libs/conf/interface/nxos/interface.py | 53 + .../interface/nxos/tests/test_interface.py | 85 ++ .../changelog/2024/june.rst | 11 + .../genie/libs/filetransferutils/__init__.py | 2 +- .../filetransferutils/plugins/fileutils.py | 7 +- .../plugins/iosxe/fileutils.py | 11 +- .../tests/iosxe/test_filetransferutils.py | 25 +- .../changelog/2024/june.rst} | 0 .../src/genie/libs/health/__init__.py | 2 +- pkgs/ops-pkg/changelog/2024/june.rst | 34 + .../ops_generator/output/github_ops.json | 37 +- pkgs/ops-pkg/src/genie/libs/ops/__init__.py | 2 +- .../iosxe/cat3k/c3850/tests/test_interface.py | 4 +- .../libs/ops/lisp/ios/tests/test_lisp.py | 2 +- .../libs/ops/lisp/iosxe/tests/test_lisp.py | 2 +- .../iosxe/{ => cat8k}/c8200/platform.py | 0 .../{c8200 => cat8k/c8200/tests}/__init__.py | 0 .../c8200/tests/platform_output.py | 0 .../{ => cat8k}/c8200/tests/test_platform.py | 0 .../{c8200/tests => cat9k/c9500}/__init__.py | 0 .../iosxe/{ => cat9k}/c9500/platform.py | 0 .../{c9500 => cat9k/c9500/tests}/__init__.py | 0 .../c9500/tests/platform_output.py | 0 .../{ => cat9k}/c9500/tests/test_platform.py | 4 +- .../genie/libs/ops/tests/test_threading.py | 2 +- .../changelog/2024/june.rst} | 0 .../src/genie/libs/robot/__init__.py | 2 +- pkgs/sdk-pkg/changelog/2024/june.rst | 104 ++ .../sdk_generator/output/github_apis.json | 1290 ++++++++++++----- .../output/github_verifications.json | 16 +- pkgs/sdk-pkg/src/genie/libs/sdk/__init__.py | 2 +- .../sdk-pkg/src/genie/libs/sdk/apis/args.yaml | 6 - .../sdk/apis/iosxe/cat9k/c9300/__init__.py | 3 + .../iosxe/cat9k/c9300/platform/__init__.py | 0 .../apis/iosxe/cat9k/c9300/platform/get.py | 99 ++ .../apis/iosxe/cat9k/c9400/platform/get.py | 63 +- .../src/genie/libs/sdk/apis/iosxe/cdp/get.py | 33 +- .../genie/libs/sdk/apis/iosxe/cdp/verify.py | 59 + .../libs/sdk/apis/iosxe/debug/configure.py | 56 + .../libs/sdk/apis/iosxe/dmvpn/configure.py | 465 +++++- .../libs/sdk/apis/iosxe/flow/configure.py | 31 + .../sdk/apis/iosxe/interface/configure.py | 53 + .../libs/sdk/apis/iosxe/interface/verify.py | 64 +- .../libs/sdk/apis/iosxe/mac/configure.py | 38 + .../libs/sdk/apis/iosxe/platform/configure.py | 37 + .../libs/sdk/apis/iosxe/platform/execute.py | 6 +- .../genie/libs/sdk/apis/iosxe/platform/get.py | 15 +- .../sdk/apis/iosxe/policy_map/configure.py | 34 +- .../libs/sdk/apis/iosxe/qos/configure.py | 16 + .../sdk/apis/iosxe/redundancy/configure.py | 30 + .../libs/sdk/apis/iosxe/rommon/configure.py | 7 +- .../genie/libs/sdk/apis/iosxe/rommon/utils.py | 16 +- .../sdk/apis/iosxe/table_map/configure.py | 22 +- .../libs/sdk/apis/iosxe/udld/configure.py | 19 + .../src/genie/libs/sdk/apis/iosxe/utils.py | 18 +- pkgs/sdk-pkg/src/genie/libs/sdk/apis/tb.yaml | 18 - .../get/get_platform_fan_speed/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 42 + .../test_api_get_platform_fan_speed.py | 35 + .../get/get_power_supply_info/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 53 + .../test_api_get_power_supply_info.py | 42 + .../get/get_power_supply_info/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 66 + .../test_api_get_power_supply_info.py | 42 + .../get/get_cdp_neighbour_port_id/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 44 + .../test_api_get_cdp_neighbour_port_id.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 80 + ...test_api_verify_cdp_neighbors_interface.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 59 + ...e_fed_switch_active_punt_packet_capture.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ...st_api_configure_ip_nhrp_authentication.py | 35 + .../configure_ip_nhrp_holdtime/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_configure_ip_nhrp_holdtime.py | 35 + .../configure_ip_nhrp_map/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_configure_ip_nhrp_map.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ...est_api_configure_ip_nhrp_map_multicast.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ...configure_ip_nhrp_map_multicast_dynamic.py | 35 + .../configure_ip_nhrp_network_id/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_configure_ip_nhrp_network_id.py | 35 + .../configure_ip_nhrp_nhs/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_configure_ip_nhrp_nhs.py | 35 + .../configure_ip_nhrp_redirect/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_configure_ip_nhrp_redirect.py | 35 + .../configure_nhrp_group/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_configure_nhrp_group.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ...pi_configure_tunnel_mode_gre_multipoint.py | 35 + .../configure_tunnel_source/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_configure_tunnel_source.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ..._api_unconfigure_ip_nhrp_authentication.py | 35 + .../unconfigure_ip_nhrp_holdtime/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_unconfigure_ip_nhrp_holdtime.py | 35 + .../unconfigure_ip_nhrp_map/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_unconfigure_ip_nhrp_map.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ...t_api_unconfigure_ip_nhrp_map_multicast.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ...configure_ip_nhrp_map_multicast_dynamic.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ...test_api_unconfigure_ip_nhrp_network_id.py | 35 + .../unconfigure_ip_nhrp_nhs/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_unconfigure_ip_nhrp_nhs.py | 35 + .../unconfigure_ip_nhrp_redirect/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_unconfigure_ip_nhrp_redirect.py | 35 + .../unconfigure_nhrp_group/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_unconfigure_nhrp_group.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ..._unconfigure_tunnel_mode_gre_multipoint.py | 35 + .../unconfigure_tunnel_source/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_unconfigure_tunnel_source.py | 35 + .../configure_flow_monitor/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 43 + .../test_api_configure_flow_monitor.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 37 + ...api_configure_interface_dot1q_ethertype.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 38 + ...api_configure_subinterface_second_dot1q.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 40 + ...st_api_verify_interface_config_no_speed.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 40 + ...test_api_verify_interface_status_duplex.py | 35 + .../configure_mac_loopback/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_configure_mac_loopback.py | 35 + .../unconfigure_mac_loopback/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_unconfigure_mac_loopback.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 37 + ...t_api_configure_platform_mgmt_interface.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 38 + ...api_unconfigure_platform_mgmt_interface.py | 35 + .../mock_data/iosxe/mock_data.yaml | 144 +- .../get_boot_time/test_api_get_boot_time.py | 8 +- .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 38 + ..._configure_policy_map_set_cos_cos_table.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 235 +++ ...pi_config_replace_to_flash_memory_force.py | 35 + .../configure_redundancy/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 37 + .../test_api_configure_redundancy.py | 35 + .../unconfigure_redundancy/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 37 + .../test_api_unconfigure_redundancy.py | 35 + .../test_api_configure_rommon_tftp.py | 23 +- .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 37 + ...est_api_configure_table_map_set_default.py | 35 + .../unconfigure_udld_recovery/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_unconfigure_udld_recovery.py | 35 + .../utils/copy_file/test_api_copy_file.py | 2 +- .../mock_data/iosxe/mock_data.yaml | 18 + .../test_api_request_system_shell.py | 38 + ...t_get_mgmt_ip_and_mgmt_src_ip_addresses.py | 18 +- .../utils/test_get_mgmt_src_ip_addresses.py | 8 +- pkgs/sdk-pkg/src/genie/libs/sdk/apis/utils.py | 5 +- 212 files changed, 6733 insertions(+), 568 deletions(-) create mode 100644 pkgs/clean-pkg/changelog/2024/june.rst rename pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/{ => c9800}/c9800_cl/stages.py (100%) create mode 100644 pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/tests/test_install_remove_inactive/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/tests/test_install_remove_inactive/test_install_remove_inactive.py create mode 100644 pkgs/clean-pkg/src/genie/libs/clean/stages/tests/test_configure_interfaces.py create mode 100644 pkgs/conf-pkg/changelog/2024/june.rst create mode 100644 pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/__init__.py create mode 100644 pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/c9500/__init__.py create mode 100644 pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/c9500/c9500_28C8D/__init__.py create mode 100644 pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/c9500/c9500_28C8D/interface.py create mode 100644 pkgs/filetransferutils-pkg/changelog/2024/june.rst rename pkgs/{clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/c9800_cl/__init__.py => health-pkg/changelog/2024/june.rst} (100%) create mode 100644 pkgs/ops-pkg/changelog/2024/june.rst rename pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/{ => cat8k}/c8200/platform.py (100%) rename pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/{c8200 => cat8k/c8200/tests}/__init__.py (100%) rename pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/{ => cat8k}/c8200/tests/platform_output.py (100%) rename pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/{ => cat8k}/c8200/tests/test_platform.py (100%) rename pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/{c8200/tests => cat9k/c9500}/__init__.py (100%) rename pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/{ => cat9k}/c9500/platform.py (100%) rename pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/{c9500 => cat9k/c9500/tests}/__init__.py (100%) rename pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/{ => cat9k}/c9500/tests/platform_output.py (100%) rename pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/{ => cat9k}/c9500/tests/test_platform.py (97%) rename pkgs/{ops-pkg/src/genie/libs/ops/platform/iosxe/c9500/tests/__init__.py => robot-pkg/changelog/2024/june.rst} (100%) create mode 100644 pkgs/sdk-pkg/changelog/2024/june.rst delete mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/args.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9300/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9300/platform/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9300/platform/get.py delete mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tb.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_platform_fan_speed/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_platform_fan_speed/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_platform_fan_speed/test_api_get_platform_fan_speed.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_power_supply_info/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_power_supply_info/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_power_supply_info/test_api_get_power_supply_info.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9400/platform/get/get_power_supply_info/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9400/platform/get/get_power_supply_info/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9400/platform/get/get_power_supply_info/test_api_get_power_supply_info.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/get/get_cdp_neighbour_port_id/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/get/get_cdp_neighbour_port_id/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/get/get_cdp_neighbour_port_id/test_api_get_cdp_neighbour_port_id.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/verify/verify_cdp_neighbors_interface/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/verify/verify_cdp_neighbors_interface/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/verify/verify_cdp_neighbors_interface/test_api_verify_cdp_neighbors_interface.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_platform_software_fed_switch_active_punt_packet_capture/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_platform_software_fed_switch_active_punt_packet_capture/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_platform_software_fed_switch_active_punt_packet_capture/test_api_debug_platform_software_fed_switch_active_punt_packet_capture.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_authentication/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_authentication/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_authentication/test_api_configure_ip_nhrp_authentication.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_holdtime/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_holdtime/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_holdtime/test_api_configure_ip_nhrp_holdtime.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map/test_api_configure_ip_nhrp_map.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast/test_api_configure_ip_nhrp_map_multicast.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast_dynamic/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast_dynamic/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast_dynamic/test_api_configure_ip_nhrp_map_multicast_dynamic.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_network_id/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_network_id/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_network_id/test_api_configure_ip_nhrp_network_id.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_nhs/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_nhs/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_nhs/test_api_configure_ip_nhrp_nhs.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_redirect/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_redirect/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_redirect/test_api_configure_ip_nhrp_redirect.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_nhrp_group/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_nhrp_group/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_nhrp_group/test_api_configure_nhrp_group.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_mode_gre_multipoint/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_mode_gre_multipoint/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_mode_gre_multipoint/test_api_configure_tunnel_mode_gre_multipoint.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_source/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_source/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_source/test_api_configure_tunnel_source.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_authentication/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_authentication/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_authentication/test_api_unconfigure_ip_nhrp_authentication.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_holdtime/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_holdtime/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_holdtime/test_api_unconfigure_ip_nhrp_holdtime.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map/test_api_unconfigure_ip_nhrp_map.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast/test_api_unconfigure_ip_nhrp_map_multicast.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast_dynamic/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast_dynamic/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast_dynamic/test_api_unconfigure_ip_nhrp_map_multicast_dynamic.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_network_id/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_network_id/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_network_id/test_api_unconfigure_ip_nhrp_network_id.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_nhs/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_nhs/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_nhs/test_api_unconfigure_ip_nhrp_nhs.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_redirect/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_redirect/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_redirect/test_api_unconfigure_ip_nhrp_redirect.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_nhrp_group/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_nhrp_group/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_nhrp_group/test_api_unconfigure_nhrp_group.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_mode_gre_multipoint/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_mode_gre_multipoint/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_mode_gre_multipoint/test_api_unconfigure_tunnel_mode_gre_multipoint.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_source/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_source/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_source/test_api_unconfigure_tunnel_source.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_monitor/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_monitor/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_monitor/test_api_configure_flow_monitor.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_dot1q_ethertype/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_dot1q_ethertype/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_dot1q_ethertype/test_api_configure_interface_dot1q_ethertype.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_subinterface_second_dot1q/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_subinterface_second_dot1q/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_subinterface_second_dot1q/test_api_configure_subinterface_second_dot1q.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_config_no_speed/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_config_no_speed/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_config_no_speed/test_api_verify_interface_config_no_speed.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_status_duplex/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_status_duplex/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_status_duplex/test_api_verify_interface_status_duplex.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/configure_mac_loopback/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/configure_mac_loopback/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/configure_mac_loopback/test_api_configure_mac_loopback.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/unconfigure_mac_loopback/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/unconfigure_mac_loopback/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/unconfigure_mac_loopback/test_api_unconfigure_mac_loopback.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_platform_mgmt_interface/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_platform_mgmt_interface/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_platform_mgmt_interface/test_api_configure_platform_mgmt_interface.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/unconfigure_platform_mgmt_interface/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/unconfigure_platform_mgmt_interface/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/unconfigure_platform_mgmt_interface/test_api_unconfigure_platform_mgmt_interface.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_policy_map_set_cos_cos_table/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_policy_map_set_cos_cos_table/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_policy_map_set_cos_cos_table/test_api_configure_policy_map_set_cos_cos_table.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/qos/configure/config_replace_to_flash_memory_force/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/qos/configure/config_replace_to_flash_memory_force/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/qos/configure/config_replace_to_flash_memory_force/test_api_config_replace_to_flash_memory_force.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/configure_redundancy/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/configure_redundancy/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/configure_redundancy/test_api_configure_redundancy.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/unconfigure_redundancy/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/unconfigure_redundancy/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/unconfigure_redundancy/test_api_unconfigure_redundancy.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/table_map/configure/configure_table_map_set_default/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/table_map/configure/configure_table_map_set_default/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/table_map/configure/configure_table_map_set_default/test_api_configure_table_map_set_default.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/udld/configure/unconfigure_udld_recovery/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/udld/configure/unconfigure_udld_recovery/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/udld/configure/unconfigure_udld_recovery/test_api_unconfigure_udld_recovery.py diff --git a/pkgs/clean-pkg/changelog/2024/june.rst b/pkgs/clean-pkg/changelog/2024/june.rst new file mode 100644 index 000000000..53666e7f6 --- /dev/null +++ b/pkgs/clean-pkg/changelog/2024/june.rst @@ -0,0 +1,18 @@ +-------------------------------------------------------------------------------- + Fix +-------------------------------------------------------------------------------- + +* iosxe + * Modified InstallRemoveInactive + * Modified logic to search image using regular expression in remove_inactive_pkgs + * Added c9800_cl stages back + + +-------------------------------------------------------------------------------- + New +-------------------------------------------------------------------------------- + +* clean + * Added ConfigureInterfaces stage + + diff --git a/pkgs/clean-pkg/sdk_generator/output/github_clean.json b/pkgs/clean-pkg/sdk_generator/output/github_clean.json index b3fc7b7e5..36b5d5c6b 100644 --- a/pkgs/clean-pkg/sdk_generator/output/github_clean.json +++ b/pkgs/clean-pkg/sdk_generator/output/github_clean.json @@ -66,6 +66,41 @@ } } }, + "ApplySelfSignedCert": { + "folders": { + "iosxe": { + "folders": { + "cat9k": { + "folders": { + "c9800": { + "folders": { + "c9800_cl": { + "doc": " This stage configures the self-signed-certificate for the given trustpoint.\n\n Stage Schema\n ------------\n apply_self_signed_cert:\n\n key_size (int, optional): Key size to be configured. Default is 2048\n\n signature_algorithm (str, optional): Algorithm to be applied. Default is sha256\n\n encryption_type (int, optional): Encryption type to be configured. Default is 0\n\n password (str): Password to be configured for the trustpoint.\n\n timeout (int, optional): Execute timeout in seconds. Defaults to 300.\n\n Examples:\n apply_self_signed_cert:\n key_size:2048\n signature_algorithm:sha256\n encryption_type:0\n password:cisco123\n timeout: 150\n ", + "module_name": "stages.iosxe.cat9k.c9800.c9800_cl.stages", + "package": "genie.libs.clean", + "tokens": { + "submodel": "c9800_cl" + }, + "uid": "ApplySelfSignedCert", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/c9800/c9800_cl/stages.py#L19" + } + }, + "tokens": { + "model": "c9800" + } + } + }, + "tokens": { + "platform": "cat9k" + } + } + }, + "tokens": { + "os": "iosxe" + } + } + } + }, "BackupFileOnDevice": { "doc": "This stage copies an existing file on the device and prepends 'backup_'\nto the start of the file name.\n\nStage Schema\n------------\nbackup_file_on_device:\n\n copy_dir (str): Directory containing file to be backed up\n\n copy_file (str): File to be backed up\n\n overwrite (bool, optional): Overwrite the file if exists. Defaults to True.\n\n timeout (int, optional): Copy timeout in second. Defaults to 300.\n\nExample\n-------\nbackup_file_on_device:\n copy_dir: bootflash:\n copy_file: ISSUCleanGolden.cfg\n", "folders": {}, @@ -184,6 +219,14 @@ } } }, + "ConfigureInterfaces": { + "doc": "This stage configures interfaces on the device.\n\n This stages uses genie Conf objects and build_config() API to configure \n interfaces on devices.\n\nStage Schema\n------------\nconfigure_interfaces:\n interfaces:\n : # regex, default: '.*'\n attributes ('list', optional): List of interface attributes to configure.\n Default: [enabled, speed, breakout]\n\nExample\n-------\nconfigure_interfaces:\n interfaces:\n : # regex\n attributes:\n - enabled\n - speed\n - ipv4\n", + "folders": {}, + "module_name": "stages.stages", + "package": "genie.libs.clean", + "uid": "ConfigureInterfaces", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/stages.py#L2940" + }, "ConfigureManagement": { "doc": "This stage configures the management IP settings on the device.\n\nStage Schema\n------------\nconfigure_management:\n\n address ('dict', optional): Address(es) to configure on the device (syntax: address/mask) (optional)\n ipv4 ('str') or ('list'): ipv4 address\n ipv6 ('str') or ('list'): ipv6 address\n\n gateway: (dict, optional) Gateway address(es) for default route\n ipv4 ('str') or ('list'): ipv4 gateway address\n ipv6 ('str') or ('list'): ipv6 gateway address\n\n vrf (str, optional): VRF to use for management interface\n\n interface (str, optional): Management interface to use\n\n routes ('dict', optional):\n ipv4 (list of 'dict'): ipv4 routes\n - subnet: (str) subnet including mask\n next_hop: (str) next_hop for this subnet\n ipv6 (list of 'dict'): ipv6 routes\n - subnet: (str) subnet including mask\n next_hop: (str) next_hop for this subnet\n\n dhcp_timeout ('int', optional): DHCP timeout in seconds (default: 30)\n\n protocols ('list', optional): [list of protocols]\n\n set_hostname (bool): Configure device hostname (default: True)\n\n\nExample\n-------\nconfigure_management:\n vrf: Mgmt-vrf\n\n", "folders": {}, @@ -202,7 +245,7 @@ "os": "iosxe" }, "uid": "ConfigureReplace", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L2025" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L2026" } } }, @@ -257,7 +300,7 @@ "os": "iosxe" }, "uid": "Connect", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L2081" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L2082" }, "linux": { "folders": { @@ -311,7 +354,7 @@ "os": "iosxe" }, "uid": "CopyToDevice", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L1380" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L1381" } }, "module_name": "stages.stages", @@ -478,7 +521,7 @@ "os": "iosxe" }, "uid": "InstallImage", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L534" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L535" }, "iosxr": { "folders": { @@ -540,7 +583,7 @@ "os": "iosxe" }, "uid": "InstallPackages", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L787" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L788" } } }, @@ -655,7 +698,7 @@ "os": "iosxe" }, "uid": "Reload", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L871" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L872" } }, "module_name": "stages.stages", @@ -673,7 +716,7 @@ "os": "iosxe" }, "uid": "ResetConfiguration", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L2263" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L2264" } } }, @@ -707,7 +750,7 @@ "os": "iosxe" }, "uid": "RommonBoot", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L1118" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L1119" } } }, @@ -1141,6 +1184,9 @@ "ncs540", "sdwan", "wsim" + ], + "submodel": [ + "c9800_cl" ] } } \ No newline at end of file diff --git a/pkgs/clean-pkg/src/genie/libs/clean/__init__.py b/pkgs/clean-pkg/src/genie/libs/clean/__init__.py index e7d559dfe..4e356fa68 100644 --- a/pkgs/clean-pkg/src/genie/libs/clean/__init__.py +++ b/pkgs/clean-pkg/src/genie/libs/clean/__init__.py @@ -8,7 +8,7 @@ ''' # metadata -__version__ = '24.5' +__version__ = '24.6' __author__ = 'Cisco Systems Inc.' __contact__ = ['asg-genie-support@cisco.com', 'pyats-support-ext@cisco.com'] __copyright__ = 'Copyright (c) 2019, Cisco Systems Inc.' diff --git a/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/c9800_cl/stages.py b/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/c9800/c9800_cl/stages.py similarity index 100% rename from pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/c9800_cl/stages.py rename to pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/c9800/c9800_cl/stages.py diff --git a/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py b/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py index 467c508e1..7701fc0d5 100644 --- a/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py +++ b/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py @@ -506,10 +506,11 @@ def remove_inactive_pkgs(self, steps, device, images, timeout=TIMEOUT): with steps.start("Removing inactive packages") as step: def _check_for_system_image(spawn, system_image=None): - if system_image and system_image in spawn.buffer: + if system_image and re.search(f"{system_image}\r", spawn.buffer): log.debug(f'{system_image} is among the files to be deleted. send no so the {system_image} is not deleted. ') spawn.sendline('n') else: + log.debug(f'{system_image} is not among the files to be deleted. Hence, send yes to delete files.') spawn.sendline('y') # split the image on the [:/] and pick up the image name image = re.split(r'[:/]', images[0])[-1] diff --git a/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/tests/test_install_remove_inactive/mock_data/iosxe/mock_data.yaml b/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/tests/test_install_remove_inactive/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..0769ff5a4 --- /dev/null +++ b/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/tests/test_install_remove_inactive/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,119 @@ +connect: &connect + preface: | + Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''. + prompt: "%N#" + +execute: &execute + show version | include operating mode: '' + +remove_inactive_no: + <<: *connect + commands: + ? '' + : new_state: execute1 + +execute1: + commands: + <<: *execute + install remove inactive: + new_state: do_you_want_to_remove1 + prompt: "%N#" + +do_you_want_to_remove1: + preface: + timing: + - 0:,0,0.05 + response: | + install_remove: START Tue May 28 18:23:26 UTC 2024 + + install_remove: Removing IMG + + Cleaning up unnecessary package files + + No path specified, will use booted path /bootflash//packages.conf + + + Cleaning /bootflash + + Scanning boot directory for packages ... done. + + Preparing packages list to delete ... + + [R0]: /bootflash/packages.conf File is in use, will not delete. + + + The following files will be deleted: + + [R0]: /bootflash/image.bin + + [R0]: /bootflash/image.bin.conf + + prompt: Do you want to remove the above files? [y/n] + commands: + "n": + timing: + - 0:,0,0.05 + response: | + [1] R0 Add succeed with reason: User Rejected Deletion + + SUCCESS: install_remove Tue May 28 18:23:27 UTC 2024 + new_state: execute1 + +remove_inactive_yes: + <<: *connect + commands: + ? '' + : new_state: execute2 + +execute2: + commands: + <<: *execute + install remove inactive: + new_state: do_you_want_to_remove2 + prompt: "%N#" + +do_you_want_to_remove2: + preface: + timing: + - 0:,0,0.05 + response: | + install_remove: START Tue May 28 18:23:26 UTC 2024 + + install_remove: Removing IMG + + Cleaning up unnecessary package files + + No path specified, will use booted path /bootflash//packages.conf + + + Cleaning /bootflash + + Scanning boot directory for packages ... done. + + Preparing packages list to delete ... + + [R0]: /bootflash/packages.conf File is in use, will not delete. + + + The following files will be deleted: + + [R0]: /bootflash/image.bin.conf + + prompt: Do you want to remove the above files? [y/n] + commands: + "y": + timing: + - 0:,0,0.05 + response: | + Deleting file /bootflash/image.bin.conf ... done. + SUCCESS: Files deleted. + + --- Starting Post_Remove_Cleanup --- + Performing REMOVE_POSTCHECK on all members + Finished Post_Remove_Cleanup + SUCCESS: install_remove Sat Jun 01 19:50:22 UTC 2024 + new_state: execute1 diff --git a/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/tests/test_install_remove_inactive/test_install_remove_inactive.py b/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/tests/test_install_remove_inactive/test_install_remove_inactive.py new file mode 100644 index 000000000..892bc0639 --- /dev/null +++ b/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/tests/test_install_remove_inactive/test_install_remove_inactive.py @@ -0,0 +1,81 @@ +import unittest + +from pyats.results import Passed +from pyats.topology import loader +from pyats.aetest.steps import Steps +from genie.libs.clean.stages.iosxe.stages import InstallRemoveInactive + + +class TestIosXEConnect(unittest.TestCase): + """ Run unit testing on a mocked IOSXE c8kv device """ + + @classmethod + def setUpClass(cls): + # Make sure we have a unique Steps() object for result verification + cls.steps = Steps() + + cls.image = 'image.bin' + + # And we want the following methods to be mocked to simulate the stage. + cls.install_remove_inactive = InstallRemoveInactive() + + def test_install_remove_inactive_pass_n(self): + + testbed = """ + devices: + router: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir mock_data --state remove_inactive_no + protocol: unknown + os: iosxe + platform: c8kv + type: router + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + with self.assertLogs(level='DEBUG') as log: + self.install_remove_inactive(steps=self.steps, device=self.device, images=[self.image]) + self.assertIn(f'{self.image} is among the files to be deleted. send no so the {self.image} is not deleted.', log.output[1]) + + # Check the results is as expected. + self.assertEqual(Passed, self.steps.details[0].result) + + + def test_install_remove_inactive_pass_y(self): + + testbed = """ + devices: + router: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir mock_data --state remove_inactive_yes + protocol: unknown + os: iosxe + platform: c8kv + type: router + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + with self.assertLogs(level='DEBUG') as log: + self.install_remove_inactive(steps=self.steps, device=self.device, images=[self.image]) + self.assertIn(f'{self.image} is not among the files to be deleted. Hence, send yes to delete files.', log.output[1]) + + # Check the results is as expected. + self.assertEqual(Passed, self.steps.details[0].result) diff --git a/pkgs/clean-pkg/src/genie/libs/clean/stages/stages.py b/pkgs/clean-pkg/src/genie/libs/clean/stages/stages.py index aec49f139..a1aa93fca 100644 --- a/pkgs/clean-pkg/src/genie/libs/clean/stages/stages.py +++ b/pkgs/clean-pkg/src/genie/libs/clean/stages/stages.py @@ -2935,3 +2935,98 @@ def configure_management(self, steps, device, set_hostname=SET_HOSTNAME, **kwarg device.api.configure_management(**config_kwargs) else: step.passx('No management info for device') + + +class ConfigureInterfaces(BaseStage): + """This stage configures interfaces on the device. + + This stages uses genie Conf objects and build_config() API to configure + interfaces on devices. + +Stage Schema +------------ +configure_interfaces: + interfaces: + : # regex, default: '.*' + attributes ('list', optional): List of interface attributes to configure. + Default: [enabled, speed, breakout] + +Example +------- +configure_interfaces: + interfaces: + : # regex + attributes: + - enabled + - speed + - ipv4 +""" + + # ================= + # Argument Defaults + # ================= + ATTRIBUTES = [ + 'enabled', + 'speed', + 'breakout', + ] + INTERFACE_NAME_REGEX = '.*' + ATTRIBUTE_FILTER = {} + INTERFACES = { + INTERFACE_NAME_REGEX: { + "attributes": ATTRIBUTES, + } + } + + # ============ + # Stage Schema + # ============ + schema = { + Optional('interfaces'): { + str: { + Optional("attributes"): list, + } + } + } + + # ============================== + # Execution order of Stage steps + # ============================== + exec_order = [ + 'configure_interfaces' + ] + + def configure_interfaces(self, steps, device, interfaces=INTERFACES, **kwargs): + configuration_lines = [] + for iface_regex in interfaces: + for _, iface_obj in device.interfaces.items(): + if re.match(iface_regex, iface_obj.name): + log.info(f'Preparing interface config for: {iface_obj.name}') + attributes = interfaces.get(iface_regex, {}).get('attributes', {}) + + # Create dictionary of attributes to configure + attrs = {attr: getattr(iface_obj, attr) for attr in attributes \ + if getattr(iface_obj, attr, None) is not None} + + # enable interfaces if not breakout + if hasattr(iface_obj, "breakout") and not iface_obj.breakout: + iface_obj.enabled = True + attrs.update({'enabled': True}) + + # Get configuration lines from config builder + try: + config_lines = str(iface_obj.build_config(attributes=attrs, apply=False)) + except Exception as e: + log.warning(f'Failed to build config for {iface_obj.name}: {e}') + + if hasattr(iface_obj, "breakout") and not iface_obj.breakout: + # Extend lines to configuration variable + configuration_lines.extend(config_lines.splitlines()) + + if getattr(device, "custom_config_cli", None): + config_lines = str(device.build_config(apply=False)) + configuration_lines = config_lines.splitlines() + configuration_lines + + # Configure all interfaces + if configuration_lines: + device.configure(configuration_lines) diff --git a/pkgs/clean-pkg/src/genie/libs/clean/stages/tests/test_configure_interfaces.py b/pkgs/clean-pkg/src/genie/libs/clean/stages/tests/test_configure_interfaces.py new file mode 100644 index 000000000..5adb2160a --- /dev/null +++ b/pkgs/clean-pkg/src/genie/libs/clean/stages/tests/test_configure_interfaces.py @@ -0,0 +1,63 @@ +import unittest + +from unittest.mock import call, Mock +from pyats.results import Passed +from pyats.aetest.steps import Steps + +from genie.libs.conf.interface import PhysicalInterface as BasePhysicalInterface +from genie.libs.conf.interface.iosxe.interface import PhysicalInterface +from genie.libs.conf.interface.iosxe.cat9k.c9500.c9500_28C8D.interface import PhysicalInterface as DetailedPhysicalInterface +from genie.libs.clean.stages.tests.utils import create_test_device +from genie.libs.clean.stages.stages import ConfigureInterfaces + + +class TestConfigureInterfaces(unittest.TestCase): + + def setUp(self): + self.cls = ConfigureInterfaces() + self.device = create_test_device( + name='aDevice', os='iosxe') + self.invalid_device = create_test_device( + name='aDevice', os='invalid') + self.detailed_devices = create_test_device( + name='aDevice', os='iosxe', platform='cat9k', + model='c9500', pid='C9500X-28C8D') + + def test_configure_interfaces(self): + intf = PhysicalInterface(device=self.device, name='GigabitEthernet0/0') + self.device.interfaces = { + 'GigabitEthernet0/0': intf + } + steps = Steps() + + self.cls.configure_interfaces( + device=self.device, + steps=steps) + + self.assertIsNone(intf.enabled) + + def test_configure_invalid_device(self): + intf = BasePhysicalInterface(device=self.invalid_device, name='GigabitEthernet0/0') + self.invalid_device.interfaces = { + 'GigabitEthernet0/0': intf + } + steps = Steps() + self.cls.configure_interfaces( + device=self.invalid_device, + steps=steps) + + self.assertIsNone(intf.enabled) + + def test_configure_detailed_interfaces(self): + intf = DetailedPhysicalInterface(device=self.device, name='GigabitEthernet0/0') + intf.breakout = 'True' + self.detailed_devices.interfaces = { + 'GigabitEthernet0/0': intf + } + steps = Steps() + + self.cls.configure_interfaces( + device=self.detailed_devices, + steps=steps) + + self.assertEqual(self.device.custom_config_cli, '\nhw-module breakout 0') \ No newline at end of file diff --git a/pkgs/clean-pkg/src/genie/libs/clean/stages/tests/utils.py b/pkgs/clean-pkg/src/genie/libs/clean/stages/tests/utils.py index 1ce834d58..135607150 100644 --- a/pkgs/clean-pkg/src/genie/libs/clean/stages/tests/utils.py +++ b/pkgs/clean-pkg/src/genie/libs/clean/stages/tests/utils.py @@ -17,7 +17,7 @@ def test_exec_order(self): "{}".format(exec_order - cls_attributes)) -def create_test_device(name, os, platform=None): +def create_test_device(name, os, platform=None, **tokens): """This function does boilerplate work of creating a device for unittests. - Sets the device os and platform @@ -35,9 +35,9 @@ def create_test_device(name, os, platform=None): """ if platform: - device = Device(name, os=os, platform=platform) + device = Device(name, os=os, platform=platform, **tokens) else: - device = Device(name, os=os) + device = Device(name, os=os, **tokens) device.custom.abstraction = {'order': ['os', 'platform']} diff --git a/pkgs/conf-pkg/changelog/2024/june.rst b/pkgs/conf-pkg/changelog/2024/june.rst new file mode 100644 index 000000000..092d45db0 --- /dev/null +++ b/pkgs/conf-pkg/changelog/2024/june.rst @@ -0,0 +1,32 @@ +-------------------------------------------------------------------------------- + New +-------------------------------------------------------------------------------- + +* conf + * Added breakout interface support to IOSXE + * Added ParsedInterface class + + +-------------------------------------------------------------------------------- + Fix +-------------------------------------------------------------------------------- + +* iosxe + * configure_interface + * Add portsec + * portsec_enable True + * portsec_count '1025' + * portsec_violation_mode 'restrict | protect | shutdown' + * portsec_aging_type 'inactivity | absolute' + * portsec_type 'static|sticky' + * portsec_static_mac '001506000001' + * portsec_static_vlan '1002' + * portsec_aging_time '5' + * Add vpc_id + * port-channel12 + * vpc_id "12" + * Add vpc_peerlink + * port-channel10 + * vpc_peer_link True + + diff --git a/pkgs/conf-pkg/src/genie/libs/conf/__init__.py b/pkgs/conf-pkg/src/genie/libs/conf/__init__.py index 0b7986871..f0dbb3993 100644 --- a/pkgs/conf-pkg/src/genie/libs/conf/__init__.py +++ b/pkgs/conf-pkg/src/genie/libs/conf/__init__.py @@ -12,7 +12,7 @@ ''' # metadata -__version__ = '24.5' +__version__ = '24.6' __author__ = 'Cisco Systems Inc.' __contact__ = ['pyats-support@cisco.com', 'pyats-support-ext@cisco.com'] __copyright__ = 'Copyright (c) 2018, Cisco Systems Inc.' diff --git a/pkgs/conf-pkg/src/genie/libs/conf/interface/__init__.py b/pkgs/conf-pkg/src/genie/libs/conf/interface/__init__.py index 95ba7115d..7a896d100 100644 --- a/pkgs/conf-pkg/src/genie/libs/conf/interface/__init__.py +++ b/pkgs/conf-pkg/src/genie/libs/conf/interface/__init__.py @@ -24,6 +24,7 @@ from genie.libs import conf from genie.libs.conf.base import IPv4Address, IPv6Address, IPv4Interface, IPv6Interface, MAC from genie.libs.conf.vrf import Vrf +from genie.abstract import Lookup from pyats.topology.schema import ipv6_or_list_of_ipv6 @@ -73,10 +74,22 @@ class UnknownInterfaceName(UserWarning): class ParsedInterfaceName(types.SimpleNamespace): - def __init__(self, name, device=None): + def __new__(cls, *args, device=None, **kwargs): + if '.'.join([cls.__module__, cls.__name__]) == 'genie.libs.conf.interface.ParsedInterfaceName': + genie_abstract = Lookup.from_device(device, packages={'conf': conf}) + new_cls = genie_abstract.conf.interface.ParsedInterfaceName + return super().__new__(new_cls) + else: + return super().__new__(cls) + + def __init__(self, name, device=None, **kwargs): if device is None and isinstance(name, ParsedInterfaceName): # copy constructor return super().__init__(vars(name)) + + if name is None: + return super().__init__(**kwargs) + assert type(name) is str d = dict( @@ -124,7 +137,9 @@ def __init__(self, name, device=None): $ ''', name, re.VERBOSE | re.IGNORECASE) if not m: - raise ValueError('Unrecognized interface name %r' % (name,)) + log.warning('Unrecognized interface name %r' % (name,)) + return + d.update(m.groupdict()) if d['number']: diff --git a/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/__init__.py b/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/__init__.py new file mode 100644 index 000000000..b0fb062c8 --- /dev/null +++ b/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/__init__.py @@ -0,0 +1,2 @@ +from genie import abstract +abstract.declare_token(platform='cat9k') \ No newline at end of file diff --git a/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/c9500/__init__.py b/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/c9500/__init__.py new file mode 100644 index 000000000..152afb5b3 --- /dev/null +++ b/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/c9500/__init__.py @@ -0,0 +1,2 @@ +from genie import abstract +abstract.declare_token(model='c9500') \ No newline at end of file diff --git a/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/c9500/c9500_28C8D/__init__.py b/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/c9500/c9500_28C8D/__init__.py new file mode 100644 index 000000000..95209895a --- /dev/null +++ b/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/c9500/c9500_28C8D/__init__.py @@ -0,0 +1,2 @@ +from genie import abstract +abstract.declare_token(pid='C9500X-28C8D') \ No newline at end of file diff --git a/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/c9500/c9500_28C8D/interface.py b/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/c9500/c9500_28C8D/interface.py new file mode 100644 index 000000000..d98ce3f4a --- /dev/null +++ b/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/cat9k/c9500/c9500_28C8D/interface.py @@ -0,0 +1,78 @@ +import abc + +from genie.decorator import managedattribute + +from genie.libs.conf.interface.iosxe import Interface + +from genie.libs.conf.interface import ( + Interface as BaseInterface, + ParsedInterfaceName as BaseParsedInterfaceName, + PhysicalInterface as BasePhysicalInterface, + VirtualInterface as BaseVirtualInterface, + LoopbackInterface as BaseLoopbackInterface, + LagInterface as BaseLagInterface, + EthernetInterface as BaseEthernetInterface, + SubInterface as BaseSubInterface, + TunnelInterface as BaseTunnelInterface, + TunnelTeInterface as BaseTunnelTeInterface, + VlanInterface as BaseVlanInterface, + NveInterface as BaseNveInterface) + +class PhysicalInterface(Interface, BasePhysicalInterface): + + def _build_config_interface_submode(self, configurations, attributes, unconfig): + + # Virtual interfaces can be fully unconfigured + if unconfig and attributes.iswildcard: + configurations.submode_unconfig() + + super()._build_config_interface_submode(configurations, attributes, unconfig) + + # ----- LagMemberInterface configure ---------# + + # channel-group mode auto [non-silent] + # channel-group mode desirable [non-slilent] + # channel-group mode on + # channel-group mode active + # channel-group mode passive + if attributes.value('lag_bundle_id'): + if attributes.value('lag_activity') and \ + ('active' in attributes.value('lag_activity') or \ + 'passive' in attributes.value('lag_activity') or \ + 'on' in attributes.value('lag_activity')): + configurations.append_line( + attributes.format( + 'channel-group {lag_bundle_id} mode {lag_activity}')) + elif attributes.value('lag_activity') and \ + ('auto' in attributes.value('lag_activity') or \ + 'desirable' in attributes.value('lag_activity')): + cmd = 'channel-group {lag_bundle_id} mode {lag_activity}' + if attributes.value('lag_non_silent'): + cmd += ' non-silent' + configurations.append_line( + attributes.format(cmd)) + + # lacp port-priority + configurations.append_line( + attributes.format('lacp port-priority {lag_lacp_port_priority}')) + + # pagp port-priority + configurations.append_line( + attributes.format('pagp port-priority {lag_pagp_port_priority}')) + + if self.breakout is not None: + # breakout must be configured at global config level + breakout = attributes.value('breakout') + if breakout is not None: + d_parsed = self.parse_interface_name() + self.device.custom_config_cli += '\nhw-module breakout {port}'.format( + port=d_parsed.port) + + breakout = managedattribute( + name='breakout', + default=None, + type=(None, managedattribute.test_istype(str))) + + @abc.abstractmethod + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) \ No newline at end of file diff --git a/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/interface.py b/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/interface.py index 931c3e597..d4974c22e 100755 --- a/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/interface.py +++ b/pkgs/conf-pkg/src/genie/libs/conf/interface/iosxe/interface.py @@ -16,12 +16,13 @@ 'TunnelTeInterface', 'PortchannelInterface', 'NveInterface', + 'ParsedInterfaceName' ) import re import contextlib import abc -import weakref +import logging from enum import Enum from genie.decorator import managedattribute @@ -40,7 +41,102 @@ from genie.libs.conf.l2vpn import PseudowireNeighbor from genie.libs.conf.l2vpn.pseudowire import EncapsulationType -import genie.libs.conf.interface +from genie.libs.conf.interface import ( + Interface as BaseInterface, + ParsedInterfaceName as BaseParsedInterfaceName, + PhysicalInterface as BasePhysicalInterface, + VirtualInterface as BaseVirtualInterface, + LoopbackInterface as BaseLoopbackInterface, + LagInterface as BaseLagInterface, + EthernetInterface as BaseEthernetInterface, + SubInterface as BaseSubInterface, + TunnelInterface as BaseTunnelInterface, + TunnelTeInterface as BaseTunnelTeInterface, + VlanInterface as BaseVlanInterface, + NveInterface as BaseNveInterface) + + +logger = logging.getLogger(__name__) + + +class ParsedInterfaceName(BaseParsedInterfaceName): + + def __init__(self, name, device=None, **kwargs): + if device is None and isinstance(name, ParsedInterfaceName): + # copy constructor + return super().__init__(vars(name)) + assert type(name) is str + + d = dict( + # main parts + type=None, + number=None, + subintf_sep=None, + subintf=None, + # sub-parts + net_module=None, + module=None, + rack=None, + slot=None, + instance=None, + port=None, + subport=None, + cpu=None, + rsip=None, + ) + + m = re.match(r''' + ^ + # ignore leading spaces + \s* + # not an empty string + (?=\S) + # optional + (?P + # generic: POS, tunnel-te, odu... + [A-Za-z]+(?:-[A-Za-z]+)* + )? + # optional spaces + \s* + # rest is optional too + (?: + # + (?P\d+(?:[/_]?\d+)*) + # optional + (?:(?P[.:])(?P\d+))? + )? + # ignore trailing spaces + \s* + $ + ''', name, re.VERBOSE | re.IGNORECASE) + if not m: + logger.warning('Unrecognized interface name %r' % (name,)) + + d.update(m.groupdict()) + + # FourHundredGigE1/0/15/1 + p1 = re.compile(r'^(?P(?P\d+)/(?P\d+)/(?P\d+))(/(?P\d+))?$') + # GigabitEthernet1/0/1 + p2 = re.compile(r'^(?P(?P\d+)/(?P\d+)/(?P\d+))$') + # GigabitEthernet0/0 + p3 = re.compile(r'^(?P(?P\d+)/(?P\d+))$') + # GigabitEthernet0 + p4 = re.compile(r'^(?P(?P\d+))$') + + + interface_number = d['number'] + for pattern in [p1, p2, p3, p4]: + m = pattern.match(interface_number) + if m: + d.update(m.groupdict()) + break + else: + logger.debug(f'{self}: Unsupported interface name: {name}') + super().__init__(name, device=None, **kwargs) + return + + super().__init__(name=None, **d) + class ConfigurableInterfaceNamespace(ConfigurableBase): @@ -63,7 +159,7 @@ def device(self): return self.interface.device -class Interface(genie.libs.conf.interface.Interface): +class Interface(BaseInterface): """ base Interface class for IOS-XE devices """ @@ -75,7 +171,7 @@ def __new__(cls, *args, **kwargs): name = kwargs['name'] except KeyError: raise TypeError('\'name\' argument missing') - d_parsed = genie.libs.conf.interface.ParsedInterfaceName( + d_parsed = ParsedInterfaceName( name, kwargs.get('device', None)) if d_parsed.subintf: factory_cls = SubInterface @@ -436,7 +532,7 @@ def _build_config_interface_submode(self, configurations, attributes, unconfig): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) -class PhysicalInterface(Interface, genie.libs.conf.interface.PhysicalInterface): +class PhysicalInterface(Interface, BasePhysicalInterface): def _build_config_interface_submode(self, configurations, attributes, unconfig): @@ -478,14 +574,12 @@ def _build_config_interface_submode(self, configurations, attributes, unconfig): configurations.append_line( attributes.format('pagp port-priority {lag_pagp_port_priority}')) - - @abc.abstractmethod def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) -class VirtualInterface(Interface, genie.libs.conf.interface.VirtualInterface): +class VirtualInterface(Interface, BaseVirtualInterface): def build_config(self, apply=True, attributes=None, unconfig=False, **kwargs): @@ -520,7 +614,7 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) -class LoopbackInterface(VirtualInterface, genie.libs.conf.interface.LoopbackInterface): +class LoopbackInterface(VirtualInterface, BaseLoopbackInterface): _interface_name_types = ( 'loopback', @@ -531,7 +625,7 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) -class PortchannelInterface(VirtualInterface, genie.libs.conf.interface.LagInterface): +class PortchannelInterface(VirtualInterface, BaseLagInterface): """ PortchannelInterface class, presenting port-channel type of `Interface` objects @@ -569,7 +663,7 @@ def _build_config_interface_submode(self, configurations, attributes, unconfig): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) -class EthernetInterface(PhysicalInterface, genie.libs.conf.interface.EthernetInterface): +class EthernetInterface(PhysicalInterface, BaseEthernetInterface): _interface_name_types = ( 'ethernet', @@ -664,7 +758,7 @@ def _build_config_interface_submode(self, configurations, attributes, unconfig): configurations.append_line('no negotiation auto',unconfig_cmd = 'default negotiation auto') -class SubInterface(VirtualInterface, genie.libs.conf.interface.SubInterface): +class SubInterface(VirtualInterface, BaseSubInterface): def __new__(cls, *args, **kwargs): @@ -803,7 +897,7 @@ def _build_config_interface_submode(self, configurations, attributes, unconfig): elif isinstance(v,IPv4Address): configurations.append_line(attributes.format('preferred-path peer {preferred_path}')) -class TunnelInterface(VirtualInterface, genie.libs.conf.interface.TunnelInterface): +class TunnelInterface(VirtualInterface, BaseTunnelInterface): _interface_name_types = ( 'tunnel', @@ -832,7 +926,7 @@ def __new__(cls, *args, **kwargs): return self -class TunnelTeInterface(TunnelInterface, genie.libs.conf.interface.TunnelTeInterface): +class TunnelTeInterface(TunnelInterface, BaseTunnelTeInterface): tunnel_mode = managedattribute( name='tunnel_mode', @@ -1040,7 +1134,7 @@ def _build_config_interface_submode(self, configurations, attributes, unconfig): configurations.append_block(ns.build_config(apply=False, unconfig=unconfig, attributes=attributes2)) class VlanInterface( - VirtualInterface, genie.libs.conf.interface.VlanInterface): + VirtualInterface, BaseVlanInterface): """ VlanInterface class, presenting vlan type of `Interface` objects @@ -1097,7 +1191,7 @@ def _build_config_interface_submode(self, configurations, attributes, def __init__(self, **kwargs): super().__init__(**kwargs) -class NveInterface(VirtualInterface, genie.libs.conf.interface.NveInterface): +class NveInterface(VirtualInterface, BaseNveInterface): _interface_name_types = ( 'nve', 'Nve', diff --git a/pkgs/conf-pkg/src/genie/libs/conf/interface/nxos/interface.py b/pkgs/conf-pkg/src/genie/libs/conf/interface/nxos/interface.py index 10796e71c..6e6a9b83b 100644 --- a/pkgs/conf-pkg/src/genie/libs/conf/interface/nxos/interface.py +++ b/pkgs/conf-pkg/src/genie/libs/conf/interface/nxos/interface.py @@ -113,6 +113,7 @@ def __new__(cls, *args, **kwargs): priority_flow_control_mode = None switchport_mode = None + vpc_id = None sw_acc_vlan = None sw_trunk_encap = None sw_trunk_allowed_vlan = None @@ -745,6 +746,58 @@ def _build_config_interface_submode(self, configurations, attributes, unconfig): attributes.format(cmd), unconfig_cmd=attributes.format(uncmd)) + # Configures vpc peer-link for MCT port-channel + # Example: + # interface port-channel101 + # vpc peer-link + if attributes.value('vpc_peer_link'): + configurations.append_line( + attributes.format('vpc peer-link'), + unconfig_cmd='no vpc peer-link') + # Configures VPC id on vpc port-channel + # Sample: + # interface port-channel102 + # vpc 102 + if attributes.value('vpc_id'): + configurations.append_line( + attributes.format('vpc {vpc_id}'), + unconfig_cmd='no vpc {vpc_id}') + + # Configures the port-security on interface + # Sample Configuration: + # interface port-channel11 + # switchport port-security maximum 1025 + # switchport port-security aging type inactivity + # switchport port-security violation restrict + # switchport port-security mac-address sticky + # switchport port-security + + if attributes.value('portsec_enable'): # Enables port-security on interface + # Configures max mac count for port-security + configurations.append_line(attributes.format('switchport port-security maximum {portsec_count}'), + unconfig_cmd='no switchport port-security maximum {portsec_count}') + if attributes.value('portsec_type') == 'static': # Configures port-security static mac + if attributes.value('portsec_static_vlan'): # If trunk mode, configure static mac with vlan + configurations.append_line(attributes.format('switchport port-security mac-address {portsec_static_mac} vlan {portsec_static_vlan}'), + unconfig_cmd='no switchport port-security mac-address {portsec_static_mac} vlan {portsec_static_vlan}') + else: # configure static mac without vlan + configurations.append_line(attributes.format('switchport port-security mac-address {portsec_static_mac}'), + unconfig_cmd='no switchport port-security mac-address {portsec_static_mac}') + elif attributes.value('portsec_type') == 'sticky': # configures port-security sticky mac + configurations.append_line(attributes.format('switchport port-security mac-address sticky'), + unconfig_cmd='no switchport port-security mac-address sticky') + if attributes.value('portsec_violation_mode'): # configures port-security violation mode + configurations.append_line(attributes.format('switchport port-security violation {portsec_violation_mode}'), + unconfig_cmd='no switchport port-security violation {portsec_violation_mode}') + if attributes.value('portsec_aging_time'): # configures port-security aging time + configurations.append_line(attributes.format('switchport port-security aging time {portsec_aging_time}'), + unconfig_cmd='no switchport port-security aging time {portsec_aging_time}') + if attributes.value('portsec_aging_type'): # configures port-security aging type "inactive | absolute" + configurations.append_line(attributes.format('switchport port-security aging type {portsec_aging_type}'), + unconfig_cmd='no switchport port-security aging type {portsec_aging_type}') + configurations.append_line(attributes.format('switchport port-security'), + unconfig_cmd='no switchport port-security') + # private vlan access port if self.switchport_mode == str(L2_type.PRIVATE_VLAN_ACCESS): diff --git a/pkgs/conf-pkg/src/genie/libs/conf/interface/nxos/tests/test_interface.py b/pkgs/conf-pkg/src/genie/libs/conf/interface/nxos/tests/test_interface.py index 2e1a98ac3..c3a36b388 100755 --- a/pkgs/conf-pkg/src/genie/libs/conf/interface/nxos/tests/test_interface.py +++ b/pkgs/conf-pkg/src/genie/libs/conf/interface/nxos/tests/test_interface.py @@ -1367,6 +1367,91 @@ def test_ethernet_interface_private_vlan_access(self): ' exit', ])) + def test_ethernet_interface_port_security_trunk(self): + testbed = Genie.testbed = Testbed() + dev1 = Device(testbed=testbed, name='PE1', os='nxos') + intf1 = EthernetInterface(name='Ethernet0/0/1', device=dev1) + intf1.switchport_enable = True + intf1.switchport_mode = 'trunk' + intf1.portsec_count = '1025' + intf1.portsec_violation_mode = 'protect' + intf1.portsec_aging_type = 'inactivity' + intf1.portsec_aging_time = '5' + intf1.portsec_enable = True + cfg = intf1.build_config(apply=False) + self.assertMultiLineEqual( + str(cfg), + '\n'.join([ + 'interface Ethernet0/0/1', + ' switchport', + ' switchport mode trunk', + ' switchport port-security maximum 1025', + ' switchport port-security violation protect', + ' switchport port-security aging time 5', + ' switchport port-security aging type inactivity', + ' switchport port-security', + ' exit', + ])) + + def test_ethernet_interface_port_security_access(self): + testbed = Genie.testbed = Testbed() + dev1 = Device(testbed=testbed, name='PE1', os='nxos') + intf1 = EthernetInterface(name='Ethernet0/0/2', device=dev1) + intf1.switchport_enable = True + intf1.switchport_mode = 'access' + intf1.portsec_count = '1025' + intf1.portsec_violation_mode = 'restrict' + intf1.portsec_aging_type = 'absolute' + intf1.portsec_aging_time = '5' + intf1.portsec_type = 'static' + intf1.portsec_static_mac = '0015.0600.0001' + intf1.portsec_enable = True + cfg = intf1.build_config(apply=False) + self.assertMultiLineEqual( + str(cfg), + '\n'.join([ + 'interface Ethernet0/0/2', + ' switchport', + ' switchport mode access', + ' switchport port-security maximum 1025', + ' switchport port-security mac-address 0015.0600.0001', + ' switchport port-security violation restrict', + ' switchport port-security aging time 5', + ' switchport port-security aging type absolute', + ' switchport port-security', + ' exit', + ])) + + def test_port_channel_vpc(self): + # For failures + self.maxDiff = None + + # Set Genie Tb + testbed = Testbed() + Genie.testbed = testbed + + # Device + dev1 = Device(name='PE1', testbed=testbed, os='nxos') + intf1 = Interface(name='port-channel10', device=dev1) + + # Apply configuration + intf1.switchport_enable = True + intf1.vpc_peer_link = True + intf1.vpc_id = '11' + + # Build config + cfgs = intf1.build_config(apply=False) + # Check config build correctly + self.assertMultiLineEqual( + str(cfgs), + '\n'.join([ + 'interface port-channel10', + ' switchport', + ' vpc peer-link', + ' vpc 11', + ' exit' + ])) + if __name__ == '__main__': unittest.main() diff --git a/pkgs/filetransferutils-pkg/changelog/2024/june.rst b/pkgs/filetransferutils-pkg/changelog/2024/june.rst new file mode 100644 index 000000000..f7726c8b7 --- /dev/null +++ b/pkgs/filetransferutils-pkg/changelog/2024/june.rst @@ -0,0 +1,11 @@ +-------------------------------------------------------------------------------- + Fix +-------------------------------------------------------------------------------- + +* generic + * Modified deletefile to accept and override command + +* iosxe + * Modified deletefile to add the force option + + diff --git a/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/__init__.py b/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/__init__.py index 50b7514b0..fb842de8f 100644 --- a/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/__init__.py +++ b/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/__init__.py @@ -9,7 +9,7 @@ ''' -__version__ = '24.5' +__version__ = '24.6' __author__ = 'Cisco Systems Inc.' __contact__ = ['pyats-support@cisco.com', 'pyats-support-ext@cisco.com'] __copyright__ = 'Copyright (c) 2018, Cisco Systems Inc.' diff --git a/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/plugins/fileutils.py b/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/plugins/fileutils.py index e03a5a457..99fb7e72e 100644 --- a/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/plugins/fileutils.py +++ b/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/plugins/fileutils.py @@ -217,7 +217,7 @@ def stat(self, target, timeout_seconds, dir_output, *args, **kwargs): dir_output=dir_output, **kwargs) - def deletefile(self, target, timeout_seconds, *args, **kwargs): + def deletefile(self, target, timeout_seconds, cmd = None, *args, **kwargs): """ Delete a file Parameters @@ -228,6 +228,9 @@ def deletefile(self, target, timeout_seconds, *args, **kwargs): timeout_seconds : `int` The number of seconds to wait before aborting the operation. + cmd : `str` + Command to override the default delete command + Returns ------- None @@ -254,7 +257,7 @@ def deletefile(self, target, timeout_seconds, *args, **kwargs): """ # delete flash:memleak.tcl - cmd = 'delete {f}'.format(f=target) + cmd = cmd or 'delete {f}'.format(f=target) self.send_cli_to_device(cli=cmd, timeout_seconds=timeout_seconds, diff --git a/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/plugins/iosxe/fileutils.py b/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/plugins/iosxe/fileutils.py index d9c494f4d..a9dafb0df 100644 --- a/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/plugins/iosxe/fileutils.py +++ b/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/plugins/iosxe/fileutils.py @@ -246,7 +246,7 @@ def stat(self, target, timeout_seconds=300, *args, **kwargs): return file_details - def deletefile(self, target, timeout_seconds=300, *args, **kwargs): + def deletefile(self, target, timeout_seconds=300, force=False, *args, **kwargs): """ Delete a file Parameters @@ -257,6 +257,9 @@ def deletefile(self, target, timeout_seconds=300, *args, **kwargs): timeout_seconds : `int` The number of seconds to wait before aborting the operation. + force : `bool` + Whether to force the deletion of the file. Default is False. + Returns ------- None @@ -282,7 +285,11 @@ def deletefile(self, target, timeout_seconds=300, *args, **kwargs): """ - super().deletefile(target, timeout_seconds, *args, **kwargs) + cmd = None + if force: + cmd = 'delete /force {f}'.format(f=target) + + super().deletefile(target, timeout_seconds, cmd=cmd, *args, **kwargs) def renamefile(self, source, destination, timeout_seconds=300, *args, **kwargs): diff --git a/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/tests/iosxe/test_filetransferutils.py b/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/tests/iosxe/test_filetransferutils.py index f40786a74..0c94a292d 100644 --- a/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/tests/iosxe/test_filetransferutils.py +++ b/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/tests/iosxe/test_filetransferutils.py @@ -4,7 +4,7 @@ import os import unittest from unittest.mock import patch -from unittest.mock import Mock +from unittest.mock import Mock, ANY # ATS from pyats.topology import Device, loader @@ -99,6 +99,12 @@ class test_filetransferutils(unittest.TestCase): Delete flash:/memleak.tcl? [confirm] ''' + raw3_1 =''' + delete /force flash:memleak.tcl + Delete filename [memleak.tcl]? + Delete flash:/memleak.tcl? [confirm] + ''' + raw4 = ''' rename flash:memleak.tcl new_file.tcl Destination filename [new_file.tcl]? @@ -144,6 +150,7 @@ class test_filetransferutils(unittest.TestCase): = raw1 outputs['dir'] = raw2 outputs['delete flash:memleak.tcl'] = raw3 + outputs['delete /force flash:memleak.tcl'] = raw3_1 outputs['rename flash:memleak.tcl new_file.tcl'] = raw4 outputs['show clock | redirect ftp://1.1.1.1//auto/tftp-ssr/show_clock'] = \ raw5 @@ -198,6 +205,22 @@ def test_deletefile(self): self.fu_device.deletefile(target='flash:memleak.tcl', timeout_seconds=300, device=self.device) + + self.device.execute.assert_called_once_with( + 'delete flash:memleak.tcl', + prompt_recovery=True, timeout=300, reply=ANY, error_pattern=ANY) + + def test_deletefile_force(self): + + self.device.execute = Mock() + self.device.execute.side_effect = self.mapper + + self.fu_device.deletefile(target='flash:memleak.tcl', + timeout_seconds=300, force=True, device=self.device) + + self.device.execute.assert_called_once_with( + 'delete /force flash:memleak.tcl', + prompt_recovery=True, timeout=300, reply=ANY, error_pattern=ANY) def test_renamefile(self): diff --git a/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/c9800_cl/__init__.py b/pkgs/health-pkg/changelog/2024/june.rst similarity index 100% rename from pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/c9800_cl/__init__.py rename to pkgs/health-pkg/changelog/2024/june.rst diff --git a/pkgs/health-pkg/src/genie/libs/health/__init__.py b/pkgs/health-pkg/src/genie/libs/health/__init__.py index 05eab310c..6d9d3329b 100644 --- a/pkgs/health-pkg/src/genie/libs/health/__init__.py +++ b/pkgs/health-pkg/src/genie/libs/health/__init__.py @@ -8,7 +8,7 @@ ''' # metadata -__version__ = '24.5' +__version__ = '24.6' __author__ = 'Cisco Systems Inc.' __contact__ = ['asg-genie-support@cisco.com', 'pyats-support-ext@cisco.com'] __copyright__ = 'Copyright (c) 2020, Cisco Systems Inc.' diff --git a/pkgs/ops-pkg/changelog/2024/june.rst b/pkgs/ops-pkg/changelog/2024/june.rst new file mode 100644 index 000000000..610e9d790 --- /dev/null +++ b/pkgs/ops-pkg/changelog/2024/june.rst @@ -0,0 +1,34 @@ +-------------------------------------------------------------------------------- + New +-------------------------------------------------------------------------------- + +* iosxe + * debug + * configure.py + * debug_platform_software_fed_switch_active_punt_packet_capture api Added + * Args + * device (obj) Device to execute on + * allow_buffer_limit(bool) if user want to set buffer limit , Default False + * buffer_limit(int , optional) Number of packets to capture <256-16384> , Default 16384 (max) + * allow_circular_buffer_limit(bool) if user want to set circular buffer limit , Default False + * circular_buffer_limit(int , optional) Number of packets to capture <256-16384> , Default 16384 (max) + * allow_set_filter(bool) if user want to set filter , Default False + * set_filter_value(str) user input of filter + * allow_clear_filter(bool) if user want to clear all filters , Default False + * start(bool) starting the capture + * stop(bool) stop the capture + + +-------------------------------------------------------------------------------- + Fix +-------------------------------------------------------------------------------- + +* iosxe + * Modified incomplete_mapper + * Added support to handle args and kwargs + +* ios + * Modified incomplete_mapper + * Added support to handle args and kwargs + + diff --git a/pkgs/ops-pkg/ops_generator/output/github_ops.json b/pkgs/ops-pkg/ops_generator/output/github_ops.json index 4f995198d..ecee1df55 100644 --- a/pkgs/ops-pkg/ops_generator/output/github_ops.json +++ b/pkgs/ops-pkg/ops_generator/output/github_ops.json @@ -1264,15 +1264,44 @@ }, "uid": "platform", "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/asr900/platform.py#L15" + }, + "cat8k": { + "folders": { + "c8200": { + "class": "Platform", + "doc": "Platform Ops Object", + "module_name": "platform.iosxe.cat8k.c8200.platform", + "package": "genie.libs.ops", + "tokens": { + "model": "c8200" + }, + "uid": "platform", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat8k/c8200/platform.py#L16" + } + }, + "tokens": { + "platform": "cat8k" + } + }, + "cat9k": { + "class": "Platform", + "doc": "Platform Ops Object", + "module_name": "platform.iosxe.cat9k.c9500.platform", + "package": "genie.libs.ops", + "tokens": { + "platform": "cat9k" + }, + "uid": "platform", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat9k/c9500/platform.py#L17" } }, - "module_name": "platform.iosxe.c8200.platform", + "module_name": "platform.iosxe.platform", "package": "genie.libs.ops", "tokens": { "os": "iosxe" }, "uid": "platform", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c8200/platform.py#L16" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/platform.py#L15" }, "iosxr": { "class": "Platform", @@ -1649,7 +1678,8 @@ ], "tokens": { "model": [ - "c3850" + "c3850", + "c8200" ], "os": [ "cheetah", @@ -1665,6 +1695,7 @@ "asr900", "cat3k", "cat6k", + "cat8k", "cat9k", "xml", "yang" diff --git a/pkgs/ops-pkg/src/genie/libs/ops/__init__.py b/pkgs/ops-pkg/src/genie/libs/ops/__init__.py index 0397d59ee..c64d9083d 100644 --- a/pkgs/ops-pkg/src/genie/libs/ops/__init__.py +++ b/pkgs/ops-pkg/src/genie/libs/ops/__init__.py @@ -7,7 +7,7 @@ ''' # metadata -__version__ = '24.5' +__version__ = '24.6' __author__ = 'Cisco Systems Inc.' __contact__ = ['pyats-support@cisco.com', 'pyats-support-ext@cisco.com'] __copyright__ = 'Copyright (c) 2018, Cisco Systems Inc.' diff --git a/pkgs/ops-pkg/src/genie/libs/ops/interface/iosxe/cat3k/c3850/tests/test_interface.py b/pkgs/ops-pkg/src/genie/libs/ops/interface/iosxe/cat3k/c3850/tests/test_interface.py index 47da71c48..e3af5cdf1 100644 --- a/pkgs/ops-pkg/src/genie/libs/ops/interface/iosxe/cat3k/c3850/tests/test_interface.py +++ b/pkgs/ops-pkg/src/genie/libs/ops/interface/iosxe/cat3k/c3850/tests/test_interface.py @@ -7,8 +7,8 @@ from pyats.topology import Device # Genie -from genie.libs.ops.interface.iosxe.c3850.interface import Interface -from genie.libs.ops.interface.iosxe.c3850.tests.interface_output import InterfaceOutput +from genie.libs.ops.interface.iosxe.cat3k.c3850.interface import Interface +from genie.libs.ops.interface.iosxe.cat3k.c3850.tests.interface_output import InterfaceOutput # iosxe show_interface from genie.libs.parser.iosxe.show_interface import ShowInterfaces, \ diff --git a/pkgs/ops-pkg/src/genie/libs/ops/lisp/ios/tests/test_lisp.py b/pkgs/ops-pkg/src/genie/libs/ops/lisp/ios/tests/test_lisp.py index 28ee65841..164573501 100755 --- a/pkgs/ops-pkg/src/genie/libs/ops/lisp/ios/tests/test_lisp.py +++ b/pkgs/ops-pkg/src/genie/libs/ops/lisp/ios/tests/test_lisp.py @@ -85,7 +85,7 @@ def empty_mapper(key): return '' -def incomplete_mapper(key): +def incomplete_mapper(key, *args, **kwargs): if key == 'show lisp all instance-id 101 ipv4': return '' else: diff --git a/pkgs/ops-pkg/src/genie/libs/ops/lisp/iosxe/tests/test_lisp.py b/pkgs/ops-pkg/src/genie/libs/ops/lisp/iosxe/tests/test_lisp.py index 1d6e12f9e..3742e50da 100644 --- a/pkgs/ops-pkg/src/genie/libs/ops/lisp/iosxe/tests/test_lisp.py +++ b/pkgs/ops-pkg/src/genie/libs/ops/lisp/iosxe/tests/test_lisp.py @@ -85,7 +85,7 @@ def empty_mapper(key): return '' -def incomplete_mapper(key): +def incomplete_mapper(key, *args, **kwargs): if key == 'show lisp all instance-id 101 ipv4': return '' else: diff --git a/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c8200/platform.py b/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat8k/c8200/platform.py similarity index 100% rename from pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c8200/platform.py rename to pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat8k/c8200/platform.py diff --git a/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c8200/__init__.py b/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat8k/c8200/tests/__init__.py similarity index 100% rename from pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c8200/__init__.py rename to pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat8k/c8200/tests/__init__.py diff --git a/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c8200/tests/platform_output.py b/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat8k/c8200/tests/platform_output.py similarity index 100% rename from pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c8200/tests/platform_output.py rename to pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat8k/c8200/tests/platform_output.py diff --git a/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c8200/tests/test_platform.py b/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat8k/c8200/tests/test_platform.py similarity index 100% rename from pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c8200/tests/test_platform.py rename to pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat8k/c8200/tests/test_platform.py diff --git a/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c8200/tests/__init__.py b/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat9k/c9500/__init__.py similarity index 100% rename from pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c8200/tests/__init__.py rename to pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat9k/c9500/__init__.py diff --git a/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c9500/platform.py b/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat9k/c9500/platform.py similarity index 100% rename from pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c9500/platform.py rename to pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat9k/c9500/platform.py diff --git a/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c9500/__init__.py b/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat9k/c9500/tests/__init__.py similarity index 100% rename from pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c9500/__init__.py rename to pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat9k/c9500/tests/__init__.py diff --git a/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c9500/tests/platform_output.py b/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat9k/c9500/tests/platform_output.py similarity index 100% rename from pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c9500/tests/platform_output.py rename to pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat9k/c9500/tests/platform_output.py diff --git a/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c9500/tests/test_platform.py b/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat9k/c9500/tests/test_platform.py similarity index 97% rename from pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c9500/tests/test_platform.py rename to pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat9k/c9500/tests/test_platform.py index 094edfa53..32ee4aff4 100644 --- a/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c9500/tests/test_platform.py +++ b/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/cat9k/c9500/tests/test_platform.py @@ -5,8 +5,8 @@ from pyats.topology import Device # Genie Xbu_shared -from genie.libs.ops.platform.iosxe.c9500.platform import Platform -from genie.libs.ops.platform.iosxe.c9500.tests.platform_output import PlatformOutput +from genie.libs.ops.platform.iosxe.cat9k.c9500.platform import Platform +from genie.libs.ops.platform.iosxe.cat9k.c9500.tests.platform_output import PlatformOutput from genie.libs.parser.iosxe.cat9k.c9500.show_platform import ShowVersion, \ ShowRedundancy, \ ShowInventory, \ diff --git a/pkgs/ops-pkg/src/genie/libs/ops/tests/test_threading.py b/pkgs/ops-pkg/src/genie/libs/ops/tests/test_threading.py index df76fe60b..a7c5e8023 100644 --- a/pkgs/ops-pkg/src/genie/libs/ops/tests/test_threading.py +++ b/pkgs/ops-pkg/src/genie/libs/ops/tests/test_threading.py @@ -211,5 +211,5 @@ def test_threaded_learn(self): 'status_message': 'learnt successfully' } } - + self.assertEqual(results, {'r1': expected_results, 'r2': expected_results}) diff --git a/pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c9500/tests/__init__.py b/pkgs/robot-pkg/changelog/2024/june.rst similarity index 100% rename from pkgs/ops-pkg/src/genie/libs/ops/platform/iosxe/c9500/tests/__init__.py rename to pkgs/robot-pkg/changelog/2024/june.rst diff --git a/pkgs/robot-pkg/src/genie/libs/robot/__init__.py b/pkgs/robot-pkg/src/genie/libs/robot/__init__.py index 22f880025..afdd5c8a4 100644 --- a/pkgs/robot-pkg/src/genie/libs/robot/__init__.py +++ b/pkgs/robot-pkg/src/genie/libs/robot/__init__.py @@ -8,7 +8,7 @@ ''' # metadata -__version__ = '24.5' +__version__ = '24.6' __author__ = 'Cisco Systems Inc.' __contact__ = ['pyats-support@cisco.com', 'pyats-support-ext@cisco.com'] __copyright__ = 'Copyright (c) 2018, Cisco Systems Inc.' diff --git a/pkgs/sdk-pkg/changelog/2024/june.rst b/pkgs/sdk-pkg/changelog/2024/june.rst new file mode 100644 index 000000000..2e7fbb7a1 --- /dev/null +++ b/pkgs/sdk-pkg/changelog/2024/june.rst @@ -0,0 +1,104 @@ +-------------------------------------------------------------------------------- + Fix +-------------------------------------------------------------------------------- + +* iosxe + * Fix usage of golden image in recovery + * Consolidating lookup of golden_image from recovery_info so that it is properly used when defined. + * Modified configure_rommon_tftp + * Updated code to handle all possible variation of image handling + * Modified device_rommon_boot + * Changed sequence of condition when image is not passed in clean yaml + * Modified delete_local_file + * Added timeout to delete_local_file + * Modified delete_unprotected_files to force delete + * Modify get_boot_time + * Added a check to split and parse the uptime_str more robustly by handling the 'hours' and 'minutes' parts individually. + * Added initialization for hours and minutes to ensure they default to 0 if not found in uptime_str. + * Modified request_system_shell + * Added functionality to pass list of commands to execute + * Fix copy_file API + * Added timeout optional variable to the copy_file API to allow the user to + + +-------------------------------------------------------------------------------- + New +-------------------------------------------------------------------------------- + +* iosxe + * Added API config_replace_to_flash_memory_force + * Added API to configure replace to flash memory force + * Added `get_power_supply_info` to retrieve power_supply information of respective components under cat9k/c9300 + * udld + * Added unconfigure_udld_recovery + * Added configure_interface_dot1q_ethertype + * Added configure_subinterface_second_dot1q + * policy_map + * Added configure_policy_map_set_cos_cos_table + * command policy-map {policy-map name} + * command class {class name} + * command set cos cos table {table name} + * table_map + * Added configure_table_map_set_default + * command table-map {table_map_name} + * command default {copy or ignore or any value} + * Added API verify_interface_status_duplex + * This API is used to verify the interface status duplex + * Added new API verify_cdp_neighbors_interface + * Verifies if the CDP neighbors of a device are connected to the specified interface. + * Added new API get_cdp_neighbor_port_id + * Added new API to get the port id of the CDP neighbor. + * Added configure_flow_monitor + * New API to configure flow monitor + * Added `get_power_supply_info` to retrieve power_supply information of respective components under cat9k/c9400. + * Added `get_platform_fan_speed` to retrieve fan_speed of respective fan components under cat9k/c9300 + * Added configure_tunnel_mode_gre_multipoint + * API for configure tunnel mode gre multipoint + * Added unconfigure_tunnel_mode_gre_multipoint + * API for unconfigure tunnel mode gre multipoint + * Added configure_tunnel_source + * API for configure tunnel source + * Added unconfigure_tunnel_source + * API for unconfigure tunnel source + * Added configure_ip_nhrp_network_id + * API for configure ip nhrp network id + * Added unconfigure_ip_nhrp_network_id + * API for unconfigure ip nhrp network id + * Added configure_ip_nhrp_redirect + * API for configure ip nhrp redirect + * Added unconfigure_ip_nhrp_redirect + * API for unconfigure ip nhrp redirect + * Added configure_ip_nhrp_redirect + * API for configure ip nhrp redirect + * Added unconfigure_ip_nhrp_redirect + * API for unconfigure ip nhrp redirect + * Added configure_ip_nhrp_map + * API for configure ip nhrp map + * Added unconfigure_ip_nhrp_map + * API for unconfigure ip nhrp map + * Added configure_ip_nhrp_map_multicast + * API for configure ip nhrp map multicast + * Added unconfigure_ip_nhrp_map_multicast + * API for unconfigure ip nhrp map multicast + * Added configure_ip_nhrp_nhs + * API for configure ip nhrp nhs + * Added unconfigure_ip_nhrp_nhs + * API for unconfigure ip nhrp nhs + * Added configure_ip_nhrp_authentication + * API for configure ip nhrp authentication + * Added unconfigure_ip_nhrp_authentication + * API for unconfigure ip nhrp authentication + * Added configure_nhrp_group + * API for configure ip nhrp group + * Added unconfigure_ip_nhrp_group + * API for unconfigure ip nhrp group + * Added configure_ip_nhrp_map_multicast_dynamic + * API for configure ip nhrp map multicast dynamic + * Added unconfigure_ip_nhrp_map_multicast_dynamic + * API for unconfigure ip nhrp map multicast dynamic + * Added new API verify_interface_config_no_speed + * Added new API to verify interface configuration without speed. + + + + diff --git a/pkgs/sdk-pkg/sdk_generator/output/github_apis.json b/pkgs/sdk-pkg/sdk_generator/output/github_apis.json index 6cb32e0ba..e7f5eb111 100644 --- a/pkgs/sdk-pkg/sdk_generator/output/github_apis.json +++ b/pkgs/sdk-pkg/sdk_generator/output/github_apis.json @@ -303,7 +303,7 @@ "os": "iosxe" }, "uid": "change_hostname", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L298" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L299" } } }, @@ -349,7 +349,7 @@ "module_name": "utils", "package": "genie.libs.sdk.apis", "uid": "check_and_wait", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/utils.py#L4467" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/utils.py#L4468" }, "check_if_device_in_testbed_yaml": { "folders": { @@ -613,7 +613,7 @@ "os": "iosxe" }, "uid": "clear_configuration_lock", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L2004" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L2012" } } }, @@ -641,7 +641,7 @@ "os": "iosxe" }, "uid": "clear_counters", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L757" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L758" } } }, @@ -837,7 +837,7 @@ "os": "iosxe" }, "uid": "clear_dlep_client", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1748" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1756" } } }, @@ -851,7 +851,7 @@ "os": "iosxe" }, "uid": "clear_dlep_neighbor", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1770" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1778" } } }, @@ -1285,7 +1285,7 @@ "os": "iosxe" }, "uid": "clear_ip_mroute_all", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1426" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1427" } } }, @@ -1313,7 +1313,7 @@ "os": "iosxe" }, "uid": "clear_ip_nat_translation_all", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1406" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1407" } } }, @@ -1425,7 +1425,7 @@ "os": "iosxe" }, "uid": "clear_ip_traffic", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1625" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1626" } } }, @@ -1649,7 +1649,7 @@ "os": "iosxe" }, "uid": "clear_lne_ftpse_all", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1789" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1797" } } }, @@ -1663,7 +1663,7 @@ "os": "iosxe" }, "uid": "clear_logging", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L779" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L780" }, "iosxr": { "doc": " clear logging\n Args:\n device ('obj'): Device object\n Returns:\n output ('str'): Output of execution\n Raises:\n SubCommandFailure\n ", @@ -1987,7 +1987,7 @@ "os": "iosxe" }, "uid": "clear_packet_buffer", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L231" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L232" } } }, @@ -2001,7 +2001,7 @@ "os": "iosxe" }, "uid": "clear_pdm_steering_policy", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1845" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1853" } } }, @@ -2043,7 +2043,7 @@ "os": "iosxe" }, "uid": "clear_policy_map_counters", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1682" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1684" } } }, @@ -2057,7 +2057,7 @@ "os": "iosxe" }, "uid": "clear_port_security", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1470" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1471" } } }, @@ -2071,7 +2071,7 @@ "os": "iosxe" }, "uid": "clear_ppp_all", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1806" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1814" } } }, @@ -2085,7 +2085,7 @@ "os": "iosxe" }, "uid": "clear_pppoe_all", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1826" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1834" } } }, @@ -2157,7 +2157,7 @@ "os": "iosxe" }, "uid": "concurrent_ssh_sessions", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1257" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1258" } } }, @@ -2171,7 +2171,7 @@ "os": "iosxe" }, "uid": "confgiure_port_channel_min_link", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5859" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5883" } } }, @@ -2563,7 +2563,7 @@ "os": "iosxe" }, "uid": "config_interface_prpchannel", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9503" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9556" } } }, @@ -2619,7 +2619,7 @@ "os": "iosxe" }, "uid": "config_ip_domain_lookup", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8434" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8487" } } }, @@ -2773,7 +2773,7 @@ "os": "iosxe" }, "uid": "config_link_local_ip_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7342" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7395" } } }, @@ -2787,7 +2787,7 @@ "os": "iosxe" }, "uid": "config_load_interval_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8089" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8142" } } }, @@ -3165,6 +3165,20 @@ } } }, + "config_replace_to_flash_memory_force": { + "folders": { + "iosxe": { + "doc": " execute configure replace to flash memory force\n Args:\n device ('obj'): Device object\n flash ('str'): flash name for example flash or stby-bootflash.Defaults to flash\n timeout ('int',optional): Max time for copying file from flash to complete in seconds.Defaults to 60\n Returns:\n None\n Raise:\n SubCommandFailure: Failed to execute replace flash memory force \n ", + "module_name": "iosxe.qos.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "config_replace_to_flash_memory_force", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/qos/configure.py#L368" + } + } + }, "config_rp_address": { "folders": { "iosxe": { @@ -3833,7 +3847,7 @@ "os": "iosxe" }, "uid": "configure_access_session_port_control", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5307" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5331" } } }, @@ -4540,7 +4554,7 @@ "os": "iosxe" }, "uid": "configure_bandwidth_remaining_policy_map", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L226" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L227" } } }, @@ -6111,7 +6125,7 @@ "os": "iosxe" }, "uid": "configure_console_default_privilege_level", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8725" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8778" } } }, @@ -6363,21 +6377,21 @@ "os": "iosxe" }, "uid": "configure_crypto_map_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5132" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5156" } } }, "configure_crypto_pki_server": { "folders": { "iosxe": { - "doc": "Configures crypto pki server on device\n\n Args:\n device (`obj`): Device object\n domain_name ('str'): Name of the domain to be configured\n database_level ('str'): Database level to be configured\n issuer_name ('str'): Issuer name to be configured\n hash ('str'): Hash to be configured\n modulus_size ('str'): Modulus size to be configured\n Password ('str'): Password to be configured\n server_name ('str'): Name of the server to be configured\n\n Returns:\n None\n\n Raise:\n SubCommandFailure: Failed to configure crypto pki server on device\n ", - "module_name": "iosxe.eaptls.configure", + "doc": " \n Configure crypto pki server\n Args:\n device ('obj'): Device object\n server_name ('str'): Name for the pki server\n auto_rollover_time('str'): Auto rollover time \n cdp_url_server ('str') : cdp url server (http | ldap)\n cdp_url_ip_path ('str') : cdp url ip path \n database_archive_type ('str') : Database archive type either pem or pkcs12\n archive_password ('str') : Database archive password\n archive_encryption_type ('int') : Database archive encryption type (0-9)\n database_level ('str') : Database level (complete|minimum|names)\n database_url_server ('str') : Database server (http | ldap) \n database_ip_path ('str') : Exact path for database file\n database_url_storage_location ('str') : Database url storage location (cnm|crl|crt etc.)\n database_url_publish ('bool') : Database url publish option for cnm, crl,crt\n database_user ('str') : Database username\n eku_options ('str') : eku options that needs to be configured (1 or more)\n grant_mode ('str') : Grant request mode (auto | none | ra-auto)\n grant_rollover_cert ('str') : Grant auto rollover certificate (ca-cert | ra-cert)\n grant_tp_list ('str') : grant trustpoints (upto 5 trustpoints)\n grant_trustpoint ('str') : Label of trustpoint holding trusted CA cert\n hash_type ('str') : Hash algorithm type (md5, sha1, sha256, sha384, sha512)\n issuer_name ('str') : Issuer name to be configured\n ca_cert_life ('str') : Ca certificate lifetime in format or \n cert_life ('str') : Certificate lifetime in format or \n crl_life ('str') : crl lifetime in format or \n enrol_req_life ('str') : enrollment request lifetime in format or \n mode ('str') : Modes (ra|sub-cs)\n mode_ra_transparent ('bool') : True if want to enable transparent in ra mode\n serial_number ('str') : serial number of last issued ceritificate \n enrollment_ip ('str') : Ip address for CA server enrollment URL\n enrollment_path ('str') : Path for CA server enrollment URL\n revoke_chk ('str') : Type of revocation check (none|crl|ocsp)\n key_len ('int') : Key length for RSA keypair \n port ('int') : Port number for CA server enrollment\n Returns:\n True/False\n ", + "module_name": "iosxe.pki.configure", "package": "genie.libs.sdk.apis", "tokens": { "os": "iosxe" }, "uid": "configure_crypto_pki_server", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/eaptls/configure.py#L159" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/pki/configure.py#L13" } } }, @@ -6636,14 +6650,14 @@ "configure_default_spanning_tree": { "folders": { "iosxe": { - "doc": " Configure spanning-tree mode mst\n Args:\n device ('obj'): Device object]\n spanning_tree ('str'): spanning tree \n mst ('str'): instance range, example: 0-3,5,7-9\n portfast ('str'): enable portfast\n range ('str'): vlan range, example: 1,3-5,7,9-11\n Returns:\n None\n Raises:\n SubCommandFailure\n ", - "module_name": "iosxe.spanning_tree.configure", + "doc": "Configure default spanning-tree\n Args:\n device ('obj'): Device object\n mode_type('str'): backbonefast Enable BackboneFast Feature\n bridge STP Bridge Assurance parameters\n cca enable/disable CCA routine\n dispute Enable STP dispute mechanism\n etherchannel Spanning tree etherchannel specific configuration\n extend Spanning Tree 802.1t extensions\n logging Enable Spanning tree logging\n loopguard Spanning tree loopguard options\n mode Spanning tree operating mode\n mst Multiple spanning tree configuration\n pathcost Spanning tree pathcost options\n portfast Spanning tree portfast options\n sso Stateful Switchover\n transmit STP transmit parameters\n uplinkfast Enable UplinkFast Feature\n vlan VLAN Switch Spanning Tree\n Return:\n None\n Raise:\n SubCommandFailure \n ", + "module_name": "iosxe.dot1x.configure", "package": "genie.libs.sdk.apis", "tokens": { "os": "iosxe" }, "uid": "configure_default_spanning_tree", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/spanning_tree/configure.py#L640" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dot1x/configure.py#L2089" } } }, @@ -7211,7 +7225,7 @@ "os": "iosxe" }, "uid": "configure_dialer_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8939" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8992" } } }, @@ -7379,7 +7393,7 @@ "os": "iosxe" }, "uid": "configure_downlink_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4547" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4571" } } }, @@ -7407,7 +7421,7 @@ "os": "iosxe" }, "uid": "configure_dual_port_interface_media_type", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9810" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9863" } } }, @@ -7589,7 +7603,7 @@ "os": "iosxe" }, "uid": "configure_egress_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4627" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4651" } } }, @@ -7869,7 +7883,7 @@ "os": "iosxe" }, "uid": "configure_eui_64_over_ipv6_enabled_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6763" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6787" } } }, @@ -8212,6 +8226,7 @@ "configure_flow_monitor": { "folders": { "iosxe": { + "doc": " Config Flow Monitor on Device\n Args:\n device (`obj`): Device object\n monitor_name (`str`): Flow Monitor name\n exporter_name (`str`): Flow exporter name\n record_name (`str`): Flow record name\n timeout ('int'): Timeout\n \n Return:\n None\n\n Raise:\n SubCommandFailure: Failed configuring flow monitor\n ", "folders": { "cat9k": { "folders": { @@ -8231,9 +8246,13 @@ } } }, + "module_name": "iosxe.flow.configure", + "package": "genie.libs.sdk.apis", "tokens": { "os": "iosxe" - } + }, + "uid": "configure_flow_monitor", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/flow/configure.py#L1543" } } }, @@ -8541,7 +8560,7 @@ "os": "iosxe" }, "uid": "configure_glbp_details_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9329" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9382" } } }, @@ -8569,7 +8588,7 @@ "os": "iosxe" }, "uid": "configure_global_interface_template_sticky", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9024" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9077" } } }, @@ -8653,7 +8672,7 @@ "os": "iosxe" }, "uid": "configure_hqos_policer_map", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L599" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L600" } } }, @@ -8667,7 +8686,7 @@ "os": "iosxe" }, "uid": "configure_hsrp_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5027" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5051" } } }, @@ -8681,7 +8700,7 @@ "os": "iosxe" }, "uid": "configure_hsrp_version_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7141" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7194" } } }, @@ -9129,7 +9148,7 @@ "os": "iosxe" }, "uid": "configure_interface_auth_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6619" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6643" } } }, @@ -9143,7 +9162,7 @@ "os": "iosxe" }, "uid": "configure_interface_auth_vlan_no_resp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6698" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6722" } } }, @@ -9157,7 +9176,7 @@ "os": "iosxe" }, "uid": "configure_interface_authentication_violation", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8397" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8450" } } }, @@ -9171,7 +9190,7 @@ "os": "iosxe" }, "uid": "configure_interface_bandwidth", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8312" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8365" } } }, @@ -9185,7 +9204,7 @@ "os": "iosxe" }, "uid": "configure_interface_channel_group_auto_lacp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5904" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5928" } } }, @@ -9213,7 +9232,7 @@ "os": "iosxe" }, "uid": "configure_interface_default_snmp_trap_mac_notification_change", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7618" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7671" } } }, @@ -9245,6 +9264,20 @@ } } }, + "configure_interface_dot1q_ethertype": { + "folders": { + "iosxe": { + "doc": " Configures ethertype on interface\n Args:\n device ('obj'): device to use\n interface ('str'): interface to configure\n ethervalue ('str'): Configure ethertype\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.interface.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_interface_dot1q_ethertype", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7165" + } + } + }, "configure_interface_dot1x_eap_profile": { "folders": { "iosxe": { @@ -9255,7 +9288,7 @@ "os": "iosxe" }, "uid": "configure_interface_dot1x_eap_profile", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6516" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6540" } } }, @@ -9269,7 +9302,7 @@ "os": "iosxe" }, "uid": "configure_interface_dot1x_max_reauth_req", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6428" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6452" } } }, @@ -9283,7 +9316,7 @@ "os": "iosxe" }, "uid": "configure_interface_dot1x_max_req", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6360" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6384" } } }, @@ -9297,7 +9330,7 @@ "os": "iosxe" }, "uid": "configure_interface_dot1x_timeout_txp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6293" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6317" } } }, @@ -9311,7 +9344,7 @@ "os": "iosxe" }, "uid": "configure_interface_duplex", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5505" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5529" } } }, @@ -9353,7 +9386,7 @@ "os": "iosxe" }, "uid": "configure_interface_flow_control", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7646" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7699" } } }, @@ -9409,7 +9442,7 @@ "os": "iosxe" }, "uid": "configure_interface_inherit_disable", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6070" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6094" } } }, @@ -9465,7 +9498,7 @@ "os": "iosxe" }, "uid": "configure_interface_ip_nbar", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9445" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9498" } } }, @@ -9479,7 +9512,7 @@ "os": "iosxe" }, "uid": "configure_interface_ip_tcp_adjust_mss", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7194" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7247" } } }, @@ -9493,7 +9526,7 @@ "os": "iosxe" }, "uid": "configure_interface_ip_verify_source", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8049" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8102" } } }, @@ -9507,7 +9540,7 @@ "os": "iosxe" }, "uid": "configure_interface_ip_verify_unicast_notification", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6869" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6893" } } }, @@ -9521,7 +9554,7 @@ "os": "iosxe" }, "uid": "configure_interface_ip_verify_unicast_reversepath", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6839" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6863" } } }, @@ -9535,7 +9568,7 @@ "os": "iosxe" }, "uid": "configure_interface_ip_verify_unicast_source", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6563" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6587" } } }, @@ -9549,7 +9582,7 @@ "os": "iosxe" }, "uid": "configure_interface_ip_wccp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8631" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8684" } } }, @@ -9591,7 +9624,7 @@ "os": "iosxe" }, "uid": "configure_interface_ipv6_tcp_adjust_mss", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7234" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7287" } } }, @@ -9605,7 +9638,7 @@ "os": "iosxe" }, "uid": "configure_interface_ipv6_verify_unicast_reversepath", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6895" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6919" } } }, @@ -9619,7 +9652,7 @@ "os": "iosxe" }, "uid": "configure_interface_ipv6_verify_unicast_source", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6665" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6689" } } }, @@ -9647,7 +9680,7 @@ "os": "iosxe" }, "uid": "configure_interface_keepalive", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8210" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8263" } } }, @@ -9661,7 +9694,7 @@ "os": "iosxe" }, "uid": "configure_interface_l2protocol_tunnel", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8236" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8289" } } }, @@ -9689,7 +9722,7 @@ "os": "iosxe" }, "uid": "configure_interface_lacp_fast_switchover", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7450" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7503" } } }, @@ -9703,7 +9736,7 @@ "os": "iosxe" }, "uid": "configure_interface_lacp_max_bundle", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7507" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7560" } } }, @@ -9717,7 +9750,7 @@ "os": "iosxe" }, "uid": "configure_interface_logging_event", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6970" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6994" } } }, @@ -9759,7 +9792,7 @@ "os": "iosxe" }, "uid": "configure_interface_macro_auto_port_sticky", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5972" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5996" } } }, @@ -9815,7 +9848,7 @@ "os": "iosxe" }, "uid": "configure_interface_monitor_session_shutdown", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7735" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7788" } } }, @@ -9871,7 +9904,7 @@ "os": "iosxe" }, "uid": "configure_interface_no_switchport_voice_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9000" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9053" } } }, @@ -10011,7 +10044,7 @@ "os": "iosxe" }, "uid": "configure_interface_pvlan_mapping", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9220" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9273" } } }, @@ -10025,7 +10058,7 @@ "os": "iosxe" }, "uid": "configure_interface_pvlan_mode_with_submode", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4283" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4307" } } }, @@ -10053,7 +10086,7 @@ "os": "iosxe" }, "uid": "configure_interface_range_no_shutdown", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9857" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9910" } } }, @@ -10067,7 +10100,7 @@ "os": "iosxe" }, "uid": "configure_interface_range_no_switchport", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9589" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9642" } } }, @@ -10081,7 +10114,7 @@ "os": "iosxe" }, "uid": "configure_interface_range_shutdown", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9835" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9888" } } }, @@ -10095,7 +10128,7 @@ "os": "iosxe" }, "uid": "configure_interface_reg_segment", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4104" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4128" } } }, @@ -10109,7 +10142,7 @@ "os": "iosxe" }, "uid": "configure_interface_reg_segment_timer", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4176" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4200" } } }, @@ -10123,7 +10156,7 @@ "os": "iosxe" }, "uid": "configure_interface_service_policy", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4726" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4750" } } }, @@ -10137,7 +10170,7 @@ "os": "iosxe" }, "uid": "configure_interface_snmp_trap_mac_notification_change", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7562" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7615" } } }, @@ -10151,7 +10184,7 @@ "os": "iosxe" }, "uid": "configure_interface_span_cost", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6452" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6476" } } }, @@ -10179,7 +10212,7 @@ "os": "iosxe" }, "uid": "configure_interface_span_vlan_priority", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6339" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6363" } } }, @@ -10193,7 +10226,7 @@ "os": "iosxe" }, "uid": "configure_interface_speed", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5449" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5473" } } }, @@ -10249,7 +10282,7 @@ "os": "iosxe" }, "uid": "configure_interface_switchport", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7823" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7876" } } }, @@ -10277,7 +10310,7 @@ "os": "iosxe" }, "uid": "configure_interface_switchport_block_address", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6924" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6948" } } }, @@ -10291,7 +10324,7 @@ "os": "iosxe" }, "uid": "configure_interface_switchport_dot1q_ethertype", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7084" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7108" } } }, @@ -10319,7 +10352,7 @@ "os": "iosxe" }, "uid": "configure_interface_switchport_port_security_violation", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6241" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6265" } } }, @@ -10333,7 +10366,7 @@ "os": "iosxe" }, "uid": "configure_interface_switchport_pvlan_and_native_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4310" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4334" } } }, @@ -10347,7 +10380,7 @@ "os": "iosxe" }, "uid": "configure_interface_switchport_pvlan_association", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4337" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4361" } } }, @@ -10361,7 +10394,7 @@ "os": "iosxe" }, "uid": "configure_interface_switchport_pvlan_mapping", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4365" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4389" } } }, @@ -10445,7 +10478,7 @@ "os": "iosxe" }, "uid": "configure_interface_template_sticky", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6012" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6036" } } }, @@ -10494,7 +10527,7 @@ "configure_interface_tunnel_hub": { "folders": { "iosxe": { - "doc": " Configures interface Tunnel[number] hub\n Args:\n device ('obj'): Device object\n tunnel_intf ('str'): tunnel interface\n tunnel_ip ('str'): tunnel ip address\n tunnel_mask ('str'): tunnel mask\n tunnel_src ('str'): tunnel source \n ipsec_profile_name ('str',optional): IPSEC profile name\n authentication_string ('str',optional): Authentication string \n network_id ('int',optional): Network Identifier\n holdtimer ('int',optional): Number of seconds with respect to HoldTimer\n tunnel_key_id ('int',optional) : Tunnel key used \n ip_redirects ('boolean',optional): Setting ip redirects.Defaults to False.\n gre_multipoint ('boolean',optional) : Setting gre_multipoint in case \"gre multipoint\" option is chosen.Defaults to False.\n ipsec ('boolean',optional) : Setting ipsec in case \"ipsec\" option is chosen.Defaults to False.\n dual_overlay ('boolean',optional) : Setting dual_overlay for tunnel mode ipsec dual-overlay option.Defaults to False.\n type ('str',optional) : Type of IP address [Ipv4 or Ipv6]\n ipv6_enable ('boolean',optional) : Setting ipv6 enable.Defaults to False.\n vrf_forwarding ('str',optional) : Configured VRF name to be entered.\n tunnel_vrf ('str',optional): Configured VRF table name to be entered.\n\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "doc": " Configures interface Tunnel[number] hub\n Args:\n device ('obj'): Device object\n tunnel_intf ('str'): tunnel interface\n tunnel_ip ('str'): tunnel ip address\n tunnel_mask ('str'): tunnel mask\n tunnel_src ('str'): tunnel source \n ipsec_profile_name ('str',optional): IPSEC profile name\n authentication_string ('str',optional): Authentication string \n network_id ('int',optional): Network Identifier\n holdtimer ('int',optional): Number of seconds with respect to HoldTimer\n tunnel_key_id ('int',optional) : Tunnel key used \n ip_redirects ('boolean',optional): Setting ip redirects.Defaults to False.\n gre_multipoint ('boolean',optional) : Setting gre_multipoint in case \"gre multipoint\" option is chosen.Defaults to False.\n ipsec ('boolean',optional) : Setting ipsec in case \"ipsec\" option is chosen.Defaults to False.\n dual_overlay ('boolean',optional) : Setting dual_overlay for tunnel mode \n ipsec dual-overlay option.Defaults to False.\n type ('str',optional) : Type of IP address [Ipv4 or Ipv6]\n ipv6_enable ('boolean',optional) : Setting ipv6 enable.Defaults to False.\n vrf_forwarding ('str',optional) : Configured VRF name to be entered.\n tunnel_vrf ('str',optional): Configured VRF table name to be entered.\n\n Returns:\n None\n Raises:\n SubCommandFailure\n ", "module_name": "iosxe.dmvpn.configure", "package": "genie.libs.sdk.apis", "tokens": { @@ -10515,7 +10548,7 @@ "os": "iosxe" }, "uid": "configure_interface_tunnel_key", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L227" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L228" } } }, @@ -10543,7 +10576,7 @@ "os": "iosxe" }, "uid": "configure_interface_tunnel_spoke", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L113" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L114" } } }, @@ -10585,7 +10618,7 @@ "os": "iosxe" }, "uid": "configure_interface_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9567" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9620" } } }, @@ -11107,7 +11140,7 @@ "os": "iosxe" }, "uid": "configure_ip_dlep", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7843" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7896" } } }, @@ -11303,7 +11336,7 @@ "os": "iosxe" }, "uid": "configure_ip_igmp_join_group", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5595" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5619" } } }, @@ -11569,7 +11602,7 @@ "os": "iosxe" }, "uid": "configure_ip_igmp_static_group", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5536" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5560" } } }, @@ -11699,6 +11732,118 @@ } } }, + "configure_ip_nhrp_authentication": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp authentication\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):tunnel interface to be configured\n test('str'):test name\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_ip_nhrp_authentication", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L564" + } + } + }, + "configure_ip_nhrp_holdtime": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp holdtime\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):tunnel interface to be configured\n time('int'):time\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_ip_nhrp_holdtime", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L648" + } + } + }, + "configure_ip_nhrp_map": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp map\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):tunnel interface to be configured\n tunnel_ip('str'):tunnel ip address of destination\n nbma_address('str'):nbma address of destination\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_ip_nhrp_map", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L436" + } + } + }, + "configure_ip_nhrp_map_multicast": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp map multicast\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):tunnel interface to be configured\n nbma_address('str'):nbma address of destination\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_ip_nhrp_map_multicast", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L480" + } + } + }, + "configure_ip_nhrp_map_multicast_dynamic": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp map multicast dynamic\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):tunnel interface to be configured\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_ip_nhrp_map_multicast_dynamic", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L690" + } + } + }, + "configure_ip_nhrp_network_id": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp network id\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):interface to be configured\n num('int'):network id\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_ip_nhrp_network_id", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L354" + } + } + }, + "configure_ip_nhrp_nhs": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp nhs\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):tunnel interface to be configured\n tunnel_ip('str'):tunnel ip address of destination\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_ip_nhrp_nhs", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L522" + } + } + }, + "configure_ip_nhrp_redirect": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp redirect\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):interface to be configured\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_ip_nhrp_redirect", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L396" + } + } + }, "configure_ip_on_atm_interface": { "folders": { "iosxe": { @@ -11709,7 +11854,7 @@ "os": "iosxe" }, "uid": "configure_ip_on_atm_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9654" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9707" } } }, @@ -12073,7 +12218,7 @@ "os": "iosxe" }, "uid": "configure_ip_unnumbered_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5334" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5358" } } }, @@ -12227,7 +12372,7 @@ "os": "iosxe" }, "uid": "configure_ipv4_dhcp_relay_helper_vrf", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5644" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5668" } } }, @@ -12395,7 +12540,7 @@ "os": "iosxe" }, "uid": "configure_ipv6_address_config", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8820" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8873" } } }, @@ -12409,7 +12554,7 @@ "os": "iosxe" }, "uid": "configure_ipv6_address_on_hsrp_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7161" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7214" } } }, @@ -12465,7 +12610,7 @@ "os": "iosxe" }, "uid": "configure_ipv6_dhcp_client_pd_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8023" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8076" } } }, @@ -12619,7 +12764,7 @@ "os": "iosxe" }, "uid": "configure_ipv6_enable", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4493" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4517" } } }, @@ -12843,7 +12988,7 @@ "os": "iosxe" }, "uid": "configure_ipv6_mld_static_group", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5567" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5591" } } }, @@ -12885,7 +13030,7 @@ "os": "iosxe" }, "uid": "configure_ipv6_mtu", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5083" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5107" } } }, @@ -12927,7 +13072,7 @@ "os": "iosxe" }, "uid": "configure_ipv6_nd_dad_processing", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6801" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6825" } } }, @@ -12969,7 +13114,7 @@ "os": "iosxe" }, "uid": "configure_ipv6_nd_suppress_ra", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8745" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8798" } } }, @@ -13123,7 +13268,7 @@ "os": "iosxe" }, "uid": "configure_ipv6_prefix_name_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8002" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8055" } } }, @@ -14530,6 +14675,20 @@ } } }, + "configure_mac_loopback": { + "folders": { + "iosxe": { + "doc": " Config mac loopback on device\n Args:\n device (`obj`): device object\n interface (`str`): Interface name\n Return:\n None\n Raises:\n SubCommandFailure \n ", + "module_name": "iosxe.mac.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_mac_loopback", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mac/configure.py#L564" + } + } + }, "configure_macro_auto_global_processing": { "folders": { "iosxe": { @@ -15002,7 +15161,7 @@ "os": "iosxe" }, "uid": "configure_mdns_on_interface_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5205" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5229" } } }, @@ -15625,7 +15784,7 @@ "os": "iosxe" }, "uid": "configure_monitor_erspan_source_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8348" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8401" } } }, @@ -16175,6 +16334,20 @@ } } }, + "configure_nhrp_group": { + "folders": { + "iosxe": { + "doc": " Configure nhrp group\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):tunnel interface to be configured\n group('str'):nhrp group\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_nhrp_group", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L606" + } + } + }, "configure_no_bgp_default": { "folders": { "iosxe": { @@ -16995,7 +17168,7 @@ "os": "iosxe" }, "uid": "configure_physical_interface_vmi", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7924" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7977" } } }, @@ -17044,14 +17217,14 @@ "configure_pki_authenticate_certificate": { "folders": { "iosxe": { - "doc": " Pastes certificate on device\n\n Args:\n device (`obj`): Device object\n certificate ('str'): Certificate to be pasted\n label_name ('str'): Label name\n\n Returns:\n None\n\n Raise:\n SubCommandFailure: Failed to paste certificate on device\n ", - "module_name": "iosxe.eaptls.configure", + "doc": " Pastes certificate on device\n Args:\n device (`obj`): Device object\n certificate ('str'): Certificate to be pasted\n label_name ('str'): Label name\n Returns:\n None\n Raise:\n SubCommandFailure: Failed to paste certificate on device\n ", + "module_name": "iosxe.pki.configure", "package": "genie.libs.sdk.apis", "tokens": { "os": "iosxe" }, "uid": "configure_pki_authenticate_certificate", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/eaptls/configure.py#L38" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/pki/configure.py#L913" } } }, @@ -17167,6 +17340,20 @@ } } }, + "configure_platform_mgmt_interface": { + "folders": { + "iosxe": { + "doc": " Configure platform management interface\n Args:\n device ('obj'): device to use\n interface_name ('str'): interface name\n Returns\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.platform.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_platform_mgmt_interface", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L6041" + } + } + }, "configure_platform_qos_port_channel_aggregate": { "folders": { "iosxe": { @@ -17252,7 +17439,7 @@ "os": "iosxe" }, "uid": "configure_policy_map", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L14" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L15" } } }, @@ -17266,7 +17453,7 @@ "os": "iosxe" }, "uid": "configure_policy_map_class_parameters", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L701" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L702" } } }, @@ -17280,7 +17467,7 @@ "os": "iosxe" }, "uid": "configure_policy_map_class_precedence", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L937" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L938" } } }, @@ -17322,7 +17509,21 @@ "os": "iosxe" }, "uid": "configure_policy_map_on_device", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L566" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L567" + } + } + }, + "configure_policy_map_set_cos_cos_table": { + "folders": { + "iosxe": { + "doc": " \n Args:\n device ('obj'): device to use\n policy_map_name ('str'): name of policy-map\n class_name ('str'): class-default or any user defined class name\n table_name('str'): table name\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.policy_map.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_policy_map_set_cos_cos_table", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L988" } } }, @@ -17336,7 +17537,7 @@ "os": "iosxe" }, "uid": "configure_policy_map_type_service", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L301" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L302" } } }, @@ -17350,7 +17551,7 @@ "os": "iosxe" }, "uid": "configure_policy_map_with_dscp_police", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L494" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L495" } } }, @@ -17364,7 +17565,7 @@ "os": "iosxe" }, "uid": "configure_policy_map_with_dscp_table", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L441" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L442" } } }, @@ -17378,7 +17579,7 @@ "os": "iosxe" }, "uid": "configure_policy_map_with_no_set_dscp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L467" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L468" } } }, @@ -17392,7 +17593,7 @@ "os": "iosxe" }, "uid": "configure_policy_map_with_percent", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L369" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L370" } } }, @@ -17406,7 +17607,7 @@ "os": "iosxe" }, "uid": "configure_policy_map_with_pps", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L346" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L347" } } }, @@ -17420,7 +17621,7 @@ "os": "iosxe" }, "uid": "configure_port_channel_lacp_max_bundle", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5393" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5417" } } }, @@ -17462,7 +17663,7 @@ "os": "iosxe" }, "uid": "configure_port_channel_standalone_disable", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4898" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4922" } } }, @@ -17490,7 +17691,7 @@ "os": "iosxe" }, "uid": "configure_portchannel_dpi_algorithm", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8579" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8632" } } }, @@ -17504,7 +17705,7 @@ "os": "iosxe" }, "uid": "configure_power_efficient_ethernet_auto", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7715" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7768" } } }, @@ -17518,7 +17719,7 @@ "os": "iosxe" }, "uid": "configure_power_inline", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5768" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5792" } } }, @@ -17546,7 +17747,7 @@ "os": "iosxe" }, "uid": "configure_pppoe_enable_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4962" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4986" } } }, @@ -17588,7 +17789,7 @@ "os": "iosxe" }, "uid": "configure_print_timestamp_for_show_command", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8706" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8759" } } }, @@ -18222,6 +18423,20 @@ } } }, + "configure_redundancy": { + "folders": { + "iosxe": { + "doc": " configure redundancy on device\n Args:\n device ('obj'): device to use\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.redundancy.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_redundancy", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/redundancy/configure.py#L45" + } + } + }, "configure_rekey_under_gkm_group": { "folders": { "iosxe": { @@ -18316,7 +18531,7 @@ "os": "iosxe" }, "uid": "configure_rommon_tftp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/rommon/configure.py#L10" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/rommon/configure.py#L11" } } }, @@ -18330,7 +18545,7 @@ "os": "iosxe" }, "uid": "configure_rommon_tftp_ha", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/rommon/configure.py#L93" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/rommon/configure.py#L94" } } }, @@ -18918,7 +19133,7 @@ "os": "iosxe" }, "uid": "configure_service_instance", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9367" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9420" } } }, @@ -18988,21 +19203,21 @@ "os": "iosxe" }, "uid": "configure_service_policy_with_queueing_name", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L542" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L543" } } }, "configure_service_private_config_encryption": { "folders": { "iosxe": { - "doc": " \n service private-config-encryption\n Args:\n device ('obj'): Device object\n Returns:\n None\n Raises:\n SubCommandFailure exception\n ", - "module_name": "iosxe.csdl.configure", + "doc": " service private-config-encryption\n Args:\n device (`obj`): Device object\n Returns:\n None\n Raises:\n SubCommandFailure : Failed configuring device\n ", + "module_name": "iosxe.sudi.configure", "package": "genie.libs.sdk.apis", "tokens": { "os": "iosxe" }, "uid": "configure_service_private_config_encryption", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/csdl/configure.py#L33" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/sudi/configure.py#L42" } } }, @@ -19212,7 +19427,7 @@ "os": "iosxe" }, "uid": "configure_shape_map", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L117" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L118" } } }, @@ -19821,14 +20036,14 @@ "configure_snmp_server_manager": { "folders": { "iosxe": { - "doc": "\n Configures the snmp-server manager\n Args:\n device ('obj'): device to use\n Returns:\n None\n Raises:\n SubCommandFailure\n ", - "module_name": "iosxe.snmp.configure", + "doc": " Configures snmp-server manager\n Args:\n device ('obj'): device to use\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.platform.configure", "package": "genie.libs.sdk.apis", "tokens": { "os": "iosxe" }, "uid": "configure_snmp_server_manager", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/snmp/configure.py#L508" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L3008" } } }, @@ -19926,7 +20141,7 @@ "os": "iosxe" }, "uid": "configure_span_monitor_session", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4852" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4876" } } }, @@ -20616,6 +20831,20 @@ } } }, + "configure_subinterface_second_dot1q": { + "folders": { + "iosxe": { + "doc": " Configure subinterface second dot1q\n Args:\n device ('obj'): device to use\n interface ('str'): physical interface\n intf_number ('str'): subinterface any number\n vlan_id ('str'): any number\n second_vlan_id ('str'): any number\n Returns:\n None\n Raises:\n SubCommandFailure: subinterface not enabled\n ", + "module_name": "iosxe.interface.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_subinterface_second_dot1q", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4104" + } + } + }, "configure_subinterfaces_for_vlan_range": { "folders": { "iosxe": { @@ -20710,7 +20939,7 @@ "os": "iosxe" }, "uid": "configure_switchport_mode_trunk_snooping_trust", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4600" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4624" } } }, @@ -20724,7 +20953,7 @@ "os": "iosxe" }, "uid": "configure_switchport_nonegotiate", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4231" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4255" } } }, @@ -20794,7 +21023,7 @@ "os": "iosxe" }, "uid": "configure_switchport_protected", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8168" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8221" } } }, @@ -20808,7 +21037,7 @@ "os": "iosxe" }, "uid": "configure_switchport_pvlan_trunk_allowed_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9130" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9183" } } }, @@ -20822,7 +21051,7 @@ "os": "iosxe" }, "uid": "configure_switchport_pvlan_trunk_native_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9176" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9229" } } }, @@ -20850,7 +21079,7 @@ "os": "iosxe" }, "uid": "configure_switchport_trunk_allowed_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5365" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5389" } } }, @@ -20892,7 +21121,7 @@ "os": "iosxe" }, "uid": "configure_switchport_trunk_native_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4575" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4599" } } }, @@ -20934,7 +21163,7 @@ "os": "iosxe" }, "uid": "configure_switchport_trunk_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4752" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4776" } } }, @@ -20948,7 +21177,7 @@ "os": "iosxe" }, "uid": "configure_switchport_trunk_vlan_with_speed_and_duplex", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4778" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4802" } } }, @@ -21032,7 +21261,7 @@ "os": "iosxe" }, "uid": "configure_table_map", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/table_map/configure.py#L12" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/table_map/configure.py#L13" } } }, @@ -21046,7 +21275,21 @@ "os": "iosxe" }, "uid": "configure_table_map_on_device", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L909" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L910" + } + } + }, + "configure_table_map_set_default": { + "folders": { + "iosxe": { + "doc": " \n Args:\n device ('obj'): device to use\n table_map_name ('str'): name of policy-map\n sub_option ('str'): copy(By default) or ignore or any value\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.table_map.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_table_map_set_default", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/table_map/configure.py#L84" } } }, @@ -21060,7 +21303,7 @@ "os": "iosxe" }, "uid": "configure_table_map_values", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L418" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L419" } } }, @@ -21382,6 +21625,20 @@ } } }, + "configure_tunnel_mode_gre_multipoint": { + "folders": { + "iosxe": { + "doc": " Configure tunnel mode gre multipoint\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):interface to be configured\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_tunnel_mode_gre_multipoint", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L271" + } + } + }, "configure_tunnel_priority": { "folders": { "iosxe": { @@ -21396,6 +21653,20 @@ } } }, + "configure_tunnel_source": { + "folders": { + "iosxe": { + "doc": " Configure tunnel source\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):interface to be configured\n interface('str'):source interface\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "configure_tunnel_source", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L311" + } + } + }, "configure_tunnel_with_ipsec": { "folders": { "iosxe": { @@ -21574,7 +21845,7 @@ "os": "iosxe" }, "uid": "configure_uplink_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4516" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4540" } } }, @@ -21616,7 +21887,7 @@ "os": "iosxe" }, "uid": "configure_vfi", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4809" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4833" } } }, @@ -21672,7 +21943,7 @@ "os": "iosxe" }, "uid": "configure_virtual_template", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4393" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4417" } } }, @@ -21938,7 +22209,7 @@ "os": "iosxe" }, "uid": "configure_vrf_select_source", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5709" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5733" } } }, @@ -21966,7 +22237,7 @@ "os": "iosxe" }, "uid": "configure_vrrp_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7312" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7365" } } }, @@ -21980,7 +22251,7 @@ "os": "iosxe" }, "uid": "configure_vrrp_version_on_device", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7297" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7350" } } }, @@ -22149,14 +22420,14 @@ "copy_file": { "folders": { "iosxe": { - "doc": "\n Copying file from source path to destination path in local device.\n Args:\n device ('obj'): Device object\n source_path ('str'): source path\n destination_path ('str'): destination path\n filename ('str'): filename that needs to copy\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "doc": "\n Copying file from source path to destination path in local device.\n Args:\n device ('obj'): Device object\n source_path ('str'): source path\n destination_path ('str'): destination path\n filename ('str'): filename that needs to copy\n timeout ('int'): Timeout in seconds for waiting for the console. Default is 60.\n Returns:\n None\n Raises:\n SubCommandFailure\n ", "module_name": "iosxe.utils", "package": "genie.libs.sdk.apis", "tokens": { "os": "iosxe" }, "uid": "copy_file", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1649" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1650" } } }, @@ -22613,7 +22884,7 @@ "os": "iosxe" }, "uid": "debug_platform_memory_fed_backtrace", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L160" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L161" } } }, @@ -22627,7 +22898,21 @@ "os": "iosxe" }, "uid": "debug_platform_memory_fed_callsite", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L129" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L130" + } + } + }, + "debug_platform_software_fed_switch_active_punt_packet_capture": { + "folders": { + "iosxe": { + "doc": "debug platform software fed switch active punt packet-capture on SVL\n Args:\n device (obj): Device to execute on\n allow_buffer_limit(bool) : if user want to set buffer limit , Default False\n buffer_limit(int , optional): Number of packets to capture <256-16384> , Default 16384 (max)\n allow_circular_buffer_limit(bool) : if user want to set circular buffer limit , Default False\n circular_buffer_limit(int , optional): Number of packets to capture <256-16384> , Default 16384 (max)\n allow_set_filter(bool): if user want to set filter , Default False\n set_filter_value(str): user input of filter \n allow_clear_filter(bool): if user want to clear all filters , Default False\n start(bool): starting the capture\n stop(bool): stop the capture\n Returns:\n None\n Raises:\n SubCommandFailure: debug_platform_software_fed_switch_active_punt_packet_capture Failed !\n ", + "module_name": "iosxe.debug.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "debug_platform_software_fed_switch_active_punt_packet_capture", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L309" } } }, @@ -22641,7 +22926,7 @@ "os": "iosxe" }, "uid": "debug_vdsl_controller_slot_dump_internal", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L280" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L281" } } }, @@ -22669,7 +22954,7 @@ "os": "iosxe" }, "uid": "decrypt_tacacs_pcap", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L852" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L853" } } }, @@ -22735,7 +23020,7 @@ "os": "iosxe" }, "uid": "delete_directory", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1922" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1930" } } }, @@ -22781,7 +23066,7 @@ "os": "iosxe" }, "uid": "delete_files", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L442" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L443" }, "nxos": { "folders": { @@ -22829,7 +23114,7 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/ios/utils.py#L20" }, "iosxe": { - "doc": " Delete local file\n\n Args:\n device (`obj`): Device object\n path (`str`): directory\n file (`str`): file name\n Returns:\n None\n ", + "doc": " Delete local file\n\n Args:\n device (`obj`): Device object\n path (`str`): directory\n file (`str`): file name\n timeout ('int', optional): Timeout in seconds. Default is 60\n Returns:\n None\n ", "module_name": "iosxe.utils", "package": "genie.libs.sdk.apis", "tokens": { @@ -22891,7 +23176,7 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/ios/platform/execute.py#L149" }, "iosxe": { - "doc": "delete all files not matching regex in the protected list\n Args:\n device ('obj'): Device object\n directory ('str'): working directory to perform the operation\n protected ('list'): list of file patterns that won't be deleted. If it begins\n and ends with (), it will be considered as a regex\n files_to_delete('list') list of files that should be deleted unless they are not protected\n dir_output ('str'): output of dir command, if not provided execute the cmd on device to get the output\n allow_failure (bool, optional): Allow the deletion of a file to silently fail. Defaults to False.\n destination ('str') : Destination directory. default to None. i.e bootflash:/\n Returns:\n None\n ", + "doc": "delete all files not matching regex in the protected list\n Args:\n device ('obj'): Device object\n directory ('str'): working directory to perform the operation\n protected ('list'): list of file patterns that won't be deleted. If it begins\n and ends with (), it will be considered as a regex\n files_to_delete('list') list of files that should be deleted unless they are protected\n dir_output ('str'): output of dir command, if not provided execute the cmd on device to get the output\n allow_failure (bool, optional): Allow the deletion of a file to silently fail. Defaults to False.\n destination ('str') : Destination directory. default to None. i.e bootflash:/\n Returns:\n None\n ", "module_name": "iosxe.platform.execute", "package": "genie.libs.sdk.apis", "tokens": { @@ -23114,7 +23399,7 @@ "os": "iosxe" }, "uid": "disable_autostate_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5283" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5307" } } }, @@ -23212,7 +23497,7 @@ "os": "iosxe" }, "uid": "disable_debug", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L41" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L42" } } }, @@ -23240,7 +23525,7 @@ "os": "iosxe" }, "uid": "disable_debug_pdm", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L253" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L254" } } }, @@ -23548,7 +23833,7 @@ "os": "iosxe" }, "uid": "disable_switchport_trunk_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9308" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9361" } } }, @@ -23795,7 +24080,7 @@ "os": "iosxe" }, "uid": "enable_debug", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L12" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L13" } } }, @@ -23809,7 +24094,7 @@ "os": "iosxe" }, "uid": "enable_debug_ilpower_event", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L207" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L208" } } }, @@ -23823,7 +24108,7 @@ "os": "iosxe" }, "uid": "enable_debug_pdm", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L226" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L227" } } }, @@ -24271,7 +24556,7 @@ "os": "iosxe" }, "uid": "enable_switchport_protected_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9610" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9663" } } }, @@ -24285,7 +24570,7 @@ "os": "iosxe" }, "uid": "enable_switchport_trunk_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5259" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5283" } } }, @@ -26566,7 +26851,7 @@ "os": "iosxe" }, "uid": "export_packet_capture", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L170" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L171" } } }, @@ -26608,7 +26893,7 @@ "os": "iosxe" }, "uid": "format_directory", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1947" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1955" } } }, @@ -27799,7 +28084,7 @@ "os": "iosxe" }, "uid": "get_cdp_neighbors_info", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cdp/get.py#L11" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cdp/get.py#L13" }, "iosxr": { "doc": " Get details about cdp neighbors from device\n Args:\n device ('obj'): Device object\n Returns:\n Dict with cdp info\n ", @@ -27823,6 +28108,20 @@ } } }, + "get_cdp_neighbour_port_id": { + "folders": { + "iosxe": { + "doc": " Get the port_id from 'show cdp neighbors ' for a single interface\n\n Args:\n device (`obj`): Device object\n interface (str): Interface name\n\n Returns:\n list: List of port_id values\n\n Raises:\n SchemaEmptyParserError: If the 'show cdp neighbors ' output is empty\n KeyError: If the expected keys are not present in the output structure\n ", + "module_name": "iosxe.cdp.get", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "get_cdp_neighbour_port_id", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cdp/get.py#L42" + } + } + }, "get_cef_internal_primary_interface": { "folders": { "iosxe": { @@ -28175,7 +28474,7 @@ "os": "iosxe" }, "uid": "get_config_from_file", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L58" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L59" } } }, @@ -28318,7 +28617,7 @@ "os": "iosxe" }, "uid": "get_cpu_instant_interval", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py#L1073" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py#L1078" } } }, @@ -28332,7 +28631,7 @@ "os": "iosxe" }, "uid": "get_cpu_min_max_avg", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py#L1131" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py#L1136" } } }, @@ -30336,7 +30635,7 @@ "os": "iosxe" }, "uid": "get_ip_packet_scapy", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1377" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1378" } } }, @@ -31094,7 +31393,7 @@ "os": "iosxe" }, "uid": "get_md5_hash_of_file", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L537" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L538" }, "iosxr": { "doc": " Return the MD5 hash of a given file.\n\n Args:\n device (obj): Device to execute on\n file (str): File to calculate the MD5 on\n timeout (int, optional): Max time in seconds allowed for calculation.\n Defaults to 60.\n\n Returns:\n MD5 hash (str), or None if something went wrong\n ", @@ -31138,7 +31437,7 @@ "os": "iosxe" }, "uid": "get_memory_utilization_status", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py#L973" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py#L978" } } }, @@ -31152,7 +31451,7 @@ "os": "iosxe" }, "uid": "get_mgmt_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L706" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L707" }, "iosxr": { "doc": " Get the name of the management interface.\n\n if the mgmt_ip is provided, will use that for the lookup. If not, will\n call the get_mgmt_ip API to get the IP.\n\n Args:\n mgmt_ip: (str) IP address of the management interface (optional)\n\n Returns:\n String with interface name\n ", @@ -31196,7 +31495,7 @@ "os": "iosxe" }, "uid": "get_mgmt_ip", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L648" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L649" } } }, @@ -31210,7 +31509,7 @@ "os": "iosxe" }, "uid": "get_mgmt_ip_and_mgmt_src_ip_addresses", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L666" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L667" }, "iosxr": { "doc": " Get the management IP address and management source addresses.\n\n if the mgmt_src_ip is provided, will use that for the lookup. If not, will\n select the 1st matching IP.\n Args:\n mgmt_src_ip: (str) local IP address (optional)\n Returns:\n Tuple of mgmt_ip and list of IP address (mgmt_ip, [mgmt_src_addrs]) or None\n ", @@ -31266,7 +31565,7 @@ "os": "iosxe" }, "uid": "get_mgmt_src_ip_addresses", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L632" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L633" }, "iosxr": { "doc": " Get the source IP addresses connected via SSH or telnet to the device.\n\n Returns:\n List of IP addresses or []\n ", @@ -32287,7 +32586,7 @@ "os": "iosxe" }, "uid": "get_packet_attributes_scapy", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1312" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1313" } } }, @@ -32301,7 +32600,7 @@ "os": "iosxe" }, "uid": "get_packet_info_field", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1365" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1366" } } }, @@ -32315,7 +32614,7 @@ "os": "iosxe" }, "uid": "get_packet_ip_tos_field", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1394" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1395" } } }, @@ -32427,7 +32726,7 @@ "os": "iosxe" }, "uid": "get_platform_component_firmware_info", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py#L1254" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py#L1259" } } }, @@ -32441,7 +32740,7 @@ "os": "iosxe" }, "uid": "get_platform_component_temp_info", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py#L1213" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py#L1218" } } }, @@ -32455,7 +32754,7 @@ "os": "iosxe" }, "uid": "get_platform_component_type_id_info", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py#L1163" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py#L1168" } } }, @@ -32651,6 +32950,16 @@ "folders": { "cat9k": { "folders": { + "c9300": { + "doc": "\n Retrieves the fan speeds from the device for Catalyst 9300 series switches.\n\n Args:\n device (`obj`): Device object.\n\n Returns:\n A list containing the fan speeds.\n If unable to retrieve fan speeds, returns None.\n ", + "module_name": "iosxe.cat9k.c9300.platform.get", + "package": "genie.libs.sdk.apis", + "tokens": { + "model": "c9300" + }, + "uid": "get_platform_fan_speed", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9300/platform/get.py#L12" + }, "c9400": { "doc": "\n Retrieves the fan speeds from the device for Catalyst 9400 series switches.\n\n Args:\n device: The device object representing the network device.\n\n Returns:\n A list containing the fan speeds.\n If unable to retrieve fan speeds, returns None.\n ", "module_name": "iosxe.cat9k.c9400.platform.get", @@ -32659,7 +32968,7 @@ "model": "c9400" }, "uid": "get_platform_fan_speed", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9400/platform/get.py#L10" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9400/platform/get.py#L12" } }, "tokens": { @@ -33010,7 +33319,7 @@ "os": "iosxe" }, "uid": "get_port_speed_info", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py#L1021" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py#L1026" } } }, @@ -33022,6 +33331,44 @@ "uid": "get_power_cyclers", "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/utils.py#L2045" }, + "get_power_supply_info": { + "folders": { + "iosxe": { + "folders": { + "cat9k": { + "folders": { + "c9300": { + "doc": "\n Retrieves power supply information for 9300 devices.\n\n Args:\n device: The device object representing the network device.\n\n Returns:\n A list containing dictionaries with power supply information.\n If unable to retrieve power supply information, returns an empty list.\n ", + "module_name": "iosxe.cat9k.c9300.platform.get", + "package": "genie.libs.sdk.apis", + "tokens": { + "model": "c9300" + }, + "uid": "get_power_supply_info", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9300/platform/get.py#L40" + }, + "c9400": { + "doc": "\n Retrieves power supply information for 9400 devices.\n\n Args:\n device: The device object representing the network device.\n\n Returns:\n A dictionary containing power supply information.\n If unable to retrieve power supply information, returns an empty dictionary.\n ", + "module_name": "iosxe.cat9k.c9400.platform.get", + "package": "genie.libs.sdk.apis", + "tokens": { + "model": "c9400" + }, + "uid": "get_power_supply_info", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9400/platform/get.py#L40" + } + }, + "tokens": { + "platform": "cat9k" + } + } + }, + "tokens": { + "os": "iosxe" + } + } + } + }, "get_processes_five_seconds_cpu_usage": { "folders": { "iosxe": { @@ -33081,7 +33428,7 @@ "os": "iosxe" }, "uid": "get_radius_packets", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1289" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1290" } } }, @@ -34177,7 +34524,7 @@ "os": "iosxe" }, "uid": "get_show_output_exclude", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L826" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L827" } } }, @@ -34191,7 +34538,7 @@ "os": "iosxe" }, "uid": "get_show_output_include", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L800" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L801" } } }, @@ -34205,7 +34552,7 @@ "os": "iosxe" }, "uid": "get_show_output_line_count", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L725" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L726" }, "junos": { "doc": " Count number of line from show command output\n\n Args:\n device (`obj`): Device object\n command (`str`): show command\n output (`str`): output of show command. Default to None\n \n Returns:\n line_count (`int`): number of lines based on show command output\n \n Raises:\n N/A\n ", @@ -34229,7 +34576,7 @@ "os": "iosxe" }, "uid": "get_show_output_section", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1446" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1447" } } }, @@ -35050,7 +35397,7 @@ "os": "iosxe" }, "uid": "get_total_cdp_entries_displayed", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cdp/get.py#L23" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cdp/get.py#L25" } } }, @@ -36996,7 +37343,7 @@ "os": "iosxe" }, "uid": "parse_tacacs_packet", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L887" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L888" } } }, @@ -37024,7 +37371,7 @@ "os": "iosxe" }, "uid": "perform_ssh", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1142" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1143" } } }, @@ -37038,7 +37385,7 @@ "os": "iosxe" }, "uid": "perform_telnet", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1494" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1495" } } }, @@ -37062,7 +37409,7 @@ "os": "iosxe" }, "uid": "ping", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L566" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L567" }, "iosxr": { "doc": " execute ping and parse ping result and return structure data\n\n Args:\n device ('obj'): Device object\n address ('str'): Address value\n tos ('int'): Not supported. type of service value\n dscp (`str`): Not supported. DSCP value\n size ('str'): data bytes expected\n ttl ('int'): Not supported\n timeout ('int'): timeout interval\n count ('int'): repeat count\n source ('str'): source address or interface, default: None\n rapid ('bool'): Not supported\n do_not_fragment ('bool'): enable do not fragment bit in IP header, default: False\n validate (`bool`): validate reply data, default: False\n vrf ('str'): VRF name\n command (`str`): ping command. This will ignore all other arguments\n output (`str`): ping command output. no parser call involved\n Returns:\n Boolean\n Raises:\n None\n\n ", @@ -37106,7 +37453,7 @@ "os": "iosxe" }, "uid": "ping_interface_success_rate", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L257" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L258" } } }, @@ -38240,7 +38587,7 @@ "os": "iosxe" }, "uid": "request_system_shell", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1700" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1702" } } }, @@ -38364,7 +38711,7 @@ "module_name": "utils", "package": "genie.libs.sdk.apis", "uid": "sanitize", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/utils.py#L4455" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/utils.py#L4456" }, "save_dict_to_json_file": { "doc": " merge a list of Python dictionaries into one dictionary\n and save the dictionary to a JSON file\n If same key exists in data(dicts) which will be merged,\n the key will be overridden.\n\n Args:\n data (`list`): list of dictionaries\n filename (`string`): filename to save\n Raise:\n Exception\n Returns:\n output (`dict`): Python dictionary\n\n Example:\n\n >>> dev.api.save_dict_to_file(data=[dict1, dict2], 'merged_dict')\n {\n 'a': { # came from `dict1`\n 'b': 1,\n },\n 'c': { # came from `dict2`\n 'd': 2,\n }\n }\n\n ", @@ -38426,7 +38773,7 @@ "os": "iosxe" }, "uid": "save_running_config_configuration", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L320" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L321" } } }, @@ -38464,7 +38811,7 @@ "os": "iosxe" }, "uid": "scp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L353" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L354" }, "iosxr": { "doc": " copy files from local device to remote device via scp\n\n Args:\n device (`obj`) : Device object (local device)\n local_path (`str`): path with file on local device\n remote_device (`str`): remote device name\n remote_path (`str`): path with/without file on remote device\n remote_user (`str`): use given username to scp\n Default to None\n remote_pass (`str`): use given password to scp\n Default to None\n remote_via (`str`) : specify connection to get ip\n Default to None\n vrf (`str`): use vrf where scp find route to remote device\n Default to None\n Returns:\n result (`bool`): True if scp successfully done \n ", @@ -38550,7 +38897,7 @@ "os": "iosxe" }, "uid": "set_clock", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L336" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L337" } } }, @@ -38592,7 +38939,7 @@ "os": "iosxe" }, "uid": "set_filter_packet_capture_inject", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L67" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L68" } } }, @@ -38872,7 +39219,7 @@ "os": "iosxe" }, "uid": "start_packet_capture", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L85" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L86" } } }, @@ -38886,7 +39233,7 @@ "os": "iosxe" }, "uid": "start_packet_capture_inject", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L89" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L90" } } }, @@ -38980,7 +39327,7 @@ "os": "iosxe" }, "uid": "stop_packet_capture", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L142" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L143" } } }, @@ -38994,7 +39341,7 @@ "os": "iosxe" }, "uid": "stop_packet_capture_inject", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L109" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L110" } } }, @@ -39113,6 +39460,7 @@ ], "tokens": { "model": [ + "c9300", "c9400", "c9500", "c9600", @@ -39285,7 +39633,7 @@ "os": "iosxe" }, "uid": "tunnel_range_shut_unshut", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5622" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5646" } } }, @@ -39299,7 +39647,7 @@ "os": "iosxe" }, "uid": "unconfgiure_port_channel_min_link", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5882" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5906" } } }, @@ -39383,7 +39731,7 @@ "os": "iosxe" }, "uid": "unconfig_diagnostic_monitor_threshold", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8113" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8166" } } }, @@ -39593,7 +39941,7 @@ "os": "iosxe" }, "uid": "unconfig_interface_prpchannel", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9536" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9589" } } }, @@ -39621,7 +39969,7 @@ "os": "iosxe" }, "uid": "unconfig_ip_domain_lookup", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8459" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8512" } } }, @@ -40783,7 +41131,7 @@ "os": "iosxe" }, "uid": "unconfigure_bandwidth_remaining_policy_map", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L275" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L276" } } }, @@ -41063,14 +41411,14 @@ "unconfigure_call_home": { "folders": { "iosxe": { - "doc": " Unconfigures call-home\n Example : no call-home\n Args:\n device ('obj'): device to use\n Returns:\n None\n Raises: \n SubCommandFailure\n ", - "module_name": "iosxe.call_home.configure", + "doc": " Unconfigures call-home\n Example : no call-home\n\n Args:\n device ('obj'): device to use\n Returns:\n None\n Raises: \n SubCommandFailure\n ", + "module_name": "iosxe.platform_licensing.configure", "package": "genie.libs.sdk.apis", "tokens": { "os": "iosxe" }, "uid": "unconfigure_call_home", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/call_home/configure.py#L404" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform_licensing/configure.py#L267" } } }, @@ -41310,7 +41658,7 @@ "os": "iosxe" }, "uid": "unconfigure_control_policies", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6120" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6144" } } }, @@ -41464,21 +41812,21 @@ "os": "iosxe" }, "uid": "unconfigure_crypto_map_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5173" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5197" } } }, "unconfigure_crypto_pki_server": { "folders": { "iosxe": { - "doc": " Unconfigures crypto pki server on device\n\n Args:\n device (`obj`): Device object\n server_name ('str'): Name of the server\n\n Returns:\n None\n\n Raise:\n SubCommandFailure: Failed to unconfigure crypto pki server on device\n ", - "module_name": "iosxe.eaptls.configure", + "doc": "\n Configure crypto pki server\n Args:\n device ('obj'): Device object\n server_name ('str'): Name for the pki server\n ", + "module_name": "iosxe.pki.configure", "package": "genie.libs.sdk.apis", "tokens": { "os": "iosxe" }, "uid": "unconfigure_crypto_pki_server", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/eaptls/configure.py#L136" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/pki/configure.py#L498" } } }, @@ -42514,7 +42862,7 @@ "os": "iosxe" }, "uid": "unconfigure_eui_64_over_ipv6_enabled_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6782" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6806" } } }, @@ -43410,7 +43758,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_access_session", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7274" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7327" } } }, @@ -43424,7 +43772,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_auth_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6643" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6667" } } }, @@ -43438,7 +43786,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_auth_vlan_no_resp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6722" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6746" } } }, @@ -43452,7 +43800,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_authentication_violation", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8416" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8469" } } }, @@ -43466,7 +43814,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_bandwidth", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8330" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8383" } } }, @@ -43480,7 +43828,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_channel_group_auto_lacp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5925" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5949" } } }, @@ -43522,7 +43870,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_dot1x_eap_profile", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6540" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6564" } } }, @@ -43536,7 +43884,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_dot1x_max_reauth_req", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6473" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6497" } } }, @@ -43550,7 +43898,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_dot1x_max_req", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6384" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6408" } } }, @@ -43564,7 +43912,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_dot1x_timeout_txp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6317" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6341" } } }, @@ -43578,7 +43926,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_duplex_mode", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8562" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8615" } } }, @@ -43606,7 +43954,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_flow_control", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7670" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7723" } } }, @@ -43648,7 +43996,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_inherit_disable", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6095" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6119" } } }, @@ -43690,7 +44038,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_ip_nbar", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9474" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9527" } } }, @@ -43704,7 +44052,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_ip_tcp_adjust_mss", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7215" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7268" } } }, @@ -43718,7 +44066,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_ip_verify_source", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8070" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8123" } } }, @@ -43732,7 +44080,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_ip_verify_unicast", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6599" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6623" } } }, @@ -43746,7 +44094,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_ipv6_tcp_adjust_mss", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7255" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7308" } } }, @@ -43760,7 +44108,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_ipv6_verify_unicast", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6745" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6769" } } }, @@ -43774,7 +44122,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_l2protocol_tunnel", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8278" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8331" } } }, @@ -43788,7 +44136,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_lacp_fast_switchover", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7480" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7533" } } }, @@ -43802,7 +44150,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_lacp_max_bundle", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7535" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7588" } } }, @@ -43816,7 +44164,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_logging_event", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6994" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7018" } } }, @@ -43844,7 +44192,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_macro_auto_port_sticky", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5992" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6016" } } }, @@ -43942,7 +44290,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_pvlan_host_assoc", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9089" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9142" } } }, @@ -43956,7 +44304,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_pvlan_mapping", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9241" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9294" } } }, @@ -43970,7 +44318,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_pvlan_mode_with_submode", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8917" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8970" } } }, @@ -43998,7 +44346,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_reg_segment", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4139" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4163" } } }, @@ -44012,7 +44360,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_reg_segment_timer", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4204" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4228" } } }, @@ -44026,7 +44374,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_service_policy", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9039" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9092" } } }, @@ -44040,7 +44388,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_snmp_trap_mac_notification_change", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7590" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7643" } } }, @@ -44054,7 +44402,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_span_cost", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6496" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6520" } } }, @@ -44068,7 +44416,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_span_vlan_priority", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6407" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6431" } } }, @@ -44082,7 +44430,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_speed", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9634" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9687" } } }, @@ -44152,7 +44500,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_switchport_block_address", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6947" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6971" } } }, @@ -44166,7 +44514,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_switchport_dot1q_ethertype", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7112" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7136" } } }, @@ -44180,7 +44528,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_switchport_mode_access", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5946" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5970" } } }, @@ -44194,7 +44542,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_switchport_port_security", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8135" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8188" } } }, @@ -44208,7 +44556,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_switchport_port_security_violation", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6270" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6294" } } }, @@ -44222,7 +44570,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_switchport_pvlan_association", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9066" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9119" } } }, @@ -44236,7 +44584,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_switchport_pvlan_mapping", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9108" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9161" } } }, @@ -44250,7 +44598,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_switchport_trunk_allowed_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7955" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8008" } } }, @@ -44278,7 +44626,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_template_sticky", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6046" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6070" } } }, @@ -44292,7 +44640,7 @@ "os": "iosxe" }, "uid": "unconfigure_interface_tunnel_key", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L249" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L250" } } }, @@ -44404,7 +44752,7 @@ "os": "iosxe" }, "uid": "unconfigure_interfaces_on_port_channel", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4659" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4683" } } }, @@ -44698,7 +45046,7 @@ "os": "iosxe" }, "uid": "unconfigure_ip_dlep", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7894" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7947" } } }, @@ -45136,6 +45484,118 @@ } } }, + "unconfigure_ip_nhrp_authentication": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp authentication\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):tunnel interface to be configured\n test('str'):test name\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "unconfigure_ip_nhrp_authentication", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L585" + } + } + }, + "unconfigure_ip_nhrp_holdtime": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp holdtime\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):tunnel interface to be configured\n time('int'):time\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "unconfigure_ip_nhrp_holdtime", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L669" + } + } + }, + "unconfigure_ip_nhrp_map": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp map\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):tunnel interface to be configured\n tunnel_ip('str'):tunnel ip address of destination\n nbma_address('str'):nbma address of destination\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "unconfigure_ip_nhrp_map", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L458" + } + } + }, + "unconfigure_ip_nhrp_map_multicast": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp map multicast\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):tunnel interface to be configured\n nbma_address('str'):nbma address of destination\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "unconfigure_ip_nhrp_map_multicast", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L501" + } + } + }, + "unconfigure_ip_nhrp_map_multicast_dynamic": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp map multicast dynamic\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):tunnel interface to be configured\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "unconfigure_ip_nhrp_map_multicast_dynamic", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L710" + } + } + }, + "unconfigure_ip_nhrp_network_id": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp network id\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):interface to be configured\n num('int'):network id\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "unconfigure_ip_nhrp_network_id", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L375" + } + } + }, + "unconfigure_ip_nhrp_nhs": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp nhs\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):tunnel interface to be configured\n tunnel_ip('str'):tunnel ip address of destination\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "unconfigure_ip_nhrp_nhs", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L543" + } + } + }, + "unconfigure_ip_nhrp_redirect": { + "folders": { + "iosxe": { + "doc": " Configure ip nhrp redirect\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):interface to be configured\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "unconfigure_ip_nhrp_redirect", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L416" + } + } + }, "unconfigure_ip_on_atm_interface": { "folders": { "iosxe": { @@ -45146,7 +45606,7 @@ "os": "iosxe" }, "uid": "unconfigure_ip_on_atm_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9753" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9806" } } }, @@ -45160,7 +45620,7 @@ "os": "iosxe" }, "uid": "unconfigure_ip_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8485" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8538" } } }, @@ -45328,7 +45788,7 @@ "os": "iosxe" }, "uid": "unconfigure_ip_route_cache", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5480" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5504" } } }, @@ -45594,7 +46054,7 @@ "os": "iosxe" }, "uid": "unconfigure_ipv4_dhcp_relay_helper", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7039" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7063" } } }, @@ -45608,7 +46068,7 @@ "os": "iosxe" }, "uid": "unconfigure_ipv4_dhcp_relay_helper_vrf", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5677" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5701" } } }, @@ -45748,7 +46208,7 @@ "os": "iosxe" }, "uid": "unconfigure_ipv6_address_autoconfig", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8898" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8951" } } }, @@ -45762,7 +46222,7 @@ "os": "iosxe" }, "uid": "unconfigure_ipv6_address_config", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8859" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8912" } } }, @@ -45776,7 +46236,7 @@ "os": "iosxe" }, "uid": "unconfigure_ipv6_address_test", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8799" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8852" } } }, @@ -45846,7 +46306,7 @@ "os": "iosxe" }, "uid": "unconfigure_ipv6_dhcp_relay", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7061" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7085" } } }, @@ -45930,7 +46390,7 @@ "os": "iosxe" }, "uid": "unconfigure_ipv6_enable", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4703" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4727" } } }, @@ -46140,7 +46600,7 @@ "os": "iosxe" }, "uid": "unconfigure_ipv6_mtu", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5107" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5131" } } }, @@ -46168,7 +46628,7 @@ "os": "iosxe" }, "uid": "unconfigure_ipv6_nd_dad_processing", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6820" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6844" } } }, @@ -46210,7 +46670,7 @@ "os": "iosxe" }, "uid": "unconfigure_ipv6_nd_suppress_ra", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8763" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8816" } } }, @@ -46378,7 +46838,7 @@ "os": "iosxe" }, "uid": "unconfigure_ipv6_redirects", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8781" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8834" } } }, @@ -47355,6 +47815,20 @@ } } }, + "unconfigure_mac_loopback": { + "folders": { + "iosxe": { + "doc": " Unconfig mac loopback on device\n Args:\n device (`obj`): device object\n interface (`str`): Interface name\n Return:\n None\n Raises:\n SubCommandFailure \n ", + "module_name": "iosxe.mac.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "unconfigure_mac_loopback", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mac/configure.py#L583" + } + } + }, "unconfigure_macro_auto_global_processing": { "folders": { "iosxe": { @@ -47589,7 +48063,7 @@ "os": "iosxe" }, "uid": "unconfigure_mdns_on_interface_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5235" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5259" } } }, @@ -47925,7 +48399,7 @@ "os": "iosxe" }, "uid": "unconfigure_monitor_erspan_source_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8372" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8425" } } }, @@ -48363,6 +48837,20 @@ } } }, + "unconfigure_nhrp_group": { + "folders": { + "iosxe": { + "doc": " Configure nhrp group\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):tunnel interface to be configured\n group('str'):nhrp group\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "unconfigure_nhrp_group", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L627" + } + } + }, "unconfigure_ntp_server": { "folders": { "iosxe": { @@ -48713,6 +49201,20 @@ } } }, + "unconfigure_platform_mgmt_interface": { + "folders": { + "iosxe": { + "doc": " UnConfigure platform management interface\n Args:\n device ('obj'): device to use\n interface_name ('str'): interface name\n Returns\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.platform.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "unconfigure_platform_mgmt_interface", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L6059" + } + } + }, "unconfigure_platform_qos_port_channel_aggregate": { "folders": { "iosxe": { @@ -48765,7 +49267,7 @@ "os": "iosxe" }, "uid": "unconfigure_policy_map", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L88" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L89" } } }, @@ -48779,7 +49281,7 @@ "os": "iosxe" }, "uid": "unconfigure_policy_map_class", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L887" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L888" } } }, @@ -48793,7 +49295,7 @@ "os": "iosxe" }, "uid": "unconfigure_policy_map_class_parameters", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L794" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L795" } } }, @@ -48835,7 +49337,7 @@ "os": "iosxe" }, "uid": "unconfigure_policy_map_type_service", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L325" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L326" } } }, @@ -48849,7 +49351,7 @@ "os": "iosxe" }, "uid": "unconfigure_policy_map_with_pps", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L963" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L964" } } }, @@ -48863,7 +49365,7 @@ "os": "iosxe" }, "uid": "unconfigure_policy_map_with_type_queue", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L521" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L522" } } }, @@ -48877,7 +49379,7 @@ "os": "iosxe" }, "uid": "unconfigure_port_channel_ip", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8656" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8709" } } }, @@ -48891,7 +49393,7 @@ "os": "iosxe" }, "uid": "unconfigure_port_channel_lacp_max_bundle", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5421" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5445" } } }, @@ -48919,7 +49421,7 @@ "os": "iosxe" }, "uid": "unconfigure_port_channel_standalone_disable", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4929" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4953" } } }, @@ -48933,7 +49435,7 @@ "os": "iosxe" }, "uid": "unconfigure_portchannel_dpi_algorithm", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8605" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8658" } } }, @@ -48947,7 +49449,7 @@ "os": "iosxe" }, "uid": "unconfigure_power_efficient_ethernet_auto", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7984" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8037" } } }, @@ -48961,7 +49463,7 @@ "os": "iosxe" }, "uid": "unconfigure_power_inline", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5815" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5839" } } }, @@ -48989,7 +49491,7 @@ "os": "iosxe" }, "uid": "unconfigure_pppoe_enable_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4994" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5018" } } }, @@ -49031,7 +49533,7 @@ "os": "iosxe" }, "uid": "unconfigure_profile_on_tunnel_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7689" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7742" } } }, @@ -49427,6 +49929,20 @@ } } }, + "unconfigure_redundancy": { + "folders": { + "iosxe": { + "doc": " unconfigure redundancy on device\n Args:\n device ('obj'): device to use\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.redundancy.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "unconfigure_redundancy", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/redundancy/configure.py#L60" + } + } + }, "unconfigure_rep_admin_vlan": { "folders": { "iosxe": { @@ -49745,7 +50261,7 @@ "os": "iosxe" }, "uid": "unconfigure_service_instance", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9412" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9465" } } }, @@ -49815,21 +50331,21 @@ "os": "iosxe" }, "uid": "unconfigure_service_policy_with_queueing_name", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L678" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L679" } } }, "unconfigure_service_private_config_encryption": { "folders": { "iosxe": { - "doc": " \n no service private-config-encryption\n Args:\n device ('obj'): Device object\n Returns:\n None\n Raises:\n SubCommandFailure exception\n ", - "module_name": "iosxe.csdl.configure", + "doc": " no service private-config-encryption\n Args:\n device (`obj`): Device object\n Returns:\n None\n Raises:\n SubCommandFailure : Failed configuring device\n ", + "module_name": "iosxe.sudi.configure", "package": "genie.libs.sdk.apis", "tokens": { "os": "iosxe" }, "uid": "unconfigure_service_private_config_encryption", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/csdl/configure.py#L14" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/sudi/configure.py#L60" } } }, @@ -50291,7 +50807,7 @@ "os": "iosxe" }, "uid": "unconfigure_span_monitor_session", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4877" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4901" } } }, @@ -50837,7 +51353,7 @@ "os": "iosxe" }, "uid": "unconfigure_subinterface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6140" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L6164" } } }, @@ -50879,7 +51395,7 @@ "os": "iosxe" }, "uid": "unconfigure_switchport_nonegotiate", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4257" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4281" } } }, @@ -50893,7 +51409,7 @@ "os": "iosxe" }, "uid": "unconfigure_switchport_protected", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8189" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8242" } } }, @@ -50907,7 +51423,7 @@ "os": "iosxe" }, "uid": "unconfigure_switchport_pvlan_trunk_allowed_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9154" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9207" } } }, @@ -50921,7 +51437,7 @@ "os": "iosxe" }, "uid": "unconfigure_switchport_pvlan_trunk_native_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9198" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9251" } } }, @@ -50935,7 +51451,7 @@ "os": "iosxe" }, "uid": "unconfigure_switchport_trunk_allowed_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9262" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9315" } } }, @@ -50949,7 +51465,7 @@ "os": "iosxe" }, "uid": "unconfigure_switchport_trunk_native_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9285" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L9338" } } }, @@ -51033,7 +51549,7 @@ "os": "iosxe" }, "uid": "unconfigure_table_map", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/table_map/configure.py#L54" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/table_map/configure.py#L55" } } }, @@ -51047,7 +51563,7 @@ "os": "iosxe" }, "uid": "unconfigure_table_map_values", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L394" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L395" } } }, @@ -51205,6 +51721,34 @@ } } }, + "unconfigure_tunnel_mode_gre_multipoint": { + "folders": { + "iosxe": { + "doc": " Configure tunnel mode gre multipoint\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):interface to be configured\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "unconfigure_tunnel_mode_gre_multipoint", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L291" + } + } + }, + "unconfigure_tunnel_source": { + "folders": { + "iosxe": { + "doc": " Configure tunnel source\n Args:\n device (`obj`): Device object\n tunnel_intf('str'):interface to be configured\n interface('str'):source interface\n Returns:\n NA\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.dmvpn.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "unconfigure_tunnel_source", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py#L332" + } + } + }, "unconfigure_udld": { "folders": { "iosxe": { @@ -51261,6 +51805,20 @@ } } }, + "unconfigure_udld_recovery": { + "folders": { + "iosxe": { + "doc": "Configure udld recovery\n Args:\n device ('obj'): device object\n Return:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "iosxe.udld.configure", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "unconfigure_udld_recovery", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/udld/configure.py#L202" + } + } + }, "unconfigure_umbrella_global_parameter_map": { "folders": { "iosxe": { @@ -51327,7 +51885,7 @@ "os": "iosxe" }, "uid": "unconfigure_vfi", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4830" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4854" } } }, @@ -51383,7 +51941,7 @@ "os": "iosxe" }, "uid": "unconfigure_virtual_template", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4465" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L4489" } } }, @@ -51565,7 +52123,7 @@ "os": "iosxe" }, "uid": "unconfigure_vrf_select_source", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5739" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5763" } } }, @@ -51737,7 +52295,7 @@ "os": "iosxe" }, "uid": "unshut_port_channel", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8684" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8737" } } }, @@ -51765,7 +52323,7 @@ "os": "iosxe" }, "uid": "upgrade_hw_module_subslot_sfp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1864" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1872" } } }, @@ -51793,7 +52351,7 @@ "os": "iosxe" }, "uid": "upgrade_rom_monitor_capsule_golden", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1968" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1976" } } }, @@ -53203,6 +53761,20 @@ } } }, + "verify_cdp_neighbors_interface": { + "folders": { + "iosxe": { + "doc": " Verify interfaces of peer are present in cdp neighbors\n Args:\n device('obj'): device\n interfaces(`list`): interfaces to be checked\n peer_port_id(`str`): specific port_id to check\n returns:\n True if cdp is enabled, false in all other cases\n ", + "module_name": "iosxe.cdp.verify", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "verify_cdp_neighbors_interface", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cdp/verify.py#L89" + } + } + }, "verify_cdp_peer_interface": { "folders": { "iosxe": { @@ -54231,14 +54803,14 @@ "verify_dual_port_interface_config_media_type": { "folders": { "iosxe": { - "doc": "Verify interface configured media_type in - show running-config interface \n\n Args:\n device (`obj`): Device object\n interface (`str`): Interface name\n max_time (`int`): max time\n check_interval (`int`): check interval\n media_type (`int` or 'str'): media_type and default 'media_type auto-select'\n flag (`bool`): True if verify media_type\n False if verify no media_type\n Returns:\n result(`bool`): verify result\n ", + "doc": "Verify interface configured media_type in - show running-config interface \n Args:\n device (`obj`): Device object\n interface (`str`): Interface name\n max_time (`int`): max time\n check_interval (`int`): check interval\n media_type (`int` or 'str'): media_type and default 'media_type auto-select'\n flag (`bool`): True if verify media_type\n False if verify no media_type\n Returns:\n result(`bool`): verify result\n ", "module_name": "iosxe.interface.verify", "package": "genie.libs.sdk.apis", "tokens": { "os": "iosxe" }, "uid": "verify_dual_port_interface_config_media_type", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/verify.py#L1289" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/verify.py#L1320" } } }, @@ -54984,6 +55556,20 @@ } } }, + "verify_interface_config_no_speed": { + "folders": { + "iosxe": { + "doc": "Verify interface doesn't have speed in - show running-config interface \n\n Args:\n device (`obj`) : Device object\n interface (`str`) : Interface name\n max_time (`int`) : max time\n check_interval (`int`) : check interval\n flag (`bool`, optional) : True if verify shutdown \n False if verify no shutdown\n Returns:\n result(`bool`): verify result\n ", + "module_name": "iosxe.interface.verify", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "verify_interface_config_no_speed", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/verify.py#L1378" + } + } + }, "verify_interface_config_ospf_bfd": { "folders": { "iosxe": { @@ -55492,6 +56078,20 @@ } } }, + "verify_interface_status_duplex": { + "folders": { + "iosxe": { + "doc": "Verify interface status duplex\n Args:\n device (`obj`): Device object\n interface (`str`): Interface name\n expected_duplex_status (`str`): Expected duplex status ('auto' or specific code)\n max_time (`int`): max time\n check_interval (`int`): check interval\n Returns:\n result(`bool`): True if is up else False\n\n ", + "module_name": "iosxe.interface.verify", + "package": "genie.libs.sdk.apis", + "tokens": { + "os": "iosxe" + }, + "uid": "verify_interface_status_duplex", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/verify.py#L1289" + } + } + }, "verify_interface_total_queue_counters_dropped_packets": { "folders": { "junos": { @@ -57653,7 +58253,7 @@ "os": "iosxe" }, "uid": "verify_ospf_icmp_ping", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1580" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1581" } } }, @@ -58283,7 +58883,7 @@ "os": "iosxe" }, "uid": "verify_ping", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L481" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L482" }, "iosxr": { "doc": "Verify ping\n\n Args:\n device ('obj'): Device object\n address ('str'): Address value\n expected_max_success_rate (int): Expected maximum success rate (default: 100)\n expected_min_success_rate (int): Expected minimum success rate (default: 1)\n count ('int'): Count value for ping command\n source ('str'): Source IP address, default: None\n max_time (`int`): Max time, default: 30\n check_interval (`int`): Check interval, default: 10\n ", @@ -60345,7 +60945,7 @@ "os": "iosxe" }, "uid": "verify_tacacs_packet", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1094" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1095" } } }, diff --git a/pkgs/sdk-pkg/sdk_generator/output/github_verifications.json b/pkgs/sdk-pkg/sdk_generator/output/github_verifications.json index dc59d8710..261cb7481 100644 --- a/pkgs/sdk-pkg/sdk_generator/output/github_verifications.json +++ b/pkgs/sdk-pkg/sdk_generator/output/github_verifications.json @@ -7245,7 +7245,7 @@ "ios": { "doc": " Parser for \"show lisp platform\" ", "groups": [], - "schema": "{'parallel_lisp_instance_limit': , 'rloc_forwarding_support': {'local': {'ipv4': , 'ipv6': , 'mac': }, 'remote': {'ipv4': , 'ipv6': , 'mac': }}, 'latest_supported_config_style': , 'current_config_style': , Optional (str) support_for_signal_forward: {'ipv4': , 'ipv6': , 'mac': }, Optional (str) platform_reported_limits: {'l3_limit': {'l3_limit': , 'total_current_utilization': , 'ipv4': {'local_eid': , 'multiplier': , 'remote_eid': , 'remote_eid_idle': , 'mapping_cache_full': }, 'ipv6': {'local_eid': , 'multiplier': , 'remote_eid': , 'remote_eid_idle': , 'mapping_cache_full': }}, 'l2_limit': {'l2_limit': , 'total_current_utilization': , 'mac': {'local_eid': , 'multiplier': , 'remote_eid': , 'remote_eid_idle': , 'mapping_cache_full': }}}}", + "schema": "{'parallel_lisp_instance_limit': , 'rloc_forwarding_support': {'local': {'ipv4': , 'ipv6': , 'mac': }, 'remote': {'ipv4': , 'ipv6': , 'mac': }}, 'latest_supported_config_style': , 'current_config_style': , Optional (str) support_for_signal_forward: {'ipv4': , 'ipv6': , 'mac': }, Optional (str) platform_reported_limits: {'l3_limit': {'l3_limit': , 'total_current_utilization': , 'ipv4': {'local_eid': , 'multiplier': , 'remote_eid': , 'remote_eid_idle': , 'mapping_cache_full': }, 'ipv6': {'local_eid': , 'multiplier': , 'remote_eid': , 'remote_eid_idle': , 'mapping_cache_full': }}, 'l2_limit': {'l2_limit': , 'total_current_utilization': , 'mac': {'local_eid': , 'multiplier': , 'remote_eid': , 'remote_eid_idle': , 'mapping_cache_full': }}, Optional (str) software_only: {'ipv4': {'local_eid': , 'remote_eid': }, 'ipv6': {'local_eid': , 'remote_eid': }, 'mac': {'local_eid': , 'remote_eid': }}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7259,7 +7259,7 @@ "groups": [ "lisp" ], - "schema": "{'parallel_lisp_instance_limit': , 'rloc_forwarding_support': {'local': {'ipv4': , 'ipv6': , 'mac': }, 'remote': {'ipv4': , 'ipv6': , 'mac': }}, 'latest_supported_config_style': , 'current_config_style': , Optional (str) support_for_signal_forward: {'ipv4': , 'ipv6': , 'mac': }, Optional (str) platform_reported_limits: {'l3_limit': {'l3_limit': , 'total_current_utilization': , 'ipv4': {'local_eid': , 'multiplier': , 'remote_eid': , 'remote_eid_idle': , 'mapping_cache_full': }, 'ipv6': {'local_eid': , 'multiplier': , 'remote_eid': , 'remote_eid_idle': , 'mapping_cache_full': }}, 'l2_limit': {'l2_limit': , 'total_current_utilization': , 'mac': {'local_eid': , 'multiplier': , 'remote_eid': , 'remote_eid_idle': , 'mapping_cache_full': }}}}", + "schema": "{'parallel_lisp_instance_limit': , 'rloc_forwarding_support': {'local': {'ipv4': , 'ipv6': , 'mac': }, 'remote': {'ipv4': , 'ipv6': , 'mac': }}, 'latest_supported_config_style': , 'current_config_style': , Optional (str) support_for_signal_forward: {'ipv4': , 'ipv6': , 'mac': }, Optional (str) platform_reported_limits: {'l3_limit': {'l3_limit': , 'total_current_utilization': , 'ipv4': {'local_eid': , 'multiplier': , 'remote_eid': , 'remote_eid_idle': , 'mapping_cache_full': }, 'ipv6': {'local_eid': , 'multiplier': , 'remote_eid': , 'remote_eid_idle': , 'mapping_cache_full': }}, 'l2_limit': {'l2_limit': , 'total_current_utilization': , 'mac': {'local_eid': , 'multiplier': , 'remote_eid': , 'remote_eid_idle': , 'mapping_cache_full': }}, Optional (str) software_only: {'ipv4': {'local_eid': , 'remote_eid': }, 'ipv6': {'local_eid': , 'remote_eid': }, 'mac': {'local_eid': , 'remote_eid': }}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7270,7 +7270,7 @@ "ios": { "doc": "Parser for \"show lisp all instance-id dabatase\"", "groups": [], - "schema": "{'lisp_id': {Any (str) *: {'instance_id': {: {'eid_table': , 'lsb': , 'entries': {'total': , 'no_route': , 'inactive': , Optional (str) do_not_register: , 'eids': {: {'eid': , 'mask': , Optional (str) do_not_register: , Optional (str) dynamic_eid: , Optional (str) locator_set: , Optional (str) no_route_to_prefix: , Optional (str) proxy: , Optional (str) sgt: , Optional (str) domain_id: , Optional (str) service_insertion: , Optional (str) service_insertion_id: , Optional (str) auto_discover_rlocs: , Optional (str) uptime: , Optional (str) last_change: , Optional (str) locators: {: {'priority': , 'weight': , 'source': , 'location': , 'state': , Optional (str) affinity_id_x: , Optional (str) affinity_id_y: }}}}}}}}}}", + "schema": "{'lisp_id': {Any (str) *: {'instance_id': {: {'eid_table': , 'lsb': , 'entries': {'total': , 'no_route': , 'inactive': , Optional (str) do_not_register: , 'eids': {: {'eid': , 'mask': , Optional (str) do_not_register: , Optional (str) dynamic_eid: , Optional (str) locator_set: , Optional (str) no_route_to_prefix: , Optional (str) proxy: , Optional (str) sgt: , Optional (str) domain_id: , Optional (str) service_insertion: , Optional (str) service_insertion_id: , Optional (str) auto_discover_rlocs: , Optional (str) uptime: , Optional (str) last_change: , Optional (str) locators: {: {'priority': , 'weight': , 'source': , 'location': , 'state': , Optional (str) affinity_id_x: , Optional (str) affinity_id_y: }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7288,7 +7288,7 @@ "instance_id": "*", "service": "ethernet" }, - "schema": "{'lisp_id': {Any (str) *: {'instance_id': {: {'eid_table': , 'lsb': , 'entries': {'total': , 'no_route': , 'inactive': , Optional (str) do_not_register: , 'eids': {: {'eid': , 'mask': , Optional (str) do_not_register: , Optional (str) dynamic_eid: , Optional (str) locator_set: , Optional (str) no_route_to_prefix: , Optional (str) proxy: , Optional (str) sgt: , Optional (str) domain_id: , Optional (str) service_insertion: , Optional (str) service_insertion_id: , Optional (str) auto_discover_rlocs: , Optional (str) uptime: , Optional (str) last_change: , Optional (str) locators: {: {'priority': , 'weight': , 'source': , 'location': , 'state': , Optional (str) affinity_id_x: , Optional (str) affinity_id_y: }}}}}}}}}}", + "schema": "{'lisp_id': {Any (str) *: {'instance_id': {: {'eid_table': , 'lsb': , 'entries': {'total': , 'no_route': , 'inactive': , Optional (str) do_not_register: , 'eids': {: {'eid': , 'mask': , Optional (str) do_not_register: , Optional (str) dynamic_eid: , Optional (str) locator_set: , Optional (str) no_route_to_prefix: , Optional (str) proxy: , Optional (str) sgt: , Optional (str) domain_id: , Optional (str) service_insertion: , Optional (str) service_insertion_id: , Optional (str) auto_discover_rlocs: , Optional (str) uptime: , Optional (str) last_change: , Optional (str) locators: {: {'priority': , 'weight': , 'source': , 'location': , 'state': , Optional (str) affinity_id_x: , Optional (str) affinity_id_y: }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7299,7 +7299,7 @@ "ios": { "doc": "Parser for \"show lisp all instance-id dabatase\"", "groups": [], - "schema": "{'lisp_id': {Any (str) *: {'instance_id': {: {'eid_table': , 'lsb': , 'entries': {'total': , 'no_route': , 'inactive': , Optional (str) do_not_register: , 'eids': {: {'eid': , 'mask': , Optional (str) do_not_register: , Optional (str) dynamic_eid: , Optional (str) locator_set: , Optional (str) no_route_to_prefix: , Optional (str) proxy: , Optional (str) sgt: , Optional (str) domain_id: , Optional (str) service_insertion: , Optional (str) service_insertion_id: , Optional (str) auto_discover_rlocs: , Optional (str) uptime: , Optional (str) last_change: , Optional (str) locators: {: {'priority': , 'weight': , 'source': , 'location': , 'state': , Optional (str) affinity_id_x: , Optional (str) affinity_id_y: }}}}}}}}}}", + "schema": "{'lisp_id': {Any (str) *: {'instance_id': {: {'eid_table': , 'lsb': , 'entries': {'total': , 'no_route': , 'inactive': , Optional (str) do_not_register: , 'eids': {: {'eid': , 'mask': , Optional (str) do_not_register: , Optional (str) dynamic_eid: , Optional (str) locator_set: , Optional (str) no_route_to_prefix: , Optional (str) proxy: , Optional (str) sgt: , Optional (str) domain_id: , Optional (str) service_insertion: , Optional (str) service_insertion_id: , Optional (str) auto_discover_rlocs: , Optional (str) uptime: , Optional (str) last_change: , Optional (str) locators: {: {'priority': , 'weight': , 'source': , 'location': , 'state': , Optional (str) affinity_id_x: , Optional (str) affinity_id_y: }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7317,7 +7317,7 @@ "instance_id": "*", "service": "ipv4" }, - "schema": "{'lisp_id': {Any (str) *: {'instance_id': {: {'eid_table': , 'lsb': , 'entries': {'total': , 'no_route': , 'inactive': , Optional (str) do_not_register: , 'eids': {: {'eid': , 'mask': , Optional (str) do_not_register: , Optional (str) dynamic_eid: , Optional (str) locator_set: , Optional (str) no_route_to_prefix: , Optional (str) proxy: , Optional (str) sgt: , Optional (str) domain_id: , Optional (str) service_insertion: , Optional (str) service_insertion_id: , Optional (str) auto_discover_rlocs: , Optional (str) uptime: , Optional (str) last_change: , Optional (str) locators: {: {'priority': , 'weight': , 'source': , 'location': , 'state': , Optional (str) affinity_id_x: , Optional (str) affinity_id_y: }}}}}}}}}}", + "schema": "{'lisp_id': {Any (str) *: {'instance_id': {: {'eid_table': , 'lsb': , 'entries': {'total': , 'no_route': , 'inactive': , Optional (str) do_not_register: , 'eids': {: {'eid': , 'mask': , Optional (str) do_not_register: , Optional (str) dynamic_eid: , Optional (str) locator_set: , Optional (str) no_route_to_prefix: , Optional (str) proxy: , Optional (str) sgt: , Optional (str) domain_id: , Optional (str) service_insertion: , Optional (str) service_insertion_id: , Optional (str) auto_discover_rlocs: , Optional (str) uptime: , Optional (str) last_change: , Optional (str) locators: {: {'priority': , 'weight': , 'source': , 'location': , 'state': , Optional (str) affinity_id_x: , Optional (str) affinity_id_y: }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7328,7 +7328,7 @@ "ios": { "doc": "Parser for \"show lisp all instance-id dabatase\"", "groups": [], - "schema": "{'lisp_id': {Any (str) *: {'instance_id': {: {'eid_table': , 'lsb': , 'entries': {'total': , 'no_route': , 'inactive': , Optional (str) do_not_register: , 'eids': {: {'eid': , 'mask': , Optional (str) do_not_register: , Optional (str) dynamic_eid: , Optional (str) locator_set: , Optional (str) no_route_to_prefix: , Optional (str) proxy: , Optional (str) sgt: , Optional (str) domain_id: , Optional (str) service_insertion: , Optional (str) service_insertion_id: , Optional (str) auto_discover_rlocs: , Optional (str) uptime: , Optional (str) last_change: , Optional (str) locators: {: {'priority': , 'weight': , 'source': , 'location': , 'state': , Optional (str) affinity_id_x: , Optional (str) affinity_id_y: }}}}}}}}}}", + "schema": "{'lisp_id': {Any (str) *: {'instance_id': {: {'eid_table': , 'lsb': , 'entries': {'total': , 'no_route': , 'inactive': , Optional (str) do_not_register: , 'eids': {: {'eid': , 'mask': , Optional (str) do_not_register: , Optional (str) dynamic_eid: , Optional (str) locator_set: , Optional (str) no_route_to_prefix: , Optional (str) proxy: , Optional (str) sgt: , Optional (str) domain_id: , Optional (str) service_insertion: , Optional (str) service_insertion_id: , Optional (str) auto_discover_rlocs: , Optional (str) uptime: , Optional (str) last_change: , Optional (str) locators: {: {'priority': , 'weight': , 'source': , 'location': , 'state': , Optional (str) affinity_id_x: , Optional (str) affinity_id_y: }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7346,7 +7346,7 @@ "instance_id": "*", "service": "ipv6" }, - "schema": "{'lisp_id': {Any (str) *: {'instance_id': {: {'eid_table': , 'lsb': , 'entries': {'total': , 'no_route': , 'inactive': , Optional (str) do_not_register: , 'eids': {: {'eid': , 'mask': , Optional (str) do_not_register: , Optional (str) dynamic_eid: , Optional (str) locator_set: , Optional (str) no_route_to_prefix: , Optional (str) proxy: , Optional (str) sgt: , Optional (str) domain_id: , Optional (str) service_insertion: , Optional (str) service_insertion_id: , Optional (str) auto_discover_rlocs: , Optional (str) uptime: , Optional (str) last_change: , Optional (str) locators: {: {'priority': , 'weight': , 'source': , 'location': , 'state': , Optional (str) affinity_id_x: , Optional (str) affinity_id_y: }}}}}}}}}}", + "schema": "{'lisp_id': {Any (str) *: {'instance_id': {: {'eid_table': , 'lsb': , 'entries': {'total': , 'no_route': , 'inactive': , Optional (str) do_not_register: , 'eids': {: {'eid': , 'mask': , Optional (str) do_not_register: , Optional (str) dynamic_eid: , Optional (str) locator_set: , Optional (str) no_route_to_prefix: , Optional (str) proxy: , Optional (str) sgt: , Optional (str) domain_id: , Optional (str) service_insertion: , Optional (str) service_insertion_id: , Optional (str) auto_discover_rlocs: , Optional (str) uptime: , Optional (str) last_change: , Optional (str) locators: {: {'priority': , 'weight': , 'source': , 'location': , 'state': , Optional (str) affinity_id_x: , Optional (str) affinity_id_y: }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/__init__.py index e2454e7d2..98c98222d 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/__init__.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/__init__.py @@ -7,7 +7,7 @@ ''' # metadata -__version__ = '24.5' +__version__ = '24.6' __author__ = 'Cisco Systems Inc.' __contact__ = ['pyats-support@cisco.com', 'pyats-support-ext@cisco.com'] __copyright__ = 'Copyright (c) 2020, Cisco Systems Inc.' diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/args.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/args.yaml deleted file mode 100644 index ea45614cf..000000000 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/args.yaml +++ /dev/null @@ -1,6 +0,0 @@ -default: - arguments: - device: 'peer' -enable_keepalive_on_interface: - arguments: - interface: 'Virtual-Template1' diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9300/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9300/__init__.py new file mode 100644 index 000000000..0c07d16b1 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9300/__init__.py @@ -0,0 +1,3 @@ +# Enable abstraction using this directory name as the abstraction token +from genie import abstract +abstract.declare_token(model="c9300") diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9300/platform/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9300/platform/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9300/platform/get.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9300/platform/get.py new file mode 100644 index 000000000..d8c47b96b --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9300/platform/get.py @@ -0,0 +1,99 @@ +# Python +import logging +import base64 +import struct + +# Genie +from genie.metaparser.util.exceptions import SchemaEmptyParserError + +# Logger +log = logging.getLogger(__name__) + +def get_platform_fan_speed(device): + """ + Retrieves the fan speeds from the device for Catalyst 9300 series switches. + + Args: + device (`obj`): Device object. + + Returns: + A list containing the fan speeds. + If unable to retrieve fan speeds, returns None. + """ + fan_speed_info = [] + + try: + # Parse the 'show env fan' command output + fan_out = device.parse('show env fan') + except SchemaEmptyParserError as e: + log.error("Command 'show env fan': {e}".format(e=e)) + return None + + if fan_out and 'switch' in fan_out: + for switch, switch_data in fan_out['switch'].items(): + for fan, fan_data in switch_data.get('fan', {}).items(): + if 'speed' in fan_data: + fan_speed_info.append(fan_data['speed']) + + return fan_speed_info + +def get_power_supply_info(device): + """ + Retrieves power supply information for 9300 devices. + + Args: + device: The device object representing the network device. + + Returns: + A list containing dictionaries with power supply information. + If unable to retrieve power supply information, returns an empty list. + """ + power_supply_info = {} + + try: + # Retrieve power supply information from the device + ps_out = device.parse('test platform software database get-n all ios_oper/power_supply_comp') + except SchemaEmptyParserError as e: + log.error(f"Failed to retrieve power supply information: {e}") + return {} + + for ps_entry in ps_out.values(): + for _, ps_data in ps_entry.items(): + ps_name = ps_data.get('ps_name') + ps_enabled = ps_data.get('ps_enabled') + ps_capacity = ps_data.get('ps_capacity') + + if ps_enabled == 'true': + # Extract switch_num and fep_slot from ps_name + switch_num = ps_name[-3] + fep_slot = ps_name[-1] + + try: + # Retrieve detailed power supply statistics + fep_out = device.parse(f'test platform hardware fep switch {switch_num} {fep_slot} dump-statistics') + except SchemaEmptyParserError as e: + log.error(f"Failed to retrieve power supply statistics: {e}") + return {} + + # Extract required values for the power supply + input_voltage = fep_out['fru_fep_statistics'].get('input_voltage') + input_current = fep_out['fru_fep_statistics'].get('input_current') + input_power = fep_out['fru_fep_statistics'].get('input_power') + output_voltage = fep_out['fru_fep_statistics'].get('output_voltage') + output_current = fep_out['fru_fep_statistics'].get('output_current') + output_power = fep_out['fru_fep_statistics'].get('output_power') + + # Add power supply information to the dictionary + power_supply_info[ps_name] = { + 'ps_enabled': ps_enabled, + 'ps_capacity': base64.b64encode(struct.pack(">f", ps_capacity)).decode("utf-8"), + 'input_voltage': base64.b64encode(struct.pack(">f", input_voltage)).decode("utf-8"), + 'input_current': base64.b64encode(struct.pack(">f", input_current)).decode("utf-8"), + 'input_power': base64.b64encode(struct.pack(">f", input_power)).decode("utf-8"), + 'output_voltage': base64.b64encode(struct.pack(">f", output_voltage)).decode("utf-8"), + 'output_current': base64.b64encode(struct.pack(">f", output_current)).decode("utf-8"), + 'output_power': base64.b64encode(struct.pack(">f", output_power)).decode("utf-8"), + } + + return power_supply_info + diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9400/platform/get.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9400/platform/get.py index 773ab1a58..b6b86fb84 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9400/platform/get.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cat9k/c9400/platform/get.py @@ -1,5 +1,7 @@ # Python import logging +import base64 +import struct # Genie from genie.metaparser.util.exceptions import SchemaEmptyParserError @@ -33,4 +35,63 @@ def get_platform_fan_speed(device): if speed != 'N/A': fan_speed_info.append(int(speed)) - return fan_speed_info \ No newline at end of file + return fan_speed_info + +def get_power_supply_info(device): + """ + Retrieves power supply information for 9400 devices. + + Args: + device: The device object representing the network device. + + Returns: + A dictionary containing power supply information. + If unable to retrieve power supply information, returns an empty dictionary. + """ + power_supply_info = {} + + try: + env_out = device.parse('show env status') + except SchemaEmptyParserError as e: + log.error("Command 'show env status': {e}".format(e=e)) + return {} + + power_supply_data = env_out.get('power_supply', {}) + for ps_name, ps_details in power_supply_data.items(): + if ps_details.get('status') == 'active': + capacity = ps_details.get('capacity') + enabled = 'True' if ps_details.get('status') == 'active' else 'false' + + try: + power_supply_detail_out = device.parse('show platform hardware chassis power-supply detail all') + except SchemaEmptyParserError as e: + log.error("Command 'show platform hardware chassis power-supply detail all': {e}".format(e=e)) + return {} + + power_supply_details = power_supply_detail_out.get('power_supplies', {}).get(ps_name, {}) + if power_supply_details: + # Extract input and output values + input_values = {key: value for key, value in power_supply_details.get('input', {}).items() if value != 'n.a'} + output_values = {key: value for key, value in power_supply_details.get('output', {}).items() if value != 'n.a'} + + # Map keys from input and output values + input_mapping = {'current_a': 'input_current', 'power_a': 'input_power', 'voltage_a': 'input_voltage'} + output_mapping = {'current': 'output_current', 'power': 'output_power', 'voltage': 'output_voltage'} + + # Generate keys using the mappings + input_info = {input_mapping.get(key, key): value for key, value in input_values.items()} + output_info = {output_mapping.get(key, key): value for key, value in output_values.items()} + + # Get the module name based on the PS name + numeric_part = ''.join(filter(str.isdigit, ps_name)) + module_name = f'PowerSupplyModule{numeric_part}' + + # Encode values and add to power supply info dictionary + power_supply_info[module_name] = { + 'ps_enabled': enabled, # Assuming all active power supplies are enabled + 'ps_capacity': base64.b64encode(struct.pack(">f", float(capacity))).decode("utf-8"), + **{key: base64.b64encode(struct.pack(">f", float(value))).decode("utf-8") for key, value in input_info.items()}, + **{key: base64.b64encode(struct.pack(">f", float(value))).decode("utf-8") for key, value in output_info.items()} + } + + return power_supply_info diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cdp/get.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cdp/get.py index 7f3b119b2..7a2bfe08c 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cdp/get.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cdp/get.py @@ -1,8 +1,10 @@ """Common get info functions for cdp""" # Python +import re import logging + # Genie from genie.metaparser.util.exceptions import SchemaEmptyParserError @@ -34,4 +36,33 @@ def get_total_cdp_entries_displayed(device): except SchemaEmptyParserError as e: log.error("Could not get device show cdp neighbors detail: {e}".format(e=e)) return None - return out.q.get_values('total_entries_displayed', 0) \ No newline at end of file + return out.q.get_values('total_entries_displayed', 0) + + +def get_cdp_neighbour_port_id(device, interface): + """ Get the port_id from 'show cdp neighbors ' for a single interface + + Args: + device (`obj`): Device object + interface (str): Interface name + + Returns: + list: List of port_id values + + Raises: + SchemaEmptyParserError: If the 'show cdp neighbors ' output is empty + KeyError: If the expected keys are not present in the output structure + """ + try: + cdp_output = device.parse(f"show cdp neighbors {interface}") + except Exception as e: + log.error(f"Could not get device show cdp neighbors detail: {e}") + return None + + try: + cdp_entries = cdp_output['cdp']['index'] + port_ids = [entry['port_id'] for entry in cdp_entries.values()] + return port_ids + except Exception as e: + log.error(f"Could not get device show cdp neighbors detail: {e}") + return None diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cdp/verify.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cdp/verify.py index ae5d38b2f..a53b34a6a 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cdp/verify.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cdp/verify.py @@ -84,3 +84,62 @@ def verify_total_cdp_entries_displayed_interfaces(device, format(value)) timeout.sleep() return False + + +def verify_cdp_neighbors_interface(device, interfaces=None, peer_port_id=None, max_time=60, + check_interval=10): + """ Verify interfaces of peer are present in cdp neighbors + Args: + device('obj'): device + interfaces(`list`): interfaces to be checked + peer_port_id(`str`): specific port_id to check + returns: + True if cdp is enabled, false in all other cases + """ + timeout = Timeout(max_time, check_interval, True) + + while timeout.iterate(): + try: + if interfaces is None and peer_port_id is None: + log.error("No interfaces or specific port_id provided for verification.") + return False + + if peer_port_id: + + intf, port_id = interfaces[0], peer_port_id[0] + log.info(intf) + log.info(port_id) + output_specific = device.parse(f'show cdp neighbors {intf}') + neighbor_intf_specific = output_specific.q.get_values('port_id') + + if port_id in neighbor_intf_specific: + log.info(f"Required peer port_id {port_id} found in cdp neighborship for interface {intf}") + return True + else: + log.error(f"Required peer port_id {port_id} not found for interface {intf}") + timeout.sleep() + + elif interfaces and len(interfaces) > 1: + # If a list of interfaces is provided, use 'show cdp neighbors' + output_general = device.parse('show cdp neighbors') + neighbor_intf_general = output_general.q.get_values('port_id') + neighbor_intf_list = [Common.convert_intf_name(intf=intf.strip()) for intf in interfaces] + + if not (set(neighbor_intf_list) - set(neighbor_intf_general)): + log.info( + f"Required interfaces {neighbor_intf_list} present in cdp " + f"neighborship") + return True + else: + log.error(f"Required interfaces " + f"{set(neighbor_intf_list) - set(neighbor_intf_general)} not found") + timeout.sleep() + + else: + log.error("Invalid interfaces or specific port_id provided for verification.") + return False + + except Exception: + timeout.sleep() + + return False \ No newline at end of file diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py index cf63a98f9..047731f4e 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py @@ -2,6 +2,7 @@ # Python import logging +import re # Unicon from unicon.core.errors import SubCommandFailure @@ -303,3 +304,58 @@ def debug_vdsl_controller_slot_dump_internal(device, slot, filename='sfp', timeo device.execute(cmd,timeout=timeout) except Exception as e: log.warning(e) + + +def debug_platform_software_fed_switch_active_punt_packet_capture( + device, + allow_buffer_limit=False, + buffer_limit=16384, + allow_circular_buffer_limit=False, + circular_buffer_limit=16384, + allow_set_filter=False, + set_filter_value=None, + allow_clear_filter=False, + start=False, + stop=False + ): + """debug platform software fed switch active punt packet-capture on SVL + Args: + device (obj): Device to execute on + allow_buffer_limit(bool) : if user want to set buffer limit , Default False + buffer_limit(int , optional): Number of packets to capture <256-16384> , Default 16384 (max) + allow_circular_buffer_limit(bool) : if user want to set circular buffer limit , Default False + circular_buffer_limit(int , optional): Number of packets to capture <256-16384> , Default 16384 (max) + allow_set_filter(bool): if user want to set filter , Default False + set_filter_value(str): user input of filter + allow_clear_filter(bool): if user want to clear all filters , Default False + start(bool): starting the capture + stop(bool): stop the capture + Returns: + None + Raises: + SubCommandFailure: debug_platform_software_fed_switch_active_punt_packet_capture Failed ! + """ + cmd = [] + + if allow_buffer_limit: + log.info("Setting the buffer limit to {buffer_limit}".format(buffer_limit=buffer_limit)) + cmd.append("debug platform software fed switch active punt packet-capture buffer limit {buffer_limit}".format(buffer_limit=buffer_limit)) + if allow_circular_buffer_limit: + log.info("Setting the circular buffer limit to {buffer_limit}".format(buffer_limit=circular_buffer_limit)) + cmd.append("debug platform software fed switch active punt packet-capture buffer circular limit {buffer_limit}".format(buffer_limit=circular_buffer_limit)) + if allow_set_filter: + log.info("Setting filter as {}".format(set_filter_value)) + cmd.append("debug platform software fed switch active punt packet-capture set-filter {filter}".format(filter=set_filter_value)) + if allow_clear_filter: + log.info("Clearing all the filters") + cmd.append("debug platform software fed switch active punt packet-capture clear-filter") + if start: + log.info("Starting capture") + cmd.append("debug platform software fed switch active punt packet-capture start") + if stop: + log.info("Stopping capture") + cmd.append("debug platform software fed switch active punt packet-capture stop") + try: + device.execute(cmd) + except SubCommandFailure as e: + log.error("debug_platform_software_fed_switch_active_punt_packet_capture Failed ! {}".format(e)) \ No newline at end of file diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py index 5d5950b58..8abdfa34c 100755 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dmvpn/configure.py @@ -44,7 +44,8 @@ def configure_interface_tunnel_hub(device, ip_redirects ('boolean',optional): Setting ip redirects.Defaults to False. gre_multipoint ('boolean',optional) : Setting gre_multipoint in case "gre multipoint" option is chosen.Defaults to False. ipsec ('boolean',optional) : Setting ipsec in case "ipsec" option is chosen.Defaults to False. - dual_overlay ('boolean',optional) : Setting dual_overlay for tunnel mode ipsec dual-overlay option.Defaults to False. + dual_overlay ('boolean',optional) : Setting dual_overlay for tunnel mode + ipsec dual-overlay option.Defaults to False. type ('str',optional) : Type of IP address [Ipv4 or Ipv6] ipv6_enable ('boolean',optional) : Setting ipv6 enable.Defaults to False. vrf_forwarding ('str',optional) : Configured VRF name to be entered. @@ -265,4 +266,464 @@ def unconfigure_interface_tunnel_key(device, tunnel_intf): print(cmd) device.configure(cmd) except SubCommandFailure as e: - raise SubCommandFailure(f"Failed to unconfigure tunnel key on interface {tunnel_intf}. Error:\n{e}") \ No newline at end of file + raise SubCommandFailure(f"Failed to unconfigure tunnel key on interface {tunnel_intf}. Error:\n{e}") + +def configure_tunnel_mode_gre_multipoint(device, tunnel_intf): + """ Configure tunnel mode gre multipoint + Args: + device (`obj`): Device object + tunnel_intf('str'):interface to be configured + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure tunnel mode gre multipoint") + + configs=[f"interface {tunnel_intf}", + "tunnel mode gre multipoint"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not configure tunnel mode gre multipoint on {tunnel_intf}. Error: {e}') + +def unconfigure_tunnel_mode_gre_multipoint(device, tunnel_intf): + """ Configure tunnel mode gre multipoint + Args: + device (`obj`): Device object + tunnel_intf('str'):interface to be configured + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure tunnel mode gre multipoint") + + configs=[f"interface {tunnel_intf}", + "no tunnel mode gre multipoint"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not unconfigure tunnel mode gre multipoint on {tunnel_intf}. Error: {e}') + +def configure_tunnel_source(device, interface, tunnel_intf): + """ Configure tunnel source + Args: + device (`obj`): Device object + tunnel_intf('str'):interface to be configured + interface('str'):source interface + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure tunnel source") + + configs=[f"interface {tunnel_intf}", + f"tunnel source {interface}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not configure tunnel source on {tunnel_intf}. Error: {e}') + +def unconfigure_tunnel_source(device, interface, tunnel_intf): + """ Configure tunnel source + Args: + device (`obj`): Device object + tunnel_intf('str'):interface to be configured + interface('str'):source interface + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure tunnel source") + + configs=[f"interface {tunnel_intf}", + f"no tunnel source {interface}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not unconfigure tunnel source on {tunnel_intf}. Error: {e}') + + +def configure_ip_nhrp_network_id(device, tunnel_intf, num): + """ Configure ip nhrp network id + Args: + device (`obj`): Device object + tunnel_intf('str'):interface to be configured + num('int'):network id + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp network id") + + configs=[f"interface {tunnel_intf}", + f"ip nhrp network-id {num}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not Configure ip nhrp network id on {tunnel_intf}. Error: {e}') + +def unconfigure_ip_nhrp_network_id(device, tunnel_intf, num): + """ Configure ip nhrp network id + Args: + device (`obj`): Device object + tunnel_intf('str'):interface to be configured + num('int'):network id + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp network id") + + configs=[f"interface {tunnel_intf}", + f"no ip nhrp network-id {num}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not unconfigure ip nhrp network id on {tunnel_intf}. Error: {e}') + +def configure_ip_nhrp_redirect(device, tunnel_intf): + """ Configure ip nhrp redirect + Args: + device (`obj`): Device object + tunnel_intf('str'):interface to be configured + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp redirect") + + configs=[f"interface {tunnel_intf}", + "ip nhrp redirect"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not Configure ip nhrp redirect on {tunnel_intf}. Error: {e}') + +def unconfigure_ip_nhrp_redirect(device, tunnel_intf): + """ Configure ip nhrp redirect + Args: + device (`obj`): Device object + tunnel_intf('str'):interface to be configured + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp redirect") + + configs=[f"interface {tunnel_intf}", + "no ip nhrp redirect"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not unconfigure ip nhrp redirect on {tunnel_intf}. Error: {e}') + +def configure_ip_nhrp_map(device, tunnel_intf, tunnel_ip, nbma_address): + """ Configure ip nhrp map + Args: + device (`obj`): Device object + tunnel_intf('str'):tunnel interface to be configured + tunnel_ip('str'):tunnel ip address of destination + nbma_address('str'):nbma address of destination + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp map") + + configs=[f"interface {tunnel_intf}", + f"ip nhrp map {tunnel_ip} {nbma_address}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not Configure ip nhrp map on {tunnel_intf}. Error: {e}') + +def unconfigure_ip_nhrp_map(device, tunnel_intf, tunnel_ip, nbma_address): + """ Configure ip nhrp map + Args: + device (`obj`): Device object + tunnel_intf('str'):tunnel interface to be configured + tunnel_ip('str'):tunnel ip address of destination + nbma_address('str'):nbma address of destination + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp map") + + configs=[f"interface {tunnel_intf}", + f"no ip nhrp map {tunnel_ip} {nbma_address}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not unconfigure ip nhrp map on {tunnel_intf}. Error: {e}') + +def configure_ip_nhrp_map_multicast(device, tunnel_intf, nbma_address): + """ Configure ip nhrp map multicast + Args: + device (`obj`): Device object + tunnel_intf('str'):tunnel interface to be configured + nbma_address('str'):nbma address of destination + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp map multicast") + + configs=[f"interface {tunnel_intf}", + f"ip nhrp map multicast {nbma_address}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not Configure ip nhrp map multicast on {tunnel_intf}. Error: {e}') + +def unconfigure_ip_nhrp_map_multicast(device, tunnel_intf, nbma_address): + """ Configure ip nhrp map multicast + Args: + device (`obj`): Device object + tunnel_intf('str'):tunnel interface to be configured + nbma_address('str'):nbma address of destination + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp map multicast") + + configs=[f"interface {tunnel_intf}", + f"no ip nhrp map multicast {nbma_address}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not unconfigure ip nhrp map multicast on {tunnel_intf}. Error: {e}') + +def configure_ip_nhrp_nhs(device, tunnel_intf, tunnel_ip ): + """ Configure ip nhrp nhs + Args: + device (`obj`): Device object + tunnel_intf('str'):tunnel interface to be configured + tunnel_ip('str'):tunnel ip address of destination + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp nhs") + + configs=[f"interface {tunnel_intf}", + f"ip nhrp nhs {tunnel_ip}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not Configure ip nhrp nhs on {tunnel_intf}. Error: {e}') + +def unconfigure_ip_nhrp_nhs(device, tunnel_intf, tunnel_ip ): + """ Configure ip nhrp nhs + Args: + device (`obj`): Device object + tunnel_intf('str'):tunnel interface to be configured + tunnel_ip('str'):tunnel ip address of destination + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp nhs") + + configs=[f"interface {tunnel_intf}", + f"no ip nhrp nhs {tunnel_ip}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not unconfigure ip nhrp nhs on {tunnel_intf}. Error: {e}') + +def configure_ip_nhrp_authentication(device, tunnel_intf, test): + """ Configure ip nhrp authentication + Args: + device (`obj`): Device object + tunnel_intf('str'):tunnel interface to be configured + test('str'):test name + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp authentication") + + configs=[f"interface {tunnel_intf}", + f"ip nhrp authentication {test}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not Configure ip nhrp authentication on {tunnel_intf}. Error: {e}') + +def unconfigure_ip_nhrp_authentication(device, tunnel_intf, test): + """ Configure ip nhrp authentication + Args: + device (`obj`): Device object + tunnel_intf('str'):tunnel interface to be configured + test('str'):test name + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp authentication") + + configs=[f"interface {tunnel_intf}", + f"no ip nhrp authentication {test}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not unconfigure ip nhrp authentication on {tunnel_intf}. Error: {e}') + +def configure_nhrp_group(device, tunnel_intf, group): + """ Configure nhrp group + Args: + device (`obj`): Device object + tunnel_intf('str'):tunnel interface to be configured + group('str'):nhrp group + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure nhrp group") + + configs=[f"interface {tunnel_intf}", + f"nhrp group {group}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not Configure nhrp group on {tunnel_intf}. Error: {e}') + +def unconfigure_nhrp_group(device, tunnel_intf, group): + """ Configure nhrp group + Args: + device (`obj`): Device object + tunnel_intf('str'):tunnel interface to be configured + group('str'):nhrp group + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure nhrp group") + + configs=[f"interface {tunnel_intf}", + f"no nhrp group {group}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not unconfigure nhrp group on {tunnel_intf}. Error: {e}') + +def configure_ip_nhrp_holdtime(device, tunnel_intf, time): + """ Configure ip nhrp holdtime + Args: + device (`obj`): Device object + tunnel_intf('str'):tunnel interface to be configured + time('int'):time + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp holdtime") + + configs = [f"interface {tunnel_intf}", + f"ip nhrp holdtime {time}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not Configure ip nhrp holdtime on {tunnel_intf}. Error: {e}') + +def unconfigure_ip_nhrp_holdtime(device, tunnel_intf, time): + """ Configure ip nhrp holdtime + Args: + device (`obj`): Device object + tunnel_intf('str'):tunnel interface to be configured + time('int'):time + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp holdtime") + + configs = [f"interface {tunnel_intf}", + f"no ip nhrp holdtime {time}"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not unconfigure ip nhrp holdtime on {tunnel_intf}. Error: {e}') + +def configure_ip_nhrp_map_multicast_dynamic(device, tunnel_intf): + """ Configure ip nhrp map multicast dynamic + Args: + device (`obj`): Device object + tunnel_intf('str'):tunnel interface to be configured + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp map multicast dynamic") + + configs = [f"interface {tunnel_intf}", + "ip nhrp map multicast dynamic"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not Configure ip nhrp map multicast dynamic on {tunnel_intf}. Error: {e}') + +def unconfigure_ip_nhrp_map_multicast_dynamic(device, tunnel_intf): + """ Configure ip nhrp map multicast dynamic + Args: + device (`obj`): Device object + tunnel_intf('str'):tunnel interface to be configured + Returns: + NA + Raises: + SubCommandFailure + """ + log.debug("Configure ip nhrp map multicast dynamic") + + configs = [f"interface {tunnel_intf}", + "no ip nhrp map multicast dynamic"] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not unconfigure ip nhrp map multicast dynamic on {tunnel_intf}. Error: {e}') + diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/flow/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/flow/configure.py index 7c1b0d6d4..95fdcee17 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/flow/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/flow/configure.py @@ -1538,3 +1538,34 @@ def unconfigure_flow_exporter(device, exporter_name, dest_ip=None, udp_port=None device.configure(config) except SubCommandFailure as e: raise SubCommandFailure(f'Could not Unconfigure flow exporter {exporter_name}. Error\n{e}') + + +def configure_flow_monitor(device, monitor_name, exporter_name, record_name, + timeout): + """ Config Flow Monitor on Device + Args: + device (`obj`): Device object + monitor_name (`str`): Flow Monitor name + exporter_name (`str`): Flow exporter name + record_name (`str`): Flow record name + timeout ('int'): Timeout + + Return: + None + + Raise: + SubCommandFailure: Failed configuring flow monitor + """ + + try: + device.configure([ + f"flow monitor {monitor_name}", + f"exporter {exporter_name}", + f"cache timeout inactive {timeout}", + f"cache timeout active {timeout}", + f"record {record_name}" + ]) + except SubCommandFailure: + raise SubCommandFailure( + f'Could not configure flow monitor {monitor_name}' + ) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py index 53796cb0a..11bc805e7 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py @@ -4101,6 +4101,30 @@ def configure_subinterface( log.error(e) raise SubCommandFailure("Could not Configure subinterface") +def configure_subinterface_second_dot1q(device, interface, intf_number, + vlan_id, second_vlan_id): + """ Configure subinterface second dot1q + Args: + device ('obj'): device to use + interface ('str'): physical interface + intf_number ('str'): subinterface any number + vlan_id ('str'): any number + second_vlan_id ('str'): any number + Returns: + None + Raises: + SubCommandFailure: subinterface not enabled + """ + cmd = [ + f"interface {interface}.{intf_number}", + f"encapsulation dot1q {vlan_id} second-dot1q {second_vlan_id}", + ] + try: + device.configure(cmd) + except SubCommandFailure as e: + log.error(e) + raise SubCommandFailure("Could not Configure subinterface") + def configure_interface_reg_segment( device, interface, @@ -7138,6 +7162,35 @@ def unconfigure_interface_switchport_dot1q_ethertype(device, interface, etherval ) ) +def configure_interface_dot1q_ethertype(device, interface, ethervalue): + """ Configures ethertype on interface + Args: + device ('obj'): device to use + interface ('str'): interface to configure + ethervalue ('str'): Configure ethertype + Returns: + None + Raises: + SubCommandFailure + """ + log.info( + "Configuring on {interface} with ethertype = {ethervalue}"\ + .format(interface=interface, ethervalue=ethervalue + ) + ) + + config_list=["interface {interface}".format(interface=interface),\ + "dot1q tunneling ethertype {ethervalue}".format(ethervalue=ethervalue)] + + try: + device.configure(config_list) + except SubCommandFailure as e: + raise SubCommandFailure( + "Could not configure dot1q ethertype. Error:\n{error}"\ + .format(error=e + ) + ) + def configure_hsrp_version_on_interface(device, interface, version): """ Configure hsrp version on interface Args: diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/verify.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/verify.py index 796996094..6b7412c57 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/verify.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/verify.py @@ -1286,11 +1286,41 @@ def verify_interfaces_transceiver_supported( return False +def verify_interface_status_duplex(device, interface, expected_duplex_status, max_time=60, + check_interval=10): + """Verify interface status duplex + Args: + device (`obj`): Device object + interface (`str`): Interface name + expected_duplex_status (`str`): Expected duplex status ('auto' or specific code) + max_time (`int`): max time + check_interval (`int`): check interval + Returns: + result(`bool`): True if is up else False + + """ + timeout = Timeout(max_time, check_interval) + + while timeout.iterate(): + + out = device.parse(f"show interfaces {interface} status") + out_status = out['interfaces'][interface]['duplex_code'] + if expected_duplex_status == "auto": + if expected_duplex_status not in out_status: + return True + else: + if expected_duplex_status in out_status: + return True + + timeout.sleep() + + return False + + def verify_dual_port_interface_config_media_type(device, interface, media_type, max_time=60, check_interval=10, flag=True): """Verify interface configured media_type in - show running-config interface - Args: device (`obj`): Device object interface (`str`): Interface name @@ -1343,3 +1373,35 @@ def verify_dual_port_interface_config_media_type(device, interface, media_type, timeout.sleep() return False + + +def verify_interface_config_no_speed(device, interface, max_time=60, check_interval=10, + flag=True): + """Verify interface doesn't have speed in - show running-config interface + + Args: + device (`obj`) : Device object + interface (`str`) : Interface name + max_time (`int`) : max time + check_interval (`int`) : check interval + flag (`bool`, optional) : True if verify shutdown + False if verify no shutdown + Returns: + result(`bool`): verify result + """ + timeout = Timeout(max_time, check_interval) + + while timeout.iterate(): + out = device.execute(f"show run interface {interface}") + + cfg_dict = get_config_dict(out) + key = f"interface {interface}" + + result = not(key in cfg_dict and "speed" in cfg_dict[key]) + + if flag == result: + return True + timeout.sleep() + + return False + diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mac/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mac/configure.py index 6522c68b0..ba4a14239 100755 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mac/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mac/configure.py @@ -560,3 +560,41 @@ def configure_interface_default_snmp(device, interface ,type): raise SubCommandFailure( "Could not configure mac address on interface" ) + +def configure_mac_loopback(device, interface): + """ Config mac loopback on device + Args: + device (`obj`): device object + interface (`str`): Interface name + Return: + None + Raises: + SubCommandFailure + """ + configs = [f'interface {interface}', + 'loopback mac'] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure( + f"Failed to configure loopback mac on interface {interface} . Error:\n{e}") + +def unconfigure_mac_loopback(device, interface): + """ Unconfig mac loopback on device + Args: + device (`obj`): device object + interface (`str`): Interface name + Return: + None + Raises: + SubCommandFailure + """ + configs = [f'interface {interface}', + 'no loopback mac'] + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure( + f"Failed to unconfigure loopback mac on interface {interface} . Error:\n{e}") \ No newline at end of file diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py index 94b8f0c5e..cfeaa9f43 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py @@ -6037,5 +6037,42 @@ def unconfigure_diagnostic_monitor_interval_module(device, mod_num, test_name, t raise SubCommandFailure( f"could not Unconfigure diagnostic monitor interval module {device}. Error:\n{e}" ) + +def configure_platform_mgmt_interface(device, interface_name): + """ Configure platform management interface + Args: + device ('obj'): device to use + interface_name ('str'): interface name + Returns + None + Raises: + SubCommandFailure + """ + + cmd = f"platform management-interface {interface_name}" + + try: + device.configure(cmd) + except SubCommandFailure as e: + raise SubCommandFailure(f"Failed to configure platform management interface. Error:\n{e}") + +def unconfigure_platform_mgmt_interface(device, interface_name): + """ UnConfigure platform management interface + Args: + device ('obj'): device to use + interface_name ('str'): interface name + Returns + None + Raises: + SubCommandFailure + """ + + cmd = f"no platform management-interface {interface_name}" + + try: + device.configure(cmd) + except SubCommandFailure as e: + raise SubCommandFailure(f"Failed to unconfigure platform management interface. Error:\n{e}") + diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/execute.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/execute.py index 88f5b62ab..e0c8d5cd0 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/execute.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/execute.py @@ -314,7 +314,7 @@ def delete_unprotected_files(device, directory ('str'): working directory to perform the operation protected ('list'): list of file patterns that won't be deleted. If it begins and ends with (), it will be considered as a regex - files_to_delete('list') list of files that should be deleted unless they are not protected + files_to_delete('list') list of files that should be deleted unless they are protected dir_output ('str'): output of dir command, if not provided execute the cmd on device to get the output allow_failure (bool, optional): Allow the deletion of a file to silently fail. Defaults to False. destination ('str') : Destination directory. default to None. i.e bootflash:/ @@ -367,9 +367,9 @@ def delete_unprotected_files(device, log.info(f'Deleting the unprotected file "{file}"') try: if destination: - fu_device.deletefile(f"{destination}{file}", device=device) + fu_device.deletefile(f"{destination}{file}", force=True, device=device) else: - fu_device.deletefile(file, device=device) + fu_device.deletefile(file, force=True, device=device) except Exception as e: if allow_failure: log.info( diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py index 9eba72455..aa4a0a10e 100755 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/get.py @@ -948,11 +948,16 @@ def get_boot_time(device): # Extract hours and minutes from the uptime string uptime_parts = uptime_str.split(', ') - hours_minutes = [part.split(' ')[0] for part in uptime_parts] - # Check if hours exist, if not, default to 0 - hours = int(hours_minutes[0]) if hours_minutes[0].isdigit() else 0 - minutes = int(hours_minutes[1]) + # Initialize hours and minutes + hours = 0 + minutes = 0 + + for part in uptime_parts: + if 'hour' in part: + hours = int(part.split(' ')[0]) + elif 'minute' in part: + minutes = int(part.split(' ')[0]) # Convert uptime to seconds uptime_seconds = hours * 3600 + minutes * 60 @@ -1171,7 +1176,7 @@ def get_platform_component_type_id_info(device): dict: A dictionary containing platform component and transceiver information. """ output = {} - + try: # Parse the command outputs platform_component_output = device.parse('test platform software database get-n all ios_oper/platform_component') diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py index 7bafe41cb..08650af85 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py @@ -1,6 +1,7 @@ """Common configure functions for interface""" # Python import logging +import re # Unicon from unicon.core.errors import SubCommandFailure @@ -982,4 +983,35 @@ def unconfigure_policy_map_with_pps(device, policy_name, class_map_name, police_ except SubCommandFailure as e: raise SubCommandFailure( f"Could not unconfigure policy_map {policy_name} with {class_map_name} and {police_rate} in pps. Error:\n{e}") - \ No newline at end of file + + +def configure_policy_map_set_cos_cos_table(device, policy_map_name, class_name, table_name): + """ + Args: + device ('obj'): device to use + policy_map_name ('str'): name of policy-map + class_name ('str'): class-default or any user defined class name + table_name('str'): table name + Returns: + None + Raises: + SubCommandFailure + """ + if class_name == 'class-default': + config = [ + "policy-map {}".format(policy_map_name), + "class {}".format(class_name), + "set cos cos table {}".format(table_name) + ] + else: + config = [ + "class-map {}".format(class_name), + "policy-map {}".format(policy_map_name), + "class {}".format(class_name), + "set cos cos table {}".format(table_name) + ] + + try: + device.configure(config) + except SubCommandFailure as e: + raise SubCommandFailure("Could not configure policy map set cos cos table. Error:\n{error}".format(error=e)) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/qos/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/qos/configure.py index b86a6d868..1518e234b 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/qos/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/qos/configure.py @@ -364,3 +364,19 @@ def configure_queue_sub_interface(device, interface): device.configure(config) except SubCommandFailure as e: raise SubCommandFailure(f"Failed to configure Queuing mode. Error:\n{e}") + +def config_replace_to_flash_memory_force(device,flash='flash', timeout=60): + """ execute configure replace to flash memory force + Args: + device ('obj'): Device object + flash ('str'): flash name for example flash or stby-bootflash.Defaults to flash + timeout ('int',optional): Max time for copying file from flash to complete in seconds.Defaults to 60 + Returns: + None + Raise: + SubCommandFailure: Failed to execute replace flash memory force + """ + try: + device.execute(f"configure replace {flash}:backup_config force",timeout=timeout) + except SubCommandFailure as e: + raise SubCommandFailure(f"Failed to execute configure replace flash memory force. Error:\n{e}") \ No newline at end of file diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/redundancy/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/redundancy/configure.py index 747657c22..c21e97b69 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/redundancy/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/redundancy/configure.py @@ -41,3 +41,33 @@ def config_standby_console_enable(device): raise SubCommandFailure( "Enabling Standby Console failed. Error: {error}".format(error=e) ) + +def configure_redundancy(device): + """ configure redundancy on device + Args: + device ('obj'): device to use + Returns: + None + Raises: + SubCommandFailure + """ + + try: + out = device.configure(['redundancy', 'mode sso']) + except SubCommandFailure as e: + raise SubCommandFailure(f"Failed to configure redundancy mode to SSO . Error:\n{e}") + +def unconfigure_redundancy(device): + """ unconfigure redundancy on device + Args: + device ('obj'): device to use + Returns: + None + Raises: + SubCommandFailure + """ + + try: + out = device.configure(['redundancy', 'mode none']) + except SubCommandFailure as e: + raise SubCommandFailure(f"Failed to unconfigure redundancy mode . Error:\n{e}") \ No newline at end of file diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/rommon/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/rommon/configure.py index d842e951e..448d27c64 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/rommon/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/rommon/configure.py @@ -4,6 +4,7 @@ log = logging.getLogger(__name__) # Unicon from unicon.core.errors import SubCommandFailure +from genie.libs.clean.utils import get_image_handler import ipaddress from ipaddress import IPv4Address, IPv6Address, IPv4Interface, IPv6Interface, ip_interface @@ -70,9 +71,9 @@ def configure_rommon_tftp(device, use_ipv6=False): tftp.setdefault("TFTP_SERVER", str(device.testbed.servers.get('tftp', {}).get('address', ''))) # get the image from clean data - tftp_image_path = getattr(device.clean, 'images', []) - if tftp_image_path: - tftp.setdefault("TFTP_FILE", tftp_image_path[0]) + image_handler = get_image_handler(device) + if image_handler.image: + tftp.setdefault("TFTP_FILE", image_handler.image[0]) log.info("checking if all the tftp information is given by the user") if not all(tftp.values()): diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/rommon/utils.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/rommon/utils.py index 26d0f5792..406d265d0 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/rommon/utils.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/rommon/utils.py @@ -28,7 +28,7 @@ def device_rommon_boot(device, golden_image=None, tftp_boot=None, error_pattern= # golden_image info from device recovery if not golden_image: - golden_image = recovery_info.get('golden_image', "") + golden_image = recovery_info.get('golden_image', []) # tftp info from device recovery tftp_boot = tftp_boot or recovery_info.get('tftp_boot', {}) @@ -45,13 +45,6 @@ def device_rommon_boot(device, golden_image=None, tftp_boot=None, error_pattern= golden_image = golden_image[0] cmd = f"{golden_image}" - # To boot using tftp rommon variable - # In this case, we assume the rommon variable TFTP_FILE is set already - # and booting it using the "boot tftp:" command - elif getattr(device.clean, 'images', []): - log.warning('Assuming the rommon variable TFTP_FILE is set and boot using "boot tftp:" command') - cmd = "tftp:" - # To boot using tftp information elif tftp_server and image: log.info(banner("Booting device '{}' with the Tftp images".\ @@ -66,6 +59,13 @@ def device_rommon_boot(device, golden_image=None, tftp_boot=None, error_pattern= cmd_info = ("tftp://", tftp_server, image[0]) cmd = ''.join(cmd_info) + # To boot using tftp rommon variable + # In this case, we assume the rommon variable TFTP_FILE is set already + # and booting it using the "boot tftp:" command + elif getattr(device.clean, 'images', []): + log.warning('Assuming the rommon variable TFTP_FILE is set and boot using "boot tftp:" command') + cmd = "tftp:" + else: raise Exception('Global recovery only support golden image and tftp ' 'boot recovery and neither was provided') diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/table_map/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/table_map/configure.py index aa18c7a58..47bc27004 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/table_map/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/table_map/configure.py @@ -1,6 +1,7 @@ """Common configure functions for interface""" # Python import logging +import re # Unicon from unicon.core.errors import SubCommandFailure @@ -79,4 +80,23 @@ def unconfigure_table_map(device, table_map_name): error=e ) ) - + +def configure_table_map_set_default(device, table_map_name, sub_option = 'copy'): + """ + Args: + device ('obj'): device to use + table_map_name ('str'): name of policy-map + sub_option ('str'): copy(By default) or ignore or any value + Returns: + None + Raises: + SubCommandFailure + """ + try: + cli = [ + "table-map {}".format(table_map_name), + "default {}".format(sub_option) + ] + device.configure(cli) + except SubCommandFailure as e: + raise SubCommandFailure("Failed to configure table map set default. Error:\n{error}".format(error=e)) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/udld/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/udld/configure.py index e938d479f..c9d8dfbc5 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/udld/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/udld/configure.py @@ -198,3 +198,22 @@ def configure_udld_recovery(device): f'Failed to configure udld recovery on {device.name}\n{e}' ) + +def unconfigure_udld_recovery(device): + """Configure udld recovery + Args: + device ('obj'): device object + Return: + None + Raises: + SubCommandFailure + """ + config = 'no udld recovery' + + try: + device.configure(config) + except SubCommandFailure as e: + raise SubCommandFailure( + f'Failed to configure udld recovery on {device.name}\n{e}' + ) + diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py index 95f50579f..07c9ee7d9 100755 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py @@ -22,13 +22,14 @@ log = logging.getLogger(__name__) -def delete_local_file(device, path, file): +def delete_local_file(device, path, file, timeout=60): """ Delete local file Args: device (`obj`): Device object path (`str`): directory file (`str`): file name + timeout ('int', optional): Timeout in seconds. Default is 60 Returns: None """ @@ -47,7 +48,7 @@ def delete_local_file(device, path, file): ) ]) try: - device.execute(f"delete {path}{file}", reply=dialog) + device.execute(f"delete {path}{file}", reply=dialog, timeout=timeout) except SubCommandFailure as e: raise SubCommandFailure( "Could not delete file {file} from device " @@ -1646,7 +1647,7 @@ def clear_ip_traffic(device): Error:\n{error}".format(device=device, error=e) ) -def copy_file(device, source_path, destination_path, filename): +def copy_file(device, source_path, destination_path, filename, timeout=60): ''' Copying file from source path to destination path in local device. Args: @@ -1654,6 +1655,7 @@ def copy_file(device, source_path, destination_path, filename): source_path ('str'): source path destination_path ('str'): destination path filename ('str'): filename that needs to copy + timeout ('int'): Timeout in seconds for waiting for the console. Default is 60. Returns: None Raises: @@ -1674,7 +1676,7 @@ def copy_file(device, source_path, destination_path, filename): cmd = "copy {src_path}:{file} {dst_path}".format( src_path=source_path, file=filename, dst_path=destination_path) try: - device.execute(cmd, reply=dialog) + device.execute(cmd, reply=dialog, timeout=timeout) except SubCommandFailure as e: raise SubCommandFailure(log.error("failed to copy file from source to destination""Error:\n{error}".format(error=e))) @@ -1714,6 +1716,11 @@ def request_system_shell(device, switch_type=None, processor_slot=None, uname=Fa Raises: SubCommandFailure ''' + if command: + if isinstance(command, str): + command = [command] + command_list = command + dialog = Dialog([Statement(pattern=r'.*\?\s\[y\/n\].*', action='sendline(y)', loop_continue=True, @@ -1737,7 +1744,8 @@ def request_system_shell(device, switch_type=None, processor_slot=None, uname=Fa if uname: output += device.execute('uname -a') if command: - output += device.execute(command) + for command in command_list: + output += device.execute(command) if exit: device.execute('exit', reply=exit_dialog) except SubCommandFailure as e: diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tb.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tb.yaml deleted file mode 100644 index c1a7d8e85..000000000 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tb.yaml +++ /dev/null @@ -1,18 +0,0 @@ -testbed: - name: enable_keepalive_on_interface - credentials: - default: - username: admin - password: admin - enable: - password: ' ' - -devices: - peer: - os: iosxe - type: iosxe - connections: - a: - protocol: telnet - ip: 10.126.93.200 - port: 2032 diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_platform_fan_speed/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_platform_fan_speed/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_platform_fan_speed/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_platform_fan_speed/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..fda5d387c --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_platform_fan_speed/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,42 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: Switch(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: Switch(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show env fan: + response: + - "Switch\t FAN\t Speed\t State\t Airflow direction\r\n---------------------------------------------------\r\ + \n 1 \t 1\t5440 \t OK\t Front to Back\r\n 1 \t 2\t5440 \t OK\t Front\ + \ to Back\r\n 1 \t 3\t5440 \t OK\t Front to Back\r\nFAN PS-1 is NOT PRESENT\r\ + \nFAN PS-2 is OK" + response_type: circular + show version: '' + term length 0: '' + term width 0: '' + show version | include operating mode: '' + prompt: Switch# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_platform_fan_speed/test_api_get_platform_fan_speed.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_platform_fan_speed/test_api_get_platform_fan_speed.py new file mode 100644 index 000000000..5b407b51b --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_platform_fan_speed/test_api_get_platform_fan_speed.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.cat9k.c9300.platform.get import get_platform_fan_speed + + +class TestGetPlatformFanSpeed(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Switch: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: cat9k + model: c9300 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Switch'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_get_platform_fan_speed(self): + result = get_platform_fan_speed(self.device) + expected_output = [5440, 5440, 5440] + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_power_supply_info/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_power_supply_info/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_power_supply_info/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_power_supply_info/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..fdfff335c --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_power_supply_info/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,53 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: Switch(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: Switch(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version: '' + term length 0: '' + term width 0: '' + show version | include operating mode: '' + test platform hardware fep switch 1 B dump-statistics: + response: + - " Input voltage: 207.250V\r\n Input current: 0.422A\r\n Input power:\ + \ 76.0W\r\n Output voltage: 55.914V\r\n Output current: 1.195A\r\ + \n Output power: 66.500W\r\n Inlet temp: 35.250 degrees\r\n \ + \ Outlet temp: 44.500 degrees\r\n Hot-spot temp: 51.500 degrees\r\n\ + \ Fan speed: 3136 RPM\r\n Status word: 0x0\r\n Status fans:\ + \ 0x0\r\n VOUT_MODE: 0x19" + response_type: circular + test platform software database get-n all ios_oper/power_supply_comp: + response: + - "Table Record Index 0 = {\r\n [0] ps_name = PowerSupply1/A\r\n [1] ps_enabled\ + \ = false\r\n [2] ps_capacity = 0\r\n [3] ps_iin = 0\r\n [4] ps_iout = 0\r\ + \n [5] ps_vin = 0\r\n [6] ps_vout = 0\r\n [7] ps_pout = 0\r\n}\r\nTable Record\ + \ Index 1 = {\r\n [0] ps_name = PowerSupply1/B\r\n [1] ps_enabled = true\r\ + \n [2] ps_capacity = 350\r\n [3] ps_iin = 438\r\n [4] ps_iout = 1219\r\n [5]\ + \ ps_vin = 206250\r\n [6] ps_vout = 55914\r\n [7] ps_pout = 68000\r\n}" + response_type: circular + prompt: Switch# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_power_supply_info/test_api_get_power_supply_info.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_power_supply_info/test_api_get_power_supply_info.py new file mode 100644 index 000000000..d0ef7cb9b --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9300/platform/get/get_power_supply_info/test_api_get_power_supply_info.py @@ -0,0 +1,42 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.cat9k.c9300.platform.get import get_power_supply_info + + +class TestGetPowerSupplyInfo(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Switch: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: cat9k + model: c9300 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Switch'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_get_power_supply_info(self): + result = get_power_supply_info(self.device) + expected_output = {'PowerSupply1/B': {'input_current': 'PtgQYg==', + 'input_power': 'QpgAAA==', + 'input_voltage': 'Q09AAA==', + 'output_current': 'P5j1ww==', + 'output_power': 'QoUAAA==', + 'output_voltage': 'Ql+n8A==', + 'ps_capacity': 'Q68AAA==', + 'ps_enabled': 'true'}} + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9400/platform/get/get_power_supply_info/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9400/platform/get/get_power_supply_info/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9400/platform/get/get_power_supply_info/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9400/platform/get/get_power_supply_info/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..e1b44b3e6 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9400/platform/get/get_power_supply_info/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,66 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: Switch(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: Switch(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show environment status: + response: + - "Power Fan States\r\n\ + Supply Model No Type Capacity Status 1 2\r\n------\ + \ -------------------- ---- -------- ------------ -----------\r\nPS1\ + \ C9400-PWR-3200AC ac 3200 W active good good \r\n\r\ + \nPS Current Configuration Mode : Combined\r\nPS Current Operating State \ + \ : Combined\r\n\r\nPower supplies currently active : 1\r\nPower supplies\ + \ currently available : 1\r\n\r\n\r\nFantray : good\r\nPower consumed by Fantray\ + \ : 540 Watts\r\nFantray airflow direction : side-to-side\r\nFantray beacon\ + \ LED: off\r\nFantray status LED: green\r\nSYSTEM : GREEN" + response_type: circular + show platform hardware chassis power-supply detail all: + response: + - " Slot Reg Name Reg Value Description \ + \ \r\n ------ --------------- --------------\ + \ --------------------------------------------------------------------- \r\ + \n PS1 REAL_TIME_FAULT 0x00 0x00 0x00 No Faults \ + \ \r\n\r\n PS1 LATCHED_FAULT \ + \ 0x30 0x00 0x01 Vin out of range A, No Input detected A, All Vin out\ + \ of range \r\n\r\n\r\n Power Input Input Input Input\ + \ Input Input Output Output Output Fan1 Fan2 \ + \ Heatsink \r\n Supply CurrentA CurrentB VoltageA VoltageB PowerA\ + \ PowerB Current Voltage Power Speed Speed Temperature\r\ + \n (Slot) (A) (A) (V) (V) (W) (W) (A)\ + \ (V) (W) (rpm) (rpm) (C) \r\n --------- ---------\ + \ --------- --------- --------- --------- --------- --------- --------- ---------\ + \ --------- --------- --------- \r\n PS1 2.6 n.a 207 \ + \ n.a 517 n.a 8.8 55 479 6065 \ + \ 6237 42" + response_type: circular + show version: '' + term length 0: '' + term width 0: '' + show version | include operating mode: '' + prompt: Switch# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9400/platform/get/get_power_supply_info/test_api_get_power_supply_info.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9400/platform/get/get_power_supply_info/test_api_get_power_supply_info.py new file mode 100644 index 000000000..0e7952162 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cat9k/c9400/platform/get/get_power_supply_info/test_api_get_power_supply_info.py @@ -0,0 +1,42 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.cat9k.c9400.platform.get import get_power_supply_info + + +class TestGetPowerSupplyInfo(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Switch: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: cat9k + model: c9400 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Switch'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_get_power_supply_info(self): + result = get_power_supply_info(self.device) + expected_output = {'PowerSupplyModule1': {'input_current': 'QCZmZg==', + 'input_power': 'RAFAAA==', + 'input_voltage': 'Q08AAA==', + 'output_current': 'QQzMzQ==', + 'output_power': 'Q++AAA==', + 'output_voltage': 'QlwAAA==', + 'ps_capacity': 'RUgAAA==', + 'ps_enabled': 'True'}} + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/get/get_cdp_neighbour_port_id/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/get/get_cdp_neighbour_port_id/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/get/get_cdp_neighbour_port_id/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/get/get_cdp_neighbour_port_id/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..46865673f --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/get/get_cdp_neighbour_port_id/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,44 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: 1783-HMS4EG8CGR(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: 1783-HMS4EG8CGR(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show cdp neighbors GigabitEthernet1/6: + response: + - "Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge\r\ + \n S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone,\ + \ \r\n D - Remote, C - CVTA, M - Two-port Mac Relay \r\n\r\ + \nDevice ID Local Intrfce Holdtme Capability Platform Port\ + \ ID\r\n1783-MMS10EA-uut8\r\n Gig 1/6 124 \ + \ R S I Allen-Bra Gig 1/6\r\n\r\nTotal cdp entries displayed : 1" + response_type: circular + show version: '' + term length 0: '' + term width 0: '' + show version | include operating mode : '' + prompt: 1783-HMS4EG8CGR# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/get/get_cdp_neighbour_port_id/test_api_get_cdp_neighbour_port_id.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/get/get_cdp_neighbour_port_id/test_api_get_cdp_neighbour_port_id.py new file mode 100644 index 000000000..f0f881334 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/get/get_cdp_neighbour_port_id/test_api_get_cdp_neighbour_port_id.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.cdp.get import get_cdp_neighbour_port_id + + +class TestGetCdpNeighbourPortId(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + 1783-HMS4EG8CGR: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: ie3300 + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['1783-HMS4EG8CGR'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_get_cdp_neighbour_port_id(self): + result = get_cdp_neighbour_port_id(self.device, 'GigabitEthernet1/6') + expected_output = ['GigabitEthernet1/6'] + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/verify/verify_cdp_neighbors_interface/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/verify/verify_cdp_neighbors_interface/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/verify/verify_cdp_neighbors_interface/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/verify/verify_cdp_neighbors_interface/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..65fc84085 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/verify/verify_cdp_neighbors_interface/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,80 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: 1783-HMS4EG8CGR(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: 1783-HMS4EG8CGR(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show cdp neighbors GigabitEthernet1/6: + response: + - "Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge\r\ + \n S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone,\ + \ \r\n D - Remote, C - CVTA, M - Two-port Mac Relay \r\n\r\ + \nDevice ID Local Intrfce Holdtme Capability Platform Port\ + \ ID\r\n1783-MMS10EA-uut8\r\n Gig 1/6 137 \ + \ R S I Allen-Bra Gig 1/6\r\n\r\nTotal cdp entries displayed : 1" + - "Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge\r\ + \n S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone,\ + \ \r\n D - Remote, C - CVTA, M - Two-port Mac Relay \r\n\r\ + \nDevice ID Local Intrfce Holdtme Capability Platform Port\ + \ ID\r\n1783-MMS10EA-uut8\r\n Gig 1/6 178 \ + \ R S I Allen-Bra Gig 1/6\r\n\r\nTotal cdp entries displayed : 1" + - "Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge\r\ + \n S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone,\ + \ \r\n D - Remote, C - CVTA, M - Two-port Mac Relay \r\n\r\ + \nDevice ID Local Intrfce Holdtme Capability Platform Port\ + \ ID\r\n1783-MMS10EA-uut8\r\n Gig 1/6 167 \ + \ R S I Allen-Bra Gig 1/6\r\n\r\nTotal cdp entries displayed : 1" + - "Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge\r\ + \n S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone,\ + \ \r\n D - Remote, C - CVTA, M - Two-port Mac Relay \r\n\r\ + \nDevice ID Local Intrfce Holdtme Capability Platform Port\ + \ ID\r\n1783-MMS10EA-uut8\r\n Gig 1/6 157 \ + \ R S I Allen-Bra Gig 1/6\r\n\r\nTotal cdp entries displayed : 1" + - "Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge\r\ + \n S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone,\ + \ \r\n D - Remote, C - CVTA, M - Two-port Mac Relay \r\n\r\ + \nDevice ID Local Intrfce Holdtme Capability Platform Port\ + \ ID\r\n1783-MMS10EA-uut8\r\n Gig 1/6 146 \ + \ R S I Allen-Bra Gig 1/6\r\n\r\nTotal cdp entries displayed : 1" + - "Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge\r\ + \n S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone,\ + \ \r\n D - Remote, C - CVTA, M - Two-port Mac Relay \r\n\r\ + \nDevice ID Local Intrfce Holdtme Capability Platform Port\ + \ ID\r\n1783-MMS10EA-uut8\r\n Gig 1/6 136 \ + \ R S I Allen-Bra Gig 1/6\r\n\r\nTotal cdp entries displayed : 1" + - "Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge\r\ + \n S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone,\ + \ \r\n D - Remote, C - CVTA, M - Two-port Mac Relay \r\n\r\ + \nDevice ID Local Intrfce Holdtme Capability Platform Port\ + \ ID\r\n1783-MMS10EA-uut8\r\n Gig 1/6 178 \ + \ R S I Allen-Bra Gig 1/6\r\n\r\nTotal cdp entries displayed : 1" + response_type: circular + show version: '' + term length 0: '' + term width 0: '' + show version | include operating mode : '' + prompt: 1783-HMS4EG8CGR# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/verify/verify_cdp_neighbors_interface/test_api_verify_cdp_neighbors_interface.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/verify/verify_cdp_neighbors_interface/test_api_verify_cdp_neighbors_interface.py new file mode 100644 index 000000000..9caaf11d6 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cdp/verify/verify_cdp_neighbors_interface/test_api_verify_cdp_neighbors_interface.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.cdp.verify import verify_cdp_neighbors_interface + + +class TestVerifyCdpNeighborsInterface(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + 1783-HMS4EG8CGR: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: ie3300 + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['1783-HMS4EG8CGR'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_verify_cdp_neighbors_interface(self): + result = verify_cdp_neighbors_interface(self.device, ['GigabitEthernet1/6'], ['Gig 1/6'], 60, 10) + expected_output = False + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_platform_software_fed_switch_active_punt_packet_capture/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_platform_software_fed_switch_active_punt_packet_capture/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_platform_software_fed_switch_active_punt_packet_capture/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_platform_software_fed_switch_active_punt_packet_capture/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..29d17e2e5 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_platform_software_fed_switch_active_punt_packet_capture/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,59 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: 9400-ha(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: 9400-ha(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + ? '[''debug platform software fed switch active punt packet-capture buffer limit + 10000'', ''debug platform software fed switch active punt packet-capture buffer + circular limit 257'', ''debug platform software fed switch active punt packet-capture + set-filter ip'', ''debug platform software fed switch active punt packet-capture + clear-filter'', ''debug platform software fed switch active punt packet-capture + start'', ''debug platform software fed switch active punt packet-capture stop'']' + : response: + - debug platform software fed switch active punt packet-capture buffer circular limit 257: "$re\ + \ fed switch active punt packet-capture buffer circular limit 257\r\nPunt\ + \ PCAP buffer configure: circular with buffer size 257...done" + debug platform software fed switch active punt packet-capture buffer limit 10000: "$re\ + \ fed switch active punt packet-capture buffer limit 10000\r\nPunt PCAP\ + \ buffer configure: one-time with buffer size 10000...done" + debug platform software fed switch active punt packet-capture clear-filter: "$orm\ + \ software fed switch active punt packet-capture clear-filter\r\nFilter\ + \ cleared. Captured packets will be cleared" + debug platform software fed switch active punt packet-capture set-filter ip: "$orm\ + \ software fed switch active punt packet-capture set-filter ip\r\nFilter\ + \ setup successful. Captured packets will be cleared" + debug platform software fed switch active punt packet-capture start: Punt + packet capturing started. + debug platform software fed switch active punt packet-capture stop: Punt packet + capturing stopped. Captured 0 packet(s) + response_type: circular + config term: + new_state: configure + config-transaction: + new_state: configure + show version: '' + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: 9400-ha# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_platform_software_fed_switch_active_punt_packet_capture/test_api_debug_platform_software_fed_switch_active_punt_packet_capture.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_platform_software_fed_switch_active_punt_packet_capture/test_api_debug_platform_software_fed_switch_active_punt_packet_capture.py new file mode 100644 index 000000000..2b0860f36 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_platform_software_fed_switch_active_punt_packet_capture/test_api_debug_platform_software_fed_switch_active_punt_packet_capture.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.debug.configure import debug_platform_software_fed_switch_active_punt_packet_capture + + +class TestDebugPlatformSoftwareFedSwitchActivePuntPacketCapture(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + 9400-ha: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['9400-ha'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_debug_platform_software_fed_switch_active_punt_packet_capture(self): + result = debug_platform_software_fed_switch_active_punt_packet_capture(self.device, True, 10000, True, 257, True, 'ip', True, True, True) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_authentication/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_authentication/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_authentication/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_authentication/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..194273aef --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_authentication/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + ip nhrp authentication testing: "ip nhrp authentication testing\r\n" + line console 0: + new_state: configure_line + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_authentication/test_api_configure_ip_nhrp_authentication.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_authentication/test_api_configure_ip_nhrp_authentication.py new file mode 100644 index 000000000..e498d98e2 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_authentication/test_api_configure_ip_nhrp_authentication.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import configure_ip_nhrp_authentication + + +class TestConfigureIpNhrpAuthentication(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_ip_nhrp_authentication(self): + result = configure_ip_nhrp_authentication(self.device, 'tu0', 'testing') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_holdtime/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_holdtime/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_holdtime/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_holdtime/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..258b61f7f --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_holdtime/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + ip nhrp holdtime 300: "ip nhrp holdtime 300\r\n" + line console 0: + new_state: configure_line + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_holdtime/test_api_configure_ip_nhrp_holdtime.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_holdtime/test_api_configure_ip_nhrp_holdtime.py new file mode 100644 index 000000000..90cd7d3f2 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_holdtime/test_api_configure_ip_nhrp_holdtime.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import configure_ip_nhrp_holdtime + + +class TestConfigureIpNhrpHoldtime(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_ip_nhrp_holdtime(self): + result = configure_ip_nhrp_holdtime(self.device, 'tu0', 300) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..848e6d697 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + ip nhrp map 192.162.10.1 1.1.1.1: "ip nhrp map 192.162.10.1 1.1.1.1\r\n" + line console 0: + new_state: configure_line + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map/test_api_configure_ip_nhrp_map.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map/test_api_configure_ip_nhrp_map.py new file mode 100644 index 000000000..23e273b49 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map/test_api_configure_ip_nhrp_map.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import configure_ip_nhrp_map + + +class TestConfigureIpNhrpMap(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_ip_nhrp_map(self): + result = configure_ip_nhrp_map(self.device, 'tu0', '192.162.10.1', '1.1.1.1') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..87fbeae6f --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + ip nhrp map multicast 2.2.2.2: "ip nhrp map multicast 2.2.2.2\r\n" + line console 0: + new_state: configure_line + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast/test_api_configure_ip_nhrp_map_multicast.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast/test_api_configure_ip_nhrp_map_multicast.py new file mode 100644 index 000000000..8f297960d --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast/test_api_configure_ip_nhrp_map_multicast.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import configure_ip_nhrp_map_multicast + + +class TestConfigureIpNhrpMapMulticast(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_ip_nhrp_map_multicast(self): + result = configure_ip_nhrp_map_multicast(self.device, 'tu0', '2.2.2.2') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast_dynamic/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast_dynamic/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast_dynamic/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast_dynamic/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..21f63a6dd --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast_dynamic/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + ip nhrp map multicast dynamic: "ip nhrp map multicast dynamic\r\n" + line console 0: + new_state: configure_line + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast_dynamic/test_api_configure_ip_nhrp_map_multicast_dynamic.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast_dynamic/test_api_configure_ip_nhrp_map_multicast_dynamic.py new file mode 100644 index 000000000..37a953028 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_map_multicast_dynamic/test_api_configure_ip_nhrp_map_multicast_dynamic.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import configure_ip_nhrp_map_multicast_dynamic + + +class TestConfigureIpNhrpMapMulticastDynamic(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_ip_nhrp_map_multicast_dynamic(self): + result = configure_ip_nhrp_map_multicast_dynamic(self.device, 'tu0') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_network_id/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_network_id/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_network_id/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_network_id/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..5fc234bd8 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_network_id/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + ip nhrp network-id 1: "ip nhrp network-id 1\r\n" + line console 0: + new_state: configure_line + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_network_id/test_api_configure_ip_nhrp_network_id.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_network_id/test_api_configure_ip_nhrp_network_id.py new file mode 100644 index 000000000..3ad12d559 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_network_id/test_api_configure_ip_nhrp_network_id.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import configure_ip_nhrp_network_id + + +class TestConfigureIpNhrpNetworkId(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_ip_nhrp_network_id(self): + result = configure_ip_nhrp_network_id(self.device, 'tu0', 1) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_nhs/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_nhs/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_nhs/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_nhs/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..996c98a30 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_nhs/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + ip nhrp nhs 192.168.10.1: "ip nhrp nhs 192.168.10.1\r\n" + line console 0: + new_state: configure_line + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_nhs/test_api_configure_ip_nhrp_nhs.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_nhs/test_api_configure_ip_nhrp_nhs.py new file mode 100644 index 000000000..ee87f0e49 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_nhs/test_api_configure_ip_nhrp_nhs.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import configure_ip_nhrp_nhs + + +class TestConfigureIpNhrpNhs(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_ip_nhrp_nhs(self): + result = configure_ip_nhrp_nhs(self.device, 'tu0', '192.168.10.1') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_redirect/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_redirect/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_redirect/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_redirect/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..d943c0441 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_redirect/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + ip nhrp redirect: "ip nhrp redirect\r\n" + line console 0: + new_state: configure_line + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_redirect/test_api_configure_ip_nhrp_redirect.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_redirect/test_api_configure_ip_nhrp_redirect.py new file mode 100644 index 000000000..99b818892 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_ip_nhrp_redirect/test_api_configure_ip_nhrp_redirect.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import configure_ip_nhrp_redirect + + +class TestConfigureIpNhrpRedirect(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_ip_nhrp_redirect(self): + result = configure_ip_nhrp_redirect(self.device, 'tu0') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_nhrp_group/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_nhrp_group/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_nhrp_group/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_nhrp_group/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..b3f76c383 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_nhrp_group/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + line console 0: + new_state: configure_line + nhrp group s1: "nhrp group s1\r\n" + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_nhrp_group/test_api_configure_nhrp_group.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_nhrp_group/test_api_configure_nhrp_group.py new file mode 100644 index 000000000..7ef4392d1 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_nhrp_group/test_api_configure_nhrp_group.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import configure_nhrp_group + + +class TestConfigureNhrpGroup(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_nhrp_group(self): + result = configure_nhrp_group(self.device, 'tu0', 's1') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_mode_gre_multipoint/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_mode_gre_multipoint/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_mode_gre_multipoint/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_mode_gre_multipoint/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..c5b8350c0 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_mode_gre_multipoint/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + line console 0: + new_state: configure_line + no logging console: '' + tunnel mode gre multipoint: "tunnel mode gre multipoint\r\n" + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_mode_gre_multipoint/test_api_configure_tunnel_mode_gre_multipoint.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_mode_gre_multipoint/test_api_configure_tunnel_mode_gre_multipoint.py new file mode 100644 index 000000000..3eff0e120 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_mode_gre_multipoint/test_api_configure_tunnel_mode_gre_multipoint.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import configure_tunnel_mode_gre_multipoint + + +class TestConfigureTunnelModeGreMultipoint(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_tunnel_mode_gre_multipoint(self): + result = configure_tunnel_mode_gre_multipoint(self.device, 'tu0') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_source/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_source/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_source/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_source/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..42e1cb29a --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_source/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + line console 0: + new_state: configure_line + no logging console: '' + tunnel source gig1: "tunnel source gig1\r\n" + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_source/test_api_configure_tunnel_source.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_source/test_api_configure_tunnel_source.py new file mode 100644 index 000000000..5652e7e50 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/configure_tunnel_source/test_api_configure_tunnel_source.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import configure_tunnel_source + + +class TestConfigureTunnelSource(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_tunnel_source(self): + result = configure_tunnel_source(self.device, 'gig1', 'tu0') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_authentication/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_authentication/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_authentication/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_authentication/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..0f0c8c4a2 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_authentication/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + line console 0: + new_state: configure_line + no ip nhrp authentication testing: "no ip nhrp authentication testing\r\n" + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_authentication/test_api_unconfigure_ip_nhrp_authentication.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_authentication/test_api_unconfigure_ip_nhrp_authentication.py new file mode 100644 index 000000000..739c54618 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_authentication/test_api_unconfigure_ip_nhrp_authentication.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import unconfigure_ip_nhrp_authentication + + +class TestUnconfigureIpNhrpAuthentication(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_ip_nhrp_authentication(self): + result = unconfigure_ip_nhrp_authentication(self.device, 'tu0', 'testing') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_holdtime/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_holdtime/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_holdtime/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_holdtime/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..420620cf7 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_holdtime/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + line console 0: + new_state: configure_line + no ip nhrp holdtime 300: "no ip nhrp holdtime 300\r\n" + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_holdtime/test_api_unconfigure_ip_nhrp_holdtime.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_holdtime/test_api_unconfigure_ip_nhrp_holdtime.py new file mode 100644 index 000000000..e5199cf56 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_holdtime/test_api_unconfigure_ip_nhrp_holdtime.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import unconfigure_ip_nhrp_holdtime + + +class TestUnconfigureIpNhrpHoldtime(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_ip_nhrp_holdtime(self): + result = unconfigure_ip_nhrp_holdtime(self.device, 'tu0', 300) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..80c1022db --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + line console 0: + new_state: configure_line + no ip nhrp map 192.162.10.1 1.1.1.1: "no ip nhrp map 192.162.10.1 1.1.1.1\r\n" + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map/test_api_unconfigure_ip_nhrp_map.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map/test_api_unconfigure_ip_nhrp_map.py new file mode 100644 index 000000000..acdeb9a67 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map/test_api_unconfigure_ip_nhrp_map.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import unconfigure_ip_nhrp_map + + +class TestUnconfigureIpNhrpMap(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_ip_nhrp_map(self): + result = unconfigure_ip_nhrp_map(self.device, 'tu0', '192.162.10.1', '1.1.1.1') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..61fc650ae --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + line console 0: + new_state: configure_line + no ip nhrp map multicast 2.2.2.2: "no ip nhrp map multicast 2.2.2.2\r\n" + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast/test_api_unconfigure_ip_nhrp_map_multicast.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast/test_api_unconfigure_ip_nhrp_map_multicast.py new file mode 100644 index 000000000..a027399d4 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast/test_api_unconfigure_ip_nhrp_map_multicast.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import unconfigure_ip_nhrp_map_multicast + + +class TestUnconfigureIpNhrpMapMulticast(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_ip_nhrp_map_multicast(self): + result = unconfigure_ip_nhrp_map_multicast(self.device, 'tu0', '2.2.2.2') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast_dynamic/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast_dynamic/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast_dynamic/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast_dynamic/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..182657b40 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast_dynamic/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + line console 0: + new_state: configure_line + no ip nhrp map multicast dynamic: "no ip nhrp map multicast dynamic\r\n" + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast_dynamic/test_api_unconfigure_ip_nhrp_map_multicast_dynamic.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast_dynamic/test_api_unconfigure_ip_nhrp_map_multicast_dynamic.py new file mode 100644 index 000000000..b377b2a19 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_map_multicast_dynamic/test_api_unconfigure_ip_nhrp_map_multicast_dynamic.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import unconfigure_ip_nhrp_map_multicast_dynamic + + +class TestUnconfigureIpNhrpMapMulticastDynamic(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_ip_nhrp_map_multicast_dynamic(self): + result = unconfigure_ip_nhrp_map_multicast_dynamic(self.device, 'tu0') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_network_id/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_network_id/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_network_id/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_network_id/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..32a9198ad --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_network_id/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + line console 0: + new_state: configure_line + no ip nhrp network-id 1: "no ip nhrp network-id 1\r\n" + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_network_id/test_api_unconfigure_ip_nhrp_network_id.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_network_id/test_api_unconfigure_ip_nhrp_network_id.py new file mode 100644 index 000000000..9f18afe89 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_network_id/test_api_unconfigure_ip_nhrp_network_id.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import unconfigure_ip_nhrp_network_id + + +class TestUnconfigureIpNhrpNetworkId(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_ip_nhrp_network_id(self): + result = unconfigure_ip_nhrp_network_id(self.device, 'tu0', 1) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_nhs/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_nhs/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_nhs/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_nhs/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..83f77374d --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_nhs/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + line console 0: + new_state: configure_line + no ip nhrp nhs 192.168.10.1: "no ip nhrp nhs 192.168.10.1\r\n" + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_nhs/test_api_unconfigure_ip_nhrp_nhs.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_nhs/test_api_unconfigure_ip_nhrp_nhs.py new file mode 100644 index 000000000..633ccd03f --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_nhs/test_api_unconfigure_ip_nhrp_nhs.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import unconfigure_ip_nhrp_nhs + + +class TestUnconfigureIpNhrpNhs(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_ip_nhrp_nhs(self): + result = unconfigure_ip_nhrp_nhs(self.device, 'tu0', '192.168.10.1') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_redirect/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_redirect/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_redirect/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_redirect/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..18ff6b594 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_redirect/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + line console 0: + new_state: configure_line + no ip nhrp redirect: "no ip nhrp redirect\r\n" + no logging console: '' + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_redirect/test_api_unconfigure_ip_nhrp_redirect.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_redirect/test_api_unconfigure_ip_nhrp_redirect.py new file mode 100644 index 000000000..aa525c6cc --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_ip_nhrp_redirect/test_api_unconfigure_ip_nhrp_redirect.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import unconfigure_ip_nhrp_redirect + + +class TestUnconfigureIpNhrpRedirect(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_ip_nhrp_redirect(self): + result = unconfigure_ip_nhrp_redirect(self.device, 'tu0') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_nhrp_group/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_nhrp_group/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_nhrp_group/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_nhrp_group/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..2ee88884f --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_nhrp_group/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + line console 0: + new_state: configure_line + no logging console: '' + no nhrp group s1: "no nhrp group s1\r\n" + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_nhrp_group/test_api_unconfigure_nhrp_group.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_nhrp_group/test_api_unconfigure_nhrp_group.py new file mode 100644 index 000000000..eef2e8169 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_nhrp_group/test_api_unconfigure_nhrp_group.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import unconfigure_nhrp_group + + +class TestUnconfigureNhrpGroup(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_nhrp_group(self): + result = unconfigure_nhrp_group(self.device, 'tu0', 's1') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_mode_gre_multipoint/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_mode_gre_multipoint/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_mode_gre_multipoint/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_mode_gre_multipoint/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..62ff608e2 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_mode_gre_multipoint/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + line console 0: + new_state: configure_line + no logging console: '' + no tunnel mode gre multipoint: "no tunnel mode gre multipoint\r\n" + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_mode_gre_multipoint/test_api_unconfigure_tunnel_mode_gre_multipoint.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_mode_gre_multipoint/test_api_unconfigure_tunnel_mode_gre_multipoint.py new file mode 100644 index 000000000..f46a250bd --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_mode_gre_multipoint/test_api_unconfigure_tunnel_mode_gre_multipoint.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import unconfigure_tunnel_mode_gre_multipoint + + +class TestUnconfigureTunnelModeGreMultipoint(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_tunnel_mode_gre_multipoint(self): + result = unconfigure_tunnel_mode_gre_multipoint(self.device, 'tu0') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_source/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_source/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_source/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_source/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..34b9e0a66 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_source/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface tu0: "interface tu0\r\n" + line console 0: + new_state: configure_line + no logging console: '' + no tunnel source gig1: "no tunnel source gig1\r\n" + prompt: router1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: router1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: router1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_source/test_api_unconfigure_tunnel_source.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_source/test_api_unconfigure_tunnel_source.py new file mode 100644 index 000000000..10aae5505 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dmvpn/configure/unconfigure_tunnel_source/test_api_unconfigure_tunnel_source.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dmvpn.configure import unconfigure_tunnel_source + + +class TestUnconfigureTunnelSource(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + router1: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['router1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_tunnel_source(self): + result = unconfigure_tunnel_source(self.device, 'gig1', 'tu0') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_monitor/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_monitor/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_monitor/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_monitor/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..955cffcc1 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_monitor/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,43 @@ +configure: + commands: + cache timeout active 60: "javelin-morph-sj-ful(config-flow-monitor)#cache timeout\ + \ active 60\r\n" + cache timeout inactive 60: "javelin-morph-sj-ful(config-flow-monitor)#cache timeout\ + \ inactive 60\r\n" + end: + new_state: execute + exporter FNF-EXP: "javelin-morph-sj-ful(config-flow-monitor)#exporter FNF-EXP\r\ + \n" + flow monitor m2in1: "flow monitor m2in1\r\n" + line console 0: + new_state: configure_line + no logging console: '' + record r2in: "javelin-morph-sj-ful(config-flow-monitor)#record r2in\r\n" + prompt: javelin-morph-sj-full3-dut2(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: javelin-morph-sj-full3-dut2(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version: '' + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: javelin-morph-sj-full3-dut2# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_monitor/test_api_configure_flow_monitor.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_monitor/test_api_configure_flow_monitor.py new file mode 100644 index 000000000..4025b3f37 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_monitor/test_api_configure_flow_monitor.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.flow.configure import configure_flow_monitor + + +class TestConfigureFlowMonitor(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + javelin-morph-sj-full3-dut2: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: cat9k + type: c9300 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['javelin-morph-sj-full3-dut2'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_flow_monitor(self): + result = configure_flow_monitor(self.device, 'm2in1', 'FNF-EXP', 'r2in', 60) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_dot1q_ethertype/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_dot1q_ethertype/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_dot1q_ethertype/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_dot1q_ethertype/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..31b9e0f23 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_dot1q_ethertype/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,37 @@ +configure: + commands: + dot1q tunneling ethertype 0x88A8: "dot1q tunneling ethertype 0x88A8\r\n" + end: + new_state: execute + interface GigabitEthernet0/0/0: "interface GigabitEthernet0/0/0\r\n" + line console 0: + new_state: configure_line + no logging console: '' + prompt: Fry_06(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: Fry_06(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version: '' + term length 0: '' + term width 0: '' + show version | include operating mode: '' + prompt: Fry_06# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_dot1q_ethertype/test_api_configure_interface_dot1q_ethertype.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_dot1q_ethertype/test_api_configure_interface_dot1q_ethertype.py new file mode 100644 index 000000000..7ca0a039f --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_dot1q_ethertype/test_api_configure_interface_dot1q_ethertype.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.interface.configure import configure_interface_dot1q_ethertype + + +class TestConfigureInterfaceDot1qEthertype(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Fry_06: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: router + type: router + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Fry_06'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_interface_dot1q_ethertype(self): + result = configure_interface_dot1q_ethertype(self.device, 'GigabitEthernet0/0/0', '0x88A8') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_subinterface_second_dot1q/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_subinterface_second_dot1q/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_subinterface_second_dot1q/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_subinterface_second_dot1q/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..fe91f1ab6 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_subinterface_second_dot1q/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,38 @@ +configure: + commands: + encapsulation dot1q 20 second-dot1q 30: "encapsulation dot1q 20 second-dot1q 30\r\ + \n" + end: + new_state: execute + interface GigabitEthernet0/0/0.2: "interface GigabitEthernet0/0/0.2\r\n" + line console 0: + new_state: configure_line + no logging console: '' + prompt: Fry_06(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: Fry_06(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version: '' + term length 0: '' + term width 0: '' + show version | include operating mode: '' + prompt: Fry_06# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_subinterface_second_dot1q/test_api_configure_subinterface_second_dot1q.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_subinterface_second_dot1q/test_api_configure_subinterface_second_dot1q.py new file mode 100644 index 000000000..47b56c440 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_subinterface_second_dot1q/test_api_configure_subinterface_second_dot1q.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.interface.configure import configure_subinterface_second_dot1q + + +class TestConfigureSubinterfaceSecondDot1q(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Fry_06: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: router + type: router + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Fry_06'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_subinterface_second_dot1q(self): + result = configure_subinterface_second_dot1q(self.device, 'GigabitEthernet0/0/0', '2', '20', '30') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_config_no_speed/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_config_no_speed/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_config_no_speed/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_config_no_speed/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..9af439ed0 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_config_no_speed/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,40 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: 1783-HMS4EG8CGR(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: 1783-HMS4EG8CGR(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show run interface GigabitEthernet1/4: + response: + - "Building configuration...\r\n\r\nCurrent configuration : 52 bytes\r\n!\r\n\ + interface GigabitEthernet1/4\r\n media-type sfp\r\nend" + response_type: circular + show version: '' + term length 0: '' + term width 0: '' + show version | include operating mode : '' + prompt: 1783-HMS4EG8CGR# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_config_no_speed/test_api_verify_interface_config_no_speed.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_config_no_speed/test_api_verify_interface_config_no_speed.py new file mode 100644 index 000000000..6010d1ef6 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_config_no_speed/test_api_verify_interface_config_no_speed.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.interface.verify import verify_interface_config_no_speed + + +class TestVerifyInterfaceConfigNoSpeed(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + 1783-HMS4EG8CGR: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: ie3300 + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['1783-HMS4EG8CGR'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_verify_interface_config_no_speed(self): + result = verify_interface_config_no_speed(self.device, 'GigabitEthernet1/4', 60, 10, True) + expected_output = True + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_status_duplex/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_status_duplex/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_status_duplex/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_status_duplex/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..47872f2cf --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_status_duplex/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,40 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: 1783-HMS4EG8CGR(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: 1783-HMS4EG8CGR(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show interfaces GigabitEthernet1/6 status: + response: + - "\r\nPort Name Status Vlan Duplex Speed Type\ + \ \r\nGi1/6 connected 1 a-full a-100 10/100/1000BaseTX" + response_type: circular + show version: '' + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: 1783-HMS4EG8CGR# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_status_duplex/test_api_verify_interface_status_duplex.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_status_duplex/test_api_verify_interface_status_duplex.py new file mode 100644 index 000000000..1d74daccb --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/verify/verify_interface_status_duplex/test_api_verify_interface_status_duplex.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.interface.verify import verify_interface_status_duplex + + +class TestVerifyInterfaceStatusDuplex(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + 1783-HMS4EG8CGR: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: ie3300 + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['1783-HMS4EG8CGR'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_verify_interface_status_duplex(self): + result = verify_interface_status_duplex(self.device, 'GigabitEthernet1/6', 'full', 60, 10) + expected_output = True + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/configure_mac_loopback/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/configure_mac_loopback/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/configure_mac_loopback/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/configure_mac_loopback/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..1720b8b29 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/configure_mac_loopback/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface TenGigabitEthernet0/1/1: "interface TenGigabitEthernet0/1/1\r\n" + line console 0: + new_state: configure_line + loopback mac: "loopback mac\r\n" + no logging console: '' + prompt: Speedracer(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: Speedracer(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: Speedracer# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/configure_mac_loopback/test_api_configure_mac_loopback.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/configure_mac_loopback/test_api_configure_mac_loopback.py new file mode 100644 index 000000000..c0997b245 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/configure_mac_loopback/test_api_configure_mac_loopback.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.mac.configure import configure_mac_loopback + + +class TestConfigureMacLoopback(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Speedracer: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: cat8k + type: router + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Speedracer'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_mac_loopback(self): + result = configure_mac_loopback(self.device, 'TenGigabitEthernet0/1/1') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/unconfigure_mac_loopback/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/unconfigure_mac_loopback/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/unconfigure_mac_loopback/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/unconfigure_mac_loopback/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..576cad3f2 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/unconfigure_mac_loopback/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface TenGigabitEthernet0/1/1: "interface TenGigabitEthernet0/1/1\r\n" + line console 0: + new_state: configure_line + no logging console: '' + no loopback mac: "no loopback mac\r\n" + prompt: Speedracer(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: Speedracer(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: Speedracer# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/unconfigure_mac_loopback/test_api_unconfigure_mac_loopback.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/unconfigure_mac_loopback/test_api_unconfigure_mac_loopback.py new file mode 100644 index 000000000..9f06de79d --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mac/configure/unconfigure_mac_loopback/test_api_unconfigure_mac_loopback.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.mac.configure import unconfigure_mac_loopback + + +class TestUnconfigureMacLoopback(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Speedracer: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: cat8k + type: router + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Speedracer'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_mac_loopback(self): + result = unconfigure_mac_loopback(self.device, 'TenGigabitEthernet0/1/1') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_platform_mgmt_interface/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_platform_mgmt_interface/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_platform_mgmt_interface/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_platform_mgmt_interface/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..31b5c1bdd --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_platform_mgmt_interface/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,37 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + platform management-interface te0/1: "platform management-interface te0/1\r\n\ + Management interface is TenGigabitEthernet0/1\r\n\r\n" + prompt: peer1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: peer1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version: '' + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: peer1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_platform_mgmt_interface/test_api_configure_platform_mgmt_interface.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_platform_mgmt_interface/test_api_configure_platform_mgmt_interface.py new file mode 100644 index 000000000..2387231de --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_platform_mgmt_interface/test_api_configure_platform_mgmt_interface.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.platform.configure import configure_platform_mgmt_interface + + +class TestConfigurePlatformMgmtInterface(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + QUAD: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: cat9k + type: C9300 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['QUAD'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_platform_mgmt_interface(self): + result = configure_platform_mgmt_interface(self.device, 'te0/1') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/unconfigure_platform_mgmt_interface/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/unconfigure_platform_mgmt_interface/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/unconfigure_platform_mgmt_interface/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/unconfigure_platform_mgmt_interface/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..3985762f9 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/unconfigure_platform_mgmt_interface/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,38 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + no platform management-interface te0/1: "no platform management-interface te0/1\r\ + \nChanging the Management-interface from TenGigabitEthernet0/1 to GigabitEthernet0/0,\ + \ changes take effect after reload! \r\n" + prompt: peer1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: peer1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version: '' + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: peer1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/unconfigure_platform_mgmt_interface/test_api_unconfigure_platform_mgmt_interface.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/unconfigure_platform_mgmt_interface/test_api_unconfigure_platform_mgmt_interface.py new file mode 100644 index 000000000..710f8d514 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/unconfigure_platform_mgmt_interface/test_api_unconfigure_platform_mgmt_interface.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.platform.configure import unconfigure_platform_mgmt_interface + + +class TestUnconfigurePlatformMgmtInterface(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + QUAD: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: cat9k + type: C9300 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['QUAD'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_platform_mgmt_interface(self): + result = unconfigure_platform_mgmt_interface(self.device, 'te0/1') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/get/get_boot_time/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/get/get_boot_time/mock_data/iosxe/mock_data.yaml index 32a56fc71..b8e569049 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/get/get_boot_time/mock_data/iosxe/mock_data.yaml +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/get/get_boot_time/mock_data/iosxe/mock_data.yaml @@ -5,21 +5,22 @@ configure: line console 0: new_state: configure_line no logging console: '' - prompt: HA-9400-S2(config)# + prompt: Switch(config)# configure_line: commands: end: new_state: execute exec-timeout 0: '' - prompt: HA-9400-S2(config-line)# + prompt: Switch(config-line)# connect: commands: - '': - new_state: execute - preface: |- - Trying mock_device ... + ? '' + : new_state: execute + preface: 'Trying mock_device ... + Connected to mock_device. - Escape character is '^]'. + + Escape character is ''^]''.' prompt: '' execute: commands: @@ -27,90 +28,63 @@ execute: new_state: configure config-transaction: new_state: configure + show version | include operating mode: '' show clock: response: - - '*21:05:28.319 PST Wed Feb 28 2024' + - '*10:22:10.625 UTC Thu May 23 2024' response_type: circular show version: response: - - |- - Cisco IOS XE Software, Version S2C - Cisco IOS Software [IOSXE], Catalyst L3 Switch Software (CAT9K_IOSXE), Experimental Version 17.15.20240228:003657 [BLD_POLARIS_DEV_S2C_20240228_002251:/nobackup/mcpre/s2c-build-ws 101] - Copyright (c) 1986-2024 by Cisco Systems, Inc. - Compiled Tue 27-Feb-24 16:37 by mcpre - - - Cisco IOS-XE software, Copyright (c) 2005-2024 by cisco Systems, Inc. - All rights reserved. Certain components of Cisco IOS-XE software are - licensed under the GNU General Public License ("GPL") Version 2.0. The - software code licensed under GPL Version 2.0 is free software that comes - with ABSOLUTELY NO WARRANTY. You can redistribute and/or modify such - GPL code under the terms of GPL Version 2.0. For more details, see the - documentation or "License Notice" file accompanying the IOS-XE software, - or the applicable URL provided on the flyer accompanying the IOS-XE - software. - - - ROM: IOS-XE ROMMONBOOTLDR: System Bootstrap, Version 17.10.1r, RELEASE SOFTWARE (P) - - HA-9400-S2 uptime is 22 hours, 23 minutes - Uptime for this control processor is 22 hours, 30 minutes - System returned to ROM by Reload Command - System image file is "tftp://172.19.145.141/auto/mcp-abs-cluster-101/POLARIS/BLD-BLD_POLARIS_DEV_S2C_20240228_002251/binos/linkfarm/cat9k_universalk9-iso1/cat9k_iosxe.S2C.SSA.bin" - Last reload reason: Reload Command - - - - This product contains cryptographic features and is subject to United - States and local country laws governing import, export, transfer and - use. Delivery of Cisco cryptographic products does not imply - third-party authority to import, export, distribute or use encryption. - Importers, exporters, distributors and users are responsible for - compliance with U.S. and local country laws. By using this product you - agree to comply with applicable laws and regulations. If you are unable - to comply with U.S. and local laws, return this product immediately. - - A summary of U.S. laws governing Cisco cryptographic products may be found at: - http://www.cisco.com/wwl/export/crypto/tool/stqrg.html - - If you require further assistance please contact us by sending email to - export@cisco.com. - - - Technology Package License Information: - - ------------------------------------------------------------------------------ - Technology-package Technology-package - Current Type Next reboot - ------------------------------------------------------------------------------ - network-advantage Smart License network-advantage - dna-advantage Subscription Smart License dna-advantage - AIR License Level: AIR DNA Advantage - Next reload AIR license Level: AIR DNA Advantage - - - Smart Licensing Status: Smart Licensing Using Policy - - cisco C9407R (X86) processor (revision V01) with 1579614K/6147K bytes of memory. - Processor board ID FXS2136Q0E7 - 7 Virtual Ethernet interfaces - 144 Gigabit Ethernet interfaces - 16 Ten Gigabit Ethernet interfaces - 4 Forty Gigabit Ethernet interfaces - 32768K bytes of non-volatile configuration memory. - 15988588K bytes of physical memory. - 11161600K bytes of Bootflash at bootflash:. - 1638400K bytes of Crash Files at crashinfo:. - - Base Ethernet MAC Address : 38:0e:4d:5a:99:00 - Motherboard Assembly Number : 4855 - Motherboard Serial Number : FXS2134006M - Model Revision Number : V02 - Motherboard Revision Number : 3 - Model Number : C9407R - System Serial Number : FXS2136Q0E7 + - "Cisco IOS XE Software, Version 2024-05-21_05.09_anayyana\r\nCisco IOS Software\ + \ [IOSXE], Catalyst L3 Switch Software (CAT9K_IOSXE), Experimental Version\ + \ 17.16.20240521:085046 [BLD_POLARIS_DEV_S2C_20240503_140515-105-g2cad7630a669-dirty:/nobackup/anayyana/ws1/polaris\ + \ 101]\r\nCopyright (c) 1986-2024 by Cisco Systems, Inc.\r\nCompiled Tue 21-May-24\ + \ 01:52 by anayyana\r\n\r\n\r\nCisco IOS-XE software, Copyright (c) 2005-2024\ + \ by cisco Systems, Inc.\r\nAll rights reserved. Certain components of Cisco\ + \ IOS-XE software are\r\nlicensed under the GNU General Public License (\"\ + GPL\") Version 2.0. The\r\nsoftware code licensed under GPL Version 2.0 is\ + \ free software that comes\r\nwith ABSOLUTELY NO WARRANTY. You can redistribute\ + \ and/or modify such\r\nGPL code under the terms of GPL Version 2.0. For\ + \ more details, see the\r\ndocumentation or \"License Notice\" file accompanying\ + \ the IOS-XE software,\r\nor the applicable URL provided on the flyer accompanying\ + \ the IOS-XE\r\nsoftware.\r\n\r\n\r\nROM: IOS-XE ROMMON\r\nBOOTLDR: System\ + \ Bootstrap, Version 17.10.1r, RELEASE SOFTWARE (P)\r\n\r\nSwitch uptime is\ + \ 1 day, 22 hours, 32 minutes\r\nUptime for this control processor is 1 day,\ + \ 22 hours, 33 minutes\r\nSystem returned to ROM by Reload Command\r\nSystem\ + \ image file is \"bootflash:image.bin\"\r\nLast reload reason: Reload Command\r\ + \n\r\n\r\n\r\nThis product contains cryptographic features and is subject\ + \ to United\r\nStates and local country laws governing import, export, transfer\ + \ and\r\nuse. Delivery of Cisco cryptographic products does not imply\r\n\ + third-party authority to import, export, distribute or use encryption.\r\n\ + Importers, exporters, distributors and users are responsible for\r\ncompliance\ + \ with U.S. and local country laws. By using this product you\r\nagree to\ + \ comply with applicable laws and regulations. If you are unable\r\nto comply\ + \ with U.S. and local laws, return this product immediately.\r\n\r\nA summary\ + \ of U.S. laws governing Cisco cryptographic products may be found at:\r\n\ + http://www.cisco.com/wwl/export/crypto/tool/stqrg.html\r\n\r\nIf you require\ + \ further assistance please contact us by sending email to\r\nexport@cisco.com.\r\ + \n\r\n\r\nTechnology Package License Information: \r\n\r\n------------------------------------------------------------------------------\r\ + \nTechnology-package Technology-package\r\ + \nCurrent Type Next reboot \r\ + \n------------------------------------------------------------------------------\r\ + \nnetwork-advantage \tSmart License \t network-advantage\ + \ \r\ndna-advantage \tSubscription Smart License \t dna-advantage\ + \ \r\nAIR License Level: AIR DNA Advantage\r\nNext reload\ + \ AIR license Level: AIR DNA Advantage\r\n\r\n\r\nSmart Licensing Status:\ + \ Smart Licensing Using Policy\r\n\r\ncisco C9407R (X86) processor (revision\ + \ V01) with 1579062K/6147K bytes of memory.\r\nProcessor board ID FXS2236Q15Y\r\ + \n1 Virtual Ethernet interface\r\n96 Gigabit Ethernet interfaces\r\n16 Ten\ + \ Gigabit Ethernet interfaces\r\n4 Forty Gigabit Ethernet interfaces\r\n32768K\ + \ bytes of non-volatile configuration memory.\r\n15988588K bytes of physical\ + \ memory.\r\n11161600K bytes of Bootflash at bootflash:.\r\n1638400K bytes\ + \ of Crash Files at crashinfo:.\r\n\r\nBase Ethernet MAC Address \ + \ : 00:b7:71:88:16:c0\r\nMotherboard Assembly Number : 4A39\r\nMotherboard\ + \ Serial Number : FXS223302JZ\r\nModel Revision Number \ + \ : V02\r\nMotherboard Revision Number : 1\r\nModel Number \ + \ : C9407R \r\nSystem Serial Number \ + \ : FXS2236Q15Y" response_type: circular term length 0: '' term width 0: '' show version | include operating mode: '' - prompt: HA-9400-S2# + prompt: Switch# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/get/get_boot_time/test_api_get_boot_time.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/get/get_boot_time/test_api_get_boot_time.py index 865775fe8..78d3e256a 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/get/get_boot_time/test_api_get_boot_time.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/get/get_boot_time/test_api_get_boot_time.py @@ -10,7 +10,7 @@ class TestGetBootTime(unittest.TestCase): def setUpClass(self): testbed = f""" devices: - HA-9400-S2: + Switch: connections: defaults: class: unicon.Unicon @@ -19,10 +19,10 @@ def setUpClass(self): protocol: unknown os: iosxe platform: cat9k - type: iosxe + type: None """ self.testbed = loader.load(testbed) - self.device = self.testbed.devices['HA-9400-S2'] + self.device = self.testbed.devices['Switch'] self.device.connect( learn_hostname=True, init_config_commands=[], @@ -31,5 +31,5 @@ def setUpClass(self): def test_get_boot_time(self): result = get_boot_time(self.device) - expected_output = (1709000040, (1708000040, 1710000040)) + expected_output = (1716175200, (1715175200, 1717175200)) self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_policy_map_set_cos_cos_table/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_policy_map_set_cos_cos_table/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_policy_map_set_cos_cos_table/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_policy_map_set_cos_cos_table/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..bdb3edfa0 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_policy_map_set_cos_cos_table/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,38 @@ +configure: + commands: + class class-default: "class class-default\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + policy-map map1: "policy-map map1\r\n" + set cos cos table cos2cos: "set cos cos table cos2cos\r\n" + prompt: 9400-ha(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: 9400-ha(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version: '' + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: 9400-ha# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_policy_map_set_cos_cos_table/test_api_configure_policy_map_set_cos_cos_table.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_policy_map_set_cos_cos_table/test_api_configure_policy_map_set_cos_cos_table.py new file mode 100644 index 000000000..3b2d570e6 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_policy_map_set_cos_cos_table/test_api_configure_policy_map_set_cos_cos_table.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.policy_map.configure import configure_policy_map_set_cos_cos_table + + +class TestConfigurePolicyMapSetCosCosTable(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + 9400-ha: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: cat9k + type: c9300 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['9400-ha'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_policy_map_set_cos_cos_table(self): + result = configure_policy_map_set_cos_cos_table(self.device, 'map1', 'class-default', 'cos2cos') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/qos/configure/config_replace_to_flash_memory_force/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/qos/configure/config_replace_to_flash_memory_force/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/qos/configure/config_replace_to_flash_memory_force/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/qos/configure/config_replace_to_flash_memory_force/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..83e3ee7c5 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/qos/configure/config_replace_to_flash_memory_force/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,235 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: NGSVL(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: NGSVL(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + configure replace stby-bootflash:backup_config force: + response: + - "% ipv6 addresses from all interfaces in VRF vrf_99 have been removed\r\n\ + % ipv4 addresses from all interfaces in VRF vrf_99 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_98 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_98 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_97 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_97 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_96 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_96 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_95 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_95 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_94 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_94 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_93 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_93 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_92 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_92 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_91 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_91 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_90 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_90 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_9 have been removed\r\n% ipv4\ + \ addresses from all interfaces in VRF vrf_9 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_89 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_89 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_88 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_88 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_87 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_87 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_86 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_86 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_85 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_85 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_84 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_84 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_83 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_83 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_82 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_82 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_81 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_81 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_80 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_80 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_8 have been removed\r\n% ipv4 addresses from\ + \ all interfaces in VRF vrf_8 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_79 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_79 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_78 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_78 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_77 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_77 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_76 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_76 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_75 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_75 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_74 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_74 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_73 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_73 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_72 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_72 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_71 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_71 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_70 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_70 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_7 have been removed\r\n% ipv4 addresses from all interfaces\ + \ in VRF vrf_7 have been removed\r\n% ipv6 addresses from all interfaces in\ + \ VRF vrf_69 have been removed\r\n% ipv4 addresses from all interfaces in\ + \ VRF vrf_69 have been removed\r\n% ipv6 addresses from all interfaces in\ + \ VRF vrf_68 have been removed\r\n% ipv4 addresses from all interfaces in\ + \ VRF vrf_68 have been removed\r\n% ipv6 addresses from all interfaces in\ + \ VRF vrf_67 have been removed\r\n% ipv4 addresses from all interfaces in\ + \ VRF vrf_67 have been removed\r\n% ipv6 addresses from all interfaces in\ + \ VRF vrf_66 have been removed\r\n% ipv4 addresses from all interfaces in\ + \ VRF vrf_66 have been removed\r\n% ipv6 addresses from all interfaces in\ + \ VRF vrf_65 have been removed\r\n% ipv4 addresses from all interfaces in\ + \ VRF vrf_65 have been removed\r\n% ipv6 addresses from all interfaces in\ + \ VRF vrf_64 have been removed\r\n% ipv4 addresses from all interfaces in\ + \ VRF vrf_64 have been removed\r\n% ipv6 addresses from all interfaces in\ + \ VRF vrf_63 have been removed\r\n% ipv4 addresses from all interfaces in\ + \ VRF vrf_63 have been removed\r\n% ipv6 addresses from all interfaces in\ + \ VRF vrf_62 have been removed\r\n% ipv4 addresses from all interfaces in\ + \ VRF vrf_62 have been removed\r\n% ipv6 addresses from all interfaces in\ + \ VRF vrf_61 have been removed\r\n% ipv4 addresses from all interfaces in\ + \ VRF vrf_61 have been removed\r\n% ipv6 addresses from all interfaces in\ + \ VRF vrf_60 have been removed\r\n% ipv4 addresses from all interfaces in\ + \ VRF vrf_60 have been removed\r\n% ipv6 addresses from all interfaces in\ + \ VRF vrf_6 have been removed\r\n% ipv4 addresses from all interfaces in VRF\ + \ vrf_6 have been removed\r\n% ipv6 addresses from all interfaces in VRF vrf_59\ + \ have been removed\r\n% ipv4 addresses from all interfaces in VRF vrf_59\ + \ have been removed\r\n% ipv6 addresses from all interfaces in VRF vrf_58\ + \ have been removed\r\n% ipv4 addresses from all interfaces in VRF vrf_58\ + \ have been removed\r\n% ipv6 addresses from all interfaces in VRF vrf_57\ + \ have been removed\r\n% ipv4 addresses from all interfaces in VRF vrf_57\ + \ have been removed\r\n% ipv6 addresses from all interfaces in VRF vrf_56\ + \ have been removed\r\n% ipv4 addresses from all interfaces in VRF vrf_56\ + \ have been removed\r\n% ipv6 addresses from all interfaces in VRF vrf_55\ + \ have been removed\r\n% ipv4 addresses from all interfaces in VRF vrf_55\ + \ have been removed\r\n% ipv6 addresses from all interfaces in VRF vrf_54\ + \ have been removed\r\n% ipv4 addresses from all interfaces in VRF vrf_54\ + \ have been removed\r\n% ipv6 addresses from all interfaces in VRF vrf_53\ + \ have been removed\r\n% ipv4 addresses from all interfaces in VRF vrf_53\ + \ have been removed\r\n% ipv6 addresses from all interfaces in VRF vrf_52\ + \ have been removed\r\n% ipv4 addresses from all interfaces in VRF vrf_52\ + \ have been removed\r\n% ipv6 addresses from all interfaces in VRF vrf_51\ + \ have been removed\r\n% ipv4 addresses from all interfaces in VRF vrf_51\ + \ have been removed\r\n% ipv6 addresses from all interfaces in VRF vrf_50\ + \ have been removed\r\n% ipv4 addresses from all interfaces in VRF vrf_50\ + \ have been removed\r\n% ipv6 addresses from all interfaces in VRF vrf_5 have\ + \ been removed\r\n% ipv4 addresses from all interfaces in VRF vrf_5 have been\ + \ removed\r\n% ipv6 addresses from all interfaces in VRF vrf_49 have been\ + \ removed\r\n% ipv4 addresses from all interfaces in VRF vrf_49 have been\ + \ removed\r\n% ipv6 addresses from all interfaces in VRF vrf_48 have been\ + \ removed\r\n% ipv4 addresses from all interfaces in VRF vrf_48 have been\ + \ removed\r\n% ipv6 addresses from all interfaces in VRF vrf_47 have been\ + \ removed\r\n% ipv4 addresses from all interfaces in VRF vrf_47 have been\ + \ removed\r\n% ipv6 addresses from all interfaces in VRF vrf_46 have been\ + \ removed\r\n% ipv4 addresses from all interfaces in VRF vrf_46 have been\ + \ removed\r\n% ipv6 addresses from all interfaces in VRF vrf_45 have been\ + \ removed\r\n% ipv4 addresses from all interfaces in VRF vrf_45 have been\ + \ removed\r\n% ipv6 addresses from all interfaces in VRF vrf_44 have been\ + \ removed\r\n% ipv4 addresses from all interfaces in VRF vrf_44 have been\ + \ removed\r\n% ipv6 addresses from all interfaces in VRF vrf_43 have been\ + \ removed\r\n% ipv4 addresses from all interfaces in VRF vrf_43 have been\ + \ removed\r\n% ipv6 addresses from all interfaces in VRF vrf_42 have been\ + \ removed\r\n% ipv4 addresses from all interfaces in VRF vrf_42 have been\ + \ removed\r\n% ipv6 addresses from all interfaces in VRF vrf_41 have been\ + \ removed\r\n% ipv4 addresses from all interfaces in VRF vrf_41 have been\ + \ removed\r\n% ipv6 addresses from all interfaces in VRF vrf_40 have been\ + \ removed\r\n% ipv4 addresses from all interfaces in VRF vrf_40 have been\ + \ removed\r\n% ipv6 addresses from all interfaces in VRF vrf_4 have been removed\r\ + \n% ipv4 addresses from all interfaces in VRF vrf_4 have been removed\r\n\ + % ipv6 addresses from all interfaces in VRF vrf_39 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_39 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_38 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_38 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_37 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_37 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_36 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_36 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_35 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_35 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_34 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_34 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_33 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_33 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_32 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_32 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_31 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_31 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_30 have been removed\r\n%\ + \ ipv4 addresses from all interfaces in VRF vrf_30 have been removed\r\n%\ + \ ipv6 addresses from all interfaces in VRF vrf_3 have been removed\r\n% ipv4\ + \ addresses from all interfaces in VRF vrf_3 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_29 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_29 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_28 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_28 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_27 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_27 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_26 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_26 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_25 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_25 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_24 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_24 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_23 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_23 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_22 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_22 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_21 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_21 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_20 have been removed\r\n% ipv4 addresses\ + \ from all interfaces in VRF vrf_20 have been removed\r\n% ipv6 addresses\ + \ from all interfaces in VRF vrf_2 have been removed\r\n% ipv4 addresses from\ + \ all interfaces in VRF vrf_2 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_19 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_19 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_18 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_18 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_17 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_17 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_16 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_16 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_15 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_15 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_14 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_14 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_13 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_13 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_12 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_12 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_11 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_11 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_10 have been removed\r\n% ipv4 addresses from all\ + \ interfaces in VRF vrf_10 have been removed\r\n% ipv6 addresses from all\ + \ interfaces in VRF vrf_1 have been removed\r\n% ipv4 addresses from all interfaces\ + \ in VRF vrf_1 have been removed\r\nTotal number of passes: 1\r\nRollback\ + \ Done" + response_type: circular + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: NGSVL# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/qos/configure/config_replace_to_flash_memory_force/test_api_config_replace_to_flash_memory_force.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/qos/configure/config_replace_to_flash_memory_force/test_api_config_replace_to_flash_memory_force.py new file mode 100644 index 000000000..f4eed7b1e --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/qos/configure/config_replace_to_flash_memory_force/test_api_config_replace_to_flash_memory_force.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.qos.configure import config_replace_to_flash_memory_force + + +class TestConfigReplaceToFlashMemoryForce(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + NGSVL: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: cat9k + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['NGSVL'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_config_replace_to_flash_memory_force(self): + result = config_replace_to_flash_memory_force(self.device, 'stby-bootflash', 60) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/configure_redundancy/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/configure_redundancy/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/configure_redundancy/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/configure_redundancy/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..d07b3e91a --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/configure_redundancy/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,37 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + mode sso: "mode sso\r\n" + no logging console: '' + redundancy: "redundancy\r\n" + prompt: encore_sanity(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: encore_sanity(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version: '' + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: encore_sanity# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/configure_redundancy/test_api_configure_redundancy.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/configure_redundancy/test_api_configure_redundancy.py new file mode 100644 index 000000000..664ff900b --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/configure_redundancy/test_api_configure_redundancy.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.redundancy.configure import configure_redundancy + + +class TestConfigureRedundancy(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + encore_sanity: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: cat8k + type: router + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['encore_sanity'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_redundancy(self): + result = configure_redundancy(self.device) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/unconfigure_redundancy/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/unconfigure_redundancy/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/unconfigure_redundancy/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/unconfigure_redundancy/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..e3242e9de --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/unconfigure_redundancy/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,37 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + mode none: "mode none\r\n" + no logging console: '' + redundancy: "redundancy\r\n" + prompt: encore_sanity(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: encore_sanity(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version: '' + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: encore_sanity# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/unconfigure_redundancy/test_api_unconfigure_redundancy.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/unconfigure_redundancy/test_api_unconfigure_redundancy.py new file mode 100644 index 000000000..9290ea9e4 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/configure/unconfigure_redundancy/test_api_unconfigure_redundancy.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.redundancy.configure import unconfigure_redundancy + + +class TestUnconfigureRedundancy(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + encore_sanity: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: cat8k + type: router + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['encore_sanity'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_redundancy(self): + result = unconfigure_redundancy(self.device) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/rommon/configure/configure_rommon_tftp/test_api_configure_rommon_tftp.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/rommon/configure/configure_rommon_tftp/test_api_configure_rommon_tftp.py index 7d9b96665..e0a297d51 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/rommon/configure/configure_rommon_tftp/test_api_configure_rommon_tftp.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/rommon/configure/configure_rommon_tftp/test_api_configure_rommon_tftp.py @@ -40,13 +40,30 @@ def setUpClass(self): """ self.testbed = loader.load(testbed) self.device = self.testbed.devices['ott-c9300-63'] - # To test the TFTP_FILE rommon variable - self.device.clean.images = ["flash:/test.bin"] self.device.connect( mit=True ) - def test_configure_rommon_tftp(self): + def tearDown(self): + self.device.disconnect() + + def test_configure_rommon_tftp_1(self): + # To test the TFTP_FILE rommon variable + self.device.clean.images = ['flash:/test.bin'] + result = configure_rommon_tftp(self.device) + expected_output = None + self.assertEqual(result, expected_output) + + def test_configure_rommon_tftp_2(self): + # To test the TFTP_FILE rommon variable + self.device.clean.images = {'image': ['flash:/test.bin']} + result = configure_rommon_tftp(self.device) + expected_output = None + self.assertEqual(result, expected_output) + + def test_configure_rommon_tftp_3(self): + # To test the TFTP_FILE rommon variable + self.device.clean.images = {'image': {'file': ['flash:/test.bin']}} result = configure_rommon_tftp(self.device) expected_output = None self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/table_map/configure/configure_table_map_set_default/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/table_map/configure/configure_table_map_set_default/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/table_map/configure/configure_table_map_set_default/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/table_map/configure/configure_table_map_set_default/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..825f3ab70 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/table_map/configure/configure_table_map_set_default/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,37 @@ +configure: + commands: + default copy: "default copy\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + table-map cos2cos: "table-map cos2cos\r\n" + prompt: 9400-ha(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: 9400-ha(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version: '' + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: 9400-ha# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/table_map/configure/configure_table_map_set_default/test_api_configure_table_map_set_default.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/table_map/configure/configure_table_map_set_default/test_api_configure_table_map_set_default.py new file mode 100644 index 000000000..00e409c05 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/table_map/configure/configure_table_map_set_default/test_api_configure_table_map_set_default.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.table_map.configure import configure_table_map_set_default + + +class TestConfigureTableMapSetDefault(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + 9400-ha: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['9400-ha'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_table_map_set_default(self): + result = configure_table_map_set_default(self.device, 'cos2cos', 'copy') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/udld/configure/unconfigure_udld_recovery/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/udld/configure/unconfigure_udld_recovery/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/udld/configure/unconfigure_udld_recovery/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/udld/configure/unconfigure_udld_recovery/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..c01adad95 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/udld/configure/unconfigure_udld_recovery/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + no udld recovery: "no udld recovery\r\n" + prompt: 9200_access(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: 9200_access(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + config term: + new_state: configure + config-transaction: + new_state: configure + show version: '' + show version | include operating mode: '' + term length 0: '' + term width 0: '' + prompt: 9200_access# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/udld/configure/unconfigure_udld_recovery/test_api_unconfigure_udld_recovery.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/udld/configure/unconfigure_udld_recovery/test_api_unconfigure_udld_recovery.py new file mode 100644 index 000000000..198118a27 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/udld/configure/unconfigure_udld_recovery/test_api_unconfigure_udld_recovery.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.udld.configure import unconfigure_udld_recovery + + +class TestUnconfigureUdldRecovery(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + 9200_access: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect + protocol: unknown + os: iosxe + platform: iosxe + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['9200_access'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_udld_recovery(self): + result = unconfigure_udld_recovery(self.device) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/copy_file/test_api_copy_file.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/copy_file/test_api_copy_file.py index 6a8215d44..52b2d3852 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/copy_file/test_api_copy_file.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/copy_file/test_api_copy_file.py @@ -30,6 +30,6 @@ def setUpClass(self): ) def test_copy_file(self): - result = copy_file(self.device, 'nvram', 'bootflash:', 'ca.ser') + result = copy_file(self.device, 'nvram', 'bootflash:', 'ca.ser', 60) expected_output = None self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/request_system_shell/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/request_system_shell/mock_data/iosxe/mock_data.yaml index ee2734449..beaef6c7d 100755 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/request_system_shell/mock_data/iosxe/mock_data.yaml +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/request_system_shell/mock_data/iosxe/mock_data.yaml @@ -65,6 +65,24 @@ execute: term length 0: '' term width 0: '' show version | include operating mode: '' + request platform software system shell: + response: + - Activity within this shell can jeopardize the functioning of the system. + new_state: confirm_dialog + sed -r -i 's/(RuntimeWatchdogSec=).*/\10/' /etc/systemd/system.conf: '' + systemctl daemon-reexec: '' + echo 1 > /dev/watchdog: '' + dmesg | tail: | + [69318.122111] NFS: SECINFO: security flavor 390005 is not supported + [69404.497666] igb: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX + [69437.624382] RP3 CPLD: Old val 0x30003 Updated val 0x30003 + [69437.625824] RP3 CPLD: Old val 0x30003 Updated val 0x30003 + [69961.469516] watchdog: watchdog0: nowayout prevents watchdog being stopped! + [69961.469553] watchdog: watchdog0: nowayout prevents watchdog being stopped! + [69961.469555] watchdog: watchdog0: watchdog did not stop! + [69961.534934] systemd[1]: systemd 251 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA -SMACK -SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -TPM2 -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid) + [69961.535030] systemd[1]: Detected architecture x86-64. + [69966.416588] watchdog: watchdog0: watchdog did not stop! prompt: 9350-stack-1# confirm_dialog: prompt: 'Are you sure you want to continue? [y/n] ' diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/request_system_shell/test_api_request_system_shell.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/request_system_shell/test_api_request_system_shell.py index 05e8ce7d9..4b4354453 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/request_system_shell/test_api_request_system_shell.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/request_system_shell/test_api_request_system_shell.py @@ -81,3 +81,41 @@ def test_request_system_shell_processor_slot(self): '**\r\n' "Terminal type 'network' unknown. Assuming vt100") self.assertEqual(result, expected_output) + + def test_request_system_shell_multiple_commands(self): + self.maxDiff = None + expected_output = ('Activity within this shell can jeopardize the functioning of the system.\r\n' + 'Are you sure you want to continue? [y/n] y\r\n' + '2023/10/10 09:50:10 : Shell access was granted to user ; Trace file: , ' + '/crashinfo/tracelogs/system_shell_R0-0.31502_0.20231010095010.bin\r\n' + '********************************************************************** \r\n' + 'Activity within this shell can jeopardize the functioning \r\n' + 'of the system.\r\n' + 'Use this functionality only under supervision of Cisco Support.\r\n' + '\r\n' + 'Session will be logged to:\r\n' + ' crashinfo:tracelogs/system_shell_R0-0.31502_0.20231010095010.bin\r\n' + '********************************************************************** \r\n' + "Terminal type 'network' unknown. Assuming vt100" + '[69318.122111] NFS: SECINFO: security flavor 390005 is not supported\r\n' + '[69404.497666] igb: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX\r\n' + '[69437.624382] RP3 CPLD: Old val 0x30003 Updated val 0x30003\r\n' + '[69437.625824] RP3 CPLD: Old val 0x30003 Updated val 0x30003\r\n' + '[69961.469516] watchdog: watchdog0: nowayout prevents watchdog being stopped!\r\n' + '[69961.469553] watchdog: watchdog0: nowayout prevents watchdog being stopped!\r\n' + '[69961.469555] watchdog: watchdog0: watchdog did not stop!\r\n' + '[69961.534934] systemd[1]: systemd 251 running in system mode (+PAM +AUDIT +SELINUX ' + '-APPARMOR +IMA -SMACK -SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS ' + '-FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT ' + '-QRENCODE -TPM2 -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK ' + '-XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)\r\n' + '[69961.535030] systemd[1]: Detected architecture x86-64.\r\n' + '[69966.416588] watchdog: watchdog0: watchdog did not stop!') + cmds_list= [ + "sed -r -i 's/(RuntimeWatchdogSec=).*/\\10/' /etc/systemd/system.conf", + "systemctl daemon-reexec", + "echo 1 > /dev/watchdog", + "dmesg | tail" + ] + result = request_system_shell(self.device, command=cmds_list) + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxr/utils/test_get_mgmt_ip_and_mgmt_src_ip_addresses.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxr/utils/test_get_mgmt_ip_and_mgmt_src_ip_addresses.py index 8ba46b0bf..3db551896 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxr/utils/test_get_mgmt_ip_and_mgmt_src_ip_addresses.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxr/utils/test_get_mgmt_ip_and_mgmt_src_ip_addresses.py @@ -3,7 +3,7 @@ from unittest.mock import Mock, call from genie.conf.base.device import Device -from genie.libs.sdk.apis.iosxr.c8000.utils import get_mgmt_ip_and_mgmt_src_ip_addresses +from genie.libs.sdk.apis.iosxr.spitfire.utils import get_mgmt_ip_and_mgmt_src_ip_addresses class testAPI(unittest.TestCase): @@ -12,7 +12,7 @@ def test_get_mgmt_ip_and_mgmt_src_ip_addresses(self): device = Device( name='Router', os='iosxr', - platform='c8000', + platform='spitfire', custom=dict(abstraction=dict(order=['os', 'platform'])) ) device.is_connected = Mock(return_value=True) @@ -28,11 +28,11 @@ def test_get_mgmt_ip_and_mgmt_src_ip_addresses(self): tcp6 0 0 :::830 :::* LISTEN 7756/sshd ''')) - with self.assertLogs('genie.libs.sdk.apis.iosxr.c8000.utils') as cm: + with self.assertLogs('genie.libs.sdk.apis.iosxr.spitfire.utils') as cm: result = get_mgmt_ip_and_mgmt_src_ip_addresses(device) self.assertEqual(cm.output,[ - "INFO:genie.libs.sdk.apis.iosxr.c8000.utils:Device management IP: 1.1.1.95", - "INFO:genie.libs.sdk.apis.iosxr.c8000.utils:Device management source IP addresses: {'2.2.2.145'}" + "INFO:genie.libs.sdk.apis.iosxr.spitfire.utils:Device management IP: 1.1.1.95", + "INFO:genie.libs.sdk.apis.iosxr.spitfire.utils:Device management source IP addresses: {'2.2.2.145'}" ]) self.assertEqual(result, ('1.1.1.95', {'2.2.2.145'})) @@ -42,7 +42,7 @@ def test_get_mgmt_ip_and_mgmt_src_ip_addresses1(self): device = Device( name='Router', os='iosxr', - platform='c8000', + platform='spitfire', custom=dict(abstraction=dict(order=['os', 'platform'])) ) device.is_connected = Mock(return_value=True) @@ -58,11 +58,11 @@ def test_get_mgmt_ip_and_mgmt_src_ip_addresses1(self): tcp6 0 0 :::830 :::* LISTEN 7756/sshd ''')) - with self.assertLogs('genie.libs.sdk.apis.iosxr.c8000.utils') as cm: + with self.assertLogs('genie.libs.sdk.apis.iosxr.spitfire.utils') as cm: result = get_mgmt_ip_and_mgmt_src_ip_addresses(device, mgmt_src_ip='2.2.2.145') self.assertEqual(cm.output,[ - "INFO:genie.libs.sdk.apis.iosxr.c8000.utils:Device management IP: 1.1.1.95", - "INFO:genie.libs.sdk.apis.iosxr.c8000.utils:Device management source IP addresses: {'2.2.2.145'}" + "INFO:genie.libs.sdk.apis.iosxr.spitfire.utils:Device management IP: 1.1.1.95", + "INFO:genie.libs.sdk.apis.iosxr.spitfire.utils:Device management source IP addresses: {'2.2.2.145'}" ]) self.assertEqual(result, ('1.1.1.95', {'2.2.2.145'})) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxr/utils/test_get_mgmt_src_ip_addresses.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxr/utils/test_get_mgmt_src_ip_addresses.py index be4ee2fef..135c9e2c9 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxr/utils/test_get_mgmt_src_ip_addresses.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxr/utils/test_get_mgmt_src_ip_addresses.py @@ -3,7 +3,7 @@ from unittest.mock import Mock, call from genie.conf.base.device import Device -from genie.libs.sdk.apis.iosxr.c8000.utils import get_mgmt_src_ip_addresses +from genie.libs.sdk.apis.iosxr.spitfire.utils import get_mgmt_src_ip_addresses class testAPI(unittest.TestCase): @@ -12,7 +12,7 @@ def test_get_mgmt_src_ip_addresses(self): device = Device( name='Router', os='iosxr', - platform='c8000', + platform='spitfire', custom=dict(abstraction=dict(order=['os', 'platform'])) ) device.is_connected = Mock(return_value=True) @@ -27,10 +27,10 @@ def test_get_mgmt_src_ip_addresses(self): tcp6 0 0 :::22 :::* LISTEN 7756/sshd tcp6 0 0 :::830 :::* LISTEN 7756/sshd ''')) - with self.assertLogs('genie.libs.sdk.apis.iosxr.c8000.utils') as cm: + with self.assertLogs('genie.libs.sdk.apis.iosxr.spitfire.utils') as cm: result = get_mgmt_src_ip_addresses(device) self.assertEqual(cm.output,[ - "INFO:genie.libs.sdk.apis.iosxr.c8000.utils:Device management source IP addresses: ['2.2.2.145']" + "INFO:genie.libs.sdk.apis.iosxr.spitfire.utils:Device management source IP addresses: ['2.2.2.145']" ]) self.assertEqual(result, ['2.2.2.145']) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/utils.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/utils.py index af7abbe54..11f3b1c84 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/utils.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/utils.py @@ -4387,6 +4387,7 @@ def device_recovery_boot(device, console_activity_pattern=None, console_breakboo break_count = break_count or recovery_info.get('break_count') or 15 timeout = timeout or recovery_info.get('timeout') or 750 ether_port = 0 + golden_image = golden_image or recovery_info.get('golden_image', []) tftp_boot = tftp_boot or recovery_info.get('tftp_boot', {}) @@ -4397,7 +4398,7 @@ def device_recovery_boot(device, console_activity_pattern=None, console_breakboo log.warning("Failed to destroy the device connection but " "attempting to continue", exc_info=True) - if golden_image or recovery_info.get('golden_image'): + if golden_image: log.info(banner("Booting device '{}' with the Golden images".\ format(device.name))) log.info("Golden image information found:\n{}".format(golden_image)) @@ -4442,7 +4443,7 @@ def device_recovery_boot(device, console_activity_pattern=None, console_breakboo 'grub_breakboot_char': grub_breakboot_char, 'break_count': break_count, 'timeout': timeout, - 'golden_image': golden_image or recovery_info.get('golden_image'), + 'golden_image': golden_image, 'tftp_boot': tftp_boot, 'recovery_password': recovery_password or recovery_info.get('recovery_password')} )