From c0c675e45ea3aba7e2f78d4691208e86d4b83fd9 Mon Sep 17 00:00:00 2001 From: Lukeman Hakkim Sheik Alavudeen Date: Tue, 25 Jul 2023 09:28:15 -0700 Subject: [PATCH] Releasing v23.7 --- CODING.md | 127 --- Makefile | 6 +- pkgs/clean-pkg/changelog/2023/july.rst | 16 + .../sdk_generator/output/github_clean.json | 33 +- .../src/genie/libs/clean/__init__.py | 2 +- .../libs/clean/stages/iosxe/cat9k/stages.py | 89 +- .../genie/libs/clean/stages/iosxe/stages.py | 349 +++++++- .../stages/iosxe/tests/test_rommon_boot.py | 143 ++++ .../src/genie/libs/clean/stages/stages.py | 2 +- .../tests/test_backup_file_on_device.py | 31 + .../stages/tests/test_configure_management.py | 2 +- .../changelog/2023/july.rst} | 0 pkgs/conf-pkg/src/genie/libs/conf/__init__.py | 2 +- .../changelog/2023/july.rst | 9 + .../genie/libs/filetransferutils/__init__.py | 2 +- .../genie/libs/filetransferutils/fileutils.py | 40 +- .../tests/iosxe/mock_data/mock.yaml | 19 +- .../tests/iosxe/test_filetransferutils.py | 16 +- .../changelog/2023/july.rst} | 0 .../src/genie/libs/health/__init__.py | 2 +- pkgs/ops-pkg/changelog/2023/july.rst | 0 pkgs/ops-pkg/src/genie/libs/ops/__init__.py | 2 +- pkgs/robot-pkg/changelog/2023/july.rst | 8 + .../src/genie/libs/robot/__init__.py | 2 +- pkgs/sdk-pkg/changelog/2023/july.rst | 103 +++ .../sdk_generator/output/github_apis.json | 775 +++++++++++++----- .../output/github_verifications.json | 36 +- pkgs/sdk-pkg/setup.py | 3 +- pkgs/sdk-pkg/src/genie/libs/sdk/__init__.py | 2 +- .../sdk/apis/iosxe/apphosting/configure.py | 61 ++ .../libs/sdk/apis/iosxe/apphosting/execute.py | 41 + .../libs/sdk/apis/iosxe/asr1k/__init__.py | 3 + .../libs/sdk/apis/iosxe/asr1k/configure.py | 21 + .../libs/sdk/apis/iosxe/bgp/configure.py | 179 +++- .../libs/sdk/apis/iosxe/cts/configure.py | 18 + .../libs/sdk/apis/iosxe/debug/configure.py | 27 + .../libs/sdk/apis/iosxe/dot1x/configure.py | 128 ++- .../libs/sdk/apis/iosxe/flow/configure.py | 71 +- .../genie/libs/sdk/apis/iosxe/gkm/__init__.py | 0 .../libs/sdk/apis/iosxe/gkm/configure.py | 378 +++++++++ .../libs/sdk/apis/iosxe/hardware/configure.py | 73 ++ .../sdk/apis/iosxe/interface/configure.py | 101 ++- .../sdk/apis/iosxe/management/configure.py | 7 +- .../libs/sdk/apis/iosxe/mpls/configure.py | 69 +- .../libs/sdk/apis/iosxe/ospf/configure.py | 17 +- .../libs/sdk/apis/iosxe/platform/clear.py | 22 + .../libs/sdk/apis/iosxe/platform/configure.py | 112 ++- .../libs/sdk/apis/iosxe/platform/execute.py | 26 + .../sdk/apis/iosxe/policy_map/configure.py | 12 +- .../src/genie/libs/sdk/apis/iosxe/utils.py | 77 ++ .../libs/sdk/apis/iosxe/vlan/configure.py | 1 - .../libs/sdk/apis/iosxe/vrf/configure.py | 51 +- .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 34 + ...irm_iox_enabled_requested_storage_media.py | 35 + .../execute/set_stack_mode/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 34 + .../set_stack_mode/test_api_set_stack_mode.py | 35 + .../mock_data/iosxe/mock_data.yaml | 9 +- ...onfigure_ip_arp_inspection_vlan_logging.py | 2 +- .../mock_data/iosxe/mock_data.yaml | 12 +- ...onfigure_ip_arp_inspection_vlan_logging.py | 2 +- .../configure/configure_autoboot/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 35 + .../test_api_configure_autoboot.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ...e_bgp_best_path_as_path_multipath_relax.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 12 +- ...t_api_configure_bgp_redistribute_static.py | 15 +- .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 39 + ...ure_route_map_route_map_to_bgp_neighbor.py | 40 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 166 ++++ ...est_api_get_running_config_section_dict.py | 263 ++++++ .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 38 + ...api_unconfigure_bgp_redistribute_static.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 38 + ...ure_route_map_route_map_to_bgp_neighbor.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ...st_api_enable_cts_enforcement_vlan_list.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 39 + ...ebug_vdsl_controller_slot_dump_internal.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ...t_api_configure_access_session_mac_move.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 37 + ...est_api_configure_default_spanning_tree.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ...api_unconfigure_access_session_mac_move.py | 35 + .../mock_data/iosxe/mock_data.yaml | 15 +- .../test_api_configure_flow_exporter.py | 10 +- .../configure_fnf_flow_record/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 45 + .../test_api_configure_fnf_flow_record.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 37 + ...nfigure_client_protocol_under_gkm_group.py | 20 +- .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 37 + ...onfigure_gikev2_profile_under_gkm_group.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ...api_configure_gkm_group_identity_number.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 43 + ...est_api_configure_ipsec_under_gkm_group.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 37 + ...i_configure_ipv4_server_under_gkm_group.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 37 + ...e_pfs_enable_or_disable_under_gkm_group.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 38 + ...ol_version_optimize_cli_under_gkm_group.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 43 + ...est_api_configure_rekey_under_gkm_group.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 40 + ...igure_server_redundancy_under_gkm_group.py | 35 + .../1 | 36 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 38 + ...onfigure_400g_mode_for_port_group_onsvl.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 40 + ...onfigure_400g_mode_for_port_group_onsvl.py | 35 + .../configure_interface_bandwidth/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + .../test_api_configure_interface_bandwidth.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ...gure_interface_no_switchport_voice_vlan.py | 35 + ...nfigure_monitor_erspan_source_interface.py | 36 +- .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ...est_api_unconfigure_interface_bandwidth.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 36 + ...figure_member_vfi_on_vlan_configuration.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 37 + ..._api_configure_mpls_ldp_sync_under_ospf.py | 35 + .../configure_template_pseudowire/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 37 + .../test_api_configure_template_pseudowire.py | 35 + .../test_api_configure_mld_version.py | 12 - .../unconfigure_route_map/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 39 + .../test_api_unconfigure_route_map.py | 35 + .../platform/clear/clear_ip_arp/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 38 + .../clear_ip_arp/test_api_clear_ip_arp.py | 35 + .../configure_graceful_reload/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 35 + .../test_api_configure_graceful_reload.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 38 + ..._api_hw_module_beacon_RP_active_standby.py | 35 + .../execute_dir_file_system/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 39 + .../test_api_execute_dir_file_system.py | 39 + .../mock_data/iosxe/mock_data.yaml | 14 +- .../test_api_configure_hqos_policer_map.py | 10 +- .../mock_data/iosxe/mock_data.yaml | 11 +- ...igure_service_policy_with_queueing_name.py | 12 +- .../configure_table_map_values/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 0 .../test_api_configure_table_map_values.py} | 8 +- .../unconfigure_table_map_values/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 0 .../test_api_unconfigure_table_map_values.py} | 8 +- .../mock_data/iosxe/mock_data.yaml | 2 +- .../clear_pdm_steering_policy/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 38 + .../test_api_clear_pdm_steering_policy.py | 35 + .../upgrade_hw_module_subslot_sfp/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 40 + .../test_api_upgrade_hw_module_subslot_sfp.py | 35 + .../__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 40 + ...re_mdt_auto_discovery_inter_as_mdt_type.py | 35 + .../configure_mdt_default/__init__.py | 0 .../mock_data/iosxe/mock_data.yaml | 37 + .../test_api_configure_mdt_default.py | 35 + pkgs/sdk-pkg/src/genie/libs/sdk/apis/utils.py | 4 +- .../sdk/libs/abstracted_libs/processors.py | 7 +- .../libs/sdk/triggers/blitz/gnmi_util.py | 35 +- .../libs/sdk/triggers/blitz/rpcverify.py | 2 +- .../sdk/triggers/blitz/tests/test_yangexec.py | 2 +- .../libs/sdk/triggers/blitz/verifiers.py | 18 +- 201 files changed, 6201 insertions(+), 668 deletions(-) delete mode 100644 CODING.md create mode 100644 pkgs/clean-pkg/changelog/2023/july.rst create mode 100644 pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/tests/test_rommon_boot.py rename pkgs/{sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_table_map/__init__.py => conf-pkg/changelog/2023/july.rst} (100%) create mode 100644 pkgs/filetransferutils-pkg/changelog/2023/july.rst rename pkgs/{sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/unconfigure_table_map/__init__.py => health-pkg/changelog/2023/july.rst} (100%) create mode 100644 pkgs/ops-pkg/changelog/2023/july.rst create mode 100644 pkgs/robot-pkg/changelog/2023/july.rst create mode 100644 pkgs/sdk-pkg/changelog/2023/july.rst mode change 100755 => 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/asr1k/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/asr1k/configure.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/configure.py mode change 100755 => 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/execute.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/configure/confirm_iox_enabled_requested_storage_media/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/configure/confirm_iox_enabled_requested_storage_media/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/configure/confirm_iox_enabled_requested_storage_media/test_api_confirm_iox_enabled_requested_storage_media.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/execute/set_stack_mode/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/execute/set_stack_mode/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/execute/set_stack_mode/test_api_set_stack_mode.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/asr1k/configure/configure_autoboot/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/asr1k/configure/configure_autoboot/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/asr1k/configure/configure_autoboot/test_api_configure_autoboot.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_best_path_as_path_multipath_relax/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_best_path_as_path_multipath_relax/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_best_path_as_path_multipath_relax/test_api_configure_bgp_best_path_as_path_multipath_relax.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_redistribute_static/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_route_map_route_map_to_bgp_neighbor/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_route_map_route_map_to_bgp_neighbor/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_route_map_route_map_to_bgp_neighbor/test_api_configure_route_map_route_map_to_bgp_neighbor.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/get_running_config_section_dict/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/get_running_config_section_dict/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/get_running_config_section_dict/test_api_get_running_config_section_dict.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_bgp_redistribute_static/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_bgp_redistribute_static/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_bgp_redistribute_static/test_api_unconfigure_bgp_redistribute_static.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_route_map_route_map_to_bgp_neighbor/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_route_map_route_map_to_bgp_neighbor/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_route_map_route_map_to_bgp_neighbor/test_api_unconfigure_route_map_route_map_to_bgp_neighbor.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cts/configure/enable_cts_enforcement_vlan_list/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cts/configure/enable_cts_enforcement_vlan_list/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cts/configure/enable_cts_enforcement_vlan_list/test_api_enable_cts_enforcement_vlan_list.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_vdsl_controller_slot_dump_internal/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_vdsl_controller_slot_dump_internal/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_vdsl_controller_slot_dump_internal/test_api_debug_vdsl_controller_slot_dump_internal.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_access_session_mac_move/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_access_session_mac_move/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_access_session_mac_move/test_api_configure_access_session_mac_move.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_default_spanning_tree/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_default_spanning_tree/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_default_spanning_tree/test_api_configure_default_spanning_tree.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/unconfigure_access_session_mac_move/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/unconfigure_access_session_mac_move/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/unconfigure_access_session_mac_move/test_api_unconfigure_access_session_mac_move.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_fnf_flow_record/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_fnf_flow_record/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_fnf_flow_record/test_api_configure_fnf_flow_record.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_client_protocol_under_gkm_group/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_client_protocol_under_gkm_group/mock_data/iosxe/mock_data.yaml rename test_api_configure_sks_client.py => pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_client_protocol_under_gkm_group/test_api_configure_client_protocol_under_gkm_group.py (51%) create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gikev2_profile_under_gkm_group/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gikev2_profile_under_gkm_group/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gikev2_profile_under_gkm_group/test_api_configure_gikev2_profile_under_gkm_group.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gkm_group_identity_number/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gkm_group_identity_number/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gkm_group_identity_number/test_api_configure_gkm_group_identity_number.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipsec_under_gkm_group/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipsec_under_gkm_group/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipsec_under_gkm_group/test_api_configure_ipsec_under_gkm_group.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipv4_server_under_gkm_group/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipv4_server_under_gkm_group/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipv4_server_under_gkm_group/test_api_configure_ipv4_server_under_gkm_group.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_pfs_enable_or_disable_under_gkm_group/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_pfs_enable_or_disable_under_gkm_group/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_pfs_enable_or_disable_under_gkm_group/test_api_configure_pfs_enable_or_disable_under_gkm_group.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_protocol_version_optimize_cli_under_gkm_group/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_protocol_version_optimize_cli_under_gkm_group/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_protocol_version_optimize_cli_under_gkm_group/test_api_configure_protocol_version_optimize_cli_under_gkm_group.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_rekey_under_gkm_group/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_rekey_under_gkm_group/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_rekey_under_gkm_group/test_api_configure_rekey_under_gkm_group.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_server_redundancy_under_gkm_group/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_server_redundancy_under_gkm_group/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_server_redundancy_under_gkm_group/test_api_configure_server_redundancy_under_gkm_group.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/configure_400g_mode_for_port_group_onsvl/1 create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/configure_400g_mode_for_port_group_onsvl/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/configure_400g_mode_for_port_group_onsvl/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/configure_400g_mode_for_port_group_onsvl/test_api_configure_400g_mode_for_port_group_onsvl.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/unconfigure_400g_mode_for_port_group_onsvl/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/unconfigure_400g_mode_for_port_group_onsvl/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/unconfigure_400g_mode_for_port_group_onsvl/test_api_unconfigure_400g_mode_for_port_group_onsvl.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_bandwidth/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_bandwidth/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_bandwidth/test_api_configure_interface_bandwidth.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_no_switchport_voice_vlan/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_no_switchport_voice_vlan/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_no_switchport_voice_vlan/test_api_configure_interface_no_switchport_voice_vlan.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/unconfigure_interface_bandwidth/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/unconfigure_interface_bandwidth/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/unconfigure_interface_bandwidth/test_api_unconfigure_interface_bandwidth.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_member_vfi_on_vlan_configuration/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_member_vfi_on_vlan_configuration/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_member_vfi_on_vlan_configuration/test_api_configure_member_vfi_on_vlan_configuration.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_mpls_ldp_sync_under_ospf/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_mpls_ldp_sync_under_ospf/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_mpls_ldp_sync_under_ospf/test_api_configure_mpls_ldp_sync_under_ospf.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_template_pseudowire/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_template_pseudowire/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_template_pseudowire/test_api_configure_template_pseudowire.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/ospf/configure/unconfigure_route_map/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/ospf/configure/unconfigure_route_map/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/ospf/configure/unconfigure_route_map/test_api_unconfigure_route_map.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/clear/clear_ip_arp/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/clear/clear_ip_arp/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/clear/clear_ip_arp/test_api_clear_ip_arp.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_graceful_reload/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_graceful_reload/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_graceful_reload/test_api_configure_graceful_reload.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/hw_module_beacon_RP_active_standby/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/hw_module_beacon_RP_active_standby/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/hw_module_beacon_RP_active_standby/test_api_hw_module_beacon_RP_active_standby.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/execute/execute_dir_file_system/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/execute/execute_dir_file_system/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/execute/execute_dir_file_system/test_api_execute_dir_file_system.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_table_map_values/__init__.py rename pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/{configure_table_map => configure_table_map_values}/mock_data/iosxe/mock_data.yaml (100%) rename pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/{configure_table_map/test_api_configure_table_map.py => configure_table_map_values/test_api_configure_table_map_values.py} (82%) create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/unconfigure_table_map_values/__init__.py rename pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/{unconfigure_table_map => unconfigure_table_map_values}/mock_data/iosxe/mock_data.yaml (100%) rename pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/{unconfigure_table_map/test_api_unconfigure_table_map.py => unconfigure_table_map_values/test_api_unconfigure_table_map_values.py} (81%) create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/clear_pdm_steering_policy/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/clear_pdm_steering_policy/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/clear_pdm_steering_policy/test_api_clear_pdm_steering_policy.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/upgrade_hw_module_subslot_sfp/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/upgrade_hw_module_subslot_sfp/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/upgrade_hw_module_subslot_sfp/test_api_upgrade_hw_module_subslot_sfp.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_auto_discovery_inter_as_mdt_type/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_auto_discovery_inter_as_mdt_type/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_auto_discovery_inter_as_mdt_type/test_api_configure_mdt_auto_discovery_inter_as_mdt_type.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_default/__init__.py create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_default/mock_data/iosxe/mock_data.yaml create mode 100644 pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_default/test_api_configure_mdt_default.py diff --git a/CODING.md b/CODING.md deleted file mode 100644 index dea1e7ada..000000000 --- a/CODING.md +++ /dev/null @@ -1,127 +0,0 @@ -# Coding Guidelines - -*Share-ability, Object Oriented Programming, re-usability.* - -Genie promotes the idea of reusability that's why we came up with the below -guideline to get standarized shareable/reusable libraries that everyone -understand and benefit from. - -# Documentation - -Documentation is part of the development. All code must be commented to help the -reader. All new features and enhancements to any feature should also modify the -main documentation. - -# Triggers - -* A Trigger is an aetest testcase. A testcase can be divided in multiple test -sections. Using test section is very good idea! Using multiple test sections -means that your trigger can be inherited, and specific test section that needs -to be changed, modified with every other test section remaining status quo. -__Note:__ Every action of the trigger should be its own test section this -includes any checking (which does not equal to local verification) that should -be done before or after the trigger. - -* In Triggers where device configuration must be sent to the device, using Genie -__Conf__ object as it makes it OS and Interface management agnostic. - -* For checks in the Trigger, use Genie __OPS__, as it makes it OS and Interface -management agnostic. Make sure to pass attributes when calling OPS to learn -what specifically is needed to reduce run time. - -* For objects that is needed to be used throughout/later - make sure to use -__self__ to pass the object. - -* The Template directory contains all the base triggers - make sure to create -template for any trigger that does not have the base template and place it -under genielibs/src/sdk/triggers/template/ directory. - -# Verifications - -* Verification is simple, just create a parser or an Ops object, and link it in -the verifications file. - -* Make sure to evaluate [ParserGen] for your parser! It could save you hours. - -[ParserGen]: https://pubhub.devnetcloud.com/media/pyats-packages/docs/parsergen/index.html - -* Before writing a parser make sure to check if one already exists. - -# Generic Libraries - -Library APIs must be generic, with parameters that dictates its flow. - -Make sure to group the APIs into classification and create respective library file -for each classification. - -Let's say you are writing a trigger called : UnconfigConfigOspf. This trigger -requires to save the configuration before removing Ospf, and then re-applying it. -We could copy paste some code to do the action, or we could use a Tftp object, -which has some functionality to copy a file to a device, and copy a -configuration from the device to a linux server. Its easy to imagine that a -lot of other people requires the same. Why don't we take this Tftp library and -share it with other script developer? - -This can be done via a pypi packages, or something similar. For this to be -doable, when developing the Tftp class, we must make it independent of Genie, -and receive everything as argument. [GenieFileTransferUtilsLibs] pypi package -has been implemenetd for that purpose. - -[GenieFileTransferUtilsLibs]: https://pubhub.devnetcloud.com/media/pyats-packages/docs/geniefiletransferutilslibs/index.html# - -This is something to keep in mind for all triggers. Think broader than just -this trigger, let's make it useful for everybody - -# Headers - -All headers must follow the following [Google Style] docstring. - -[Google Style]: http://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html - -__Header example__ -``` -'''Some text explaining what this module is about''' - -class MySample(object): - '''MySample class example - - Explains what the libraries class do in as much details - it requires. - - If there is a __init__, it is also documented here. - ''' - - def my_func(self, attr1, attr2=None): - '''1 Liner explaining what it does - - More in details explanation of what this function does. - In the case of triggers, the steps should be here. - - Args: - attr1 (`str`): The first parameter. - attr2 (`str`, optional): The second parameter. Defaults to None. - Second line of description should be indented. - *args: Variable length argument list. - **kwargs: Arbitrary keyword arguments. - - Returns: - bool: True if successful, False otherwise. - - Raises: - AttributeError: The ``Raises`` section is a list of all exceptions - that are relevant to the interface. - ValueError: If `param2` is equal to `param1`. - - Example: - Examples should be written in doctest format, and should illustrate how - to use the function. - - >>> my = MySample() - >>> print(my.my_func(5) - 5 - ''' - # Then your code - return attr1 -``` - -In the case of trigger, *Example* is optional. diff --git a/Makefile b/Makefile index 8ea23712f..cf4feecd0 100644 --- a/Makefile +++ b/Makefile @@ -45,11 +45,11 @@ CYTHON_CMD = compileAll # Development pkg requirements RELATED_PKGS = genie.libs.health genie.libs.clean genie.libs.conf genie.libs.ops genie.libs.robot genie.libs.sdk RELATED_PKGS += genie.libs.filetransferutils -DEPENDENCIES = restview psutil==5.9.2 Sphinx wheel asynctest pysnmp +# pinning the version of pysnmp and pyasn1 to fix the type error when using execute_power_cycle_device api +DEPENDENCIES = restview psutil==5.9.2 Sphinx wheel asynctest pysnmp==4.4.9 pyasn1==0.4.8 DEPENDENCIES += sphinx-rtd-theme==1.1.0 pyftpdlib tftpy\<0.8.1 robotframework -# cisco-distutils requires Cython 0.29.22 # aiohttp-swagger 1.0.15 requires jinja2==2.11.2 and markupsafe==1.1.1 -DEPENDENCIES += Cython==0.29.22 requests ruamel.yaml grpcio protobuf\<=3.20.1 jinja2==2.11.2 markupsafe==1.1.1 +DEPENDENCIES += Cython requests ruamel.yaml grpcio protobuf jinja2==2.11.2 markupsafe==1.1.1 # aiohttp requires charset-normalizer<3.0.0 DEPENDENCIES += charset-normalizer==2.1.1 # Internal variables. diff --git a/pkgs/clean-pkg/changelog/2023/july.rst b/pkgs/clean-pkg/changelog/2023/july.rst new file mode 100644 index 000000000..4837c78e2 --- /dev/null +++ b/pkgs/clean-pkg/changelog/2023/july.rst @@ -0,0 +1,16 @@ +-------------------------------------------------------------------------------- + New +-------------------------------------------------------------------------------- + +* iosxe/cat9k + * Updated the rommon boot clean stage by adding recovery credentials and + +* iosxe + * Updated dialogs on reload clean stage to support asr1k. + * Added new clean stage RommonBoot for iosxe + * Added `directory` key to `install_image` stage schema + * To specify a directory where packages.conf is created + * Added `skip_boot_variable` keyto `install_image` stage schema + * To skip boot variable handling in `install_image` stage + + diff --git a/pkgs/clean-pkg/sdk_generator/output/github_clean.json b/pkgs/clean-pkg/sdk_generator/output/github_clean.json index 352ae997f..c9766879e 100644 --- a/pkgs/clean-pkg/sdk_generator/output/github_clean.json +++ b/pkgs/clean-pkg/sdk_generator/output/github_clean.json @@ -98,7 +98,7 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/sdwan/stages.py#L969" }, "uid": "ChangeBootVariable", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L29" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L31" }, "nxos": { "doc": "This stage configures boot variables of the device using the following steps:\n\n - Delete existing boot variables.\n - Configure boot variables using the provided 'images'.\n - Write memory.\n - Verify the boot variables are as expected.\n\nStage Schema\n------------\nchange_boot_variable:\n\n images:\n\n kickstart (list, optional): The kickstart image file\n\n system (list): The system image file\n\n copy_vdc_all (bool, optional): If True copy onto all VDCs. Defaults to False.\n\n timeout (int, optional): Execute timeout in seconds. Defaults to 300.\n\n max_time (int, optional): Maximum time in seconds allowed for verifications.\n Defaults to 300.\n\n check_interval (int, optional): How often to check verifications in seconds.\n Defaults to 60.\n\n standby_copy_max_time (int, optional): Maximum time in seconds allowed for\n copying to standby RP. Defaults to 300.\n\n standby_copy_check_interval (int, optional): How often to check if the copy\n to the standby RP is complete. Defaults to 20.\n\n current_running_image (bool, optional): Set the boot variable to the currently\n running image from the show version command instead of the image provided.\n Defaults to False.\n\nExample\n-------\nchange_boot_variable:\n images:\n kickstart: bootflash:/kisckstart.gbin\n system: bootflash:/system.gbin\n copy_vdc_all: True\n timeout: 150\n max_time: 300\n check_interval: 20\n standby_copy_max_time: 100\n standby_copy_check_interval: 10\n", @@ -303,11 +303,11 @@ "uid": "InstallImage", "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat3k/stages.py#L12" }, - "doc": "This stage installs a provided image onto the device using the install\nCLI. It also handles the automatic reloading of your device after the\ninstall is complete.\n\nStage Schema\n------------\ninstall_image:\n images (list): Image to install\n\n save_system_config (bool, optional): Whether or not to save the system\n config if it was modified. Defaults to False.\n\n install_timeout (int, optional): Maximum time in seconds to wait for install\n process to finish. Defaults to 500.\n\n reload_timeout (int, optional): Maximum time in seconds to wait for reload\n process to finish. Defaults to 800.\n\n reload_service_args (optional):\n\n reload_creds (str, optional): The credential to use after the reload is\n complete. The credential name comes from the testbed yaml file.\n Defaults to the 'default' credential.\n\n prompt_recovery (bool, optional): Enable or disable the prompt recovery\n feature of unicon. Defaults to True.\n\n append_error_pattern (list, optional): List of regex strings to check for,\n to be appended to the default error pattern list. Default: [r\"FAILED:.* \",]\n\n : \n Any other arguments that the Unicon reload service supports\n\nExample\n-------\ninstall_image:\n images:\n - /auto/some-location/that-this/image/stay-isr-image.bin\n save_system_config: True\n install_timeout: 1000\n reload_timeout: 1000\n\n", + "doc": "This stage installs a provided image onto the device using the install\nCLI. It also handles the automatic reloading of your device after the\ninstall is complete.\n\nStage Schema\n------------\ninstall_image:\n images (list): Image to install\n\n directory (str): directory where packages.conf is created\n \n save_system_config (bool, optional): Whether or not to save the system\n config if it was modified. Defaults to False.\n\n install_timeout (int, optional): Maximum time in seconds to wait for install\n process to finish. Defaults to 500.\n\n reload_timeout (int, optional): Maximum time in seconds to wait for reload\n process to finish. Defaults to 800.\n\n reload_service_args (optional):\n\n reload_creds (str, optional): The credential to use after the reload is\n complete. The credential name comes from the testbed yaml file.\n Defaults to the 'default' credential.\n\n prompt_recovery (bool, optional): Enable or disable the prompt recovery\n feature of unicon. Defaults to True.\n\n append_error_pattern (list, optional): List of regex strings to check for,\n to be appended to the default error pattern list. Default: [r\"FAILED:.* \",]\n\n : \n Any other arguments that the Unicon reload service supports\n\nExample\n-------\ninstall_image:\n images:\n - /auto/some-location/that-this/image/stay-isr-image.bin\n save_system_config: True\n install_timeout: 1000\n reload_timeout: 1000\n\n", "module_name": "stages.stages", "package": "genie.libs.clean", "uid": "InstallImage", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L496" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L506" }, "iosxr": { "ncs540": { @@ -343,7 +343,7 @@ "module_name": "stages.stages", "package": "genie.libs.clean", "uid": "InstallPackages", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L692" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L721" } }, "InstallRemoveInactive": { @@ -352,7 +352,7 @@ "module_name": "stages.stages", "package": "genie.libs.clean", "uid": "InstallRemoveInactive", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L441" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L451" } }, "LoadPies": { @@ -415,7 +415,7 @@ "module_name": "stages.stages", "package": "genie.libs.clean", "uid": "Reload", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L776" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L805" } }, "RevertVmSnapshot": { @@ -430,12 +430,17 @@ "RommonBoot": { "iosxe": { "cat9k": { - "doc": "This stage boots an image onto the device through rommon. Using either\na local image or one from a tftp server.\n\nStage Schema\n------------\nrommon_boot:\n\n image (list): Image to boot with\n\n tftp (optional): If specified boot via tftp otherwise boot using local\n image.\n\n ip_address (list): Management ip address to configure to reach to the\n tftp server\n\n subnet_mask (str): Management subnet mask\n\n gateway (str): Management gateway\n\n tftp_server (str): Tftp server that is reachable with management interface\n\n save_system_config (bool, optional): Whether or not to save the\n system config if it was modified. Defaults to True.\n\n timeout (int, optional): Max time allowed for the booting process.\n Defaults to 600.\n\n config_reg_timeout (int, optional): Max time to set config-register.\n Defaults to 30.\n\nExample\n-------\nrommon_boot:\n image:\n - /auto/some-location/that-this/image/stay-isr-image.bin\n tftp:\n ip_address: [10.1.7.126, 10.1.7.127]\n gateway: 10.1.7.1\n subnet_mask: 255.255.255.0\n tftp_server: 11.1.7.251\n save_system_config: False\n timeout: 600\n config_reg_timeout: 10\n\nThere is more than one ip address, one for each supervisor.\n", + "doc": "This stage boots an image onto the device through rommon. Using either\na local image or one from a tftp server.\n\nStage Schema\n------------\nrommon_boot:\n\n image (list): Image to boot with\n\n tftp (optional): If specified boot via tftp otherwise boot using local\n image.\n\n ip_address (list, optional): Management ip address to configure to reach to the\n tftp server\n\n subnet_mask (str, optional): Management subnet mask\n\n gateway (str, optional): Management gateway\n\n tftp_server (str, optional): Tftp server that is reachable with management interface\n \n recovery_password (str): Enable password for device\n required after bootup. Defaults to None.\n\n recovery_enable_password (str): Enable password for device\n required after bootup. Defaults to None.\n\n recovery_username (str): Enable username for device\n required after bootup. Defaults to None.\n\n save_system_config (bool, optional): Whether or not to save the\n system config if it was modified. Defaults to True.\n\n timeout (int, optional): Max time allowed for the booting process.\n Defaults to 600.\n\n config_reg_timeout (int, optional): Max time to set config-register.\n Defaults to 30.\n\nExample\n-------\nrommon_boot:\n image:\n - /auto/some-location/that-this/image/stay-isr-image.bin\n tftp:\n ip_address: [10.1.7.126, 10.1.7.127]\n gateway: 10.1.7.1\n subnet_mask: 255.255.255.0\n tftp_server: 11.1.7.251\n recovery_password: nbv_12345\n recovery_username: user_12345\n recovery_enable_password: en\n save_system_config: False\n timeout: 600\n config_reg_timeout: 10\n\nThere is more than one ip address, one for each supervisor.\n\nTo pass tftp information and tftp server ip from the testbed, refer the example below\n\n\ntestbed:\n name: \n passwords: \n tacacs: test\n enable: test\n servers:\n tftp: \n address: 10.x.x.x\n credentials:\n default:\n username: user\n password: 1234\ndevices:\n uut1:\n management:\n address:\n ipv4: '10.1.1.1/16'\n gateway:\n ipv4: '10.1.0.1'\n\n", "module_name": "stages.stages", "package": "genie.libs.clean", "uid": "RommonBoot", "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/stages.py#L204" - } + }, + "doc": "This stage boots an image onto the device through rommon. Using either\na local image or one from a tftp server.\n\nStage Schema\n------------\nrommon_boot:\n\n image (list): Image to boot with\n\n tftp (optional): If specified boot via tftp otherwise boot using local\n image.\n\n ip_address (list, optional): Management ip address to configure to reach to the\n tftp server\n\n subnet_mask (str, optional): Management subnet mask\n\n gateway (str, optional): Management gateway\n\n tftp_server (str, optional): Tftp server that is reachable with management interface\n \n recovery_password (str): Enable password for device\n required after bootup. Defaults to None.\n\n recovery_enable_password (str): Enable password for device\n required after bootup. Defaults to None.\n\n recovery_username (str): Enable username for device\n required after bootup. Defaults to None.\n\n save_system_config (bool, optional): Whether or not to save the\n system config if it was modified. Defaults to True.\n\n timeout (int, optional): Max time allowed for the booting process.\n Defaults to 600.\n\n config_reg_timeout (int, optional): Max time to set config-register.\n Defaults to 30.\n \n rommon_timeout (int, optional): Timeout after bringing the device to rommon. Default to 15 sec.\n\n reconnect_timeout (int, optional): Timeout to reconnect the device after booting. Default to 90 sec.\n\nExample\n-------\nrommon_boot:\n image:\n - /auto/some-location/that-this/image/stay-isr-image.bin\n tftp:\n ip_address: [10.1.7.126, 10.1.7.127]\n gateway: 10.1.7.1\n subnet_mask: 255.255.255.0\n tftp_server: 11.1.7.251\n recovery_password: nbv_12345\n recovery_username: user_12345\n recovery_enable_password: en\n save_system_config: False\n timeout: 600\n config_reg_timeout: 10\n\nThere is more than one ip address, one for each supervisor.\n\nTo pass tftp information and tftp server ip from the testbed, refer the example below\n\n\ntestbed:\n name: \n passwords:\n tacacs: test\n enable: test\n servers:\n tftp: \n address: 10.x.x.x\n credentials:\n default:\n username: user\n password: 1234\ndevices:\n uut1:\n management:\n address:\n ipv4: '10.1.1.1/16'\n gateway:\n ipv4: '10.1.0.1'\n\n", + "module_name": "stages.stages", + "package": "genie.libs.clean", + "uid": "RommonBoot", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L1050" } }, "RunConfigure": { @@ -500,7 +505,7 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/sdwan/stages.py#L395" }, "uid": "TftpBoot", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L180" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/stages.py#L182" }, "iosxr": { "doc": "This stage boots a new image onto your device using the tftp booting\nmethod.\n\nStage Schema\n------------\ntftp_boot:\n\n image (list): Image to boot with\n\n ip_address (list): Management ip address to configure to reach to the\n tftp server\n\n subnet_mask (str): Management subnet mask\n\n gateway (str): Management gateway\n\n tftp_server (str): Tftp server that is reachable with management interface\n\n timeout (int, optional): Max time during which tftp boot must\n complete. Defaults to 600.\n\n config_reg_timeout (int, optional): Max time to set config-register.\n Defaults to 30.\n\n device_reload_sleep (int, optional): Time in seconds to wait after\n reloading the device. Defaults to 20.\n\n recovery_username (str, optional): Enable username for device\n required after bootup. Defaults to None.\n\n recovery_password (str, optional): Enable password for device\n required after bootup. Defaults to None.\n\nExample\n-------\ntftp_boot:\n image:\n - /auto/some-location/that-this/image/asr9k-mini-px.vm\n ip_address: [10.1.7.126, 10.1.7.127]\n gateway: 10.1.7.1\n subnet_mask: 255.255.255.0\n tftp_server: 11.1.7.251\n timeout: 1200\n config_reg_timeout: 60\n device_reload_sleep: 300\n recovery_username: admin\n recovery_password: nbv_12345\n\nNote: There is more than one ip address, one for each supervisor.\n", @@ -524,7 +529,7 @@ "module_name": "stages.stages", "package": "genie.libs.clean", "uid": "VerifyAccessTunnelSummary", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/stages.py#L507" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/stages.py#L576" } } }, @@ -546,7 +551,7 @@ "module_name": "stages.stages", "package": "genie.libs.clean", "uid": "VerifyApFabricSummary", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/stages.py#L394" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/stages.py#L463" } } }, @@ -601,7 +606,7 @@ "module_name": "stages.stages", "package": "genie.libs.clean", "uid": "VerifyLispSessionEstablished", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/stages.py#L450" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/stages.py#L519" } } }, @@ -619,7 +624,7 @@ "module_name": "stages.stages", "package": "genie.libs.clean", "uid": "VerifyRunningImage", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/stages.py#L643" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/stages.py#L712" } }, "iosxr": { @@ -637,7 +642,7 @@ "module_name": "stages.stages", "package": "genie.libs.clean", "uid": "VerifyWirelessProcess", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/stages.py#L577" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/stages.py#L646" } } }, diff --git a/pkgs/clean-pkg/src/genie/libs/clean/__init__.py b/pkgs/clean-pkg/src/genie/libs/clean/__init__.py index b0afaf072..e70a27afa 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__ = '23.6' +__version__ = '23.7' __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/stages.py b/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/stages.py index cc9d73d73..29e24fb10 100644 --- a/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/stages.py +++ b/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/cat9k/stages.py @@ -214,14 +214,23 @@ class RommonBoot(BaseStage): tftp (optional): If specified boot via tftp otherwise boot using local image. - ip_address (list): Management ip address to configure to reach to the + ip_address (list, optional): Management ip address to configure to reach to the tftp server - subnet_mask (str): Management subnet mask + subnet_mask (str, optional): Management subnet mask - gateway (str): Management gateway + gateway (str, optional): Management gateway - tftp_server (str): Tftp server that is reachable with management interface + tftp_server (str, optional): Tftp server that is reachable with management interface + + recovery_password (str): Enable password for device + required after bootup. Defaults to None. + + recovery_enable_password (str): Enable password for device + required after bootup. Defaults to None. + + recovery_username (str): Enable username for device + required after bootup. Defaults to None. save_system_config (bool, optional): Whether or not to save the system config if it was modified. Defaults to True. @@ -242,16 +251,46 @@ class RommonBoot(BaseStage): gateway: 10.1.7.1 subnet_mask: 255.255.255.0 tftp_server: 11.1.7.251 + recovery_password: nbv_12345 + recovery_username: user_12345 + recovery_enable_password: en save_system_config: False timeout: 600 config_reg_timeout: 10 There is more than one ip address, one for each supervisor. + +To pass tftp information and tftp server ip from the testbed, refer the example below + + +testbed: + name: + passwords: + tacacs: test + enable: test + servers: + tftp: + address: 10.x.x.x + credentials: + default: + username: user + password: 1234 +devices: + uut1: + management: + address: + ipv4: '10.1.1.1/16' + gateway: + ipv4: '10.1.0.1' + """ # ================= # Argument Defaults # ================= + RECOVERY_PASSWORD = None + RECOVERY_ENABLE_PASSWORD = None + RECOVERY_USERNAME = None SAVE_SYSTEM_CONFIG = True TIMEOUT = 600 ETHER_PORT = 0 @@ -262,12 +301,15 @@ class RommonBoot(BaseStage): schema = { 'image': list, Optional('tftp'): { - 'ip_address': list, - 'subnet_mask': str, - 'gateway': str, - 'tftp_server': str + Optional('ip_address'): list, + Optional('subnet_mask'): str, + Optional('gateway'): str, + Optional('tftp_server'): str }, Optional('save_system_config'): bool, + Optional('recovery_password'): str, + Optional('recovery_username'): str, + Optional('recovery_enable_password'): str, Optional('timeout'): int, Optional('ether_port'): int } @@ -339,10 +381,30 @@ def reload_check(device, target): log.info("Device is reloading") device.destroy_all() - def rommon_boot(self, steps, device, image, tftp=None, timeout=TIMEOUT, ether_port=ETHER_PORT): + def rommon_boot(self, steps, device, image, tftp=None, timeout=TIMEOUT, recovery_password=RECOVERY_PASSWORD, + recovery_username=RECOVERY_USERNAME, recovery_enable_password=RECOVERY_ENABLE_PASSWORD, ether_port=ETHER_PORT): with steps.start("Boot device from rommon") as step: - + if not tftp: + tftp = {} + + # Check if management attribute in device object, if not set to empty dict + if not hasattr(device, 'management'): + setattr(device, "management", {}) + + try: + # Getting the tftp information, if the info not provided by user, it takes from testbed + tftp.setdefault("ip_address", [str(device.management.get('address', '').get('ipv4', '').ip)]) + tftp.setdefault("subnet_mask", str(device.management.get('address', '').get('ipv4', '').netmask)) + tftp.setdefault("gateway", str(device.management.get('gateway').get('ipv4'))) + tftp.setdefault("tftp_server", device.testbed.servers.get('tftp', {}).get('address')) + + log.info("checking if all the tftp information is given by the user") + if not all(tftp.values()): + log.warning(f"Some TFTP information is missing: {tftp}") + except Exception as e: + log.warning(f"Tftp information is missing. Please provide it either from testbed or clean stage {tftp}.") + # Need to instantiate to get the device.start # The device.start only works because of a|b device.instantiate(connection_timeout=timeout) @@ -370,6 +432,13 @@ def rommon_boot(self, steps, device, image, tftp=None, timeout=TIMEOUT, ether_po else: common_kwargs.update({'golden_image': image}) + # Update recovery username and password + common_kwargs.update({ + 'recovery_username': recovery_username, + 'recovery_en_password':recovery_enable_password, + 'recovery_password': recovery_password + }) + try: pcall( targets=abstract.clean.recovery.recovery.recovery_worker, 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 ed8736cf4..58113fd97 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 @@ -5,6 +5,8 @@ # Python import logging import time +from ipaddress import IPv4Address, IPv6Address, IPv4Interface, IPv6Interface + # pyATS from pyats.async_ import pcall @@ -320,6 +322,14 @@ def go_to_rommon(self, steps, device, save_system_config=SAVE_SYSTEM_CONFIG): action='sendline()', loop_continue=False, continue_timer=False), + Statement(pattern=r".*Continue to reload\? \(yes\/\[no\]\)\:.*", + action='sendline(yes)', + loop_continue=False, + continue_timer=False), + Statement(pattern=r".*(Proceed|Continue) (with|to) reload\? (\[confirm\]|\(yes\/\[no\]\)\:).*", + action='sendline()', + loop_continue=False, + continue_timer=False), ]) # Using sendline, as we dont want unicon boot to kick in and send "boot" @@ -503,6 +513,8 @@ class InstallImage(BaseStage): install_image: images (list): Image to install + directory (str): directory where packages.conf is created + save_system_config (bool, optional): Whether or not to save the system config if it was modified. Defaults to False. @@ -549,15 +561,18 @@ class InstallImage(BaseStage): 'append_error_pattern': [r"FAILED:.* ",], } ISSU = False + SKIP_BOOT_VARIABLE = False # ============ # Stage Schema # ============ schema = { Optional('images'): list, + Optional('directory'): str, Optional('save_system_config'): bool, Optional('install_timeout'): int, Optional('reload_timeout'): int, Optional('issu'): bool, + Optional('skip_boot_variable'): bool, Optional('reload_service_args'): { Optional('reload_creds'): str, Optional('prompt_recovery'): bool, @@ -577,35 +592,45 @@ class InstallImage(BaseStage): 'install_image' ] - def delete_boot_variable(self, steps, device,): + def delete_boot_variable(self, steps, device, issu=ISSU, skip_boot_variable=SKIP_BOOT_VARIABLE): with steps.start("Delete all boot variables") as step: - try: - device.configure('no boot system') - except Exception as e: - step.failed("Failed to delete configured boot variables", - from_exception=e) + if issu or skip_boot_variable: + step.skipped() + else: + try: + device.configure('no boot system') + except Exception as e: + step.failed("Failed to delete configured boot variables", + from_exception=e) - def set_boot_variable(self, steps, device): + def set_boot_variable(self, steps, device, directory=None, issu=ISSU, skip_boot_variable=SKIP_BOOT_VARIABLE): with steps.start("Configure system boot variable for 'install mode'") as step: - # Figure out the directory that the image files get unpacked to - output = device.parse('dir') - directory = output['dir']['dir'] - files = output.get('dir', {}).get(directory, {}).get('files', {}) + if issu or skip_boot_variable: + step.skipped() + else: + # Figure out the directory that the image files get unpacked to + if not directory: + output = device.parse(f'dir') + directory = output['dir']['dir'] + output = device.parse('dir') + else: + output = device.parse(f'dir {directory}') + files = output.get('dir', {}).get(directory, {}).get('files', {}) - if not files.get('packages.conf'): - # create packages.conf, if it does not exist - device.tclsh('puts [open "%spackages.conf" w+] {}' % directory) + if not files.get('packages.conf'): + # create packages.conf, if it does not exist + device.tclsh('puts [open "%spackages.conf" w+] {}' % directory) - # packages.conf is hardcoded because install mode boots using an - # unpacked packages.conf file - self.new_boot_var = directory+'packages.conf' + # packages.conf is hardcoded because install mode boots using an + # unpacked packages.conf file + self.new_boot_var = directory+'packages.conf' - try: - device.api.execute_set_boot_variable( - boot_images=[self.new_boot_var], timeout=60) - except Exception as e: - step.failed("Failed to configure the boot variable", - from_exception=e) + try: + device.api.execute_set_boot_variable( + boot_images=[self.new_boot_var], timeout=60) + except Exception as e: + step.failed("Failed to configure the boot variable", + from_exception=e) def save_running_config(self, steps, device): with steps.start("Save the running config to the startup config") as step: @@ -616,12 +641,15 @@ def save_running_config(self, steps, device): step.failed("Failed to save the running config", from_exception=e) - def verify_boot_variable(self, steps, device): + def verify_boot_variable(self, steps, device, issu=ISSU, skip_boot_variable=SKIP_BOOT_VARIABLE): # Verify next reload boot variables are correctly set with steps.start("Verify next reload boot variables are correctly set") as step: - if not device.api.verify_boot_variable(boot_images=[self.new_boot_var]): - step.failed(f"Boot variables are not correctly set to " - f"{self.new_boot_var}") + if issu or skip_boot_variable: + step.skipped() + else: + if not device.api.verify_boot_variable(boot_images=[self.new_boot_var]): + step.failed(f"Boot variables are not correctly set to " + f"{self.new_boot_var}") def install_image(self, steps, device, images, save_system_config=SAVE_SYSTEM_CONFIG, @@ -686,7 +714,8 @@ def install_image(self, steps, device, images, image_mapping = self.history['InstallImage'].parameters.setdefault( 'image_mapping', {}) - image_mapping.update({images[0]: self.new_boot_var}) + if hasattr(self, 'new_boot_var'): + image_mapping.update({images[0]: self.new_boot_var}) class InstallPackages(BaseStage): @@ -886,6 +915,17 @@ def reload(self, steps, device, reload_service_args=None): self.RELOAD_SERVICE_ARGS.update(reload_service_args) self.reload_service_args = self.RELOAD_SERVICE_ARGS + reload_dialog = Dialog([ + Statement(pattern=r".*Do you wish to proceed with reload anyway\[confirm\].*", + action='sendline(y)', + loop_continue=True, + continue_timer=False), + ]) + + self.reload_service_args.update({ + 'reply': reload_dialog + }) + with steps.start(f"Reload {device.name}") as step: try: @@ -1006,3 +1046,256 @@ def check_modules(self, steps, device, check_modules=None): step.failed("Modules are not in a stable state", from_exception=e) + +class RommonBoot(BaseStage): + """This stage boots an image onto the device through rommon. Using either +a local image or one from a tftp server. + +Stage Schema +------------ +rommon_boot: + + image (list): Image to boot with + + tftp (optional): If specified boot via tftp otherwise boot using local + image. + + ip_address (list, optional): Management ip address to configure to reach to the + tftp server + + subnet_mask (str, optional): Management subnet mask + + gateway (str, optional): Management gateway + + tftp_server (str, optional): Tftp server that is reachable with management interface + + recovery_password (str): Enable password for device + required after bootup. Defaults to None. + + recovery_enable_password (str): Enable password for device + required after bootup. Defaults to None. + + recovery_username (str): Enable username for device + required after bootup. Defaults to None. + + save_system_config (bool, optional): Whether or not to save the + system config if it was modified. Defaults to True. + + timeout (int, optional): Max time allowed for the booting process. + Defaults to 600. + + config_reg_timeout (int, optional): Max time to set config-register. + Defaults to 30. + + rommon_timeout (int, optional): Timeout after bringing the device to rommon. Default to 15 sec. + + reconnect_timeout (int, optional): Timeout to reconnect the device after booting. Default to 90 sec. + +Example +------- +rommon_boot: + image: + - /auto/some-location/that-this/image/stay-isr-image.bin + tftp: + ip_address: [10.1.7.126, 10.1.7.127] + gateway: 10.1.7.1 + subnet_mask: 255.255.255.0 + tftp_server: 11.1.7.251 + recovery_password: nbv_12345 + recovery_username: user_12345 + recovery_enable_password: en + save_system_config: False + timeout: 600 + config_reg_timeout: 10 + +There is more than one ip address, one for each supervisor. + +To pass tftp information and tftp server ip from the testbed, refer the example below + + +testbed: + name: + passwords: + tacacs: test + enable: test + servers: + tftp: + address: 10.x.x.x + credentials: + default: + username: user + password: 1234 +devices: + uut1: + management: + address: + ipv4: '10.1.1.1/16' + gateway: + ipv4: '10.1.0.1' + +""" + + # ================= + # Argument Defaults + # ================= + RECOVERY_PASSWORD = None + RECOVERY_ENABLE_PASSWORD = None + RECOVERY_USERNAME = None + SAVE_SYSTEM_CONFIG = True + TIMEOUT = 600 + ETHER_PORT = 0 + ROMMON_TIMEOUT = 15 + RECONNECT_TIMEOUT = 90 + + + # ============ + # Stage Schema + # ============ + schema = { + 'image': list, + Optional('tftp'): { + Optional('ip_address'): list, + Optional('subnet_mask'): str, + Optional('gateway'): str, + Optional('tftp_server'): str + }, + Optional('save_system_config'): bool, + Optional('recovery_password'): str, + Optional('recovery_username'): str, + Optional('recovery_enable_password'): str, + Optional('timeout'): int, + Optional('ether_port'): int, + Optional('rommon_timeout'): int, + } + + # ============================== + # Execution order of Stage steps + # ============================== + exec_order = [ + 'delete_boot_variables', + 'write_memory', + 'go_to_rommon', + 'rommon_boot', + 'reconnect', + 'enable_device_autoboot' + ] + + def delete_boot_variables(self, steps, device): + with steps.start("Delete configured boot variables") as step: + try: + device.configure('no boot system') + except Exception as e: + step.failed("Failed to delete configured boot variables", from_exception=e) + + def write_memory(self, steps, device): + with steps.start("Write memory") as step: + try: + device.api.execute_write_memory() + except Exception as e: + step.failed("Failed to write memory", from_exception=e) + + def go_to_rommon(self, steps, device, rommon_timeout=ROMMON_TIMEOUT): + with steps.start("Bring device down to rommon mode") as step: + try: + device.rommon() + time.sleep(rommon_timeout) + except Exception as e: + step.failed("Failed to bring device to rommon!", from_exception=e) + + log.info("Device is reloading") + device.destroy_all() + + def rommon_boot(self, steps, device, image, tftp=None, timeout=TIMEOUT, recovery_password=RECOVERY_PASSWORD, + recovery_username=RECOVERY_USERNAME, recovery_enable_password=RECOVERY_ENABLE_PASSWORD, ether_port=ETHER_PORT): + with steps.start("Boot device from rommon") as step: + if not tftp: + tftp = {} + + # Check if management attribute in device object, if not set to empty dict + if not hasattr(device, 'management'): + setattr(device, "management", {}) + + # Getting the tftp information, if the info not provided by user, it takes from testbed + address = device.management.get('address', {}).get('ipv4', '') + if isinstance(address, IPv4Interface): + ip_address = [str(address.ip)] + subnet_mask = str(address.netmask) + elif isinstance(address, IPv6Interface): + ip_address = [str(address.ip)] + subnet_mask = str(address.netmask) + tftp.setdefault("ip_address", ip_address) + tftp.setdefault("subnet_mask", subnet_mask) + tftp.setdefault("gateway", str(device.management.get('gateway', {}).get('ipv4'))) + tftp.setdefault("tftp_server", device.testbed.servers.get('tftp', {}).get('address')) + + log.info("checking if all the tftp information is given by the user") + if not all(tftp.values()): + log.warning(f"Some TFTP information is missing: {tftp}") + # setting tftp empty if ttfp information is missing + tftp = {} + + # Need to instantiate to get the device.start + # The device.start only works because of a|b + device.instantiate(connection_timeout=timeout) + + try: + abstract = Lookup.from_device(device, packages={'clean': clean}) + except Exception as e: + step.failed("Abstraction lookup failed", from_exception=e) + + # device.start only gets filled with single rp devices + # for multiple rp devices we need to use subconnections + if device.is_ha and hasattr(device, 'subconnections'): + start = [i.start[0] for i in device.subconnections] + else: + start = device.start + + common_kwargs = { + 'device': device, + 'timeout': timeout + } + + if tftp: + tftp.update({'image': image, 'ether_port': ether_port}) + common_kwargs.update({'tftp_boot': tftp}) + else: + common_kwargs.update({'golden_image': image}) + + # Update recovery username and password + common_kwargs.update({ + 'recovery_username': recovery_username, + 'recovery_en_password':recovery_enable_password, + 'recovery_password': recovery_password + }) + + try: + pcall( + targets=abstract.clean.recovery.recovery.recovery_worker, + start=start, + ikwargs=[{'item': i} for i, _ in enumerate(start)], + ckwargs=common_kwargs + ) + except Exception as e: + step.failed("Failed to boot the device from rommon", from_exception=e) + + def reconnect(self, steps, device, reconnect_timeout=RECONNECT_TIMEOUT): + with steps.start("Reconnect to device") as step: + + if hasattr(device, 'chassis_type') and device.chassis_type.lower() == 'stack': + log.info(f"Sleep for {reconnect_timeout} seconds in order to sync") + time.sleep(reconnect_timeout) + + if not _disconnect_reconnect(device): + step.failed("Failed to reconnect") + + def enable_device_autoboot(self, steps, device): + with steps.start("Enable autoboot after reconnect") as step: + + if hasattr(device.api, "configure_autoboot"): + try: + device.api.configure_autoboot() + except Exception as e: + step.failed("Failed to configure autoboot on the device", from_exception=e) + else: + step.skipped('No autoboot API available') + diff --git a/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/tests/test_rommon_boot.py b/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/tests/test_rommon_boot.py new file mode 100644 index 000000000..4dade178a --- /dev/null +++ b/pkgs/clean-pkg/src/genie/libs/clean/stages/iosxe/tests/test_rommon_boot.py @@ -0,0 +1,143 @@ +import unittest + +from unittest import mock +from unittest.mock import MagicMock, Mock, call +from unicon.eal.dialogs import Statement +from ipaddress import IPv4Address, IPv6Address, IPv4Interface, IPv6Interface + +from pyats.results import Passed, Failed +from pyats.aetest.steps import Steps +from pyats.aetest.signals import TerminateStepSignal + +from genie.libs.clean.stages.tests.utils import create_test_device +from genie.libs.clean.stages.iosxe.stages import RommonBoot + +RESULT_METHODS = ['passed', 'failed', 'skipped', 'passx', 'blocked', 'errored', 'aborted'] + + +class TestRommonBoot(unittest.TestCase): + + def setUp(self): + self.cls = RommonBoot() + self.device = create_test_device( + name='aDevice', os='iosxe') + + def test_delete_boot_variables_pass(self): + steps = mock.MagicMock() + self.device.configure = mock.Mock() + + self.cls.delete_boot_variables( + steps=steps, device=self.device) + + # Verify step name hasn't changed + steps.start.assert_called_with("Delete configured boot variables") + + # Verify the config command was ran + self.device.configure.assert_called_with("no boot system") + + # step_context comes from the following snippet + # with steps.start('...') as step_context: + step_context = steps.start.return_value.__enter__.return_value + + # Verify no step_context methods called + for result in RESULT_METHODS: + getattr(step_context, result).assert_not_called() + + def test_delete_boot_variables_fail(self): + steps = mock.MagicMock() + config_exception = Exception() + + self.device.configure = mock.Mock(side_effect=config_exception) + + self.cls.delete_boot_variables( + steps=steps, device=self.device) + + # Verify step name hasn't changed + steps.start.assert_called_with("Delete configured boot variables") + + # Verify the config command was ran + self.device.configure.assert_called_with("no boot system") + + # step_context comes from the following snippet + # with steps.start('...') as step_context: + step_context = steps.start.return_value.__enter__.return_value + step_context.failed.assert_called_with( + 'Failed to delete configured boot variables', + from_exception=config_exception) + + def test_write_memory_pass(self): + steps = mock.MagicMock() + self.device.api.execute_write_memory = mock.Mock() + self.device.execute = mock.Mock() + + self.cls.write_memory( + steps=steps, device=self.device) + + # Verify step name hasn't changed + steps.start.assert_called_with("Write memory") + + # Verify the api was called + self.device.api.execute_write_memory.assert_called_once() + + # step_context comes from the following snippet + # with steps.start('...') as step_context: + step_context = steps.start.return_value.__enter__.return_value + + # Verify no step_context methods called + for result in RESULT_METHODS: + getattr(step_context, result).assert_not_called() + + def test_write_memory_fail(self): + steps = mock.MagicMock() + api_exception = Exception() + self.device.api.execute_write_memory = mock.Mock(side_effect=api_exception) + self.device.execute = mock.Mock() + + self.cls.write_memory( + steps=steps, device=self.device) + + # Verify step name hasn't changed + steps.start.assert_called_with("Write memory") + + # Verify the api was called + self.device.api.execute_write_memory.assert_called_once() + + # step_context comes from the following snippet + # with steps.start('...') as step_context: + step_context = steps.start.return_value.__enter__.return_value + step_context.failed.assert_called_with( + "Failed to write memory", + from_exception=api_exception) + + @mock.patch('genie.libs.clean.stages.iosxe.stages._disconnect_reconnect') + def test_reconnect_pass(self, _disconnect_reconnect): + steps = mock.MagicMock() + _disconnect_reconnect.return_value = True + + self.cls.reconnect(steps=steps, device=self.device) + + steps.start.assert_called_with("Reconnect to device") + + # step_context comes from the following snippet + # with steps.start('...') as step_context: + step_context = steps.start.return_value.__enter__.return_value + + # Verify no step_context methods called + for result in RESULT_METHODS: + getattr(step_context, result).assert_not_called() + + @mock.patch('genie.libs.clean.stages.iosxe.stages._disconnect_reconnect') + def test_reconnect_fail(self, _disconnect_reconnect): + steps = mock.MagicMock() + _disconnect_reconnect.return_value = False + + self.cls.reconnect(steps=steps, device=self.device) + + steps.start.assert_called_with("Reconnect to device") + + # step_context comes from the following snippet + # with steps.start('...') as step_context: + step_context = steps.start.return_value.__enter__.return_value + step_context.failed.assert_called_with("Failed to reconnect") + + 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 16c7b641e..201058a0d 100644 --- a/pkgs/clean-pkg/src/genie/libs/clean/stages/stages.py +++ b/pkgs/clean-pkg/src/genie/libs/clean/stages/stages.py @@ -1975,7 +1975,7 @@ def verify_enough_available_disk_space(self, steps, device, copy_dir, copy_file) "of '{copy_dir}/{copy_file}'") as step: file_size = device.api.get_file_size(file=f'{copy_dir}/{copy_file}') - if not file_size: + if file_size is None: step.failed(f"Could not get the size of '{copy_dir}/{copy_file}'") avail_space = device.api.get_available_space(directory=copy_dir) diff --git a/pkgs/clean-pkg/src/genie/libs/clean/stages/tests/test_backup_file_on_device.py b/pkgs/clean-pkg/src/genie/libs/clean/stages/tests/test_backup_file_on_device.py index d13d1fd2d..c6651a0af 100644 --- a/pkgs/clean-pkg/src/genie/libs/clean/stages/tests/test_backup_file_on_device.py +++ b/pkgs/clean-pkg/src/genie/libs/clean/stages/tests/test_backup_file_on_device.py @@ -87,6 +87,37 @@ def test_fail_to_get_file_size(self): self.assertEqual(Failed, steps.details[0].result) + def test_pass_when_file_size_none(self): + # Make sure we have a unique Steps() object for result verification + steps = Steps() + copy_dir = "bootflash:/" + copy_file = "test.bin" + + data = {'dir bootflash:/': ''' + Directory of bootflash:/ + 11 drwx 16384 Nov 25 2016 19:32:53 -07:00 lost+found + 12 -rw- 0 Dec 13 2016 11:36:36 -07:00 ds_stats.txt + 104417 drwx 4096 Apr 10 2017 09:09:11 -07:00 .prst_sync + 80321 drwx 4096 Nov 25 2016 19:40:38 -07:00 .rollback_timer + 64257 drwx 4096 Nov 25 2016 19:41:02 -07:00 .installer + 48193 drwx 4096 Nov 25 2016 19:41:14 -07:00 virtual-instance-stby-sync + 8033 drwx 0 Nov 25 2016 18:42:07 -07:00 test.bin + 1940303872 bytes total (1036210176 bytes free) + ''' + } + + # And we want the execute method to be mocked with device console output. + self.device.execute = Mock(side_effect=lambda x: data[x]) + + # Call the method to be tested (clean step inside class) + self.cls.verify_enough_available_disk_space( + steps=steps, device=self.device, copy_dir=copy_dir, copy_file=copy_file + ) + + # Check that the result is expected + self.assertEqual(Passed, steps.details[0].result) + + def test_fail_to_get_available_disk_space(self): # Make sure we have a unique Steps() object for result verification steps = Steps() diff --git a/pkgs/clean-pkg/src/genie/libs/clean/stages/tests/test_configure_management.py b/pkgs/clean-pkg/src/genie/libs/clean/stages/tests/test_configure_management.py index f3e8dbb4c..590074d5f 100644 --- a/pkgs/clean-pkg/src/genie/libs/clean/stages/tests/test_configure_management.py +++ b/pkgs/clean-pkg/src/genie/libs/clean/stages/tests/test_configure_management.py @@ -65,6 +65,6 @@ def test_configure_management_2(self): call(['vrf definition Mgmt-vrf', 'address-family ipv4', 'exit-address-family', 'address-family ipv6', 'exit-address-family']), call(['vrf definition Mgmt-vrf', 'address-family ipv4', 'exit-address-family', 'address-family ipv6', 'exit-address-family']), call(['interface Gi1/0', 'vrf forwarding Mgmt-vrf', 'ip address 2.2.2.2 255.255.255.0', 'no shutdown']), - call(['ip route 192.168.1.0 255.255.255.0 172.16.1.1 vrf Mgmt-vrf']), + call(['ip route vrf Mgmt-vrf 192.168.1.0 255.255.255.0 172.16.1.1']), call(['ip http source-interface Gi1/0'])] ) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_table_map/__init__.py b/pkgs/conf-pkg/changelog/2023/july.rst similarity index 100% rename from pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_table_map/__init__.py rename to pkgs/conf-pkg/changelog/2023/july.rst diff --git a/pkgs/conf-pkg/src/genie/libs/conf/__init__.py b/pkgs/conf-pkg/src/genie/libs/conf/__init__.py index 568eb9920..a1d4da532 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__ = '23.6' +__version__ = '23.7' __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/changelog/2023/july.rst b/pkgs/filetransferutils-pkg/changelog/2023/july.rst new file mode 100644 index 000000000..7a3fd84a1 --- /dev/null +++ b/pkgs/filetransferutils-pkg/changelog/2023/july.rst @@ -0,0 +1,9 @@ +-------------------------------------------------------------------------------- + Fix +-------------------------------------------------------------------------------- + +* iosxe + * Update confirm pattern to support Abort Copy prompt + * Update all file copy patterns to be more strict + + diff --git a/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/__init__.py b/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/__init__.py index 9acbaf7fc..7e051a618 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__ = '23.6' +__version__ = '23.7' __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/fileutils.py b/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/fileutils.py index dee067844..9884b4166 100644 --- a/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/fileutils.py +++ b/pkgs/filetransferutils-pkg/src/genie/libs/filetransferutils/fileutils.py @@ -117,84 +117,84 @@ def send_cli_to_device(self, cli, used_server=None, invalid=None, # Create unicon dialog dialog = Dialog([ - Statement(pattern=r'Address or name of remote host.*', + Statement(pattern=r'Address or name of remote host.*$', action='sendline()', loop_continue=True, continue_timer=False), - Statement(pattern=r'Destination filename.*', + Statement(pattern=r'Destination filename.*$', action=f'sendline({destination_filename})', loop_continue=True, continue_timer=False), - Statement(pattern=r'Abort Copy?\[confirm\]', + Statement(pattern=r'Abort Copy\? \[confirm\]\s*$', action='sendline(n)', loop_continue=True, continue_timer=False), - Statement(pattern=r'\[confirm\]', + Statement(pattern=r'(? sfp + * Added configure_fnf_flow_record + * API for configure_fnf_flow_record + * Added `unconfigure_route_map_route_map_to_bgp_neighbor` API + * Added unconfigure API corresponding to `configure_route_map_route_map_to_bgp_neighbor` + * Added `unconfigure_bgp_redistribute_static` API + +* sdk + * Version pinned pysnmp and pyasn1 to fix the type error in execute_power_cycle_device api + + +-------------------------------------------------------------------------------- + Fix +-------------------------------------------------------------------------------- + +* iosxe + * Modified reset_interface + * added return statement + * Modified configure_flow_exporter + * Added if condition to configure source {source_int} on flow exporter + * Fix vrf syntax for `configure_management_routes` API + * Modified configure_service_policy_with_queueing_name + * added return statement to return the output + * Modified unconfigure_table_map + * renamed "unconfigure_table_map" api to "unconfigure_table_map_values" due to duplicate api name + * Modified configure_table_map + * renamed "configure_table_map" api to "configure_table_map_values" due to duplicate api name + * Added unconfigure_400g_mode_for_port_group_onsvl api + * API to unconfigure 400g mode for port group svl + * Added configure_400g_mode_for_port_group_onsvl api + * API to configure 400g mode for port group svl + * Modified `configure_route_map_route_map_to_bgp_neighbor` API + * Refactored to remove and optimize redundant codes + * Modified `configure_bgp_redistribute_static` API + * Added `route_map` to pass route-map to redistribute static command + * Modified `configure_route_map` API + * Added `set_extcommunity` to set extcommunity in route-map + * Modified `unconfigure_route_map` API + * Changed `permit` to Optional argument to delete whole route-map + * Modified `restore_running_configuration` API + * Added condition to avoid the case which Unicon capture prompt + +* blitz + * Fixed gnmi auto-validation, caused by modifying orginal rpcdata object in GnmiMessageConstructor + + diff --git a/pkgs/sdk-pkg/sdk_generator/output/github_apis.json b/pkgs/sdk-pkg/sdk_generator/output/github_apis.json index 22fbe3aba..b6114bc04 100644 --- a/pkgs/sdk-pkg/sdk_generator/output/github_apis.json +++ b/pkgs/sdk-pkg/sdk_generator/output/github_apis.json @@ -669,7 +669,16 @@ "module_name": "apphosting.configure", "package": "genie.libs.sdk.apis", "uid": "clear_iox", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L53" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L55" + } + }, + "clear_ip_arp": { + "iosxe": { + "doc": " clear ip arp\n Args:\n device ('obj'): device to execute on\n ip ('int'): A.B.C.D IP address of dynamic ARP entry\n Return:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "platform.clear", + "package": "genie.libs.sdk.apis", + "uid": "clear_ip_arp", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/clear.py#L57" } }, "clear_ip_arp_inspection": { @@ -1151,7 +1160,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "clear_ospfv3_process_all", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2507" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2510" } }, "clear_packet_buffer": { @@ -1170,6 +1179,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L217" } }, + "clear_pdm_steering_policy": { + "iosxe": { + "doc": " clear pdm steering policy\n Args:\n device (`obj`): Device object\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "utils", + "package": "genie.libs.sdk.apis", + "uid": "clear_pdm_steering_policy", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/utils.py#L1817" + } + }, "clear_platform_qos_dscp_cos_counters_interface": { "iosxe": { "doc": " clear platform hardware fed switch active qos dscp-cos counters interface\n Args:\n device (`obj`): Device object\n intf (str): interafce name to clear qos dscp-cos counters\n state (str, optional): Switch state active or standby\n switch_num(str, optional): switch number 1 or 2 or 3 ..\n Returns:\n None\n Raises:\n SubCommandFailure\n ", @@ -1536,7 +1554,7 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "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#L8377" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8413" } }, "config_ip_on_interface": { @@ -1987,6 +2005,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/hardware/configure.py#L11" } }, + "configure_400g_mode_for_port_group_onsvl": { + "iosxe": { + "doc": " enable 400g mode conversion on NG-SVL\n Args:\n device (`obj`): Device object\n slot (`int`): Metaluna slot\n port_group_range ('str',optional) : range end for port group, default value is None\n port_group('int') : port group number \n switch_number('int') : switch number 1 or 2\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "hardware.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_400g_mode_for_port_group_onsvl", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/hardware/configure.py#L187" + } + }, "configure_400g_mode_port_group_range": { "iosxe": { "doc": " enable 400g mode range conversion on Metaluna LC\n Args:\n device (`obj`): Device object\n slot (`int`): Metaluna slot\n\n Returns:\n None\n\n Raises:\n SubCommandFailure : Failed configuring device\n ", @@ -2203,6 +2230,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dot1x/configure.py#L1513" } }, + "configure_access_session_mac_move": { + "iosxe": { + "doc": "Configure access-session mac-move\n Args:\n device ('obj'): Device object\n access_type('str'): accounting Accounting Filter List Configuration\n acl Application of ACLs on access-session\n attributes Attributes Filter List Configuration\n authentication Authentication Filter List Configuration\n bridge-mode bridge-mode\n cache Set cache configuration\n event-logging Event log Configuration\n interface-template Set the interface-template sticky globally\n limit Set session limit parameter\n mac-move Set required action when a MAC move is detected\n monitor Apply template to monitor access sessions on the port\n passthru-access-group IP access-list map to FQDN ACL\n single-policy Replace all interface service-policies with single policy\n tls-version Set required TLS version\n voice voice client auth options\n wireless Wireless\n deny_type('str'): deny DENY MAC moves (clears existing session)\n deny-uncontrolled Deny MAC move to uncontrolled port\n Return: \n None\n Raise:\n SubCommandFailure \n ", + "module_name": "dot1x.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_access_session_mac_move", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dot1x/configure.py#L2146" + } + }, "configure_access_session_macmove_deny": { "iosxe": { "doc": "Configure access-session mac-move deny\n Args:\n device ('obj'): Device object\n Return:\n None\n Raise:\n SubCommandFailure\n ", @@ -2362,7 +2398,7 @@ "module_name": "apphosting.configure", "package": "genie.libs.sdk.apis", "uid": "configure_app_hosting_appid_docker", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L235" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L237" } }, "configure_app_hosting_appid_iperf_from_vlan": { @@ -2371,7 +2407,7 @@ "module_name": "apphosting.configure", "package": "genie.libs.sdk.apis", "uid": "configure_app_hosting_appid_iperf_from_vlan", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L165" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L167" } }, "configure_app_hosting_appid_trunk_port": { @@ -2380,7 +2416,7 @@ "module_name": "apphosting.configure", "package": "genie.libs.sdk.apis", "uid": "configure_app_hosting_appid_trunk_port", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L188" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L190" } }, "configure_app_hosting_resource_profile": { @@ -2389,7 +2425,7 @@ "module_name": "apphosting.configure", "package": "genie.libs.sdk.apis", "uid": "configure_app_hosting_resource_profile", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L269" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L271" } }, "configure_archive_default": { @@ -2635,6 +2671,17 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/qos/configure.py#L160" } }, + "configure_autoboot": { + "iosxe": { + "asr1k": { + "doc": " Configure autoboot\n Args:\n device ('obj'): device to use\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_autoboot", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/asr1k/configure.py#L7" + } + } + }, "configure_autodiscovery_bgp_signalling_ldp_template": { "iosxe": { "doc": " Config autodiscovery bgp signaling ldp template\n Args:\n device (`obj`): Device object\n context_name ('str'): context name for the template\n vpn_id ('str'): vpn id to be configured\n template_name('str'): name of the template\n Return:\n None\n Raise:\n SubCommandFailure: Failed configuring interface\n ", @@ -2659,7 +2706,7 @@ "module_name": "platform.configure", "package": "genie.libs.sdk.apis", "uid": "configure_banner", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L4509" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L4585" } }, "configure_bba_group": { @@ -2695,7 +2742,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_additional_paths", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L824" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L911" } }, "configure_bgp_address_advertisement": { @@ -2704,7 +2751,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_address_advertisement", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L881" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L968" } }, "configure_bgp_address_family_attributes": { @@ -2713,7 +2760,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_address_family_attributes", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L954" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1041" } }, "configure_bgp_advertise_additional_paths": { @@ -2722,7 +2769,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_advertise_additional_paths", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L852" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L939" } }, "configure_bgp_advertise_l2vpn_evpn": { @@ -2731,7 +2778,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_advertise_l2vpn_evpn", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1716" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1807" } }, "configure_bgp_auto_summary": { @@ -2740,7 +2787,16 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_auto_summary", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1953" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2044" + } + }, + "configure_bgp_best_path_as_path_multipath_relax": { + "iosxe": { + "doc": " Configures bgp redistribute internal on bgp router\n Args:\n device('obj'): device to configure on\n bgp_as('str'): bgp_as to configure\n Return:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "bgp.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_bgp_best_path_as_path_multipath_relax", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2585" } }, "configure_bgp_eigrp_redistribution": { @@ -2749,7 +2805,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_eigrp_redistribution", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2440" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2531" } }, "configure_bgp_graceful_restart": { @@ -2758,7 +2814,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_graceful_restart", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1023" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1110" } }, "configure_bgp_import_path_selection": { @@ -2776,7 +2832,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_isis_redistribution", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2328" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2419" } }, "configure_bgp_l2vpn_evpn_rewrite_evpn_rt_asn": { @@ -2785,7 +2841,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_l2vpn_evpn_rewrite_evpn_rt_asn", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1799" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1890" } }, "configure_bgp_l2vpn_neighbor_activate": { @@ -2794,7 +2850,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_l2vpn_neighbor_activate", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L506" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L593" } }, "configure_bgp_log_neighbor_changes": { @@ -2803,7 +2859,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_log_neighbor_changes", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1047" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1134" } }, "configure_bgp_neighbor": { @@ -2821,7 +2877,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_neighbor_activate", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L434" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L521" } }, "configure_bgp_neighbor_advertisement_interval": { @@ -2830,7 +2886,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_neighbor_advertisement_interval", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1746" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1837" } }, "configure_bgp_neighbor_as_override": { @@ -2839,7 +2895,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_neighbor_as_override", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L788" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L875" } }, "configure_bgp_neighbor_filter_description": { @@ -2848,7 +2904,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_neighbor_filter_description", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2222" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2313" } }, "configure_bgp_neighbor_remote_as": { @@ -2857,7 +2913,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_neighbor_remote_as", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L729" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L816" } }, "configure_bgp_neighbor_remote_as_fall_over_as_with_peergroup": { @@ -2866,7 +2922,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_neighbor_remote_as_fall_over_as_with_peergroup", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2192" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2283" } }, "configure_bgp_neighbor_send_community": { @@ -2875,7 +2931,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_neighbor_send_community", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1071" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1158" } }, "configure_bgp_redistribute_connected": { @@ -2884,7 +2940,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_redistribute_connected", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1308" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1395" } }, "configure_bgp_redistribute_internal": { @@ -2893,7 +2949,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_redistribute_internal", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2105" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2196" } }, "configure_bgp_redistribute_ospf": { @@ -2902,16 +2958,16 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_redistribute_ospf", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1196" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1283" } }, "configure_bgp_redistribute_static": { "iosxe": { - "doc": " configure redistribute static in bgp\n Args:\n device ('obj'): device to use\n bgp_as ('int'): bgp as number\n address_family ('str'): address family under bgp\n vrf ('str'): vrf in address_family\n Returns:\n None\n Raises:\n SubCommandFailure: Failed configuring redistribute\n static under bgp address_family\n ", + "doc": " configure redistribute static in bgp\n Args:\n device ('obj'): device to use\n bgp_as ('int'): bgp as number\n address_family ('str'): address family under bgp\n vrf ('str'): vrf in address_family\n route_map ('str', optional): route-map name\n Returns:\n None\n Raises:\n SubCommandFailure: Failed configuring redistribute\n static under bgp address_family\n ", "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_redistribute_static", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1686" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1773" } }, "configure_bgp_refresh_max_eor_time": { @@ -2920,7 +2976,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_refresh_max_eor_time", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1634" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1721" } }, "configure_bgp_router_id": { @@ -2938,7 +2994,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_router_id_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1660" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1747" } }, "configure_bgp_router_id_neighbor_ip_peergroup_neighbor": { @@ -2947,7 +3003,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_router_id_neighbor_ip_peergroup_neighbor", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1575" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1662" } }, "configure_bgp_router_id_peergroup_neighbor": { @@ -2956,7 +3012,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_router_id_peergroup_neighbor", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1539" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1626" } }, "configure_bgp_soo_on_inbound_from_neighbor": { @@ -2974,7 +3030,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_sso_route_refresh_enable", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1609" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1696" } }, "configure_bgp_template_peer_policy": { @@ -2983,7 +3039,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_template_peer_policy", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1241" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1328" } }, "configure_bgp_template_peer_session": { @@ -2992,7 +3048,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_template_peer_session", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1274" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1361" } }, "configure_bgp_update_delay": { @@ -3001,7 +3057,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_update_delay", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1505" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1592" } }, "configure_bgp_vpn_import": { @@ -3010,7 +3066,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_bgp_vpn_import", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2377" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2468" } }, "configure_boot_level_licence": { @@ -3046,7 +3102,7 @@ "module_name": "platform.configure", "package": "genie.libs.sdk.apis", "uid": "configure_boot_system_image_file", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L4625" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L4718" } }, "configure_boot_system_switch_all_flash": { @@ -3529,6 +3585,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/linux/wsim/execute.py#L72" } }, + "configure_client_protocol_under_gkm_group": { + "iosxe": { + "doc": " Configures Crypto client protocol under Gkm group\n Args:\n device ('obj'): Device object\n group_name ('str'): gkm group name\n client_protocol ('bool'): Gikev2/gdoi \n profile_name ('str'): Gikev2/gdoi profile name.\n Returns: None \n Raises:\n SubCommandFailure\n ", + "module_name": "gkm.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_client_protocol_under_gkm_group", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/configure.py#L49" + } + }, "configure_clock_timezone": { "iosxe": { "doc": " Configure Clock Timezone\n Args:\n device ('obj'): Device object\n timezone_name('str'): name of time zone\n hours_offset('int'): Hours offset from UTC\n minutes_offset('int'): Minutes offset from UTC\n Returns:\n None\n Raises:\n SubCommandFailure\n ", @@ -3580,7 +3645,7 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "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#L8647" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8683" } }, "configure_control_plane_control_plane_policy": { @@ -3738,11 +3803,11 @@ }, "configure_crypto_pki_server": { "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": "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": "pki.configure", "package": "genie.libs.sdk.apis", "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" } }, "configure_crypto_transform_set": { @@ -4192,7 +4257,7 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "uid": "configure_dialer_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8689" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8725" } }, "configure_disable_aes_encryption": { @@ -4237,7 +4302,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_distribute_prefix_list_under_ospf", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1805" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1808" } }, "configure_dope_wrsp": { @@ -4782,7 +4847,7 @@ }, "configure_flow_exporter": { "iosxe": { - "doc": " Configure Flow Exporter on Device\n Args:\n device ('obj'): Device object\n exporter_name ('str'): Flow exporter name\n dest_ip ('str', optional): Destination IP. Default is None\n udp_port ('str', optional): UDP port. Default is None\n dscp ('str', optional): dscp value. Default is None\n ttl ('str', optional): ttl value. Default is None\n data_timeout ('str', optional): template data timeout value. Default is None\n table_type ('str', optional): option table type. Default is None\n table_timeout ('str', optional): option table timeout value. Default is None\n Return:\n None\n Raise:\n SubCommandFailure: Failed configuring flow exporter\n ", + "doc": " Configure Flow Exporter on Device\n Args:\n device ('obj'): Device object\n exporter_name ('str'): Flow exporter name\n dest_ip ('str', optional): Destination IP. Default is None\n udp_port ('str', optional): UDP port. Default is None\n dscp ('str', optional): dscp value. Default is None\n ttl ('str', optional): ttl value. Default is None\n data_timeout ('str', optional): template data timeout value. Default is None\n table_type ('str', optional): option table type. Default is None\n table_timeout ('str', optional): option table timeout value. Default is None\n source_int ('str', optional): Source interface. Default int None\n Return:\n None\n Raise:\n SubCommandFailure: Failed configuring flow exporter\n ", "module_name": "flow.configure", "package": "genie.libs.sdk.apis", "uid": "configure_flow_exporter", @@ -4897,6 +4962,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/flow/configure.py#L119" } }, + "configure_fnf_flow_record": { + "iosxe": { + "doc": " Config Flow Record on Device\n Args:\n device (`obj`): Device object\n record_name (`str`): Flow record name\n datalink ('bool') : Configure datalink fields\n datalink_type_1 ('str', optional): First Datalink Type to be configured\n datalink_subtype_1 ('str', optional): First datalink subtype to be configured\n match_int_field ('str', optional): Interface field to be configured\n match_ipv4_field ('str', optional): First IPv4 field to be configured\n collect_counter_bytes ('bool'): Enable counter field bytes\n collect_counter_packets ('bool'): Enable counter field packets\n match_transport_field ('str', optional): First transport field to be configured\n address_mode('str', optional): Address mode to be configured\n tcp_field('bool'): Configure collect transport tcp flags\n collect_event('bool'): Configure collect policy firewall event\n Return:\n None\n \n Raise:\n SubCommandFailure: Failed configuring Flow Record on Device\n ", + "module_name": "flow.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_fnf_flow_record", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/flow/configure.py#L1302" + } + }, "configure_fnf_monitor_datalink_interface": { "iosxe": { "doc": " Config Datalink Fnf Monitor on Interface\n Args:\n device (`obj`): Device object\n interface (`str`): Interface to be configured\n monitor_name (`str`): Flow monitor name\n sampler_name ('str'): Sampler name\n direction ('str'): Direction of monitor (input/output)\n \n Return:\n None\n \n Raise:\n SubCommandFailure: Failed configuring interface datalink flow monitor with sampler\n ", @@ -4951,6 +5025,24 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ipsec/configure.py#L1159" } }, + "configure_gikev2_profile_under_gkm_group": { + "iosxe": { + "doc": " Configures Crypto gikev2 profile under Gkm group\n Args:\n device ('obj'): Device object\n group_name ('str'): gkm group name\n server_local ('bool', optional): Configure server local. Default is False\n gikev2_profile ('str'): Gikev2 profile name.\n Returns: None \n Raises:\n SubCommandFailure\n ", + "module_name": "gkm.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_gikev2_profile_under_gkm_group", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/configure.py#L18" + } + }, + "configure_gkm_group_identity_number": { + "iosxe": { + "doc": " Configures Crypto Gdoi Gkm group\n Args:\n device ('obj'): Device object\n group_name ('str'): gkm group name\n ident_num ('str', optional): Identity number of gkm group\n Returns: None \n Raises:\n SubCommandFailure\n ", + "module_name": "gkm.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_gkm_group_identity_number", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/configure.py#L78" + } + }, "configure_global_dual_active_recovery_reload_disable": { "iosxe": { "doc": " Enables global stackwise-virtual dual-active recovery reload on target device\n Args:\n device ('obj'): Device object\n Returns:\n output: return the chunk of lines for the config of pagp as below..\n # stackwise-virtual\n # Please reload the switch for Stackwise Virtual configuration to take effect\n # Upon reboot, the config will be part of running config but not part of start up config.\n # dual-active recovery-reload-disable\n Raises:\n SubCommandFailure\n ", @@ -4960,6 +5052,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/stackwise_virtual/configure.py#L176" } }, + "configure_global_interface_template_sticky": { + "iosxe": { + "doc": " configure global interface-template sticky\n Args:\n device ('obj'): device to use\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "interface.configure", + "package": "genie.libs.sdk.apis", + "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#L8810" + } + }, "configure_global_stackwise_virtual": { "iosxe": { "doc": " Enables global stackwise-virtual on target device\n Args:\n device ('obj'): Device object\n domain ('str'): Stackwise-virtual domain\n Returns:\n None\n Raises:\n SubCommandFailure\n ", @@ -4978,6 +5079,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gnxi/configure.py#L11" } }, + "configure_graceful_reload": { + "iosxe": { + "doc": " Configure graceful-reload\n Args:\n device ('obj'): Device object\n interval('int', optional): <1-900>, Default is 5\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "platform.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_graceful_reload", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L4682" + } + }, "configure_graceful_reload_interval": { "iosxe": { "doc": " configure graceful reload interval the XFSU device \n \n Args:\n device ('obj'): device to use\n interface ('int'): graceful interval value\n Returns:\n None\n Raises:\n SubCommandFailure: Failed to configure graceful reload interval the XFSU device\n ", @@ -4998,11 +5108,11 @@ }, "configure_hqos_policer_map": { "iosxe": { - "doc": " Configures HQos policy_map\n Args:\n device ('obj'): device to use\n policy_name('str) : name of the policy name\n class_map_name('str') : name of the class\n policer_percent_val('int',optional): police rate value, default is None\n table_map_name('str',optional): to set the table name for policy_map, default is None\n table_map_mode('str',optional) : name of the tablemode,default is None\n match_mode('list',optional): match mode name for cos, default is None\n matched_value('list',optional): match mode values for cos traffic_class and dscp, default is None\n child_policy('str',optional): name of child policy map,default is None\n policer_cir_val('str',optional): policer cir value,default is None\n police_val('str',optional): police value,default is None\n set_table_map('boolean'): to configure set table map for HQos, default is False\n\n example:\n policy_name:'policy1'\n class_map_name:'class-default',\n policer_percent_val:1,\n table_map_name:'table1'\n table_map_mode:'dscp'\n match_mode:['dscp','cos']\n matched_value:['cs1','5']\n child_policy: 'child_policy_map'\n policer_cir_val: '60'\n police_val: '600000000'\n set_table_map:False\n\n\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "doc": " Configures HQos policy_map\n Args:\n device ('obj'): device to use\n policy_name('str) : name of the policy name\n class_map_name('str') : name of the class\n policer_percent_val('int',optional): police rate value, default is None\n table_map_name('str',optional): to set the table name for policy_map, default is None\n table_map_mode('str',optional) : name of the tablemode,default is None\n match_mode('list',optional): match mode name for cos, default is None\n matched_value('list',optional): match mode values for cos traffic_class and dscp, default is None\n child_policy('str',optional): name of child policy map,default is None\n policer_cir_val('str',optional): policer cir value,default is None\n police_val('str',optional): police value,default is None\n set_table_map('boolean'): to configure set table map for HQos, default is False\n\n example:\n policy_name:'policy1'\n class_map_name:'class-default',\n policer_percent_val:1,\n table_map_name:'table1'\n table_map_mode:'dscp'\n match_mode:['dscp','cos']\n matched_value:['cs1','5']\n child_policy: 'child_policy_map'\n policer_cir_val: '60'\n police_val: '600000000'\n set_table_map:False\n\n Returns:\n None\n Raises:\n SubCommandFailure\n ", "module_name": "policy_map.configure", "package": "genie.libs.sdk.apis", "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#L571" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L572" } }, "configure_hsrp_interface": { @@ -5209,7 +5319,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_inherit_peer_session", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L476" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L563" } }, "configure_interface_VirtualPortGroup": { @@ -5245,7 +5355,16 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "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#L8340" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8376" + } + }, + "configure_interface_bandwidth": { + "iosxe": { + "doc": " Configures vlan group list\n Args:\n device ('obj'): device to use\n interface ('str'): interface name\n bandwidth ('str'): bandwidth. Ex: '300000'\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "interface.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_interface_bandwidth", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8291" } }, "configure_interface_channel_group_auto_lacp": { @@ -5479,7 +5598,7 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "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#L8574" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8610" } }, "configure_interface_ipv6_acl": { @@ -5680,6 +5799,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L2930" } }, + "configure_interface_no_switchport_voice_vlan": { + "iosxe": { + "doc": " Configures switchport on interface\n Args:\n device ('obj'): device to use\n interface ('str'): interface to configure\n vlan ('str'): voice_vlan to configure\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "interface.configure", + "package": "genie.libs.sdk.apis", + "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#L8786" + } + }, "configure_interface_ospfv3": { "iosxe": { "doc": " Config OSPFV3 on interface\n Args:\n device (`obj`): Device object\n interface (`str`): Interface name\n ospf_pid (`str`): OspfV3 process id\n area ('int'): Ospf area code\n Returns:\n None\n Raises:\n SubCommandFailure\n ", @@ -5695,7 +5823,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_interface_ospfv3_ipsec_ah", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2144" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2147" } }, "configure_interface_ospfv3_ipsec_esp": { @@ -5704,7 +5832,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_interface_ospfv3_ipsec_esp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2181" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2184" } }, "configure_interface_passive": { @@ -6406,6 +6534,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform_licensing/configure.py#L118" } }, + "configure_ip_for_server_local_under_gkm_group": { + "iosxe": { + "doc": " Configures Crypto Gdoi Gkm group\n Args:\n device ('obj'): Device object\n group_name ('str'): gkm group name\n server_local ('bool', optional): Configure server local. Default is False\n ipv4_address ('str'): ipv4 address\n\n Returns: None \n\n Raises:\n SubCommandFailure\n ", + "module_name": "gkm.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_ip_for_server_local_under_gkm_group", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/configure.py#L286" + } + }, "configure_ip_forward_protocol_nd": { "iosxe": { "doc": " Configure ip forward-protocol network disk on device.\n Args:\n device ('obj'): Device object\n Return:\n None\n Raise:\n SubCommandFailure: Failed to configure ip forward-protocol network disk on device.\n ", @@ -6727,7 +6864,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ip_ospf_mtu_ignore", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1468" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1471" } }, "configure_ip_pim_bsr_candidate": { @@ -6853,7 +6990,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ip_ssh_version", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L879" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L880" } }, "configure_ip_subnet_to_sgt_mapping_vrf": { @@ -6964,6 +7101,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ipsec/configure.py#L411" } }, + "configure_ipsec_under_gkm_group": { + "iosxe": { + "doc": " Configures Crypto Gdoi Gkm group\n Args:\n device ('obj'): Device object\n group_name ('str'): gkm group name\n server_local ('bool', optional): Configure server local. Default is False\n sa_ipsec_seq ('str',optional): Configure sa ipsec sequence number\n sa_ipsec_profile ('str', optional): configure ipsec profile on gkm group\n sa_ipsec_match_ipv4 ('str', optional): Set ipv4 match address\n sa_ipsec_match_ipv6 ('str', optional): Set ipv6 match address\n sa_ipsec_replay ('bool', optional): Set to True if sa replay needs to configured. Default is False\n sa_ipsec_replay_time ('str', optional): Set replay time window size\n sa_ipsec_tag ('bool', optional): Set tag. Default is False\n. Default is False \n Returns: None\n Raises:\n SubCommandFailure\n ", + "module_name": "gkm.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_ipsec_under_gkm_group", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/configure.py#L157" + } + }, "configure_ipv4_dhcp_relay_helper": { "iosxe": { "doc": " Configure helper IP on an interface\n\n Args:\n device (`obj`): Device object\n interface (`str`): Interface to get address\n ip_address (`str`): helper IP address to be configured on interface\n\n Returns:\n None\n\n Raises:\n SubCommandFailure\n ", @@ -6982,6 +7128,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L5631" } }, + "configure_ipv4_server_under_gkm_group": { + "iosxe": { + "doc": " Configures Crypto Gdoi Gkm group\n Args:\n device ('obj'): Device object\n group_name ('str'): gkm group name\n server_ipv4_address ('str', optional): Set ipv4 server address\n server_ipv4_sec_address ('str', optional): Set ipv4 secondary server address\n Returns: None \n Raises:\n SubCommandFailure\n ", + "module_name": "gkm.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_ipv4_server_under_gkm_group", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/configure.py#L318" + } + }, "configure_ipv4_subnet_to_sgt_mapping": { "iosxe": { "doc": " Configure subnet SGT\n Args:\n device ('obj'): device to use\n ipv4 ('str'): IPv4 address to configure\n subnet ('str'): Subnet to verify inside\n sgt (`str`): Security Group Tag (SGT) value\n Returns:\n None\n Raises:\n SubCommandFailure: Failed to Configure subnet SGT\n ", @@ -7375,7 +7530,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ipv6_ospf_bfd", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1257" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1260" } }, "configure_ipv6_ospf_mtu_ignore": { @@ -7384,7 +7539,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ipv6_ospf_mtu_ignore", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1315" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1318" } }, "configure_ipv6_ospf_router_id": { @@ -7393,7 +7548,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ipv6_ospf_router_id", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1985" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1988" } }, "configure_ipv6_ospf_routing_on_interface": { @@ -7402,7 +7557,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ipv6_ospf_routing_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1373" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1376" } }, "configure_ipv6_pim_bsr_candidate_bsr": { @@ -7760,7 +7915,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_label_mode_all_explicit_null", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2079" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2170" } }, "configure_lacp_on_interface": { @@ -7958,7 +8113,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "configure_line_vty_needs_enhancement", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L915" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L916" } }, "configure_lineconsole_exectimeout": { @@ -8272,11 +8427,11 @@ }, "configure_mac_address_table_notification_change": { "iosxe": { - "doc": " Config mac-address-table notification change on Device\n Args:\n device (`obj`): Device object\n \n Return:\n None\n Raise:\n SubCommandFailure: Failed configuring flow monitor\n ", - "module_name": "c960.configure", + "doc": "Configure mac-address-table notification change on this device\n Args:\n device ('obj'): Device object\n change_option ('str',optional): change option history-size/interval\n size ('int',optional): Number of MAC notifications to be stored\n interval ('int',optional): Interval between the MAC notifications\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "mac.configure", "package": "genie.libs.sdk.apis", "uid": "configure_mac_address_table_notification_change", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/c960/configure.py#L111" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mac/configure.py#L265" } }, "configure_mac_address_table_static": { @@ -8357,7 +8512,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "configure_management", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L654" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L655" } }, "configure_management_credentials": { @@ -8384,7 +8539,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "configure_management_http", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L445" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L446" } }, "configure_management_ip": { @@ -8402,7 +8557,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "configure_management_netconf", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L587" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L588" } }, "configure_management_protocols": { @@ -8411,7 +8566,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "configure_management_protocols", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L615" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L616" } }, "configure_management_routes": { @@ -8429,7 +8584,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "configure_management_ssh", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L475" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L476" } }, "configure_management_telnet": { @@ -8438,7 +8593,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "configure_management_telnet", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L516" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L517" } }, "configure_management_tftp": { @@ -8447,7 +8602,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "configure_management_tftp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L416" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L417" } }, "configure_management_vrf": { @@ -8465,7 +8620,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "configure_management_vty_lines", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L540" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L541" } }, "configure_masked_unmasked_credentials": { @@ -8492,7 +8647,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_maximum_path_under_ospf", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1176" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1179" } }, "configure_maximum_prefix_to_bgp_neighbor": { @@ -8702,6 +8857,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vrf/configure.py#L984" } }, + "configure_mdt_auto_discovery_inter_as_mdt_type": { + "iosxe": { + "doc": " configure mdt auto-discovery inter-as mdt type\n Args:\n device ('obj'): Device object\n vrf_name ('str'): name of the vrf\n address_family ('str'): mention the address-family ipv4 or ipv6.\n mdt_type ('str'): specify the MDT configuration type interworking or pim.\n Return:\n None\n Raise:\n SubCommandFailure: Failed configuring mdt auto-discovery on vrf\n ", + "module_name": "vrf.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_mdt_auto_discovery_inter_as_mdt_type", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vrf/configure.py#L1055" + } + }, "configure_mdt_auto_discovery_mldp": { "iosxe": { "doc": " configure mdt auto-discovery mldp\n\n Args:\n device (`obj`): Device object\n vrf_name ('str'): name of the vrf\n address_family ('str'): mention the address-family.\n Return:\n None\n Raise:\n SubCommandFailure: Failed configuring interface\n ", @@ -8747,6 +8911,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vrf/configure.py#L765" } }, + "configure_mdt_default": { + "iosxe": { + "doc": "Configure mdt default\n Args:\n device ('obj'): device object\n vrf_name ('str') : vrf name\n address_family ('str'): address family\n ip_address ('str'): IP multicast group address\n Return:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "vrf.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_mdt_default", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vrf/configure.py#L1032" + } + }, "configure_mdt_overlay_use_bgp": { "iosxe": { "doc": " Enables BGP as the overlay protocol\n\n Args:\n device (`obj`): Device object\n vrf_name ('str'): name of the vrf\n address_family ('str'): mention the address-family.\n Return:\n None\n Raise:\n SubCommandFailure: Failed configuring vrf\n ", @@ -8792,6 +8965,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vrf/configure.py#L397" } }, + "configure_member_vfi_on_vlan_configuration": { + "iosxe": { + "doc": " configure member vfi\n Args:\n device ('obj'): Device object\n vlan_id ('int'): vlan id \n vfi_type ('str'): specify access-vfi or vfi\n vfi_name ('str'): specify member vfi name\n Return:\n None\n Raise:\n SubCommandFailure: Failed unconfiguring interface\n ", + "module_name": "mpls.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_member_vfi_on_vlan_configuration", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mpls/configure.py#L2050" + } + }, "configure_mka_macsec": { "iosxe": { "doc": " Configures MKA and MACSec interface\n\n Args:\n device ('obj'): device to use\n interface ('str'): Interface name\n keychain_name ('str'): Key Chain name\n policy_name ('str'): MKA policy name\n\n Returns:\n None\n\n Raises:\n SubCommandFailure\n ", @@ -8897,7 +9079,7 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "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#L8291" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8327" } }, "configure_mpls_label_mode": { @@ -8936,6 +9118,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mpls/configure.py#L808" } }, + "configure_mpls_ldp_sync_under_ospf": { + "iosxe": { + "doc": "Configure router ospf mpls\n Args:\n device ('obj'): device object\n process_id ('int'): process id\n router_id ('str'): OSPF router-id in IP address format\n Return:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "mpls.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_mpls_ldp_sync_under_ospf", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mpls/configure.py#L2072" + } + }, "configure_mpls_mtu": { "iosxe": { "doc": "Configure mpls mtu on interface\n Example : mpls mtu 1400\n\n Args:\n device('obj'): Device object\n interface('str'): Device interface\n size('int'): Size of maximum size of the IP packet that can still be sent on a data link, without fragmenting the packet \n Returns:\n None\n Raises:\n SubCommandFailure\n ", @@ -9023,7 +9214,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "configure_mtc", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L759" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L760" } }, "configure_multicast_routing_mvpn_vrf": { @@ -9212,7 +9403,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_neighbor_under_ospf", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1722" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1725" } }, "configure_netconf_yang": { @@ -9230,7 +9421,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "configure_netconf_yang_intelligent_sync", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L849" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L850" } }, "configure_network_policy_profile_voice_vlan": { @@ -9248,7 +9439,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_no_bgp_default", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L993" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1080" } }, "configure_no_boot_manual": { @@ -9275,7 +9466,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_no_shut_bgp_neighbors", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L702" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L789" } }, "configure_no_shut_ospf": { @@ -9359,7 +9550,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospf_area_type", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1544" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1547" } }, "configure_ospf_bfd": { @@ -9368,7 +9559,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospf_bfd", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1088" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1091" } }, "configure_ospf_cost": { @@ -9386,7 +9577,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospf_include_connected_in_bgp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1160" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1247" } }, "configure_ospf_interface_metric_cost": { @@ -9404,7 +9595,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospf_internal_external_routes_into_bgp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1124" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1211" } }, "configure_ospf_max_lsa_limit": { @@ -9413,7 +9604,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospf_max_lsa_limit", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1913" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1916" } }, "configure_ospf_max_metric_router_lsa_on_startup": { @@ -9440,7 +9631,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospf_network_non_broadcast", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1664" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1667" } }, "configure_ospf_network_point": { @@ -9449,7 +9640,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospf_network_point", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1030" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1033" } }, "configure_ospf_networks": { @@ -9467,7 +9658,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospf_nsf_ietf", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1522" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1525" } }, "configure_ospf_passive_interface": { @@ -9492,7 +9683,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospf_redistribute_in_bgp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2407" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2498" } }, "configure_ospf_redistributed_connected": { @@ -9501,7 +9692,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospf_redistributed_connected", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1119" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1122" } }, "configure_ospf_redistributed_eigrp_metric": { @@ -9510,7 +9701,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospf_redistributed_eigrp_metric", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2599" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2602" } }, "configure_ospf_redistributed_static": { @@ -9519,7 +9710,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospf_redistributed_static", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1443" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1446" } }, "configure_ospf_routing": { @@ -9573,7 +9764,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospfv3_ipsec_ah", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2025" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2028" } }, "configure_ospfv3_ipsec_esp": { @@ -9582,7 +9773,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospfv3_ipsec_esp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2062" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2065" } }, "configure_ospfv3_max_lsa_limit": { @@ -9591,7 +9782,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospfv3_max_lsa_limit", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1893" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1896" } }, "configure_ospfv3_network_point": { @@ -9600,7 +9791,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospfv3_network_point", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1199" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1202" } }, "configure_ospfv3_network_range": { @@ -9609,7 +9800,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospfv3_network_range", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2531" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2534" } }, "configure_ospfv3_on_interface": { @@ -9618,7 +9809,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospfv3_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2572" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2575" } }, "configure_ospfv3_redistributed_connected": { @@ -9627,7 +9818,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_ospfv3_redistributed_connected", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1784" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1787" } }, "configure_pac_key": { @@ -9666,6 +9857,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/pbr/configure.py#L85" } }, + "configure_pfs_enable_or_disable_under_gkm_group": { + "iosxe": { + "doc": " Configures Crypto Gdoi Gkm group\n Args:\n device ('obj'): Device object\n group_name ('str'): gkm group name\n server_local ('bool', optional): Configure server local. Default is False\n pfs ('str', optional): Enable/Disable the PFS feature on Key Server\n Returns: None \n Raises:\n SubCommandFailure\n ", + "module_name": "gkm.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_pfs_enable_or_disable_under_gkm_group", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/configure.py#L347" + } + }, "configure_physical_interface_vmi": { "iosxe": { "doc": " configure vmi interface\n Args:\n device (`obj`): Device object\n vmi_name(`str`): vmi interface name\n rar_interface_name (`str`): rar interface name\n mode_op(`str`, optional): vmi operation mode\n Returns:\n None\n Raises:\n SubCommandFailure: Failed to configure vmi interface\n Example:\n device.api.configure_physical_interface_vmi(vmi_name='vmi1',rar_interface_name='GigabitEthnernet0/0/0',mode_op='bypass')\n ", @@ -9823,7 +10023,7 @@ "module_name": "policy_map.configure", "package": "genie.libs.sdk.apis", "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#L672" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L674" } }, "configure_policy_map_control": { @@ -9841,7 +10041,7 @@ "module_name": "policy_map.configure", "package": "genie.libs.sdk.apis", "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#L538" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L539" } }, "configure_policy_map_type_service": { @@ -9949,7 +10149,7 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "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#L8522" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8558" } }, "configure_power_efficient_ethernet_auto": { @@ -10012,7 +10212,7 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "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#L8627" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8663" } }, "configure_private_vlan_on_vlan": { @@ -10042,6 +10242,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L3783" } }, + "configure_protocol_version_optimize_cli_under_gkm_group": { + "iosxe": { + "doc": " Configures Crypto Gdoi Gkm group\n Args:\n device ('obj'): Device object\n group_name ('str'): gkm group name\n server_local ('bool', optional): Configure server local. Default is False\n server_local_redundancy ('bool', optional): Set redundancy in local server. Default is False\n protocol_version_optimize ('str', optional): set protocol version optimize\n Returns: None \n Raises:\n SubCommandFailure\n ", + "module_name": "gkm.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_protocol_version_optimize_cli_under_gkm_group", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/configure.py#L252" + } + }, "configure_pseudowire_encapsulation_mpls": { "iosxe": { "doc": " Configures pseudowire encapsulation mpls\n\n Args:\n device (`obj`): Device object\n pseudowire_class (`str`): Pseudowire class be applied\n Returns:\n None\n Raises:\n SubCommandFailure\n\t", @@ -10363,7 +10572,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_redestribute_ospf_metric_in_bgp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2144" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2235" } }, "configure_redistribute_connected": { @@ -10372,7 +10581,16 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_redistribute_connected", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L921" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1008" + } + }, + "configure_rekey_under_gkm_group": { + "iosxe": { + "doc": " Configures Crypto Gdoi Gkm group\n Args:\n device ('obj'): Device object\n group_name ('str'): gkm group name\n server_local ('bool', optional): Configure server local. Default is False\n rekey_algo ('str', optional): Configure rekey algorithm\n rekey_sighash ('str', optional): Configure rekey hash\n rekey_lifetime_sec ('str', optional): Configure rekey lifetime in seconds\n rekey_retransmit ('str', optional): Configure rekey retransmit periodic\n rekey_retransmit_number ('str', optional): Configure rekey retransmit number\n rekey_auth_key ('str', optional): Configure authentication key\n rekey_transport_unicast ('bool', optional): Configure rekey transport as unicast. Default is False \n Returns: None \n Raises:\n SubCommandFailure\n ", + "module_name": "gkm.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_rekey_under_gkm_group", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/configure.py#L104" } }, "configure_replace": { @@ -10413,7 +10631,7 @@ }, "configure_route_map": { "iosxe": { - "doc": " configure route map\n\n Args:\n device ('obj'): device to execute on\n route_map_name ('int'): route map name\n permit ('int'): Sequence to insert to existing route-map entry\n prefix_list_name ('str',optional): prefix-list name to be used\n acl_name ('str',optional): IPv4 ACL to be used\n acl_namev6 ('str',optional): IPv6 ACL to be used\n ip ('str',optional): ip address\n ipv6 ('str',optional): ipv6 address\n interface ('str',optional): Interface to be used\n\n Return:\n None\n\n Raises:\n SubCommandFailure\n ", + "doc": " configure route map\n\n Args:\n device ('obj'): device to execute on\n route_map_name ('int'): route map name\n permit ('int'): Sequence to insert to existing route-map entry\n prefix_list_name ('str',optional): prefix-list name to be used\n acl_name ('str',optional): IPv4 ACL to be used\n acl_namev6 ('str',optional): IPv6 ACL to be used\n ip ('str',optional): ip address\n ipv6 ('str',optional): ipv6 address\n interface ('str',optional): Interface to be used\n set_extcommunity ('str', optional): extcommunity value\n\n Return:\n None\n\n Raises:\n SubCommandFailure\n ", "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_route_map", @@ -10471,7 +10689,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_router_bgp_maximum_paths", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1837" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1928" } }, "configure_router_bgp_neighbor_ebgp_multihop": { @@ -10480,7 +10698,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_router_bgp_neighbor_ebgp_multihop", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2051" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2142" } }, "configure_router_bgp_neighbor_remote_as": { @@ -10489,7 +10707,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_router_bgp_neighbor_remote_as", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1997" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2088" } }, "configure_router_bgp_network_mask": { @@ -10498,7 +10716,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_router_bgp_network_mask", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2024" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2115" } }, "configure_router_bgp_synchronization": { @@ -10507,7 +10725,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_router_bgp_synchronization", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1887" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1978" } }, "configure_router_isis": { @@ -10525,7 +10743,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_router_ospf_redistribute_internal_external", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1960" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1963" } }, "configure_routing_ip_route": { @@ -10744,6 +10962,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxr/segment_routing/configure.py#L40" } }, + "configure_server_redundancy_under_gkm_group": { + "iosxe": { + "doc": " Configures Crypto Gdoi Gkm group\n Args:\n device ('obj'): Device object\n group_name ('str'): gkm group name\n server_local_redundancy ('bool', optional): Set redundancy in local server. Default is False \n server_local_redundancy ('bool', optional): Set redundancy in local server. Default is False\n server_local_redundancy_local_prior ('str', optional): set local priority value for redundancy\n server_local_redundancy_peer_addr ('str', optional): set peer address value for redundancy\n Returns: None\n\n Raises:\n SubCommandFailure\n ", + "module_name": "gkm.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_server_redundancy_under_gkm_group", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/configure.py#L213" + } + }, "configure_service_call_home": { "iosxe": { "doc": " Configures service call home \n Args:\n device ('obj'): device to use\n ", @@ -10809,11 +11036,11 @@ }, "configure_service_private_config_encryption": { "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": "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": "sudi.configure", "package": "genie.libs.sdk.apis", "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" } }, "configure_service_template": { @@ -10957,7 +11184,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "configure_shut_bgp_neighbors", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L546" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L633" } }, "configure_shut_ospf": { @@ -11011,7 +11238,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "configure_snmp_if_index_on_ospfv3_process_id", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2624" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2627" } }, "configure_snmp_mib_bulkstat": { @@ -11380,7 +11607,7 @@ "module_name": "platform.configure", "package": "genie.libs.sdk.apis", "uid": "configure_stackpower_stack", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L4557" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L4633" } }, "configure_stackpower_stack_switch_standalone": { @@ -11565,11 +11792,11 @@ }, "configure_switch_provision": { "iosxe": { - "doc": " Configures switch provisioning / offline configuration\n Example : switch 3 provision c9300-24h\n\n Args:\n device ('obj'): device to use\n switch_number('int'): switch number (Range 1-16)\n sku_type('str'): type of switch\n\n Returns:\n None\n\n Raises: \n SubCommandFailure\n ", - "module_name": "offline_provisioning.configure", + "doc": " Configure switch provision for switch\n Args:\n device ('obj'): Device object\n switch_number('int'): switch number\n model ('str'): switch model\n Raises:\n SubCommandFailure\n ", + "module_name": "platform.configure", "package": "genie.libs.sdk.apis", "uid": "configure_switch_provision", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/offline_provisioning/configure.py#L11" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L520" } }, "configure_switch_provision_model": { @@ -11762,11 +11989,20 @@ } }, "configure_table_map": { + "iosxe": { + "doc": " Configures table_map\n Args:\n device ('obj'): device to use\n table_map_name('str') : name of the table map name\n from_val('list') : list of from values\n to_val('list') : list of to values \n default_val('str'): name of the default, default is copy\n\n\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "table_map.configure", + "package": "genie.libs.sdk.apis", + "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" + } + }, + "configure_table_map_values": { "iosxe": { "doc": " Configures table_map\n Args:\n device ('obj'): device to use\n table_map_name('str') : name of the table map name\n from_val ('int') : list of from values\n to_val ('int') : list of to values \n Returns:\n None\n Raises:\n SubCommandFailure\n ", "module_name": "policy_map.configure", "package": "genie.libs.sdk.apis", - "uid": "configure_table_map", + "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#L391" } }, @@ -11847,6 +12083,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dot1x/configure.py#L1395" } }, + "configure_template_pseudowire": { + "iosxe": { + "doc": "Configure template name\n Args:\n device ('obj'): device object\n template_type ('str'): template type\n template_name ('str'): template name\n Return:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "mpls.configure", + "package": "genie.libs.sdk.apis", + "uid": "configure_template_pseudowire", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mpls/configure.py#L2028" + } + }, "configure_template_type_vpls": { "iosxe": { "doc": " template type to be configured\n Args:\n device (`obj`): Device object\n template_type ('str'): template type for the template\n flow_classification('str'): classify the flow based on ip or ethernet\n template_name (`str`) : name of the template to be used\n flow_ip_type ('str'): define the flow ip type \n flow_label_type ('str'): flow label to be used\n Return:\n None\n Raise:\n SubCommandFailure: Failed configuring interface\n ", @@ -11898,7 +12143,7 @@ "module_name": "apphosting.configure", "package": "genie.libs.sdk.apis", "uid": "configure_thousand_eyes_application", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L120" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L122" } }, "configure_traffic_eng_passive_interface": { @@ -11957,11 +12202,11 @@ }, "configure_tunnel_with_ipsec": { "iosxe": { - "doc": " Configure ipsec on Tunnel interface\n Args:\n device (`obj`): Device object\n tunnel_intf (`str`): Interface to get address\n overlay (`str`): Tunnel is eitehr IPv4 or Ipv6 or dual-overlay default value is ipv4\n tunnel_ip (`str`,optional): IPv4 addressed to be configured on interface\n tunnel_mask (`str`,optional): IPv4 Mask address to be used in configuration\n tunnel_src_ip (`str`): tunnel source address\n tunnel_dst_ip (`str`): tunnel destination address\n keepalive_timer ('int',optional): tunnel keepalive timer,default value is 10\n ip_mtu ('str',optional): tunnel mtu, default value is None\n tunnel_ipv6 (`str`,optional): IPv6 address with subnet mask,default value is None\n tunnel_maskv6 ('str',optional): IPv6 mask (Default None)\n tunnel_mode ('str',optional): Tunnel mode. Default is gre\n tunnel_protection ('str',optional): Protection type (i.e ipsec,dike)\n ipsec_profile_name ('str',optional): Tunnel protection profile name\n vrf ('str',optional): client vrf for the tunnel\n tunnel_vrf ('str',optional): wan vrf for the tunnel\n v6_overlay:('boolean', optional): True if v6-over-ipv4. Default is False\n ", - "module_name": "interface.configure", + "doc": " Configure ipsec on Tunnel interface\n Args:\n device (`obj`): Device object\n tunnel_intf (`str`): Interface to get address\n overlay (`str`): Tunnel is eitehr IPv4 or Ipv6 or dual-overlay default value is ipv4\n tunnel_ip (`str`,optional): IPv4 addressed to be configured on interface\n tunnel_mask (`str`,optional): IPv4 Mask address to be used in configuration\n tunnel_src_ip (`str`): tunnel source address\n tunnel_dst_ip (`str`): tunnel destination address\n keepalive_timer ('int',optional): tunnel keepalive timer,default value is 10\n ip_mtu ('str',optional): tunnel mtu, default value is None\n tunnel_ipv6 (`str`,optional): IPv6 address with subnet mask,default value is None\n tunnel_maskv6 ('str',optional): IPv6 mask (Default None)\n tunnel_mode ('str',optional): Tunnel mode. Default is gre\n tunnel_protection ('str',optional): Protection type (i.e ipsec,dike)\n ipsec_profile_name ('str',optional): Tunnel protection profile name\n vrf ('str',optional): client vrf for the tunnel\n tunnel_vrf ('str',optional): wan vrf for the tunnel\n v6_overlay:('boolean', optional): True if v6-over-ipv4. Default is False\n\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "ipsec.configure", "package": "genie.libs.sdk.apis", "uid": "configure_tunnel_with_ipsec", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L7343" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ipsec/configure.py#L1018" } }, "configure_udld": { @@ -12369,6 +12614,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/aaa/configure.py#L624" } }, + "confirm_iox_enabled_requested_storage_media": { + "iosxe": { + "doc": "Confirm iox enabled requested storage media\n Args:\n uut('obj'): Device object\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "apphosting.configure", + "package": "genie.libs.sdk.apis", + "uid": "confirm_iox_enabled_requested_storage_media", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L326" + } + }, "convert_server_to_linux_device": { "com": { "doc": "\n Args\n converts a server block to a device object\n device ('obj'): Device object\n server ('str'): server hostname\n\n Returns:\n A Device object that can be connected\n ", @@ -12703,6 +12957,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/debug/configure.py#L129" } }, + "debug_vdsl_controller_slot_dump_internal": { + "iosxe": { + "doc": " Debug cli to dump vdsl controller slot internal \t\t\t\n\t\t\t\n Args:\n device (obj): Device to execute on\n slot (str): slot/subslot number \n filename (str, optional): filename for dumping the debug in bootflash \n timeout (int, optional): Max time in seconds allowed for calculation.\n Defaults to 900Sec.\n Returns:\n True if Debug dump is successful else return False\n ", + "module_name": "debug.configure", + "package": "genie.libs.sdk.apis", + "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#L227" + } + }, "decode_core": { "linux": { "doc": " Function to decode the given corefile ", @@ -13156,7 +13419,7 @@ "module_name": "apphosting.configure", "package": "genie.libs.sdk.apis", "uid": "disable_iox", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L104" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L106" } }, "disable_ip_dhcp_auto_broadcast": { @@ -13255,7 +13518,7 @@ "module_name": "apphosting.configure", "package": "genie.libs.sdk.apis", "uid": "disable_usb_ssd", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L34" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L36" } }, "downgrade_issu_image_on_router": { @@ -13356,7 +13619,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "enable_bgp_forwarding", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1345" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1432" } }, "enable_cts_enforcement": { @@ -13377,6 +13640,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cts/configure.py#L51" } }, + "enable_cts_enforcement_vlan_list": { + "iosxe": { + "doc": " enable cts role-based enforcement on given vlan range\n Args:\n device ('obj'): device to use\n vlan ('str'): vlan range to configure\n Returns:\n None\n Raises:\n SubCommandFailure: Failed to enable cts role-based enforcement vlan list\n ", + "module_name": "cts.configure", + "package": "genie.libs.sdk.apis", + "uid": "enable_cts_enforcement_vlan_list", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cts/configure.py#L1076" + } + }, "enable_debug": { "iosxe": { "doc": " Enable debug for the mentioned parameter\n Args:\n device ('obj'): device to use\n parameter ('str'): parameter for which debug has to be enabled\n Returns:\n None\n Raises:\n SubCommandFailure: Failed enabling debug\n ", @@ -13511,7 +13783,7 @@ "module_name": "apphosting.configure", "package": "genie.libs.sdk.apis", "uid": "enable_iox", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L89" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L91" } }, "enable_ip_dhcp_auto_broadcast": { @@ -13682,7 +13954,7 @@ "module_name": "apphosting.configure", "package": "genie.libs.sdk.apis", "uid": "enable_usb_ssd", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L15" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L17" } }, "escape_ansi": { @@ -14242,6 +14514,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/execute.py#L1086" } }, + "execute_dir_file_system": { + "iosxe": { + "doc": " Execute dir file_system\n Example: dir flash:\n Args:\n device ('obj'): Device object\n file_system ('str'): specifying filesystems such as bootflash:,usb:, flash:, flash-1:, flash2:/crashinfo:, crashinfo-1: , crashinfo2:\n sub_directory('str'): specifying the subdirectory inside the filesystem \n timeout ('int'): Max time to print dir output\n Returns:\n output\n Raises:\n SubCommandFailure\n ", + "module_name": "platform.execute", + "package": "genie.libs.sdk.apis", + "uid": "execute_dir_file_system", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/execute.py#L1433" + } + }, "execute_erase_ap": { "com": { "doc": null, @@ -20501,6 +20782,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/nxos/health/health.py#L124" } }, + "hw_module_beacon_RP_active_standby": { + "iosxe": { + "doc": " ON/OFF beacon supervisor\n Args:\n device ('obj'): Device object\n supervisor('str'): active/standby\n operation('str'): ON/OFF\n \n ", + "module_name": "platform.configure", + "package": "genie.libs.sdk.apis", + "uid": "hw_module_beacon_RP_active_standby", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L4736" + } + }, "hw_module_beacon_slot_on_off": { "iosxe": { "doc": " ON/OFF beacon slot\n Args:\n device ('obj'): Device object\n slot('int'): Switch number\n operation('str'): ON/OFF\n\n ", @@ -21479,7 +21769,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "redistribute_bgp_metric_route_map_under_ospf", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1867" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1870" } }, "redistribute_bgp_metric_type_under_ospf": { @@ -21497,7 +21787,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "redistribute_bgp_on_ospfv3", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2674" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2677" } }, "redistribute_bgp_under_ospf": { @@ -21515,7 +21805,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "redistribute_eigrp_under_ospf", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1589" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1592" } }, "redistribute_route_map_under_ospf": { @@ -21533,7 +21823,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "redistribute_route_metric_vrf_green", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2646" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2649" } }, "reload_issu_slot": { @@ -21578,7 +21868,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "remove_bgp_configuration", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L766" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L853" } }, "remove_channel_group_from_interface": { @@ -22352,6 +22642,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/linux/snmp/configure.py#L11" } }, + "set_stack_mode": { + "iosxe": { + "doc": "Entering to Set stack mode", + "module_name": "apphosting.execute", + "package": "genie.libs.sdk.apis", + "uid": "set_stack_mode", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/execute.py#L248" + } + }, "set_system_mtu": { "iosxe": { "doc": " Sets mtu value on device\n\n Args:\n device ('obj'): Device obj\n mtu_value ('str'): MTU value to be set\n\n Returns:\n None\n\n Raises:\n SubCommandFailure\n ", @@ -22648,6 +22947,7 @@ "aireos", "apic", "asa", + "asr1k", "asr9k", "c8000", "c9800", @@ -22784,7 +23084,7 @@ "module_name": "platform.configure", "package": "genie.libs.sdk.apis", "uid": "unconfig_cns_agent_password", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L4605" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L4698" } }, "unconfig_device_tracking_policy": { @@ -22946,7 +23246,7 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "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#L8402" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8438" } }, "unconfig_ip_on_vlan": { @@ -23165,6 +23465,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/hardware/configure.py#L33" } }, + "unconfigure_400g_mode_for_port_group_onsvl": { + "iosxe": { + "doc": " Disable 400g mode conversion on NG-SVL\n Args:\n device (`obj`): Device object\n slot (`int`): Metaluna slot\n port_group_range ('str', optional) : range end for port group, default value is None\n port_group('int') : port group number\n switch_number('int') : switch number 1 or 2\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "hardware.configure", + "package": "genie.libs.sdk.apis", + "uid": "unconfigure_400g_mode_for_port_group_onsvl", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/hardware/configure.py#L223" + } + }, "unconfigure_400g_mode_port_group_range": { "iosxe": { "doc": " disable 400g mode range conversion on Metaluna LC\n Args:\n device (`obj`): Device object\n slot (`int`): Metaluna slot\n\n Returns:\n None\n\n Raises:\n SubCommandFailure : Failed configuring device\n ", @@ -23309,6 +23618,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dot1x/configure.py#L1538" } }, + "unconfigure_access_session_mac_move": { + "iosxe": { + "doc": "Unconfigure access-session mac-move\n Args:\n device ('obj'): Device object\n access_type('str'): accounting Accounting Filter List Configuration\n acl Application of ACLs on access-session\n attributes Attributes Filter List Configuration\n authentication Authentication Filter List Configuration\n bridge-mode bridge-mode\n cache Set cache configuration\n event-logging Event log Configuration\n interface-template Set the interface-template sticky globally\n limit Set session limit parameter\n mac-move Set required action when a MAC move is detected\n monitor Apply template to monitor access sessions on the port\n passthru-access-group IP access-list map to FQDN ACL\n single-policy Replace all interface service-policies with single policy\n tls-version Set required TLS version\n voice voice client auth options\n wireless Wireless\n deny_type('str'): deny DENY MAC moves (clears existing session)\n deny-uncontrolled Deny MAC move to uncontrolled port\n Return: \n None\n Raise:\n SubCommandFailure \n ", + "module_name": "dot1x.configure", + "package": "genie.libs.sdk.apis", + "uid": "unconfigure_access_session_mac_move", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dot1x/configure.py#L2180" + } + }, "unconfigure_access_session_macmove_deny": { "iosxe": { "doc": "unconfigure access-session mac-move deny\n Args:\n device ('obj'): Device object\n Return:\n None\n Raise:\n SubCommandFailure\n ", @@ -23396,7 +23714,7 @@ "module_name": "apphosting.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_app_hosting_appid", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L308" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py#L310" } }, "unconfigure_archive_logging": { @@ -23639,7 +23957,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_bgp_auto_summary", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1975" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2066" } }, "unconfigure_bgp_log_neighbor_changes": { @@ -23648,7 +23966,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_bgp_log_neighbor_changes", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1931" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2022" } }, "unconfigure_bgp_neighbor_activate": { @@ -23657,7 +23975,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_bgp_neighbor_activate", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1422" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1509" } }, "unconfigure_bgp_neighbor_remote_as": { @@ -23666,7 +23984,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_bgp_neighbor_remote_as", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1466" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1553" } }, "unconfigure_bgp_neighbor_send_community": { @@ -23675,7 +23993,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_bgp_neighbor_send_community", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1368" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1455" } }, "unconfigure_bgp_redistribute_internal": { @@ -23684,7 +24002,16 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_bgp_redistribute_internal", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2124" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2215" + } + }, + "unconfigure_bgp_redistribute_static": { + "iosxe": { + "doc": " unconfigure redistribute static in bgp\n Args:\n device ('obj'): device to use\n bgp_as ('int'): bgp as number\n address_family ('str'): address family under bgp\n vrf ('str'): vrf in address_family\n route_map ('str', optional): route-map name\n Returns:\n None\n Raises:\n SubCommandFailure: Failed unconfiguring redistribute\n static under bgp address_family\n ", + "module_name": "bgp.configure", + "package": "genie.libs.sdk.apis", + "uid": "unconfigure_bgp_redistribute_static", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2552" } }, "unconfigure_boot_manual_switch": { @@ -23743,11 +24070,11 @@ }, "unconfigure_call_home": { "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": "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": "platform_licensing.configure", "package": "genie.libs.sdk.apis", "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" } }, "unconfigure_call_home_profile": { @@ -23998,11 +24325,11 @@ }, "unconfigure_crypto_pki_server": { "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": "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": "pki.configure", "package": "genie.libs.sdk.apis", "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#L487" } }, "unconfigure_crypto_transform_set": { @@ -24308,7 +24635,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_distribute_prefix_list_under_ospf", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1836" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1839" } }, "unconfigure_dot1x_cred_int": { @@ -25091,7 +25418,16 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "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#L8359" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8395" + } + }, + "unconfigure_interface_bandwidth": { + "iosxe": { + "doc": " unconfigures vlan group list\n Args:\n device ('obj'): device to use\n interface ('str'): interface name\n bandwidth ('str'): bandwidth. Ex: '300000'\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "interface.configure", + "package": "genie.libs.sdk.apis", + "uid": "unconfigure_interface_bandwidth", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8309" } }, "unconfigure_interface_channel_group_auto_lacp": { @@ -25163,7 +25499,7 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "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#L8505" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8541" } }, "unconfigure_interface_eigrp_v6": { @@ -25352,7 +25688,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_interface_ospfv3_ipsec_ah", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2385" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2388" } }, "unconfigure_interface_ospfv3_ipsec_esp": { @@ -25361,7 +25697,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_interface_ospfv3_ipsec_esp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2422" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2425" } }, "unconfigure_interface_pim": { @@ -25388,7 +25724,7 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "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#L8667" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8703" } }, "unconfigure_interface_reg_segment": { @@ -26027,7 +26363,7 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "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#L8428" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8464" } }, "unconfigure_ip_ospf_mtu_ignore": { @@ -26036,7 +26372,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_ip_ospf_mtu_ignore", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1495" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1498" } }, "unconfigure_ip_pim": { @@ -26162,7 +26498,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_ip_ssh_version", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L897" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L898" } }, "unconfigure_ip_subnet_to_sgt_mapping_vrf": { @@ -26594,7 +26930,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_ipv6_ospf_bfd", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1286" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1289" } }, "unconfigure_ipv6_ospf_mtu_ignore": { @@ -26603,7 +26939,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_ipv6_ospf_mtu_ignore", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1344" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1347" } }, "unconfigure_ipv6_ospf_routing_on_interface": { @@ -26612,7 +26948,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_ipv6_ospf_routing_on_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1408" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1411" } }, "unconfigure_ipv6_pim_bsr_candidate_bsr": { @@ -27196,11 +27532,11 @@ }, "unconfigure_mac_address_table_notification_change": { "iosxe": { - "doc": " unConfig mac-address-table notification change on Device\n Args:\n device (`obj`): Device object\n \n Return:\n None\n\n Raise:\n SubCommandFailure: Failed unconfiguring mac-address-table notification change\n ", - "module_name": "c960.configure", + "doc": "Unconfigure mac-address-table notification change on this device\n Args:\n device ('obj'): Device object\n change_option ('str',optional): change option history-size/interval\n size ('int',optional): Number of MAC notifications to be stored\n interval ('int',optional): Interval between the MAC notifications\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "mac.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_mac_address_table_notification_change", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/c960/configure.py#L130" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mac/configure.py#L289" } }, "unconfigure_mac_address_table_static": { @@ -27542,7 +27878,7 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "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#L8315" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8351" } }, "unconfigure_mpls_ldp_graceful_restart": { @@ -27596,7 +27932,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_mtc", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L831" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L832" } }, "unconfigure_mtc_parameters": { @@ -27605,7 +27941,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_mtc_parameters", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L797" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L798" } }, "unconfigure_nat64_interface": { @@ -27776,7 +28112,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_neighbor_under_ospf", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1753" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1756" } }, "unconfigure_netconf_yang": { @@ -27794,7 +28130,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_netconf_yang_intelligent_sync", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L864" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L865" } }, "unconfigure_netconf_yang_polling": { @@ -27803,7 +28139,7 @@ "module_name": "management.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_netconf_yang_polling", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L744" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py#L745" } }, "unconfigure_network_policy_profile_number": { @@ -27857,7 +28193,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_ospf_area_type", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1615" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1618" } }, "unconfigure_ospf_cost": { @@ -27866,7 +28202,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_ospf_cost", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1934" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1937" } }, "unconfigure_ospf_from_interface": { @@ -27875,7 +28211,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_ospf_from_interface", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2005" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2008" } }, "unconfigure_ospf_network_non_broadcast": { @@ -27884,7 +28220,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_ospf_network_non_broadcast", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1693" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1696" } }, "unconfigure_ospf_on_device": { @@ -27911,7 +28247,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_ospf_vrf_on_device", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1147" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1150" } }, "unconfigure_ospfv3": { @@ -27938,7 +28274,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_ospfv3_ipsec_ah", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2266" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2269" } }, "unconfigure_ospfv3_ipsec_esp": { @@ -27947,7 +28283,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_ospfv3_ipsec_esp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2303" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L2306" } }, "unconfigure_ospfv3_network": { @@ -27956,7 +28292,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_ospfv3_network", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1228" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1231" } }, "unconfigure_outside_static_nat_rule": { @@ -28046,7 +28382,7 @@ "module_name": "policy_map.configure", "package": "genie.libs.sdk.apis", "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#L858" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L860" } }, "unconfigure_policy_map_class_parameters": { @@ -28055,7 +28391,7 @@ "module_name": "policy_map.configure", "package": "genie.libs.sdk.apis", "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#L765" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L767" } }, "unconfigure_policy_map_on_interface": { @@ -28091,7 +28427,7 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "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#L8599" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8635" } }, "unconfigure_port_channel_lacp_max_bundle": { @@ -28127,7 +28463,7 @@ "module_name": "interface.configure", "package": "genie.libs.sdk.apis", "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#L8548" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/interface/configure.py#L8584" } }, "unconfigure_power_efficient_ethernet_auto": { @@ -28307,7 +28643,7 @@ "module_name": "vlan.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_pvlan_primary", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vlan/configure.py#L1017" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vlan/configure.py#L1016" } }, "unconfigure_pvlan_type": { @@ -28316,7 +28652,7 @@ "module_name": "vlan.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_pvlan_type", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vlan/configure.py#L1039" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vlan/configure.py#L1038" } }, "unconfigure_qos_policy": { @@ -28406,7 +28742,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_redestribute_ospf_metric_in_bgp", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2168" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2259" } }, "unconfigure_redistribute_eigrp_under_ospf": { @@ -28415,7 +28751,7 @@ "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_redistribute_eigrp_under_ospf", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1638" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1641" } }, "unconfigure_rip": { @@ -28438,11 +28774,11 @@ }, "unconfigure_route_map": { "iosxe": { - "doc": " unconfigure route map\n\n Args:\n device (`obj`): device to execute on\n route_map_name (`int`): route map name\n permit (`int`): Sequence to insert to existing route-map entry\n Return:\n None\n\n Raises:\n SubCommandFailure\n ", + "doc": " unconfigure route map\n\n Args:\n device (`obj`): device to execute on\n route_map_name (`int`): route map name\n permit (`int`, optional): Sequence to insert to existing route-map entry\n Return:\n None\n\n Raises:\n SubCommandFailure\n ", "module_name": "ospf.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_route_map", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1062" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py#L1065" } }, "unconfigure_route_map_permit": { @@ -28454,6 +28790,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/route_map/configure.py#L149" } }, + "unconfigure_route_map_route_map_to_bgp_neighbor": { + "iosxe": { + "doc": " unonfigure route map to bgp neighbors\n\n Args:\n device ('obj'): Device object\n bgp_as ('int'): BGP AS number\n address_family ('str'): address family\n vrf ('str'): vrf name\n vrf_address_family ('str'): address family for vrf\n route_map ('list'): route map list which contains dictionary\n dictionary contains following 5 keys:\n neighbor ('str'): neighbor value\n route_map ('str'): route-map name\n direction ('str'): direction type\n ex.)\n [\n {\n 'neighbor': '192.168.60.10',\n 'route_map': 'community_test_out',\n 'direction': 'out'\n },\n {\n 'neighbor': '192.168.60.11',\n 'route_map': 'community_test_out',\n 'direction': 'out'\n },\n {\n 'neighbor': '192.168.6.10',\n 'route_map': 'community_test_in',\n 'direction': 'in'\n },\n\n ]\n Returns:\n N/A\n Raises:\n SubCommandFailure: Failed executing configure commands\n TypeError: route_map is not a list\n ", + "module_name": "bgp.configure", + "package": "genie.libs.sdk.apis", + "uid": "unconfigure_route_map_route_map_to_bgp_neighbor", + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L429" + } + }, "unconfigure_route_map_under_interface": { "iosxe": { "doc": " unonfigure route-map on an interface\n\n Args:\n device (`obj`): Device object\n interface (`str`): Interface to get address\n route_map (`str`): Route-map to be configured on interface\n ipv6 ('bool'): Indicate if this is ipv6 route map. Default false\n\n Returns:\n None\n\n Raises:\n SubCommandFailure\n\n ", @@ -28478,7 +28823,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_router_bgp_maximum_paths", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1864" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1955" } }, "unconfigure_router_bgp_network_mask": { @@ -28487,7 +28832,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_router_bgp_network_mask", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2304" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2395" } }, "unconfigure_router_bgp_synchronization": { @@ -28496,7 +28841,7 @@ "module_name": "bgp.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_router_bgp_synchronization", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L1909" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py#L2000" } }, "unconfigure_router_ospf": { @@ -28631,16 +28976,16 @@ "module_name": "policy_map.configure", "package": "genie.libs.sdk.apis", "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#L649" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/policy_map/configure.py#L651" } }, "unconfigure_service_private_config_encryption": { "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": "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": "sudi.configure", "package": "genie.libs.sdk.apis", "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" } }, "unconfigure_service_template": { @@ -28712,7 +29057,7 @@ "module_name": "platform.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_snmp_mib_bulkstat", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L4528" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L4604" } }, "unconfigure_snmp_server_contact": { @@ -28991,7 +29336,7 @@ "module_name": "platform.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_stackpower_stack", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L4585" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L4661" } }, "unconfigure_stackpower_stack_switch_standalone": { @@ -29149,11 +29494,11 @@ }, "unconfigure_switch_provision": { "iosxe": { - "doc": " Unconfigures switch provisioning\n Example : no switch 3 provision\n\n Args:\n device ('obj'): device to use\n switch_number('int'): switch number (Range 1-16)\n\n Returns:\n None\n\n Raises: \n SubCommandFailure\n ", - "module_name": "offline_provisioning.configure", + "doc": " Unconfigure switch provision for switch\n Args:\n device ('obj'): Device object\n switch_number('int'): switch number\n Raises:\n SubCommandFailure\n ", + "module_name": "platform.configure", "package": "genie.libs.sdk.apis", "uid": "unconfigure_switch_provision", - "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/offline_provisioning/configure.py#L33" + "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/configure.py#L538" } }, "unconfigure_switchport_nonegotiate": { @@ -29212,10 +29557,19 @@ }, "unconfigure_table_map": { "iosxe": { - "doc": " UnConfigures table_map\n Args:\n device ('obj'): device to use\n table_map_name ('str') : name of the table map name\n from_val ('int') : list of from values\n to_val ('int') : list of to values \n Returns:\n None\n Raises:\n SubCommandFailure\n ", - "module_name": "policy_map.configure", + "doc": " Unconfigures policy-map\n Args:\n device ('obj'): device to use\n table_map_name ('str'): name of the table\n\n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "table_map.configure", "package": "genie.libs.sdk.apis", "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" + } + }, + "unconfigure_table_map_values": { + "iosxe": { + "doc": " UnConfigures table_map values\n Args:\n device ('obj'): device to use\n table_map_name ('str') : name of the table map name\n from_val ('int') : list of from values\n to_val ('int') : list of to values \n Returns:\n None\n Raises:\n SubCommandFailure\n ", + "module_name": "policy_map.configure", + "package": "genie.libs.sdk.apis", + "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#L367" } }, @@ -29631,6 +29985,15 @@ "url": "https://github.com/CiscoTestAutomation/genielibs/tree/master/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/eigrp/configure.py#L109" } }, + "upgrade_hw_module_subslot_sfp": { + "iosxe": { + "doc": " upgrade the firmware on sfp and retrun True or False.\n\n Args:\n device (obj): Device to execute on\n slot (str): slot/subslot number\n sfp (str): sfp number \n image (str, optional): Image full path for upgrade \n timeout (int, optional): Max time in seconds allowed for calculation.\n Defaults to 180.\n\n Returns:\n True if Upgrade is successful else return False\n ", + "module_name": "utils", + "package": "genie.libs.sdk.apis", + "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#L1836" + } + }, "verify_Parser_Encrypt_decrypt_File_Status": { "iosxe": { "doc": " Verify parser encryption decryption status in show parser encrypt file status\n Args:\n device ('obj'): Device object\n status ('list'): Expected output # [\"Cipher text\",True,\"ver1\"]\n max_time ('int'): Maximum wait time for the trigger,\n in second. Default: 15\n check_interval (int): Wait time between iterations when looping is needed,\n in second. Default: 5\n Returns:\n result (`bool`): Verified result\n ", diff --git a/pkgs/sdk-pkg/sdk_generator/output/github_verifications.json b/pkgs/sdk-pkg/sdk_generator/output/github_verifications.json index c5023f654..39ce362cf 100644 --- a/pkgs/sdk-pkg/sdk_generator/output/github_verifications.json +++ b/pkgs/sdk-pkg/sdk_generator/output/github_verifications.json @@ -4560,7 +4560,7 @@ "ios": { "doc": " Parser for \"show ip ospf database external\" ", "groups": [], - "schema": "{'vrf': {Any (str) *: {'address_family': {Any (str) *: {'instance': {Any (str) *: {Optional (str) areas: {Any (str) *: {'database': {'lsa_types': {Any (str) *: {'lsa_type': , 'lsas': {Any (str) *: {'lsa_id': , 'adv_router': , 'ospfv2': {'header': {'option': , 'option_desc': , 'lsa_id': , 'age': , 'type': , 'adv_router': , 'seq_num': , 'checksum': , 'length': , Optional (str) routing_bit_enable: }, 'body': {'external': {'network_mask': , 'topologies': {Any (str) *: {'mt_id': , Optional (str) flags: , 'metric': , 'forwarding_address': , 'external_route_tag': }}}}}}}}}}}}}}}}}}}", + "schema": "{'vrf': {Any (str) *: {'address_family': {Any (str) *: {'instance': {Any (str) *: {Optional (str) areas: {Any (str) *: {'database': {'lsa_types': {Any (str) *: {'lsa_type': , 'lsas': {Any (str) *: {'lsa_id': , 'adv_router': , 'ospfv2': {'header': {'option': , 'option_desc': , 'lsa_id': , 'age': , 'type': , 'adv_router': , 'seq_num': , 'checksum': , 'length': , Optional (str) routing_bit_enable: }, 'body': {'external': {'network_mask': , 'topologies': {Any (str) *: {'mt_id': , Optional (str) flags: , Optional (str) metric_type: , 'metric': , 'forwarding_address': , 'external_route_tag': }}}}}}}}}}}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -4572,7 +4572,7 @@ ], "doc": " Parser for:\n * 'show ip ospf database external'\n ", "groups": [], - "schema": "{'vrf': {Any (str) *: {'address_family': {Any (str) *: {'instance': {Any (str) *: {Optional (str) areas: {Any (str) *: {'database': {'lsa_types': {Any (str) *: {'lsa_type': , 'lsas': {Any (str) *: {'lsa_id': , 'adv_router': , 'ospfv2': {'header': {'option': , 'option_desc': , 'lsa_id': , 'age': , 'type': , 'adv_router': , 'seq_num': , 'checksum': , 'length': , Optional (str) routing_bit_enable: }, 'body': {'external': {'network_mask': , 'topologies': {Any (str) *: {'mt_id': , Optional (str) flags: , 'metric': , 'forwarding_address': , 'external_route_tag': }}}}}}}}}}}}}}}}}}}", + "schema": "{'vrf': {Any (str) *: {'address_family': {Any (str) *: {'instance': {Any (str) *: {Optional (str) areas: {Any (str) *: {'database': {'lsa_types': {Any (str) *: {'lsa_type': , 'lsas': {Any (str) *: {'lsa_id': , 'adv_router': , 'ospfv2': {'header': {'option': , 'option_desc': , 'lsa_id': , 'age': , 'type': , 'adv_router': , 'seq_num': , 'checksum': , 'length': , Optional (str) routing_bit_enable: }, 'body': {'external': {'network_mask': , 'topologies': {Any (str) *: {'mt_id': , Optional (str) flags: , Optional (str) metric_type: , 'metric': , 'forwarding_address': , 'external_route_tag': }}}}}}}}}}}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7420,7 +7420,7 @@ "ios": { "doc": "Parser for \"show lisp all instance-id rloc members\"", "groups": [], - "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) rloc: {'total_entries': , 'valid_entries': , 'distribution': , 'members': {Any (str) *: {'origin': , 'valid': }}}}}}}}}}", + "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) rloc: {'total_entries': , 'valid_entries': , 'distribution': , Optional (str) members: {Any (str) *: {'origin': , 'valid': }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7430,7 +7430,7 @@ "devices": [ "uut" ], - "doc": "Parser for \"show lisp all instance-id rloc members\"", + "doc": "Parser for \"show lisp all instance-id server rloc members\"", "groups": [ "lisp" ], @@ -7438,7 +7438,7 @@ "instance_id": "*", "service": "ethernet" }, - "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) rloc: {'total_entries': , 'valid_entries': , 'distribution': , 'members': {Any (str) *: {'origin': , 'valid': }}}}}}}}}}", + "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) rloc: {'total_entries': , 'valid_entries': , 'distribution': , Optional (str) members: {Any (str) *: {'origin': , 'valid': }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7449,7 +7449,7 @@ "ios": { "doc": "Parser for \"show lisp all instance-id rloc members\"", "groups": [], - "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) rloc: {'total_entries': , 'valid_entries': , 'distribution': , 'members': {Any (str) *: {'origin': , 'valid': }}}}}}}}}}", + "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) rloc: {'total_entries': , 'valid_entries': , 'distribution': , Optional (str) members: {Any (str) *: {'origin': , 'valid': }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7459,7 +7459,7 @@ "devices": [ "uut" ], - "doc": "Parser for \"show lisp all instance-id rloc members\"", + "doc": "Parser for \"show lisp all instance-id server rloc members\"", "groups": [ "lisp" ], @@ -7467,7 +7467,7 @@ "instance_id": "*", "service": "ipv4" }, - "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) rloc: {'total_entries': , 'valid_entries': , 'distribution': , 'members': {Any (str) *: {'origin': , 'valid': }}}}}}}}}}", + "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) rloc: {'total_entries': , 'valid_entries': , 'distribution': , Optional (str) members: {Any (str) *: {'origin': , 'valid': }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7478,7 +7478,7 @@ "ios": { "doc": "Parser for \"show lisp all instance-id rloc members\"", "groups": [], - "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) rloc: {'total_entries': , 'valid_entries': , 'distribution': , 'members': {Any (str) *: {'origin': , 'valid': }}}}}}}}}}", + "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) rloc: {'total_entries': , 'valid_entries': , 'distribution': , Optional (str) members: {Any (str) *: {'origin': , 'valid': }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7488,7 +7488,7 @@ "devices": [ "uut" ], - "doc": "Parser for \"show lisp all instance-id rloc members\"", + "doc": "Parser for \"show lisp all instance-id server rloc members\"", "groups": [ "lisp" ], @@ -7496,7 +7496,7 @@ "instance_id": "*", "service": "ipv6" }, - "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) rloc: {'total_entries': , 'valid_entries': , 'distribution': , 'members': {Any (str) *: {'origin': , 'valid': }}}}}}}}}}", + "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) rloc: {'total_entries': , 'valid_entries': , 'distribution': , Optional (str) members: {Any (str) *: {'origin': , 'valid': }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7681,7 +7681,7 @@ "ios": { "doc": "Parser for \"show lisp all instance-id smr\"", "groups": [], - "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) smr: {'vrf': , 'entries': , 'prefixes': {Any (str) *: {'producer': }}}}}}}}}}", + "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) smr: {'vrf': , 'entries': , Optional (str) prefixes: {Any (str) *: {'producer': }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7699,7 +7699,7 @@ "instance_id": "*", "service": "ethernet" }, - "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) smr: {'vrf': , 'entries': , 'prefixes': {Any (str) *: {'producer': }}}}}}}}}}", + "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) smr: {'vrf': , 'entries': , Optional (str) prefixes: {Any (str) *: {'producer': }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7710,7 +7710,7 @@ "ios": { "doc": "Parser for \"show lisp all instance-id smr\"", "groups": [], - "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) smr: {'vrf': , 'entries': , 'prefixes': {Any (str) *: {'producer': }}}}}}}}}}", + "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) smr: {'vrf': , 'entries': , Optional (str) prefixes: {Any (str) *: {'producer': }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7728,7 +7728,7 @@ "instance_id": "*", "service": "ipv4" }, - "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) smr: {'vrf': , 'entries': , 'prefixes': {Any (str) *: {'producer': }}}}}}}}}}", + "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) smr: {'vrf': , 'entries': , Optional (str) prefixes: {Any (str) *: {'producer': }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7739,7 +7739,7 @@ "ios": { "doc": "Parser for \"show lisp all instance-id smr\"", "groups": [], - "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) smr: {'vrf': , 'entries': , 'prefixes': {Any (str) *: {'producer': }}}}}}}}}}", + "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) smr: {'vrf': , 'entries': , Optional (str) prefixes: {Any (str) *: {'producer': }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -7757,7 +7757,7 @@ "instance_id": "*", "service": "ipv6" }, - "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) smr: {'vrf': , 'entries': , 'prefixes': {Any (str) *: {'producer': }}}}}}}}}}", + "schema": "{'lisp_router_instances': {Any (str) *: {'lisp_router_instance_id': , Optional (str) service: {Optional (Any) Any (str) *: {'instance_id': {Any (str) *: {Optional (str) smr: {'vrf': , 'entries': , Optional (str) prefixes: {Any (str) *: {'producer': }}}}}}}}}}", "source": { "class": "genie.harness.base.Template" }, @@ -10110,7 +10110,7 @@ "c9500": { "doc": "Parser for show version", "groups": [], - "schema": "{'version': {Optional (str) xe_version: , 'version_short': , 'os': , Optional (str) code_name: , 'platform': , 'version': , Optional (str) label: , Optional (str) build_label: , 'image_id': , 'rom': , 'bootldr_version': , 'hostname': , 'uptime': , 'uptime_this_cp': , 'returned_to_rom_by': , 'system_image': , 'last_reload_reason': , 'chassis': , 'processor_type': , 'main_mem': , 'processor_board_id': , Optional (str) curr_config_register: , 'compiled_date': , 'compiled_by': , 'mac_address': , 'mb_assembly_num': , 'mb_sn': , 'model_rev_num': , 'mb_rev_num': , 'model_num': , Optional (str) system_sn: , Optional (str) mem_size: {Any (str) *: }, Optional (str) license_level: , Optional (str) next_reload_license_level: , 'smart_licensing_status': , Optional (str) number_of_intfs: {Any (str) *: }, Optional (str) disks: {Any (str) *: {'disk_size': }}}}", + "schema": "{'version': {Optional (str) xe_version: , 'version_short': , 'os': , Optional (str) code_name: , 'platform': , 'version': , Optional (str) label: , Optional (str) build_label: , 'image_id': , 'rom': , 'bootldr_version': , 'hostname': , 'uptime': , 'uptime_this_cp': , 'returned_to_rom_by': , 'system_image': , 'last_reload_reason': , 'chassis': , 'processor_type': , 'main_mem': , 'processor_board_id': , Optional (str) curr_config_register: , Optional (str) revision: , 'compiled_date': , 'compiled_by': , 'mac_address': , 'mb_assembly_num': , 'mb_sn': , 'model_rev_num': , 'mb_rev_num': , 'model_num': , Optional (str) system_sn: , Optional (str) mem_size: {Any (str) *: }, Optional (str) license_level: , Optional (str) next_reload_license_level: , 'smart_licensing_status': , Optional (str) number_of_intfs: {Any (str) *: }, Optional (str) disks: {Any (str) *: {'disk_size': }}}}", "source": { "class": "genie.harness.base.Template" }, diff --git a/pkgs/sdk-pkg/setup.py b/pkgs/sdk-pkg/setup.py index 7f2009c94..c609a8fde 100755 --- a/pkgs/sdk-pkg/setup.py +++ b/pkgs/sdk-pkg/setup.py @@ -48,7 +48,8 @@ def version_info(*paths): version = find_version('src', 'genie', 'libs', 'sdk', '__init__.py') install_requires = [ - 'ruamel.yaml', 'yang.connector' + 'ruamel.yaml', 'yang.connector', + 'pysnmp==4.4.12', 'pyasn1==0.4.8' ] # launch setup diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/__init__.py index f87ad288a..6a67351b7 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__ = '23.6' +__version__ = '23.7' __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/iosxe/apphosting/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py old mode 100755 new mode 100644 index 580c47936..a78cd113c --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/configure.py @@ -2,8 +2,10 @@ import logging import time +import inspect log = logging.getLogger(__name__) +log.setLevel(logging.DEBUG) # Unicon from unicon.core.errors import SubCommandFailure @@ -320,3 +322,62 @@ def unconfigure_app_hosting_appid(device): device.configure(cmd) except SubCommandFailure as e: raise SubCommandFailure(f'Could not unconfigure app-hosting appid. Error: {e}') + +def confirm_iox_enabled_requested_storage_media(uut, storage='ssd'): + """Confirm iox enabled requested storage media + Args: + uut('obj'): Device object + Returns: + None + Raises: + SubCommandFailure + """ + log.debug("Entering " + inspect.currentframe().f_code.co_name) + local_args = locals() + log.debug("Passed in arguments are") + log.debug(local_args) + log.debug("Called by function name " + inspect.currentframe().f_back.f_code.co_name) + + other_storage = "" + + if storage == "ssd": + req_storage_string = "/vol/usb1" + other_storage = "/mnt/sd3" + + elif storage == "alt_hdd": + req_storage_string = "/mnt/sd3" + other_storage = "/vol/usb1" + else: + log.error("Passed in value of storage not supported!") + return False + + result = False + + output = [] + for attempt in range(1, 10): + try: + output = uut.parse('show app-hosting infra') + log.debug(output) + break + except Exception as e: + log.info("Wait 10 seconds and try again! With message \n {error}".format(error=e)) + time.sleep(10) + continue + except: + log.error("Problem with parsing show app-hosting infra CLI") + return False + + if not output: + log.error("Failed to parse show app-hosting infra!") + return False + internal_storage = output['internal_working_directory'] + + if req_storage_string in internal_storage: + log.info('IOX brought up on Requested Storage %s \n with location %s successfully!' % (storage, req_storage_string)) + return True + elif other_storage in internal_storage: + log.error('IOX brought up on the other Storage Media Instead! - Error!') + return False + else: + log.error('IOX not brought up properly! - Error!') + return False diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/execute.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/execute.py index 9190332de..077be56ff 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/execute.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/apphosting/execute.py @@ -244,3 +244,44 @@ def execute_app_hosting_appid(device, appid, action, package_path=None): device.execute(cmd) except SubCommandFailure as e: raise SubCommandFailure(f'Could not execute app-hosting appid. Error: {e}') + +def set_stack_mode(dev, stack_mode, active_sw_number='', standby_sw_number=''): + '''Entering to Set stack mode''' + + dialog = Dialog([ + Statement(pattern=r'.*Do you wish to proceed anyway\? \(y/n\)\s*\[n\]', + action='sendline(y)', + loop_continue=True, + continue_timer=False) + ]) + + if stack_mode == '1+1': + switch_active= f"switch {active_sw_number} role active" + switch_standby= f"switch {standby_sw_number} role standby" + dev.execute(switch_active, reply=dialog, timeout=5) + dev.execute(switch_standby, reply=dialog, timeout=5) + dev.api.execute_write_memory() + log.info("Going to reload the Switch to change the stack-mode") + if dev.reload(prompt_recovery=True): + log.info('Reload successful') + stack_mode_out = dev.parse("show switch stack-mode") + stack_sws =stack_mode_out['switch'].keys() + for switch in stack_sws: + if stack_mode_out['switch'][switch]['mode'] == '1+1': + log.info('switch is set to 1+1 mode SUCCESSFULL') + return True + else: + log.info('Reload failed') + + elif stack_mode == 'N+1': + log.info("setting Switch to N+1 mode") + cmd= f"switch clear stack-mode" + dev.execute(cmd, reply=dialog, timeout=5) + dev.api.execute_write_memory() + log.info("Going to reload the Switch to change the stack-mode") + if dev.reload(prompt_recovery=True): + log.info('Reload successful') + return True + else: + log.info('Reload failed') + return False diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/asr1k/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/asr1k/__init__.py new file mode 100644 index 000000000..49c616208 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/asr1k/__init__.py @@ -0,0 +1,3 @@ +# Enable abstraction using this directory name as the abstraction token +from genie import abstract +abstract.declare_token(__name__) \ No newline at end of file diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/asr1k/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/asr1k/configure.py new file mode 100644 index 000000000..fb7f3c455 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/asr1k/configure.py @@ -0,0 +1,21 @@ +''' Common Config functions for asr1k''' + +# Unicon +from unicon.core.errors import SubCommandFailure + + +def configure_autoboot(device): + """ Configure autoboot + Args: + device ('obj'): device to use + Returns: + None + Raises: + SubCommandFailure + """ + cmd = 'config-reg 0x2102' + try: + device.configure(cmd) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not configure Autoboot on asr1k device. Error:\n{e}') + diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py index 810638345..5efddcde3 100755 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/bgp/configure.py @@ -392,31 +392,119 @@ def configure_route_map_route_map_to_bgp_neighbor( route_map = [] config = [] - config.append("router bgp {bgp_as}\n".format(bgp_as=bgp_as)) - if address_family: - config.append( - "address-family {address_family}\n".format( - address_family=address_family + if route_map: + + config.append("router bgp {bgp_as}\n".format(bgp_as=bgp_as)) + + if address_family or vrf_address_family: + config.append( + "address-family {address_family}{vrf}\n".format( + address_family=address_family or vrf_address_family, + vrf=f" vrf {vrf}" if vrf else "", + ) ) + + if not isinstance(route_map, list): + raise TypeError("route_map must be a list") + + for routemap in route_map: + direction = routemap["direction"] + + config.append( + "neighbor {neighbor} route-map {route_map_name} " + "{route_map_direction}\n".format( + neighbor=routemap["neighbor"], + route_map_name=routemap["route_map"], + route_map_direction=direction, + ) + ) + try: + device.configure("".join(config)) + except SubCommandFailure as e: + raise SubCommandFailure( + "Failed to configure route map to bgp neighbors" ) +def unconfigure_route_map_route_map_to_bgp_neighbor( + device, + bgp_as, + address_family="", + route_map=None, + vrf="", + vrf_address_family="", +): + """ unonfigure route map to bgp neighbors + + Args: + device ('obj'): Device object + bgp_as ('int'): BGP AS number + address_family ('str'): address family + vrf ('str'): vrf name + vrf_address_family ('str'): address family for vrf + route_map ('list'): route map list which contains dictionary + dictionary contains following 5 keys: + neighbor ('str'): neighbor value + route_map ('str'): route-map name + direction ('str'): direction type + ex.) + [ + { + 'neighbor': '192.168.60.10', + 'route_map': 'community_test_out', + 'direction': 'out' + }, + { + 'neighbor': '192.168.60.11', + 'route_map': 'community_test_out', + 'direction': 'out' + }, + { + 'neighbor': '192.168.6.10', + 'route_map': 'community_test_in', + 'direction': 'in' + }, + + ] + Returns: + N/A + Raises: + SubCommandFailure: Failed executing configure commands + TypeError: route_map is not a list + """ + + # router bgp 65109 + # address-family vpnv4 + # neighbor 192.168.36.119 route-map community_test_out out + # neighbor 192.168.36.120 route-map community_test_out out + # address-family ipv4 vrf + # neighbor 192.168.10.253 route-map community_test_in in + + if route_map is None: + route_map = [] + + config = [] + if route_map: + config.append("router bgp {bgp_as}\n".format(bgp_as=bgp_as)) + + if address_family or vrf_address_family: + config.append( + "address-family {address_family}{vrf}\n".format( + address_family=address_family or vrf_address_family, + vrf=f" vrf {vrf}" if vrf else "", + ) + ) + if not isinstance(route_map, list): raise TypeError("route_map must be a list") for routemap in route_map: direction = routemap["direction"] - if direction == "in" and vrf and vrf_address_family: - config.append( - "address-family {vrf_address_family} vrf {vrf}\n".format( - vrf_address_family=vrf_address_family, vrf=vrf - ) - ) config.append( - "neighbor {neighbor} route-map {route_map_name} " + "no neighbor {neighbor} route-map {route_map_name} " "{route_map_direction}\n".format( neighbor=routemap["neighbor"], route_map_name=routemap["route_map"], @@ -430,7 +518,6 @@ def configure_route_map_route_map_to_bgp_neighbor( "Failed to configure route map to bgp neighbors" ) - def configure_bgp_neighbor_activate( device, address_family, bgp_as, neighbor_address, steps=Steps(), peer_policy=None, vrf=None): @@ -1683,13 +1770,14 @@ def configure_bgp_router_id_interface(device, bgp_as, interface): f"Failed to configure bgp router-id interface on interface {interface}. Error:\n{e}" ) -def configure_bgp_redistribute_static(device, bgp_as, address_family, vrf=None): +def configure_bgp_redistribute_static(device, bgp_as, address_family, vrf=None, route_map=None): """ configure redistribute static in bgp Args: device ('obj'): device to use bgp_as ('int'): bgp as number address_family ('str'): address family under bgp vrf ('str'): vrf in address_family + route_map ('str', optional): route-map name Returns: None Raises: @@ -1699,18 +1787,21 @@ def configure_bgp_redistribute_static(device, bgp_as, address_family, vrf=None): log.info( f"configure redistribute static under bgp {bgp_as}" ) - confg = ["router bgp {}".format(bgp_as)] + confg = [f"router bgp {bgp_as}"] if vrf: confg.append(f"address-family {address_family} vrf {vrf}") else: confg.append(f"address-family {address_family}") - confg.append("redistribute static") + if route_map: + confg.append(f"redistribute static route-map {route_map}") + else: + confg.append("redistribute static") try: device.configure(confg) - except SubCommandFailure: + except SubCommandFailure as e: raise SubCommandFailure( f"Could not configure redistribute static under bgp {bgp_as}" - ) + ) from e def configure_bgp_advertise_l2vpn_evpn(device, bgp_as, address_family, vrf): @@ -2457,3 +2548,55 @@ def configure_bgp_eigrp_redistribution(device, bgp_as, address_family, vrf=None, device.configure(config) except SubCommandFailure as e: raise SubCommandFailure(f"Failed to configure redistribute eigrp on device. Error:\n{e}") + +def unconfigure_bgp_redistribute_static(device, bgp_as, address_family, vrf=None, route_map=None): + """ unconfigure redistribute static in bgp + Args: + device ('obj'): device to use + bgp_as ('int'): bgp as number + address_family ('str'): address family under bgp + vrf ('str'): vrf in address_family + route_map ('str', optional): route-map name + Returns: + None + Raises: + SubCommandFailure: Failed unconfiguring redistribute + static under bgp address_family + """ + log.debug( + f"unconfigure redistribute static under bgp {bgp_as}" + ) + confg = [f"router bgp {bgp_as}"] + if vrf: + confg.append(f"address-family {address_family} vrf {vrf}") + else: + confg.append(f"address-family {address_family}") + if route_map: + confg.append(f"no redistribute static route-map {route_map}") + else: + confg.append("no redistribute static") + try: + device.configure(confg) + except SubCommandFailure as e: + raise SubCommandFailure( + f"Could not unconfigure redistribute static under bgp {bgp_as}" + ) from e + +def configure_bgp_best_path_as_path_multipath_relax(device, bgp_as): + """ Configures bgp redistribute internal on bgp router + Args: + device('obj'): device to configure on + bgp_as('str'): bgp_as to configure + Return: + None + Raises: + SubCommandFailure + """ + config = [ + f'router bgp {bgp_as}', + 'bgp bestpath as-path multipath-relax' + ] + try: + device.configure(config) + except SubCommandFailure as e: + raise SubCommandFailure(f"Could not configure bgp redistribute internal on device {device}. Error:\n{e}") diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cts/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cts/configure.py index bf30b43be..abdbbdb26 100755 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cts/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/cts/configure.py @@ -1072,3 +1072,21 @@ def unconfigure_cts_aaa_methods(device, server_grp, list_name): device.configure(cmd) except SubCommandFailure as e: raise SubCommandFailure(f"Could not unconfigure cts aaa methods. Error:\n {e}") + +def enable_cts_enforcement_vlan_list(device, vlan): + """ enable cts role-based enforcement on given vlan range + Args: + device ('obj'): device to use + vlan ('str'): vlan range to configure + Returns: + None + Raises: + SubCommandFailure: Failed to enable cts role-based enforcement vlan list + """ + log.debug("Enable CTS enforcement on vlan-list") + try: + device.configure(["cts role-based enforcement vlan-list {}".format(vlan)]) + except SubCommandFailure as e: + raise SubCommandFailure( + "Could not enable CTS enforcement on vlan {}.Error:\n{}".format(vlan, str(e)) + ) \ 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 f249f1518..1f87c01c5 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 @@ -224,3 +224,30 @@ def enable_debug_ilpower_event(device): "Could not execute cli debug ilpower event. Error:\n{error}". format(error=e)) +def debug_vdsl_controller_slot_dump_internal(device, slot, filename='sfp', timeout=900): + """ Debug cli to dump vdsl controller slot internal + + Args: + device (obj): Device to execute on + slot (str): slot/subslot number + filename (str, optional): filename for dumping the debug in bootflash + timeout (int, optional): Max time in seconds allowed for calculation. + Defaults to 900Sec. + Returns: + True if Debug dump is successful else return False + """ + # debug vdsl controller 0/0/1 dump internal sfp_test.dump + + if filename == 'sfp': + msg = f"filename not provided. default name of dump file will be sfp" + cmd =f'debug vdsl controller {slot} dump internal sfp.dump' + else: + msg = f"File name provided" + cmd =f'debug vdsl controller {slot} dump internal {filename}' + + log.info(msg) + try: + device.execute(cmd,timeout=timeout) + except Exception as e: + log.warning(e) + \ No newline at end of file diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dot1x/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dot1x/configure.py index 6eb3f5434..7e5b12c1b 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dot1x/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/dot1x/configure.py @@ -2083,4 +2083,130 @@ def unconfigure_access_session_macmove_deny_uncontrolled(device): try: device.configure(cmd) except SubCommandFailure as e: - raise SubCommandFailure(f"Failed to unconfigure access-session. Error:\n{e}") \ No newline at end of file + raise SubCommandFailure(f"Failed to unconfigure access-session. Error:\n{e}") + +def configure_default_spanning_tree(device, mode_type): + """Configure default spanning-tree + Args: + device ('obj'): Device object + mode_type('str'): backbonefast Enable BackboneFast Feature + bridge STP Bridge Assurance parameters + cca enable/disable CCA routine + dispute Enable STP dispute mechanism + etherchannel Spanning tree etherchannel specific configuration + extend Spanning Tree 802.1t extensions + logging Enable Spanning tree logging + loopguard Spanning tree loopguard options + mode Spanning tree operating mode + mst Multiple spanning tree configuration + pathcost Spanning tree pathcost options + portfast Spanning tree portfast options + sso Stateful Switchover + transmit STP transmit parameters + uplinkfast Enable UplinkFast Feature + vlan VLAN Switch Spanning Tree + Return: + None + Raise: + SubCommandFailure + """ + cmd = f"default spanning-tree {mode_type}" + if mode_type == "backbonefast": + cmd+= f" {mode_type}" + elif mode_type == "bridge": + cmd+= f" {mode_type} assurance" + elif mode_type == "dispute": + cmd+= f" {mode_type}" + elif mode_type == "etherchannel": + cmd+= f" {mode_type} guard" + elif mode_type == "logging": + cmd+= f" {mode_type}" + elif mode_type == "loopguard": + cmd+= f" {mode_type} default" + elif mode_type == "mode": + cmd+= f" {mode_type}" + elif mode_type == "pathcost": + cmd+= f" {mode_type} method" + elif mode_type == "portfast": + cmd+= f" {mode_type} default" + elif mode_type == "sso": + cmd+= f" {mode_type} block-tcn" + elif mode_type == "transmit": + cmd+= f" {mode_type} hold-count" + elif mode_type == "uplinkfast": + cmd+= f" {mode_type} max-update-rate" + else: + cmd+= f" {mode_type} 10" + try: + device.configure(cmd) + except SubCommandFailure as e: + raise SubCommandFailure( + f"Failed to configure default spanning-tree. Error:\n{e}") + +def configure_access_session_mac_move(device, access_type, deny_type): + """Configure access-session mac-move + Args: + device ('obj'): Device object + access_type('str'): accounting Accounting Filter List Configuration + acl Application of ACLs on access-session + attributes Attributes Filter List Configuration + authentication Authentication Filter List Configuration + bridge-mode bridge-mode + cache Set cache configuration + event-logging Event log Configuration + interface-template Set the interface-template sticky globally + limit Set session limit parameter + mac-move Set required action when a MAC move is detected + monitor Apply template to monitor access sessions on the port + passthru-access-group IP access-list map to FQDN ACL + single-policy Replace all interface service-policies with single policy + tls-version Set required TLS version + voice voice client auth options + wireless Wireless + deny_type('str'): deny DENY MAC moves (clears existing session) + deny-uncontrolled Deny MAC move to uncontrolled port + Return: + None + Raise: + SubCommandFailure + """ + cmd = f"access-session {access_type} {deny_type}" + try: + device.configure(cmd) + except SubCommandFailure as e: + raise SubCommandFailure( + f"Failed to configure access-session {access_type}. Error:\n{e}") + +def unconfigure_access_session_mac_move(device, access_type, deny_type): + """Unconfigure access-session mac-move + Args: + device ('obj'): Device object + access_type('str'): accounting Accounting Filter List Configuration + acl Application of ACLs on access-session + attributes Attributes Filter List Configuration + authentication Authentication Filter List Configuration + bridge-mode bridge-mode + cache Set cache configuration + event-logging Event log Configuration + interface-template Set the interface-template sticky globally + limit Set session limit parameter + mac-move Set required action when a MAC move is detected + monitor Apply template to monitor access sessions on the port + passthru-access-group IP access-list map to FQDN ACL + single-policy Replace all interface service-policies with single policy + tls-version Set required TLS version + voice voice client auth options + wireless Wireless + deny_type('str'): deny DENY MAC moves (clears existing session) + deny-uncontrolled Deny MAC move to uncontrolled port + Return: + None + Raise: + SubCommandFailure + """ + cmd = f"no access-session {access_type} {deny_type}" + try: + device.configure(cmd) + except SubCommandFailure as e: + raise SubCommandFailure( + f"Failed to unconfigure access-session mac-move. Error:\n{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 af2a69167..26394e1a6 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 @@ -1258,7 +1258,7 @@ def unconfigure_ipv6_flow_monitor(device, interface, monitor_name,direction): ) def configure_flow_exporter(device, exporter_name, dest_ip=None, udp_port=None, dscp=None, - ttl=None, data_timeout=None, table_type=None, table_timeout=None): + ttl=None, data_timeout=None, table_type=None, table_timeout=None, source_int=None): """ Configure Flow Exporter on Device Args: device ('obj'): Device object @@ -1270,6 +1270,7 @@ def configure_flow_exporter(device, exporter_name, dest_ip=None, udp_port=None, data_timeout ('str', optional): template data timeout value. Default is None table_type ('str', optional): option table type. Default is None table_timeout ('str', optional): option table timeout value. Default is None + source_int ('str', optional): Source interface. Default int None Return: None Raise: @@ -1289,9 +1290,77 @@ def configure_flow_exporter(device, exporter_name, dest_ip=None, udp_port=None, config.append(f'template data timeout {data_timeout}') if table_type: config.append(f'option {table_type}{f" timeout {table_timeout}" if table_timeout else ""}') + if source_int: + config.append(f'source {source_int}') try: device.configure(config) except SubCommandFailure as e: raise SubCommandFailure(f'Could not configure flow exporter {exporter_name}. Error\n{e}') + +def configure_fnf_flow_record( + device, + record_name, + datalink = False, + datalink_type_1 = None, + datalink_subtype_1 = None, + address_type = None, + match_int_field = None, + match_ipv4_field = None, + collect_counter_bytes = False, + collect_counter_packets = False, + match_transport_field = None, + address_mode = None, + tcp_field = False, + collect_event = False + ): + + """ Config Flow Record on Device + Args: + device (`obj`): Device object + record_name (`str`): Flow record name + datalink ('bool') : Configure datalink fields + datalink_type_1 ('str', optional): First Datalink Type to be configured + datalink_subtype_1 ('str', optional): First datalink subtype to be configured + match_int_field ('str', optional): Interface field to be configured + match_ipv4_field ('str', optional): First IPv4 field to be configured + collect_counter_bytes ('bool'): Enable counter field bytes + collect_counter_packets ('bool'): Enable counter field packets + match_transport_field ('str', optional): First transport field to be configured + address_mode('str', optional): Address mode to be configured + tcp_field('bool'): Configure collect transport tcp flags + collect_event('bool'): Configure collect policy firewall event + Return: + None + + Raise: + SubCommandFailure: Failed configuring Flow Record on Device + """ + + configs = [f'flow record {record_name}'] + if datalink: + if datalink_type_1 and datalink_subtype_1 and address_type: + configs.extend([f'match datalink {datalink_type_1} {datalink_subtype_1} address {address_type}']) + if match_int_field: + configs.extend([f'match interface {match_int_field}']) + if match_ipv4_field: + configs.extend([f'match ipv4 {match_ipv4_field}']) + if collect_counter_bytes: + configs.extend(['collect counter bytes long']) + if collect_counter_packets: + configs.extend(['collect counter packets long']) + if match_transport_field: + configs.extend([f'match transport {match_transport_field}']) + if address_mode: + configs.extend([f'match ipv4 {address_mode} address']) + if tcp_field: + configs.extend([f'collect transport tcp flags']) + if collect_event: + configs.extend([f'collect policy firewall event']) + + try: + device.configure(configs) + except SubCommandFailure as e: + raise SubCommandFailure( + f'Could not configure flow record. Error:\n{e}') \ No newline at end of file diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/configure.py new file mode 100644 index 000000000..edbb66b93 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/gkm/configure.py @@ -0,0 +1,378 @@ +"""Common configure/unconfigure functions for GKM""" + +# Python +from email.policy import default +import logging +import re +from telnetlib import XAUTH + +# Unicon +from unicon.core.errors import SubCommandFailure +from unicon.eal.dialogs import Statement, Dialog + +# Genie +from genie.metaparser.util.exceptions import SchemaEmptyParserError + +log = logging.getLogger(__name__) + +def configure_gikev2_profile_under_gkm_group(device, + group_name, + server_local=True, + gikev2_profile=None): + """ Configures Crypto gikev2 profile under Gkm group + Args: + device ('obj'): Device object + group_name ('str'): gkm group name + server_local ('bool', optional): Configure server local. Default is False + gikev2_profile ('str'): Gikev2 profile name. + Returns: None + Raises: + SubCommandFailure + """ + + log.info( + "Configuring CRYPTO gkev2 profile under gkm group" + ) + configs = [f"crypto gkm group {group_name}"] + if server_local: + configs.append("server local") + if gikev2_profile is not None: + configs.append(f"gikev2 {gikev2_profile}") + + try: + device.configure(configs) + except SubCommandFailure as error: + log.error(f"Failed to configure gikev2 profile under crypto gkm group," + "Error:\n{error}") + raise + +def configure_client_protocol_under_gkm_group(device, + group_name, + client_protocol, + profile_name): + """ Configures Crypto client protocol under Gkm group + Args: + device ('obj'): Device object + group_name ('str'): gkm group name + client_protocol ('bool'): Gikev2/gdoi + profile_name ('str'): Gikev2/gdoi profile name. + Returns: None + Raises: + SubCommandFailure + """ + + log.info( + "Configuring crypto gkm client protocol under gkm group" + ) + configs = [f"crypto gkm group {group_name}"] + if client_protocol is not None: + configs.append(f"client protocol {client_protocol} {profile_name}") + + try: + device.configure(configs) + except SubCommandFailure as error: + log.error(f"Failed to configure client protocol under crypto gkm group," + "Error:\n{error}") + raise + +def configure_gkm_group_identity_number(device, + group_name, + ident_num=None): + """ Configures Crypto Gdoi Gkm group + Args: + device ('obj'): Device object + group_name ('str'): gkm group name + ident_num ('str', optional): Identity number of gkm group + Returns: None + Raises: + SubCommandFailure + """ + log.info( + "Configuring identity number under gkm group" + ) + configs = [f"crypto gkm group {group_name}"] + if ident_num is not None : + configs.append(f"identity number {ident_num}") + + try: + device.configure(configs) + except SubCommandFailure as error: + log.error(f"Failed to configure identity number under crypto gkm group," + "Error:\n{error}") + raise + +def configure_rekey_under_gkm_group(device, + group_name, + server_local=True, + rekey_algo=None, + rekey_sighash=None, + rekey_lifetime_sec=None, + rekey_retransmit=None, + rekey_retransmit_number=None, + rekey_auth_key=None, + rekey_transport_unicast=False): + """ Configures Crypto Gdoi Gkm group + Args: + device ('obj'): Device object + group_name ('str'): gkm group name + server_local ('bool', optional): Configure server local. Default is False + rekey_algo ('str', optional): Configure rekey algorithm + rekey_sighash ('str', optional): Configure rekey hash + rekey_lifetime_sec ('str', optional): Configure rekey lifetime in seconds + rekey_retransmit ('str', optional): Configure rekey retransmit periodic + rekey_retransmit_number ('str', optional): Configure rekey retransmit number + rekey_auth_key ('str', optional): Configure authentication key + rekey_transport_unicast ('bool', optional): Configure rekey transport as unicast. Default is False + Returns: None + Raises: + SubCommandFailure + """ + log.info( + "Configuring CRYPTO rekey params under gkm group" + ) + configs = [f"crypto gkm group {group_name}"] + if server_local: + configs.append("server local") + if rekey_algo is not None : + configs.append(f"rekey algorithm {rekey_algo}") + if rekey_sighash is not None: + configs.append(f"rekey sig-hash algorithm {rekey_sighash}") + if rekey_lifetime_sec is not None : + configs.append(f"rekey lifetime seconds {rekey_lifetime_sec}") + if rekey_retransmit is not None and rekey_retransmit_number is not None : + configs.append(f"rekey retransmit {rekey_retransmit} number {rekey_retransmit_number}") + if rekey_retransmit is not None and rekey_retransmit_number is None : + configs.append(f"rekey retransmit {rekey_retransmit} periodic") + if rekey_auth_key is not None : + configs.append(f"rekey authentication mypubkey rsa {rekey_auth_key}") + if rekey_transport_unicast: + configs.append("rekey transport unicast") + + try: + device.configure(configs) + except SubCommandFailure as error: + log.error(f"Failed to configure rekey params under crypto gkm group," + "Error:\n{error}") + raise +def configure_ipsec_under_gkm_group(device, + group_name, + server_local=True, + sa_ipsec_seq=None, + sa_ipsec_profile=None, + sa_ipsec_match_ipv4=None, + sa_ipsec_match_ipv6=None, + sa_ipsec_replay=False, + sa_ipsec_replay_time=None, + sa_ipsec_tag=False): + """ Configures Crypto Gdoi Gkm group + Args: + device ('obj'): Device object + group_name ('str'): gkm group name + server_local ('bool', optional): Configure server local. Default is False + sa_ipsec_seq ('str',optional): Configure sa ipsec sequence number + sa_ipsec_profile ('str', optional): configure ipsec profile on gkm group + sa_ipsec_match_ipv4 ('str', optional): Set ipv4 match address + sa_ipsec_match_ipv6 ('str', optional): Set ipv6 match address + sa_ipsec_replay ('bool', optional): Set to True if sa replay needs to configured. Default is False + sa_ipsec_replay_time ('str', optional): Set replay time window size + sa_ipsec_tag ('bool', optional): Set tag. Default is False +. Default is False + Returns: None + Raises: + SubCommandFailure + """ + log.info( + "Configuring CRYPTO ipsec params under gkm group" + ) + configs = [f"crypto gkm group {group_name}"] + if server_local: + configs.append("server local") + if sa_ipsec_seq is not None: + configs.append(f"sa ipsec {sa_ipsec_seq}") + if sa_ipsec_profile is not None: + configs.append(f"profile {sa_ipsec_profile}") + if sa_ipsec_match_ipv4 is not None: + configs.append(f"match address ipv4 {sa_ipsec_match_ipv4}") + if sa_ipsec_match_ipv6 is not None: + configs.append(f"match address ipv6 {sa_ipsec_match_ipv6}") + if sa_ipsec_replay: + if sa_ipsec_replay_time is not None : + configs.append(f"replay time window-size {sa_ipsec_replay_time}") + elif sa_ipsec_replay is False: + configs.append("no replay") + if sa_ipsec_tag: + configs.append("tag cts sgt") + elif sa_ipsec_tag is False : + configs.append("no tag") + try: + device.configure(configs) + except SubCommandFailure as error: + log.error(f"Failed to configure ipsec params under crypto gkm group," + "Error:\n{error}") + raise +def configure_server_redundancy_under_gkm_group(device, + group_name, + server_local=False, + server_local_redundancy=False, + server_local_redundancy_local_prior=None, + server_local_redundancy_peer_addr=None): + """ Configures Crypto Gdoi Gkm group + Args: + device ('obj'): Device object + group_name ('str'): gkm group name + server_local_redundancy ('bool', optional): Set redundancy in local server. Default is False + server_local_redundancy ('bool', optional): Set redundancy in local server. Default is False + server_local_redundancy_local_prior ('str', optional): set local priority value for redundancy + server_local_redundancy_peer_addr ('str', optional): set peer address value for redundancy + Returns: None + + Raises: + SubCommandFailure + """ + log.info( + "Configuring redundancy server under gkm group" + ) + configs = [f"crypto gkm group {group_name}"] + if server_local: + configs.append("server local") + if server_local_redundancy: + configs.append("redundancy") + if server_local_redundancy_local_prior is not None : + configs.append(f"local priority {server_local_redundancy_local_prior}") + if server_local_redundancy_peer_addr is not None : + configs.append(f"peer address ipv4 {server_local_redundancy_peer_addr}") + + try: + device.configure(configs) + except SubCommandFailure as error: + log.error(f"Failed to configure gikev2 profile under crypto gkm group," + "Error:\n{error}") + raise + +def configure_protocol_version_optimize_cli_under_gkm_group(device, + group_name, + server_local=True, + server_local_redundancy=True, + protocol_version_optimize=True): + """ Configures Crypto Gdoi Gkm group + Args: + device ('obj'): Device object + group_name ('str'): gkm group name + server_local ('bool', optional): Configure server local. Default is False + server_local_redundancy ('bool', optional): Set redundancy in local server. Default is False + protocol_version_optimize ('str', optional): set protocol version optimize + Returns: None + Raises: + SubCommandFailure + """ + log.info( + "Configuring protocol version optimize cli under gkm group" + ) + configs = [f"crypto gkm group {group_name}"] + if server_local: + configs.append("server local") + if server_local_redundancy: + configs.append("redundancy") + if protocol_version_optimize: + configs.append(f"protocol version optimize") + + try: + device.configure(configs) + except SubCommandFailure as error: + log.error(f"Failed to configure protocol version optimize command under crypto gkm group," + "Error:\n{error}") + raise + +def configure_ip_for_server_local_under_gkm_group(device, + group_name, + server_local=True, + ipv4_address=None): + """ Configures Crypto Gdoi Gkm group + Args: + device ('obj'): Device object + group_name ('str'): gkm group name + server_local ('bool', optional): Configure server local. Default is False + ipv4_address ('str'): ipv4 address + + Returns: None + + Raises: + SubCommandFailure + """ + log.info( + "Configuring ipv4 address for server local under gkm group" + ) + configs = [f"crypto gkm group {group_name}"] + if server_local: + configs.append("server local") + if ipv4_address is not None: + configs.append(f"address ipv4 {ipv4_address}") + + try: + device.configure(configs) + except SubCommandFailure as error: + log.error(f"Failed to configure ipv4 address for server local under crypto gkm group," + "Error:\n{error}") + raise + +def configure_ipv4_server_under_gkm_group(device, + group_name, + server_ipv4_address=None, + server_ipv4_sec_address=None): + """ Configures Crypto Gdoi Gkm group + Args: + device ('obj'): Device object + group_name ('str'): gkm group name + server_ipv4_address ('str', optional): Set ipv4 server address + server_ipv4_sec_address ('str', optional): Set ipv4 secondary server address + Returns: None + Raises: + SubCommandFailure + """ + log.info( + "Configuring CRYPTO gkm profile under gkm group" + ) + configs = [f"crypto gkm group {group_name}"] + if server_ipv4_address is not None: + configs.append(f"server address ipv4 {server_ipv4_address}") + if server_ipv4_sec_address is not None: + configs.append(f"server address ipv4 {server_ipv4_sec_address}") + + try: + device.configure(configs) + except SubCommandFailure as error: + log.error(f"Failed to configure primary/secondary ipv4 severs under gkm group," + "Error:\n{error}") + raise +def configure_pfs_enable_or_disable_under_gkm_group(device, + group_name, + server_local=True, + pfs=False): + """ Configures Crypto Gdoi Gkm group + Args: + device ('obj'): Device object + group_name ('str'): gkm group name + server_local ('bool', optional): Configure server local. Default is False + pfs ('str', optional): Enable/Disable the PFS feature on Key Server + Returns: None + Raises: + SubCommandFailure + """ + log.info( + "Configuring pfs command enable or disable under gkm group" + ) + configs = [f"crypto gkm group {group_name}"] + if server_local: + configs.append("server local") + if pfs: + configs.append(f"pfs") + elif pfs is False: + configs.append(f"no pfs") + + try: + device.configure(configs) + except SubCommandFailure as error: + log.error(f"Failed to configure pfs enable or disable under gkm group," + "Error:\n{error}") + raise + diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/hardware/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/hardware/configure.py index 1e32f738f..5facf1c12 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/hardware/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/hardware/configure.py @@ -183,3 +183,76 @@ def unconfigure_hw_module_breakout(device, error=e ) ) + +def configure_400g_mode_for_port_group_onsvl(device, + slot, + switch_number, + port_group_range = None, + port_group = None, + ): + + """ enable 400g mode conversion on NG-SVL + Args: + device (`obj`): Device object + slot (`int`): Metaluna slot + port_group_range ('str',optional) : range end for port group, default value is None + port_group('int') : port group number + switch_number('int') : switch number 1 or 2 + Returns: + None + Raises: + SubCommandFailure + """ + + log.info(f"Configuring hw-module switch {switch_number} slot {slot} port-group {port_group_range} mode 400G ") + + if port_group_range is not None: + cmd = [f"hw-module switch {switch_number} slot {slot} port-group range {port_group_range} mode 400G"] + else: + cmd = [f"hw-module switch {switch_number} slot {slot} port-group {port_group} mode 400G"] + + try: + device.configure(cmd) + except SubCommandFailure as e: + raise SubCommandFailure( + "Failed to configure hw_module switch port-group port_group_range mode 400G. Error:\n{error}".format( + error=e + ) + ) + +def unconfigure_400g_mode_for_port_group_onsvl(device, + slot, + switch_number, + port_group_range = None, + port_group = None, + ): + + """ Disable 400g mode conversion on NG-SVL + Args: + device (`obj`): Device object + slot (`int`): Metaluna slot + port_group_range ('str', optional) : range end for port group, default value is None + port_group('int') : port group number + switch_number('int') : switch number 1 or 2 + Returns: + None + Raises: + SubCommandFailure + """ + + log.info(f"Configuring hw-module switch {switch_number} slot {slot} port-group {port_group_range} mode 400G ") + + if port_group_range is not None: + cmd = [f"no hw-module switch {switch_number} slot {slot} port-group range {port_group_range} mode 400G"] + else: + cmd = [f"no hw-module switch {switch_number} slot {slot} port-group {port_group} mode 400G"] + + try: + device.configure(cmd) + except SubCommandFailure as e: + raise SubCommandFailure( + "Failed to unconfigure hw_module switch port-group port_group_range mode 400G. Error:\n{error}".format( + error=e + ) + ) + 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 201f9ec38..5a61fca8e 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 @@ -45,11 +45,9 @@ def reset_interface(device, interface): SubCommandFailure """ log.info("Defaulting interface {interface}".format(interface=interface)) - + config = f"default interface {interface}" try: - device.configure( - "default interface {interface}".format(interface=interface) - ) + output = device.configure(config) except SubCommandFailure as e: raise SubCommandFailure( "Could not default {interface}. Error:\n{error}".format( @@ -57,6 +55,8 @@ def reset_interface(device, interface): ) ) + return output + def config_enable_ip_routing(device): """ Enable IP Routing @@ -1997,9 +1997,9 @@ def configure_scale_subintfs_via_tftp( if unconfig: for count in range(vlan_id_count): - cmds += ''' + cmds += """ no interface {interface}.{vlan_id} - '''.format(interface=interface, + """.format(interface=interface, vlan_id=vlan_id) vlan_id += vlan_id_step @@ -2007,13 +2007,13 @@ def configure_scale_subintfs_via_tftp( IPaddr = IPv4Address(ip_addr_start) for count in range(vlan_id_count): - cmds += ''' + cmds += """ interface {interface}.{vlan_id} encapsulation dot1q {vlan_id} ip address {ip_address} {netmask} {pim} exit - '''.format(interface=interface, + """.format(interface=interface, vlan_id=vlan_id, ip_address=IPaddr, netmask=netmask, @@ -3004,10 +3004,10 @@ def configure_interface_template(device, interface_list=[], template_name="sampl for interface in interface_list: try: device.configure( - ''' + """ interface {interface} source template {template_name} - '''.format(interface=interface, template_name=template_name)) + """.format(interface=interface, template_name=template_name)) except SubCommandFailure as e: raise SubCommandFailure( @@ -3036,10 +3036,10 @@ def unconfigure_interface_template(device, interface_list=[], template_name="tes for interface in interface_list: try: device.configure( - ''' + """ interface {interface} no source template {template_name} - '''.format(interface=interface, template_name=template_name)) + """.format(interface=interface, template_name=template_name)) except SubCommandFailure as e: raise SubCommandFailure( @@ -8288,6 +8288,42 @@ def unconfigure_interface_l2protocol_tunnel(device, interface, protocol=None, pt f"Failed to Unconfigure interface l2protocol tunnel on this interface {interface}. Error:\n{e}" ) +def configure_interface_bandwidth(device, interface, bandwidth): + """ Configures vlan group list + Args: + device ('obj'): device to use + interface ('str'): interface name + bandwidth ('str'): bandwidth. Ex: '300000' + Returns: + None + Raises: + SubCommandFailure + """ + log.info(f"Configuring interface bandwidth on {device.name} {interface}") + cmd = [f'interface {interface}',f'bandwidth {bandwidth}'] + try: + device.configure(cmd) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not configure interface bandwidth. Error:\n{e}') + +def unconfigure_interface_bandwidth(device, interface, bandwidth): + """ unconfigures vlan group list + Args: + device ('obj'): device to use + interface ('str'): interface name + bandwidth ('str'): bandwidth. Ex: '300000' + Returns: + None + Raises: + SubCommandFailure + """ + log.info(f"Unconfiguring interface bandwidth on {device.name} {interface}") + cmd = [f'interface {interface}',f'no bandwidth {bandwidth}'] + try: + device.configure(cmd) + except SubCommandFailure as e: + raise SubCommandFailure(f'Could not unconfigure interface bandwidth. Error:\n{e}') + def configure_monitor_erspan_source_interface(device, session, interface, traffic=''): """ Configures monitor erspan source on interface Example : monitor session 1 type erspan-source @@ -8745,3 +8781,44 @@ def configure_dialer_interface(device, raise SubCommandFailure( f"Could not configure dialer interface on device. Error:\n{e}" ) + + +def configure_interface_no_switchport_voice_vlan(device, interface, vlan): + """ Configures switchport on interface + Args: + device ('obj'): device to use + interface ('str'): interface to configure + vlan ('str'): voice_vlan to configure + Returns: + None + Raises: + SubCommandFailure + """ + + try: + device.configure([ "interface {interface}".format(interface=interface), + "no switchport voice vlan {vlan}".format(vlan=vlan) + ]) + except SubCommandFailure as e: + raise SubCommandFailure( + "Could not configure no switchport trunk vlan. Error:\n{error}".format( + error=e + ) + ) + + +def configure_global_interface_template_sticky(device): + """ configure global interface-template sticky + Args: + device ('obj'): device to use + Returns: + None + Raises: + SubCommandFailure + """ + + try: + device.configure(["access-session interface-template sticky"]) + except SubCommandFailure as e: + raise SubCommandFailure(f"Failed to configure global interface-template sticky. Error:\n{e}") + diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py index 029c2ec8a..9587c88d2 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/management/configure.py @@ -331,7 +331,7 @@ def configure_management_gateway(device, default_route_config.append(default_route_cmd) if existing_config: - remove_existing_config = [f'no {line}' for line in existing_config.splitlines()] + remove_existing_config = [f'no {line}' for line in existing_config] device.configure(remove_existing_config) if default_route_config: @@ -405,9 +405,10 @@ def configure_management_routes(device, subnet = route.get('subnet') next_hop = route.get('next_hop') if subnet and next_hop: - cmd = f'{protocol} route {subnet} {next_hop}' if vrf: - cmd += f' vrf {vrf}' + cmd = f'{protocol} route vrf {vrf} {subnet} {next_hop}' + else: + cmd = f'{protocol} route {subnet} {next_hop}' route_cmds.append(cmd) if route_cmds: device.configure(route_cmds) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mpls/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mpls/configure.py index 9dca88f20..9b5ca15db 100755 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mpls/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/mpls/configure.py @@ -2023,4 +2023,71 @@ def debug_lfd_label_statistics(device,label_number): device.execute("debug mpls lfd local-label {label_number} statistics-enable".format(label_number=label_number)) except SubCommandFailure as e: raise SubCommandFailure( - "Failed to configure debug lfd label statistics Error {e}".format(e=e)) \ No newline at end of file + "Failed to configure debug lfd label statistics Error {e}".format(e=e)) + +def configure_template_pseudowire(device, template_type, template_name): + """Configure template name + Args: + device ('obj'): device object + template_type ('str'): template type + template_name ('str'): template name + Return: + None + Raises: + SubCommandFailure + """ + config= [ + f'template type {template_type} {template_name}', + 'encapsulation mpls' + ] + try: + device.configure(config) + except SubCommandFailure as e: + raise SubCommandFailure( + f'Failed to Configure template pseudowire on {device.name}\n{e}' + ) + +def configure_member_vfi_on_vlan_configuration(device, vlan_id, vfi_type, vfi_name): + """ configure member vfi + Args: + device ('obj'): Device object + vlan_id ('int'): vlan id + vfi_type ('str'): specify access-vfi or vfi + vfi_name ('str'): specify member vfi name + Return: + None + Raise: + SubCommandFailure: Failed unconfiguring interface + """ + + config = [f'vlan configuration {vlan_id}',f'member {vfi_type} {vfi_name}'] + + try: + device.configure(config) + except SubCommandFailure as e: + raise SubCommandFailure( + f'Failed to Configure member vfi on {device.name}\n{e}' + ) + +def configure_mpls_ldp_sync_under_ospf(device, process_id, router_id): + """Configure router ospf mpls + Args: + device ('obj'): device object + process_id ('int'): process id + router_id ('str'): OSPF router-id in IP address format + Return: + None + Raises: + SubCommandFailure + """ + config= [ + f'router ospf {process_id}', + f'router-id {router_id}', + 'mpls ldp sync' + ] + try: + device.configure(config) + except SubCommandFailure as e: + raise SubCommandFailure( + f'Failed to Configure router ospf mpls on {device.name}\n{e}' + ) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py index df511c6a3..34bb810cc 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/ospf/configure.py @@ -974,7 +974,7 @@ def unconfigure_ip_prefix_list(device, prefix_list_name, seq, ip_address, subnet ) -def configure_route_map(device, route_map_name, permit, prefix_list_name=None, acl_name=None, acl_namev6=None, ip=None, ipv6=None, interface=None): +def configure_route_map(device, route_map_name, permit, prefix_list_name=None, acl_name=None, acl_namev6=None, ip=None, ipv6=None, interface=None, set_extcommunity=None): """ configure route map @@ -988,6 +988,7 @@ def configure_route_map(device, route_map_name, permit, prefix_list_name=None, a ip ('str',optional): ip address ipv6 ('str',optional): ipv6 address interface ('str',optional): Interface to be used + set_extcommunity ('str', optional): extcommunity value Return: None @@ -1016,6 +1017,8 @@ def configure_route_map(device, route_map_name, permit, prefix_list_name=None, a if ipv6: cfg_str +="set ipv6 next-hop {ipv6}\n".format( ipv6=ipv6) + if set_extcommunity: + cfg_str += f"set extcommunity {set_extcommunity}" try: device.configure(cfg_str) @@ -1059,14 +1062,14 @@ def configure_ospf_network_point(device, interface): -def unconfigure_route_map(device, route_map_name, permit): +def unconfigure_route_map(device, route_map_name, permit=None): """ unconfigure route map Args: device (`obj`): device to execute on route_map_name (`int`): route map name - permit (`int`): Sequence to insert to existing route-map entry + permit (`int`, optional): Sequence to insert to existing route-map entry Return: None @@ -1074,10 +1077,10 @@ def unconfigure_route_map(device, route_map_name, permit): SubCommandFailure """ try: - device.configure([ - "no route-map {route_map_name} permit {permit}".format( - route_map_name=route_map_name, permit=permit)] - ) + if permit: + device.configure(f"no route-map {route_map_name} permit {permit}") + else: + device.configure(f"no route-map {route_map_name}") except SubCommandFailure as e: raise SubCommandFailure( "Failed to unconfigure route map {route_map_name}, Error: {error}"\ diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/clear.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/clear.py index 57548ec47..0250ed15a 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/clear.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/platform/clear.py @@ -52,3 +52,25 @@ def clear_platform_qos_dscp_cos_counters_interface(device, intf, state=None, swi raise SubCommandFailure( "Could not clear qos dscp-cos counters on {device}. Error:\n{error}".format(device=device, error=e) ) + + +def clear_ip_arp(device,ip): + """ clear ip arp + Args: + device ('obj'): device to execute on + ip ('int'): A.B.C.D IP address of dynamic ARP entry + Return: + None + Raises: + SubCommandFailure + """ + log.info("clear ip arp {ip} {device}".format(device=device.name,ip=ip)) + cmd = "clear ip arp {ip}".format(ip=ip) + try: + device.execute(cmd) + except SubCommandFailure as e: + raise SubCommandFailure( + 'Could not clear ip arp {device}, Error: {error}'.format( + device=device.name, error=e + ) + ) 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 7943d98fd..29d7c4066 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 @@ -4467,6 +4467,83 @@ def configure_cos(device,priority_value): 'Error:{e}'.format(e=e) ) +def unconfigure_snmp_mib_bulkstat(device, object_name, schema_name, transfer_name): + + """ unconfigure snmp mib bulkstat + Args: + device ('obj'): device to use + object_name ('str'): The name of the object + schema_name ('str'): The name of the schema + transfer_name ('str'): bulkstat transfer name + Returns: + None + Raises: + SubCommandFailure + """ + cmd = [ + f"bulkstat profile {transfer_name}", + f"no enable", + "exit", + f"no snmp mib bulkstat object-list {object_name}", + f"no snmp mib bulkstat schema {schema_name}", + f"no snmp mib bulkstat transfer {transfer_name}", + + ] + + try: + device.configure(cmd) + except SubCommandFailure as e: + raise SubCommandFailure(f"Failed to unconfigure snmp mib bulkstat on this device. Error:\n{e}") + + +def configure_stackpower_stack(device, powerstack_name, mode=None, strict=False): + """ Configures power stack mode on stack-power stack + + Args: + device ('obj'): device to use + powerstack_name ('str'): Power stack name - Up to 31 chars + mode ('str', optional): Power stack mode. Default is None + strict ('bool', optional): Strict mode. Default is False + Returns: + None + Raises: + SubCommandFailure + """ + + cmd = [f'stack-power stack {powerstack_name}'] + + if mode: + command = f'mode {mode}' + if strict: + command += ' strict' + cmd.append(command) + try: + device.configure(cmd) + + except SubCommandFailure as e: + raise SubCommandFailure(f"Failed to configure stackpower stack on device {device.name}. Error:\n{e}") + + +def unconfigure_stackpower_stack(device, powerstack_name): + """ Configures power stack mode on stack-power stack + + Args: + device ('obj'): device to use + powerstack_name ('str'): Power stack name - Up to 31 chars + Returns: + None + Raises: + SubCommandFailure + """ + + cmd = [f'no stack-power stack {powerstack_name}'] + + try: + device.configure(cmd) + + except SubCommandFailure as e: + raise SubCommandFailure(f"Failed to configure stackpower stack on device {device.name}. Error:\n{e}") + def unconfig_cns_agent_password(device, cns_password=None): """ un configure cns agent password Args: @@ -4505,7 +4582,6 @@ def configure_boot_system_image_file(device, image_path, switch_number=None): except SubCommandFailure as e: raise SubCommandFailure(f"Could not configure boot system on {device}. Error:\n{e}") - def configure_banner(device, banner_text): """ Config Day banner Args: @@ -4602,6 +4678,23 @@ def unconfigure_stackpower_stack(device, powerstack_name): except SubCommandFailure as e: raise SubCommandFailure(f"Failed to configure stackpower stack on device {device.name}. Error:\n{e}") + +def configure_graceful_reload(device, interval=5): + """ Configure graceful-reload + Args: + device ('obj'): Device object + interval('int', optional): <1-900>, Default is 5 + Returns: + None + Raises: + SubCommandFailure + """ + cmd = f"graceful-reload interval {interval}" + try: + device.configure(cmd) + except SubCommandFailure as e: + raise SubCommandFailure(f"Failed to configure graceful-reload. Error:\n{e}") + def unconfig_cns_agent_password(device, cns_password=None): """ un configure cns agent password Args: @@ -4633,9 +4726,24 @@ def configure_boot_system_image_file(device, image_path, switch_number=None): Raises: SubCommandFailure """ - cmd = f"boot system{f' switch {switch_number}' if switch_number else ''} {image_path}" try: device.configure(cmd) except SubCommandFailure as e: raise SubCommandFailure(f"Could not configure boot system on {device}. Error:\n{e}") + + +def hw_module_beacon_RP_active_standby(device, supervisor, operation): + """ ON/OFF beacon supervisor + Args: + device ('obj'): Device object + supervisor('str'): active/standby + operation('str'): ON/OFF + + """ + + cmd = (f"hw-module beacon RP {supervisor} {operation}") + try: + device.execute(cmd) + except SubCommandFailure as e: + raise SubCommandFailure(f'Failed to turn {operation} the {supervisor} beacon slot. 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 old mode 100755 new mode 100644 index 5cccf0691..d15ffcc04 --- 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 @@ -1428,3 +1428,29 @@ def config_smart_authorisation_request(device, feature_name, parameter): except SubCommandFailure as e: raise SubCommandFailure( f"Could not configure smart authorisation request. Error:\n{e}") + + +def execute_dir_file_system(device, file_system, sub_directory=None, timeout=120): + """ Execute dir file_system + Example: dir flash: + Args: + device ('obj'): Device object + file_system ('str'): specifying filesystems such as bootflash:,usb:, flash:, flash-1:, flash2:/crashinfo:, crashinfo-1: , crashinfo2: + sub_directory('str'): specifying the subdirectory inside the filesystem + timeout ('int'): Max time to print dir output + Returns: + output + Raises: + SubCommandFailure + """ + try: + if sub_directory : + output = device.execute(f"dir {file_system}/{sub_directory}",timeout=timeout) + else: + output = device.execute(f"dir {file_system}",timeout=timeout) + + return output + except SubCommandFailure as e: + raise SubCommandFailure( + f"Could not execute dir {file_system} on device. Error:\n{e}" + ) 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 90bb4394f..7e143035b 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 @@ -364,8 +364,8 @@ def configure_policy_map_with_percent(device, policy_name, class_map_name, polic ) -def unconfigure_table_map(device, table_map_name,from_val,to_val,): - """ UnConfigures table_map +def unconfigure_table_map_values(device, table_map_name, from_val, to_val): + """ UnConfigures table_map values Args: device ('obj'): device to use table_map_name ('str') : name of the table map name @@ -388,7 +388,7 @@ def unconfigure_table_map(device, table_map_name,from_val,to_val,): raise SubCommandFailure( f"Could not unconfigure table map with {from_val} to {to_val}. Error:\n{e}") -def configure_table_map(device, table_map_name,from_val,to_val,): +def configure_table_map_values(device, table_map_name, from_val, to_val): """ Configures table_map Args: device ('obj'): device to use @@ -529,11 +529,12 @@ def configure_service_policy_with_queueing_name(device, interface, policy_type, f'service-policy type {policy_type} output {queue_name}'] try: - device.configure(cmd) + output = device.configure(cmd) except SubCommandFailure as e: raise SubCommandFailure( f"Unable to configure service policy type with {queue_name}. Error:\n{e}") + return output def configure_policy_map_on_device(device, policy_map_name, class_map_name, target_bit_rate, match_mode=None,match_packets_precedence=None): @@ -609,7 +610,6 @@ def configure_hqos_policer_map(device, police_val: '600000000' set_table_map:False - Returns: None Raises: @@ -629,6 +629,8 @@ def configure_hqos_policer_map(device, cmd.append(f"police cir percent {policer_percent_val} conform-action transmit exceed-action set-dscp-transmit {table_map_mode} table {table_map_name}") if policer_percent_val: cmd.append(f"police cir percent {policer_percent_val} conform-action transmit") + if police_val and table_map_mode and table_map_name: + cmd.append(f"police {police_val} conform-action transmit exceed-action set-dscp-transmit {table_map_mode} table {table_map_name}") if match_mode and matched_value : for mat_mode, mat_value in zip(match_mode, matched_value): cmd.append(f"set {mat_mode} {mat_value}") 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 ea16ee3a9..442b6c886 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 @@ -1813,3 +1813,80 @@ def clear_pppoe_all(device): device.execute("clear pppoe all", reply=dialog) except SubCommandFailure as e: raise SubCommandFailure(f'Could not clear counters on {device}. Error:\n{e}') + +def clear_pdm_steering_policy(device): + """ clear pdm steering policy + Args: + device (`obj`): Device object + Returns: + None + Raises: + SubCommandFailure + """ + + log.debug("clear pdm steering policy on {device}".format(device=device)) + + try: + device.execute('clear pdm steering policy') + except SubCommandFailure as e: + raise SubCommandFailure( + "Could not clear pdm steering policy on {device}. Error:\n{error}".format(device=device, error=e) + ) + +def upgrade_hw_module_subslot_sfp(device, slot , sfp, image=None,timeout=180): + """ upgrade the firmware on sfp and retrun True or False. + + Args: + device (obj): Device to execute on + slot (str): slot/subslot number + sfp (str): sfp number + image (str, optional): Image full path for upgrade + timeout (int, optional): Max time in seconds allowed for calculation. + Defaults to 180. + + Returns: + True if Upgrade is successful else return False + """ + # upgrade hw-module subslot 0/0 sfp 0 bootflash:dsl-sfp-1_62_8548-dev_elixir.bin + # upgrade hw-module subslot 0/0 sfp 0 + + dialog = Dialog([Statement(pattern=r'.*Continue(Y/N)?', + action='sendline(Y\r)', + loop_continue=True, + continue_timer=False)]) + + if image is not None: + log.info(f"Image path provided") + cmd =f'upgrade hw-module subslot {slot} sfp {sfp} {image}' + try: + output = device.execute(cmd,reply=dialog,timeout=timeout) + m = re.search('(firmware update success!!)',output) + m1 = re.search('.*(Firmware already up to date)',output) + if m: + return True + elif m1: + log.info('Firmware already upgraded') + return True + else: + log.error('Upgrade failed') + except Exception as e: + log.warning(e) + return None + + else: + log.info(f"Image path not provided") + cmd =f'upgrade hw-module subslot {slot} sfp {sfp}' + try: + output = device.execute(cmd,reply=dialog,timeout=timeout) + m = re.search('(firmware update success!!)',output) + m1 = re.search('.*(Firmware already up to date)',output) + if m: + return True + elif m1: + log.info('Firmware already upgraded') + return True + else: + log.error('Upgrade failed') + except Exception as e: + log.warning(e) + return None diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vlan/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vlan/configure.py index 683156c97..8307f0db5 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vlan/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vlan/configure.py @@ -1013,7 +1013,6 @@ def configure_vlan_name(device,vlan,name): except SubCommandFailure as e: raise SubCommandFailure(f'Could not configure the vlan name. Error:\n{e}') - def unconfigure_pvlan_primary(device, primary_vlan, secondary_vlan=None): """ Unconfigures Primary Private Vlan Args: diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vrf/configure.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vrf/configure.py index 760c7877f..09488f5c0 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vrf/configure.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/iosxe/vrf/configure.py @@ -1001,7 +1001,7 @@ def configure_mdt_auto_discovery_inter_as(device, vrf_name, address_family): except SubCommandFailure as e: raise SubCommandFailure(f"Could not configure mdt auto-discovery inter-as on device vrf {vrf_name}. Error:\n{e}") - + def configure_rd_address_family_vrf(device, vrf_name, rd_name, address_family): """ configure rd and address family on vrf @@ -1028,3 +1028,52 @@ def configure_rd_address_family_vrf(device, vrf_name, rd_name, address_family): raise SubCommandFailure( f"Could not configure rd and address family on vrf {vrf_name} on device.Error:\n{e}" ) + +def configure_mdt_default(device, vrf_name, address_family, ip_address): + """Configure mdt default + Args: + device ('obj'): device object + vrf_name ('str') : vrf name + address_family ('str'): address family + ip_address ('str'): IP multicast group address + Return: + None + Raises: + SubCommandFailure + """ + config= [ + f'vrf definition {vrf_name}', + f'address-family {address_family}', + f'mdt default {ip_address}' + ] + try: + device.configure(config) + except SubCommandFailure as e: + raise SubCommandFailure( + f'Failed to Configure mdt default on {device.name}\n{e}') + +def configure_mdt_auto_discovery_inter_as_mdt_type(device, vrf_name, address_family, mdt_type=None): + """ configure mdt auto-discovery inter-as mdt type + Args: + device ('obj'): Device object + vrf_name ('str'): name of the vrf + address_family ('str'): mention the address-family ipv4 or ipv6. + mdt_type ('str'): specify the MDT configuration type interworking or pim. + Return: + None + Raise: + SubCommandFailure: Failed configuring mdt auto-discovery on vrf + """ + config = [ + f'vrf definition {vrf_name}', + f'address-family {address_family}'] + if mdt_type == 'interworking': + config.append(f'mdt auto-discovery interworking vxlan-pim inter-as') + elif mdt_type == 'pim': + config.append(f'mdt auto-discovery pim inter-as') + else: + raise ValueError(f"Invalid MDT type: {mdt_type}. Must be 'interworking' or 'pim'.") + try: + device.configure(config) + except SubCommandFailure as e: + raise SubCommandFailure(f"Could not configure mdt auto-discovery inter-as mdt type on device vrf {vrf_name}. Error:\n{e}") diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/configure/confirm_iox_enabled_requested_storage_media/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/configure/confirm_iox_enabled_requested_storage_media/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/configure/confirm_iox_enabled_requested_storage_media/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/configure/confirm_iox_enabled_requested_storage_media/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..336a9e7af --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/configure/confirm_iox_enabled_requested_storage_media/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,34 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: T1-9300-SP1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: T1-9300-SP1(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: '' + prompt: T1-9300-SP1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/configure/confirm_iox_enabled_requested_storage_media/test_api_confirm_iox_enabled_requested_storage_media.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/configure/confirm_iox_enabled_requested_storage_media/test_api_confirm_iox_enabled_requested_storage_media.py new file mode 100644 index 000000000..049364fcf --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/configure/confirm_iox_enabled_requested_storage_media/test_api_confirm_iox_enabled_requested_storage_media.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.apphosting.configure import confirm_iox_enabled_requested_storage_media + + +class TestConfirmIoxEnabledRequestedStorageMedia(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + T1-9300-SW1: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['T1-9300-SW1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_confirm_iox_enabled_requested_storage_media(self): + result = confirm_iox_enabled_requested_storage_media('T1-9300-SW1', 'ssd') + expected_output = False + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/execute/set_stack_mode/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/execute/set_stack_mode/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/execute/set_stack_mode/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/execute/set_stack_mode/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..336a9e7af --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/execute/set_stack_mode/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,34 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: T1-9300-SP1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: T1-9300-SP1(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: '' + prompt: T1-9300-SP1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/execute/set_stack_mode/test_api_set_stack_mode.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/execute/set_stack_mode/test_api_set_stack_mode.py new file mode 100644 index 000000000..c0eb31898 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/apphosting/execute/set_stack_mode/test_api_set_stack_mode.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.apphosting.execute import set_stack_mode + + +class TestSetStackMode(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + T1-9300-SW1: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['T1-9300-SW1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_set_stack_mode(self): + result = set_stack_mode('T1-9300-SW1', 10, 12) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/configure_ip_arp_inspection_vlan_logging/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/configure_ip_arp_inspection_vlan_logging/mock_data/iosxe/mock_data.yaml index b70e77d06..b81eba7fa 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/configure_ip_arp_inspection_vlan_logging/mock_data/iosxe/mock_data.yaml +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/configure_ip_arp_inspection_vlan_logging/mock_data/iosxe/mock_data.yaml @@ -2,18 +2,17 @@ configure: commands: end: new_state: execute - ip arp inspection vlan 10-20 logging acl-match matchlog: "ip arp inspection vlan\ - \ 10-20 logging acl-match matchlog\r\n" + ip arp inspection vlan 10,20: "ip arp inspection vlan 10,20\r\n" line console 0: new_state: configure_line no logging console: '' - prompt: T1-9300-SW1(config)# + prompt: T1-9300-SP1(config)# configure_line: commands: end: new_state: execute exec-timeout 0: '' - prompt: T1-9300-SW1(config-line)# + prompt: T1-9300-SP1(config-line)# connect: commands: ? '' @@ -33,4 +32,4 @@ execute: show version: '' term length 0: '' term width 0: '' - prompt: T1-9300-SW1# + prompt: T1-9300-SP1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/configure_ip_arp_inspection_vlan_logging/test_api_configure_ip_arp_inspection_vlan_logging.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/configure_ip_arp_inspection_vlan_logging/test_api_configure_ip_arp_inspection_vlan_logging.py index 78561afd1..2a1006ade 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/configure_ip_arp_inspection_vlan_logging/test_api_configure_ip_arp_inspection_vlan_logging.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/configure_ip_arp_inspection_vlan_logging/test_api_configure_ip_arp_inspection_vlan_logging.py @@ -30,6 +30,6 @@ def setUpClass(self): ) def test_configure_ip_arp_inspection_vlan_logging(self): - result = configure_ip_arp_inspection_vlan_logging(self.device, '10-20', 'matchlog', 'acl-match') + result = configure_ip_arp_inspection_vlan_logging(self.device, '10,20', 'acl-match', None) expected_output = None self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/unconfigure_ip_arp_inspection_vlan_logging/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/unconfigure_ip_arp_inspection_vlan_logging/mock_data/iosxe/mock_data.yaml index 8d032085e..581c2b87d 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/unconfigure_ip_arp_inspection_vlan_logging/mock_data/iosxe/mock_data.yaml +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/unconfigure_ip_arp_inspection_vlan_logging/mock_data/iosxe/mock_data.yaml @@ -4,19 +4,15 @@ configure: new_state: execute line console 0: new_state: configure_line - no ip arp inspection vlan 10-20 logging acl-match matchlog: "no ip arp inspection\ - \ vlan 10-20 logging acl-match matchlo\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\ - \b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\ - $nspection vlan 10-20 logging acl-match matchlog \b\b\b\b\b\b\b\b\b\r\ - \n" + no ip arp inspection vlan 10,20: "no ip arp inspection vlan 10,20\r\n" no logging console: '' - prompt: T1-9300-SW1(config)# + prompt: T1-9300-SP1(config)# configure_line: commands: end: new_state: execute exec-timeout 0: '' - prompt: T1-9300-SW1(config-line)# + prompt: T1-9300-SP1(config-line)# connect: commands: ? '' @@ -36,4 +32,4 @@ execute: show version: '' term length 0: '' term width 0: '' - prompt: T1-9300-SW1# + prompt: T1-9300-SP1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/unconfigure_ip_arp_inspection_vlan_logging/test_api_unconfigure_ip_arp_inspection_vlan_logging.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/unconfigure_ip_arp_inspection_vlan_logging/test_api_unconfigure_ip_arp_inspection_vlan_logging.py index 4dd3ada4c..a667d8051 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/unconfigure_ip_arp_inspection_vlan_logging/test_api_unconfigure_ip_arp_inspection_vlan_logging.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/arp/configure/unconfigure_ip_arp_inspection_vlan_logging/test_api_unconfigure_ip_arp_inspection_vlan_logging.py @@ -30,6 +30,6 @@ def setUpClass(self): ) def test_unconfigure_ip_arp_inspection_vlan_logging(self): - result = unconfigure_ip_arp_inspection_vlan_logging(self.device, '10-20', 'matchlog', 'acl-match') + result = unconfigure_ip_arp_inspection_vlan_logging(self.device, '10,20', 'dhcp-bindings', None) expected_output = None self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/asr1k/configure/configure_autoboot/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/asr1k/configure/configure_autoboot/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/asr1k/configure/configure_autoboot/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/asr1k/configure/configure_autoboot/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..1b557f02d --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/asr1k/configure/configure_autoboot/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,35 @@ +configure: + commands: + config-reg 0x2102: "config-reg 0x2102\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: ott-asr1k-67(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: ott-asr1k-67(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: '' + prompt: ott-asr1k-67# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/asr1k/configure/configure_autoboot/test_api_configure_autoboot.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/asr1k/configure/configure_autoboot/test_api_configure_autoboot.py new file mode 100644 index 000000000..92bc3bd07 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/asr1k/configure/configure_autoboot/test_api_configure_autoboot.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.asr1k.configure import configure_autoboot + + +class TestConfigureAutoboot(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + ott-asr1k-67: + 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: asr1k + type: asr1k + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['ott-asr1k-67'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_autoboot(self): + result = configure_autoboot(self.device) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_best_path_as_path_multipath_relax/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_best_path_as_path_multipath_relax/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_best_path_as_path_multipath_relax/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_best_path_as_path_multipath_relax/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..7812d9a22 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_best_path_as_path_multipath_relax/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + bgp bestpath as-path multipath-relax: "bgp bestpath as-path multipath-relax\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + router bgp 100: "router bgp 100\r\n" + prompt: T1-9300-SP1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: T1-9300-SP1(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: '' + prompt: T1-9300-SP1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_best_path_as_path_multipath_relax/test_api_configure_bgp_best_path_as_path_multipath_relax.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_best_path_as_path_multipath_relax/test_api_configure_bgp_best_path_as_path_multipath_relax.py new file mode 100644 index 000000000..f52d1a117 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_best_path_as_path_multipath_relax/test_api_configure_bgp_best_path_as_path_multipath_relax.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.bgp.configure import configure_bgp_best_path_as_path_multipath_relax + + +class TestConfigureBgpBestPathAsPathMultipathRelax(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + T1-9300-SW1: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['T1-9300-SW1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_bgp_best_path_as_path_multipath_relax(self): + result = configure_bgp_best_path_as_path_multipath_relax(self.device, 100) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_redistribute_static/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_redistribute_static/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_redistribute_static/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_redistribute_static/mock_data/iosxe/mock_data.yaml index b2d55c636..3e7a20a65 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_redistribute_static/mock_data/iosxe/mock_data.yaml +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_redistribute_static/mock_data/iosxe/mock_data.yaml @@ -1,20 +1,20 @@ configure: commands: - address-family ipv4: "address-family ipv4\r\n" + address-family vpnv4: "address-family vpnv4\r\n" end: new_state: execute line console 0: new_state: configure_line no logging console: '' - redistribute static: "redistribute static\r\n" - router bgp 1: "router bgp 1\r\n" - prompt: 9300-1(config)# + redistribute static route-map test: "redistribute static route-map test\r\n" + router bgp 65000: "router bgp 65000\r\n" + prompt: iolpe2(config)# configure_line: commands: end: new_state: execute exec-timeout 0: '' - prompt: 9300-1(config-line)# + prompt: iolpe2(config-line)# connect: commands: ? '' @@ -34,4 +34,4 @@ execute: show version: '' term length 0: '' term width 0: '' - prompt: 9300-1# + prompt: iolpe2# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_redistribute_static/test_api_configure_bgp_redistribute_static.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_redistribute_static/test_api_configure_bgp_redistribute_static.py index a607df136..08558ee39 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_redistribute_static/test_api_configure_bgp_redistribute_static.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_bgp_redistribute_static/test_api_configure_bgp_redistribute_static.py @@ -1,3 +1,4 @@ +import os import unittest from pyats.topology import loader from genie.libs.sdk.apis.iosxe.bgp.configure import configure_bgp_redistribute_static @@ -7,21 +8,21 @@ class TestConfigureBgpRedistributeStatic(unittest.TestCase): @classmethod def setUpClass(self): - testbed = """ + testbed = f""" devices: - 9300-1: + iolpe2: connections: defaults: class: unicon.Unicon a: - command: mock_device_cli --os iosxe --mock_data_dir mock_data --state connect + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect protocol: unknown os: iosxe - platform: c9300 - type: c9300 + platform: iol + type: iol """ self.testbed = loader.load(testbed) - self.device = self.testbed.devices['9300-1'] + self.device = self.testbed.devices['iolpe2'] self.device.connect( learn_hostname=True, init_config_commands=[], @@ -29,6 +30,6 @@ def setUpClass(self): ) def test_configure_bgp_redistribute_static(self): - result = configure_bgp_redistribute_static(self.device, 1, 'ipv4', None) + result = configure_bgp_redistribute_static(self.device, 65000, 'vpnv4', None, 'test') expected_output = None self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_route_map_route_map_to_bgp_neighbor/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_route_map_route_map_to_bgp_neighbor/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_route_map_route_map_to_bgp_neighbor/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_route_map_route_map_to_bgp_neighbor/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..28bf0715b --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_route_map_route_map_to_bgp_neighbor/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,39 @@ +configure: + commands: + address-family ipv4 vrf ce1: "address-family ipv4 vrf ce1\r\n" + address-family vpnv4: "address-family vpnv4\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + neighbor 1.1.1.4 route-map test in: "neighbor 1.1.1.4 route-map test in\r\n" + neighbor 99.1.3.1 route-map test in: "neighbor 99.1.3.1 route-map test in\r\n" + no logging console: '' + router bgp 65000: "router bgp 65000\r\n" + prompt: iolpe2(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: iolpe2(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: '' + prompt: iolpe2# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_route_map_route_map_to_bgp_neighbor/test_api_configure_route_map_route_map_to_bgp_neighbor.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_route_map_route_map_to_bgp_neighbor/test_api_configure_route_map_route_map_to_bgp_neighbor.py new file mode 100644 index 000000000..6f5f16b07 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/configure_route_map_route_map_to_bgp_neighbor/test_api_configure_route_map_route_map_to_bgp_neighbor.py @@ -0,0 +1,40 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.bgp.configure import configure_route_map_route_map_to_bgp_neighbor + + +class TestConfigureRouteMapRouteMapToBgpNeighbor(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + iolpe2: + 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: iol + type: iol + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['iolpe2'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_route_map_route_map_to_bgp_neighbor(self): + result = configure_route_map_route_map_to_bgp_neighbor(self.device, 65000, 'vpnv4', [{'direction': 'in', 'neighbor': '1.1.1.4', 'route_map': 'test'}], '', '') + expected_output = None + self.assertEqual(result, expected_output) + + def test_configure_route_map_route_map_to_bgp_neighbor_1(self): + result = configure_route_map_route_map_to_bgp_neighbor(self.device, 65000, '', [{'direction': 'in', 'neighbor': '99.1.3.1', 'route_map': 'test'}], 'ce1', 'ipv4') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/get_running_config_section_dict/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/get_running_config_section_dict/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/get_running_config_section_dict/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/get_running_config_section_dict/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..120568c4b --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/get_running_config_section_dict/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,166 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: iolpe2(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: iolpe2(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: + response: + - "Building configuration...\r\n\r\nCurrent configuration : 8337 bytes\r\n!\r\ + \n! Last configuration change at 15:10:04 PST Mon Jul 10 2023\r\n!\r\nversion\ + \ 17.13\r\nservice tcp-keepalives-in\r\nservice tcp-keepalives-out\r\nservice\ + \ timestamps debug datetime msec\r\nservice timestamps log datetime msec\r\ + \nservice internal\r\nservice compress-config\r\n!\r\nhostname iolpe2\r\n\ + !\r\nboot-start-marker\r\nboot-end-marker\r\n!\r\n!\r\nvrf definition ce1\r\ + \n rd 3:3\r\n !\r\n address-family ipv4\r\n route-target export 1:1\r\n \ + \ route-target import 1:1\r\n exit-address-family\r\n !\r\n address-family\ + \ ipv6\r\n route-target export 1:1\r\n route-target import 1:1\r\n exit-address-family\r\ + \n!\r\nlogging buffered 4000000\r\nno logging console\r\nno aaa new-model\r\ + \n!\r\n!\r\n!\r\nclock timezone PST -8 0\r\n!\r\n!\r\n!\r\n!\r\n!\r\n!\r\n\ + !\r\n!\r\n!\r\n!\r\n!\r\n!\r\nno ip domain lookup\r\nip cef\r\nlogin on-success\ + \ log\r\nipv6 unicast-routing\r\nipv6 cef\r\n!\r\n!\r\n!\r\n!\r\n!\r\n!\r\n\ + !\r\n!\r\nmpls traffic-eng tunnels\r\n!\r\n!\r\n!\r\n!\r\n!\r\nmemory free\ + \ low-watermark processor 54960\r\n!\r\n!\r\nspanning-tree mode rapid-pvst\r\ + \n!\r\n!\r\n!\r\n!\r\n!\r\n!\r\n!\r\n! \r\n!\r\n!\r\n!\r\n!\r\n!\r\n!\r\n\ + !\r\n!\r\n!\r\n!\r\n!\r\n!\r\n!\r\n!\r\n!\r\ninterface Loopback1\r\n ip address\ + \ 1.1.1.3 255.255.255.255\r\n ip router isis sr\r\n ipv6 address 2001::1:1:1:3/128\r\ + \n ipv6 router isis sr\r\n!\r\ninterface Ethernet0/0\r\n no ip address\r\n\ + \ shutdown\r\n!\r\ninterface Ethernet0/1\r\n no ip address\r\n shutdown\r\n\ + !\r\ninterface Ethernet0/2\r\n no ip address\r\n shutdown\r\n!\r\ninterface\ + \ Ethernet0/3\r\n no ip address\r\n shutdown\r\n!\r\ninterface Ethernet1/0\r\ + \n description to iolce1 Ethernet2/0\r\n vrf forwarding ce1\r\n ip address\ + \ 99.1.3.3 255.255.255.0\r\n ipv6 address 2001::99:1:3:3/112\r\n!\r\ninterface\ + \ Ethernet1/1\r\n description to iolce1 Ethernet2/1\r\n vrf forwarding ce1\r\ + \n ip address 100.1.3.3 255.255.255.0\r\n ipv6 address 2001::100:1:3:3/112\r\ + \n!\r\ninterface Ethernet1/2\r\n no ip address\r\n shutdown\r\n!\r\ninterface\ + \ Ethernet1/3\r\n no ip address\r\n shutdown\r\n!\r\ninterface Ethernet2/0\r\ + \n description to iolpe1 Ethernet2/0\r\n ip address 99.2.3.3 255.255.255.0\r\ + \n ip router isis sr\r\n ipv6 address 2001::99:2:3:3/112\r\n ipv6 router isis\ + \ sr\r\n mpls ip\r\n mpls traffic-eng tunnels\r\n isis network point-to-point\ + \ \r\n ip rsvp bandwidth\r\n!\r\ninterface Ethernet2/1\r\n description to\ + \ iolpe1 Ethernet2/1\r\n ip address 100.2.3.3 255.255.255.0\r\n ip router\ + \ isis sr\r\n ipv6 address 2001::100:2:3:3/112\r\n ipv6 router isis sr\r\n\ + \ mpls ip\r\n mpls traffic-eng tunnels\r\n isis network point-to-point \r\n\ + \ ip rsvp bandwidth\r\n!\r\ninterface Ethernet2/2\r\n no ip address\r\n shutdown\r\ + \n!\r\ninterface Ethernet2/3\r\n no ip address\r\n shutdown\r\n!\r\ninterface\ + \ Ethernet3/0\r\n description to iolp2 Ethernet1/0\r\n ip address 99.3.5.3\ + \ 255.255.255.0\r\n ip router isis sr\r\n ipv6 address 2001::99:3:5:3/112\r\ + \n ipv6 router isis sr\r\n mpls ip\r\n mpls traffic-eng tunnels\r\n isis network\ + \ point-to-point \r\n ip rsvp bandwidth\r\n!\r\ninterface Ethernet3/1\r\n\ + \ description to iolp2 Ethernet1/1\r\n ip address 100.3.5.3 255.255.255.0\r\ + \n ip router isis sr\r\n ipv6 address 2001::100:3:5:3/112\r\n ipv6 router\ + \ isis sr\r\n mpls ip\r\n mpls traffic-eng tunnels\r\n isis network point-to-point\ + \ \r\n ip rsvp bandwidth\r\n!\r\ninterface Ethernet3/2\r\n no ip address\r\ + \n shutdown\r\n!\r\ninterface Ethernet3/3\r\n no ip address\r\n shutdown\r\ + \n!\r\ninterface Ethernet4/0\r\n no ip address\r\n shutdown\r\n!\r\ninterface\ + \ Ethernet4/1\r\n no ip address\r\n shutdown\r\n!\r\ninterface Ethernet4/2\r\ + \n no ip address\r\n shutdown\r\n!\r\ninterface Ethernet4/3\r\n no ip address\r\ + \n shutdown\r\n!\r\ninterface Ethernet5/0\r\n description to iolp1 Ethernet5/0\r\ + \n ip address 99.3.4.3 255.255.255.0\r\n ip router isis sr\r\n ipv6 address\ + \ 2001::99:3:4:3/112\r\n ipv6 router isis sr\r\n mpls ip\r\n mpls traffic-eng\ + \ tunnels\r\n isis network point-to-point \r\n ip rsvp bandwidth\r\n!\r\n\ + interface Ethernet5/1\r\n description to iolp1 Ethernet5/1\r\n ip address\ + \ 100.3.4.3 255.255.255.0\r\n ip router isis sr\r\n ipv6 address 2001::100:3:4:3/112\r\ + \n ipv6 router isis sr\r\n mpls ip\r\n mpls traffic-eng tunnels\r\n isis network\ + \ point-to-point \r\n ip rsvp bandwidth\r\n!\r\ninterface Ethernet5/2\r\n\ + \ no ip address\r\n shutdown\r\n!\r\ninterface Ethernet5/3\r\n no ip address\r\ + \n shutdown\r\n!\r\n!\r\nsegment-routing mpls\r\n !\r\n set-attributes\r\n\ + \ address-family ipv4\r\n sr-label-preferred\r\n exit-address-family\r\ + \n !\r\n global-block 16000 23999\r\n local-block 30000 39999\r\n !\r\n connected-prefix-sid-map\r\ + \n address-family ipv4\r\n 1.1.1.3/32 index 3 range 1 \r\n exit-address-family\r\ + \n !\r\n!\r\nsegment-routing traffic-eng\r\n !\r\n on-demand color 10\r\n\ + \ authorize\r\n candidate-paths\r\n preference 1\r\n constraints\r\n\ + \ segments\r\n dataplane srv6\r\n !\r\n !\r\n dynamic\r\ + \n !\r\n !\r\n !\r\n !\r\n!\r\nsegment-routing srv6\r\n locators\r\n\ + \ locator loc1\r\n prefix FC01:101:3::/48\r\n format usid-f3216\r\n!\r\ + \nrouter isis sr\r\n net 49.0000.0000.0003.00\r\n is-type level-2-only\r\n\ + \ metric-style wide\r\n distribute link-state\r\n segment-routing mpls\r\n\ + \ !\r\n address-family ipv6\r\n multi-topology\r\n router-id Loopback1\r\ + \n segment-routing srv6\r\n locator loc1\r\n level-2\r\n exit-address-family\r\ + \n mpls traffic-eng router-id Loopback1\r\n mpls traffic-eng level-2\r\n!\r\ + \nrouter bgp 65000\r\n !\r\n segment-routing srv6\r\n locator loc1\r\n exit-srv6\r\ + \n !\r\n bgp router-id interface Loopback1\r\n bgp log-neighbor-changes\r\n\ + \ bgp graceful-restart all\r\n no bgp default ipv4-unicast\r\n neighbor 1.1.1.4\ + \ remote-as 65000\r\n neighbor 1.1.1.4 update-source Loopback1\r\n neighbor\ + \ 1.1.1.6 remote-as 65000\r\n neighbor 1.1.1.6 update-source Loopback1\r\n\ + \ neighbor 2001::1:1:1:4 remote-as 65000\r\n neighbor 2001::1:1:1:4 update-source\ + \ Loopback1\r\n neighbor 2001::1:1:1:6 remote-as 65000\r\n neighbor 2001::1:1:1:6\ + \ update-source Loopback1\r\n !\r\n address-family ipv4\r\n redistribute\ + \ static route-map test\r\n exit-address-family\r\n !\r\n address-family vpnv4\r\ + \n !\r\n segment-routing srv6\r\n locator loc1\r\n alloc-mode per-vrf\r\ + \n exit-srv6\r\n !\r\n neighbor 1.1.1.4 activate\r\n neighbor 1.1.1.4\ + \ send-community extended\r\n neighbor 1.1.1.4 next-hop-self\r\n neighbor\ + \ 1.1.1.4 route-map test in\r\n neighbor 1.1.1.4 route-map pe2 out\r\n neighbor\ + \ 1.1.1.6 activate\r\n neighbor 1.1.1.6 send-community extended\r\n neighbor\ + \ 1.1.1.6 next-hop-self\r\n neighbor 1.1.1.6 route-map odn in\r\n neighbor\ + \ 1.1.1.6 route-map pe2 out\r\n neighbor 2001::1:1:1:4 activate\r\n neighbor\ + \ 2001::1:1:1:4 send-community both\r\n neighbor 2001::1:1:1:4 next-hop-self\r\ + \n neighbor 2001::1:1:1:4 route-map odn in\r\n neighbor 2001::1:1:1:4 route-map\ + \ pe2 out\r\n neighbor 2001::1:1:1:6 activate\r\n neighbor 2001::1:1:1:6\ + \ send-community both\r\n neighbor 2001::1:1:1:6 next-hop-self\r\n neighbor\ + \ 2001::1:1:1:6 route-map odn in\r\n neighbor 2001::1:1:1:6 route-map pe2\ + \ out\r\n exit-address-family\r\n !\r\n address-family ipv6\r\n exit-address-family\r\ + \n !\r\n address-family vpnv6\r\n !\r\n segment-routing srv6\r\n locator\ + \ loc1\r\n alloc-mode per-vrf\r\n exit-srv6\r\n !\r\n neighbor 1.1.1.4\ + \ activate\r\n neighbor 1.1.1.4 send-community extended\r\n neighbor 1.1.1.4\ + \ next-hop-self\r\n neighbor 1.1.1.4 route-map odn in\r\n neighbor 1.1.1.4\ + \ route-map pe2 out\r\n neighbor 1.1.1.6 activate\r\n neighbor 1.1.1.6 send-community\ + \ extended\r\n neighbor 1.1.1.6 next-hop-self\r\n neighbor 1.1.1.6 route-map\ + \ odn in\r\n neighbor 1.1.1.6 route-map pe2 out\r\n neighbor 2001::1:1:1:4\ + \ activate\r\n neighbor 2001::1:1:1:4 send-community both\r\n neighbor 2001::1:1:1:4\ + \ next-hop-self\r\n neighbor 2001::1:1:1:4 route-map odn in\r\n neighbor\ + \ 2001::1:1:1:4 route-map pe2 out\r\n neighbor 2001::1:1:1:6 activate\r\n\ + \ neighbor 2001::1:1:1:6 send-community both\r\n neighbor 2001::1:1:1:6\ + \ next-hop-self\r\n neighbor 2001::1:1:1:6 route-map odn in\r\n neighbor\ + \ 2001::1:1:1:6 route-map pe2 out\r\n exit-address-family\r\n !\r\n address-family\ + \ ipv4 vrf ce1\r\n neighbor 99.1.3.1 remote-as 65001\r\n neighbor 99.1.3.1\ + \ activate\r\n neighbor 99.1.3.1 send-community extended\r\n neighbor 100.1.3.1\ + \ remote-as 65001\r\n neighbor 100.1.3.1 activate\r\n neighbor 100.1.3.1\ + \ send-community extended\r\n exit-address-family\r\n !\r\n address-family\ + \ ipv6 vrf ce1\r\n neighbor 2001::99:1:3:1 remote-as 65001\r\n neighbor\ + \ 2001::99:1:3:1 activate\r\n neighbor 2001::99:1:3:1 send-community extended\r\ + \n neighbor 2001::100:1:3:1 remote-as 65001\r\n neighbor 2001::100:1:3:1\ + \ activate\r\n neighbor 2001::100:1:3:1 send-community extended\r\n exit-address-family\r\ + \n!\r\nip forward-protocol nd\r\n!\r\n!\r\nip http server\r\nip http secure-server\r\ + \nip ssh bulk-mode 131072\r\n!\r\nno logging btrace\r\n!\r\nroute-map odn\ + \ permit 10 \r\n set extcommunity color 10\r\n!\r\nroute-map pe2 permit 10\ + \ \r\n set local-preference 30\r\n!\r\n!\r\n!\r\nperformance-measurement\r\ + \n interface Ethernet2/0\r\n delay-measurement\r\n advertise-delay 10\r\ + \n !\r\n !\r\n interface Ethernet2/1\r\n delay-measurement\r\n advertise-delay\ + \ 10\r\n !\r\n !\r\n interface Ethernet3/0\r\n delay-measurement\r\n advertise-delay\ + \ 10\r\n !\r\n !\r\n interface Ethernet3/1\r\n delay-measurement\r\n advertise-delay\ + \ 10\r\n !\r\n !\r\n interface Ethernet5/0\r\n delay-measurement\r\n advertise-delay\ + \ 10\r\n !\r\n !\r\n interface Ethernet5/1\r\n delay-measurement\r\n advertise-delay\ + \ 10\r\n !\r\n !\r\n!\r\n!\r\ncontrol-plane\r\n!\r\n!\r\n!\r\nline con 0\r\ + \n exec-timeout 0 0\r\n logging synchronous\r\nline aux 0\r\nline vty 0 4\r\ + \n exec-timeout 0 0\r\n login\r\n transport input ssh\r\n!\r\n!\r\n!\r\n!\r\ + \nend" + response_type: circular + show version: '' + term length 0: '' + term width 0: '' + prompt: iolpe2# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/get_running_config_section_dict/test_api_get_running_config_section_dict.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/get_running_config_section_dict/test_api_get_running_config_section_dict.py new file mode 100644 index 000000000..b3e4efa25 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/get_running_config_section_dict/test_api_get_running_config_section_dict.py @@ -0,0 +1,263 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.bgp.configure import get_running_config_section_dict + + +class TestGetRunningConfigSectionDict(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + iolpe2: + 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: iol + type: iol + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['iolpe2'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_get_running_config_section_dict(self): + result = get_running_config_section_dict(self.device) + expected_output = {'Building configuration...': {}, + 'Current configuration : 8337 bytes': {}, + 'boot-end-marker': {}, + 'boot-start-marker': {}, + 'clock timezone PST -8 0': {}, + 'control-plane': {}, + 'end': {}, + 'hostname iolpe2': {}, + 'interface Ethernet0/0': {'no ip address': {}, 'shutdown': {}}, + 'interface Ethernet0/1': {'no ip address': {}, 'shutdown': {}}, + 'interface Ethernet0/2': {'no ip address': {}, 'shutdown': {}}, + 'interface Ethernet0/3': {'no ip address': {}, 'shutdown': {}}, + 'interface Ethernet1/0': {'description to iolce1 Ethernet2/0': {}, + 'ip address 99.1.3.3 255.255.255.0': {}, + 'ipv6 address 2001::99:1:3:3/112': {}, + 'vrf forwarding ce1': {}}, + 'interface Ethernet1/1': {'description to iolce1 Ethernet2/1': {}, + 'ip address 100.1.3.3 255.255.255.0': {}, + 'ipv6 address 2001::100:1:3:3/112': {}, + 'vrf forwarding ce1': {}}, + 'interface Ethernet1/2': {'no ip address': {}, 'shutdown': {}}, + 'interface Ethernet1/3': {'no ip address': {}, 'shutdown': {}}, + 'interface Ethernet2/0': {'description to iolpe1 Ethernet2/0': {}, + 'ip address 99.2.3.3 255.255.255.0': {}, + 'ip router isis sr': {}, + 'ip rsvp bandwidth': {}, + 'ipv6 address 2001::99:2:3:3/112': {}, + 'ipv6 router isis sr': {}, + 'isis network point-to-point': {}, + 'mpls ip': {}, + 'mpls traffic-eng tunnels': {}}, + 'interface Ethernet2/1': {'description to iolpe1 Ethernet2/1': {}, + 'ip address 100.2.3.3 255.255.255.0': {}, + 'ip router isis sr': {}, + 'ip rsvp bandwidth': {}, + 'ipv6 address 2001::100:2:3:3/112': {}, + 'ipv6 router isis sr': {}, + 'isis network point-to-point': {}, + 'mpls ip': {}, + 'mpls traffic-eng tunnels': {}}, + 'interface Ethernet2/2': {'no ip address': {}, 'shutdown': {}}, + 'interface Ethernet2/3': {'no ip address': {}, 'shutdown': {}}, + 'interface Ethernet3/0': {'description to iolp2 Ethernet1/0': {}, + 'ip address 99.3.5.3 255.255.255.0': {}, + 'ip router isis sr': {}, + 'ip rsvp bandwidth': {}, + 'ipv6 address 2001::99:3:5:3/112': {}, + 'ipv6 router isis sr': {}, + 'isis network point-to-point': {}, + 'mpls ip': {}, + 'mpls traffic-eng tunnels': {}}, + 'interface Ethernet3/1': {'description to iolp2 Ethernet1/1': {}, + 'ip address 100.3.5.3 255.255.255.0': {}, + 'ip router isis sr': {}, + 'ip rsvp bandwidth': {}, + 'ipv6 address 2001::100:3:5:3/112': {}, + 'ipv6 router isis sr': {}, + 'isis network point-to-point': {}, + 'mpls ip': {}, + 'mpls traffic-eng tunnels': {}}, + 'interface Ethernet3/2': {'no ip address': {}, 'shutdown': {}}, + 'interface Ethernet3/3': {'no ip address': {}, 'shutdown': {}}, + 'interface Ethernet4/0': {'no ip address': {}, 'shutdown': {}}, + 'interface Ethernet4/1': {'no ip address': {}, 'shutdown': {}}, + 'interface Ethernet4/2': {'no ip address': {}, 'shutdown': {}}, + 'interface Ethernet4/3': {'no ip address': {}, 'shutdown': {}}, + 'interface Ethernet5/0': {'description to iolp1 Ethernet5/0': {}, + 'ip address 99.3.4.3 255.255.255.0': {}, + 'ip router isis sr': {}, + 'ip rsvp bandwidth': {}, + 'ipv6 address 2001::99:3:4:3/112': {}, + 'ipv6 router isis sr': {}, + 'isis network point-to-point': {}, + 'mpls ip': {}, + 'mpls traffic-eng tunnels': {}}, + 'interface Ethernet5/1': {'description to iolp1 Ethernet5/1': {}, + 'ip address 100.3.4.3 255.255.255.0': {}, + 'ip router isis sr': {}, + 'ip rsvp bandwidth': {}, + 'ipv6 address 2001::100:3:4:3/112': {}, + 'ipv6 router isis sr': {}, + 'isis network point-to-point': {}, + 'mpls ip': {}, + 'mpls traffic-eng tunnels': {}}, + 'interface Ethernet5/2': {'no ip address': {}, 'shutdown': {}}, + 'interface Ethernet5/3': {'no ip address': {}, 'shutdown': {}}, + 'interface Loopback1': {'ip address 1.1.1.3 255.255.255.255': {}, + 'ip router isis sr': {}, + 'ipv6 address 2001::1:1:1:3/128': {}, + 'ipv6 router isis sr': {}}, + 'ip cef': {}, + 'ip forward-protocol nd': {}, + 'ip http secure-server': {}, + 'ip http server': {}, + 'ip ssh bulk-mode 131072': {}, + 'ipv6 cef': {}, + 'ipv6 unicast-routing': {}, + 'line aux 0': {}, + 'line con 0': {'exec-timeout 0 0': {}, 'logging synchronous': {}}, + 'line vty 0 4': {'exec-timeout 0 0': {}, + 'login': {}, + 'transport input ssh': {}}, + 'logging buffered 4000000': {}, + 'login on-success log': {}, + 'memory free low-watermark processor 54960': {}, + 'mpls traffic-eng tunnels': {}, + 'no aaa new-model': {}, + 'no ip domain lookup': {}, + 'no logging btrace': {}, + 'no logging console': {}, + 'performance-measurement': {'interface Ethernet2/0': {'delay-measurement': {'advertise-delay 10': {}}}, + 'interface Ethernet2/1': {'delay-measurement': {'advertise-delay 10': {}}}, + 'interface Ethernet3/0': {'delay-measurement': {'advertise-delay 10': {}}}, + 'interface Ethernet3/1': {'delay-measurement': {'advertise-delay 10': {}}}, + 'interface Ethernet5/0': {'delay-measurement': {'advertise-delay 10': {}}}, + 'interface Ethernet5/1': {'delay-measurement': {'advertise-delay 10': {}}}}, + 'route-map odn permit 10': {'set extcommunity color 10': {}}, + 'route-map pe2 permit 10': {'set local-preference 30': {}}, + 'router bgp 65000': {'address-family ipv4': {'redistribute static route-map test': {}}, + 'address-family ipv4 vrf ce1': {'neighbor 100.1.3.1 activate': {}, + 'neighbor 100.1.3.1 remote-as 65001': {}, + 'neighbor 100.1.3.1 send-community extended': {}, + 'neighbor 99.1.3.1 activate': {}, + 'neighbor 99.1.3.1 remote-as 65001': {}, + 'neighbor 99.1.3.1 send-community extended': {}}, + 'address-family ipv6': {}, + 'address-family ipv6 vrf ce1': {'neighbor 2001::100:1:3:1 activate': {}, + 'neighbor 2001::100:1:3:1 remote-as 65001': {}, + 'neighbor 2001::100:1:3:1 send-community extended': {}, + 'neighbor 2001::99:1:3:1 activate': {}, + 'neighbor 2001::99:1:3:1 remote-as 65001': {}, + 'neighbor 2001::99:1:3:1 send-community extended': {}}, + 'address-family vpnv4': {'exit-srv6': {}, + 'neighbor 1.1.1.4 activate': {}, + 'neighbor 1.1.1.4 next-hop-self': {}, + 'neighbor 1.1.1.4 route-map pe2 out': {}, + 'neighbor 1.1.1.4 route-map test in': {}, + 'neighbor 1.1.1.4 send-community extended': {}, + 'neighbor 1.1.1.6 activate': {}, + 'neighbor 1.1.1.6 next-hop-self': {}, + 'neighbor 1.1.1.6 route-map odn in': {}, + 'neighbor 1.1.1.6 route-map pe2 out': {}, + 'neighbor 1.1.1.6 send-community extended': {}, + 'neighbor 2001::1:1:1:4 activate': {}, + 'neighbor 2001::1:1:1:4 next-hop-self': {}, + 'neighbor 2001::1:1:1:4 route-map odn in': {}, + 'neighbor 2001::1:1:1:4 route-map pe2 out': {}, + 'neighbor 2001::1:1:1:4 send-community both': {}, + 'neighbor 2001::1:1:1:6 activate': {}, + 'neighbor 2001::1:1:1:6 next-hop-self': {}, + 'neighbor 2001::1:1:1:6 route-map odn in': {}, + 'neighbor 2001::1:1:1:6 route-map pe2 out': {}, + 'neighbor 2001::1:1:1:6 send-community both': {}, + 'segment-routing srv6': {'alloc-mode per-vrf': {}, + 'locator loc1': {}}}, + 'address-family vpnv6': {'exit-srv6': {}, + 'neighbor 1.1.1.4 activate': {}, + 'neighbor 1.1.1.4 next-hop-self': {}, + 'neighbor 1.1.1.4 route-map odn in': {}, + 'neighbor 1.1.1.4 route-map pe2 out': {}, + 'neighbor 1.1.1.4 send-community extended': {}, + 'neighbor 1.1.1.6 activate': {}, + 'neighbor 1.1.1.6 next-hop-self': {}, + 'neighbor 1.1.1.6 route-map odn in': {}, + 'neighbor 1.1.1.6 route-map pe2 out': {}, + 'neighbor 1.1.1.6 send-community extended': {}, + 'neighbor 2001::1:1:1:4 activate': {}, + 'neighbor 2001::1:1:1:4 next-hop-self': {}, + 'neighbor 2001::1:1:1:4 route-map odn in': {}, + 'neighbor 2001::1:1:1:4 route-map pe2 out': {}, + 'neighbor 2001::1:1:1:4 send-community both': {}, + 'neighbor 2001::1:1:1:6 activate': {}, + 'neighbor 2001::1:1:1:6 next-hop-self': {}, + 'neighbor 2001::1:1:1:6 route-map odn in': {}, + 'neighbor 2001::1:1:1:6 route-map pe2 out': {}, + 'neighbor 2001::1:1:1:6 send-community both': {}, + 'segment-routing srv6': {'alloc-mode per-vrf': {}, + 'locator loc1': {}}}, + 'bgp graceful-restart all': {}, + 'bgp log-neighbor-changes': {}, + 'bgp router-id interface Loopback1': {}, + 'exit-address-family': {}, + 'exit-srv6': {}, + 'neighbor 1.1.1.4 remote-as 65000': {}, + 'neighbor 1.1.1.4 update-source Loopback1': {}, + 'neighbor 1.1.1.6 remote-as 65000': {}, + 'neighbor 1.1.1.6 update-source Loopback1': {}, + 'neighbor 2001::1:1:1:4 remote-as 65000': {}, + 'neighbor 2001::1:1:1:4 update-source Loopback1': {}, + 'neighbor 2001::1:1:1:6 remote-as 65000': {}, + 'neighbor 2001::1:1:1:6 update-source Loopback1': {}, + 'no bgp default ipv4-unicast': {}, + 'segment-routing srv6': {'locator loc1': {}}}, + 'router isis sr': {'address-family ipv6': {'multi-topology': {}, + 'router-id Loopback1': {}, + 'segment-routing srv6': {'locator loc1': {'level-2': {}}}}, + 'distribute link-state': {}, + 'exit-address-family': {}, + 'is-type level-2-only': {}, + 'metric-style wide': {}, + 'mpls traffic-eng level-2': {}, + 'mpls traffic-eng router-id Loopback1': {}, + 'net 49.0000.0000.0003.00': {}, + 'segment-routing mpls': {}}, + 'segment-routing mpls': {'connected-prefix-sid-map': {'address-family ipv4': {'1.1.1.3/32 index 3 range 1': {}}, + 'exit-address-family': {}}, + 'global-block 16000 23999': {}, + 'local-block 30000 39999': {}, + 'set-attributes': {'address-family ipv4': {'sr-label-preferred': {}}, + 'exit-address-family': {}}}, + 'segment-routing srv6': {'locators': {'locator loc1': {'format usid-f3216': {}, + 'prefix FC01:101:3::/48': {}}}}, + 'segment-routing traffic-eng': {'on-demand color 10': {'authorize': {}, + 'candidate-paths': {'preference 1': {'constraints': {'segments': {'dataplane srv6': {}}}, + 'dynamic': {}}}}}, + 'service compress-config': {}, + 'service internal': {}, + 'service tcp-keepalives-in': {}, + 'service tcp-keepalives-out': {}, + 'service timestamps debug datetime msec': {}, + 'service timestamps log datetime msec': {}, + 'spanning-tree mode rapid-pvst': {}, + 'version 17.13': {}, + 'vrf definition ce1': {'address-family ipv4': {'route-target export 1:1': {}, + 'route-target import 1:1': {}}, + 'address-family ipv6': {'route-target export 1:1': {}, + 'route-target import 1:1': {}}, + 'exit-address-family': {}, + 'rd 3:3': {}}} + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_bgp_redistribute_static/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_bgp_redistribute_static/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_bgp_redistribute_static/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_bgp_redistribute_static/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..338e07e47 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_bgp_redistribute_static/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,38 @@ +configure: + commands: + address-family vpnv4: "address-family vpnv4\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + no redistribute static route-map test: "no redistribute static route-map test\r\ + \n" + router bgp 65000: "router bgp 65000\r\n" + prompt: iolpe2(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: iolpe2(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: '' + prompt: iolpe2# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_bgp_redistribute_static/test_api_unconfigure_bgp_redistribute_static.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_bgp_redistribute_static/test_api_unconfigure_bgp_redistribute_static.py new file mode 100644 index 000000000..a46c672fa --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_bgp_redistribute_static/test_api_unconfigure_bgp_redistribute_static.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.bgp.configure import unconfigure_bgp_redistribute_static + + +class TestUnconfigureBgpRedistributeStatic(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + iolpe2: + 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: iol + type: iol + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['iolpe2'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_bgp_redistribute_static(self): + result = unconfigure_bgp_redistribute_static(self.device, 65000, 'vpnv4', None, 'test') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_route_map_route_map_to_bgp_neighbor/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_route_map_route_map_to_bgp_neighbor/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_route_map_route_map_to_bgp_neighbor/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_route_map_route_map_to_bgp_neighbor/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..f09205997 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_route_map_route_map_to_bgp_neighbor/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,38 @@ +configure: + commands: + address-family vpnv4: "address-family vpnv4\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + no neighbor 1.1.1.4 route-map test in: "no neighbor 1.1.1.4 route-map test in\r\ + \n" + router bgp 65000: "router bgp 65000\r\n" + prompt: iolpe2(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: iolpe2(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: '' + prompt: iolpe2# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_route_map_route_map_to_bgp_neighbor/test_api_unconfigure_route_map_route_map_to_bgp_neighbor.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_route_map_route_map_to_bgp_neighbor/test_api_unconfigure_route_map_route_map_to_bgp_neighbor.py new file mode 100644 index 000000000..738cede41 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/bgp/configure/unconfigure_route_map_route_map_to_bgp_neighbor/test_api_unconfigure_route_map_route_map_to_bgp_neighbor.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.bgp.configure import unconfigure_route_map_route_map_to_bgp_neighbor + + +class TestUnconfigureRouteMapRouteMapToBgpNeighbor(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + iolpe2: + 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: iol + type: iol + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['iolpe2'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_route_map_route_map_to_bgp_neighbor(self): + result = unconfigure_route_map_route_map_to_bgp_neighbor(self.device, 65000, 'vpnv4', [{'direction': 'in', 'neighbor': '1.1.1.4', 'route_map': 'test'}], '', '') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cts/configure/enable_cts_enforcement_vlan_list/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cts/configure/enable_cts_enforcement_vlan_list/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cts/configure/enable_cts_enforcement_vlan_list/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cts/configure/enable_cts_enforcement_vlan_list/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..6c2510ecb --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cts/configure/enable_cts_enforcement_vlan_list/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + cts role-based enforcement vlan-list 1-2047: "cts role-based enforcement vlan-list\ + \ 1-2047\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: A1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: A1(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: '' + prompt: A1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cts/configure/enable_cts_enforcement_vlan_list/test_api_enable_cts_enforcement_vlan_list.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cts/configure/enable_cts_enforcement_vlan_list/test_api_enable_cts_enforcement_vlan_list.py new file mode 100644 index 000000000..ec9963e1d --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/cts/configure/enable_cts_enforcement_vlan_list/test_api_enable_cts_enforcement_vlan_list.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.cts.configure import enable_cts_enforcement_vlan_list + + +class TestEnableCtsEnforcementVlanList(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + A1: + 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: single_rp + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['A1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_enable_cts_enforcement_vlan_list(self): + result = enable_cts_enforcement_vlan_list(self.device, '1-2047') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_vdsl_controller_slot_dump_internal/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_vdsl_controller_slot_dump_internal/__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_vdsl_controller_slot_dump_internal/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_vdsl_controller_slot_dump_internal/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..ea6f76b41 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_vdsl_controller_slot_dump_internal/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,39 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: Elixir2(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: Elixir2(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 + debug vdsl controller 0/0/1 dump internal sfp_test.dump: + response: + - "Dumping internal info, normal function will be disrupted!\r\nPlease wait\ + \ for DUMP_DONE message" + response_type: circular + show version: '' + term length 0: '' + term width 0: '' + prompt: Elixir2# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_vdsl_controller_slot_dump_internal/test_api_debug_vdsl_controller_slot_dump_internal.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_vdsl_controller_slot_dump_internal/test_api_debug_vdsl_controller_slot_dump_internal.py new file mode 100644 index 000000000..c99a48c44 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/debug/configure/debug_vdsl_controller_slot_dump_internal/test_api_debug_vdsl_controller_slot_dump_internal.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.debug.configure import debug_vdsl_controller_slot_dump_internal + + +class TestDebugVdslControllerSlotDumpInternal(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Elixir2: + 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['Elixir2'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_debug_vdsl_controller_slot_dump_internal(self): + result = debug_vdsl_controller_slot_dump_internal(self.device, '0/0/1', 'sfp_test.dump', 900) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_access_session_mac_move/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_access_session_mac_move/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_access_session_mac_move/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_access_session_mac_move/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..93904dc31 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_access_session_mac_move/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + access-session mac-move deny-uncontrolled: "access-session mac-move deny-uncontrolled\r\ + \n" + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: T1-9300-SP1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: T1-9300-SP1(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: '' + prompt: T1-9300-SP1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_access_session_mac_move/test_api_configure_access_session_mac_move.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_access_session_mac_move/test_api_configure_access_session_mac_move.py new file mode 100644 index 000000000..2fe3e24c1 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_access_session_mac_move/test_api_configure_access_session_mac_move.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dot1x.configure import configure_access_session_mac_move + + +class TestConfigureAccessSessionMacMove(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + T1-9300-SW1: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['T1-9300-SW1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_access_session_mac_move(self): + result = configure_access_session_mac_move(self.device, 'mac-move', 'deny-uncontrolled') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_default_spanning_tree/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_default_spanning_tree/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_default_spanning_tree/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_default_spanning_tree/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..bea9fb75a --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_default_spanning_tree/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,37 @@ +configure: + commands: + default spanning-tree mode mode: "default spanning-tree mode mode\r\nWarning:\ + \ Changing STP mode can disrupt the traffic and make system unstable\r\nRecommend\ + \ to change STP mode only during maintenance window\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: T1-9300-SP1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: T1-9300-SP1(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: '' + prompt: T1-9300-SP1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_default_spanning_tree/test_api_configure_default_spanning_tree.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_default_spanning_tree/test_api_configure_default_spanning_tree.py new file mode 100644 index 000000000..3c6db683f --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/configure_default_spanning_tree/test_api_configure_default_spanning_tree.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dot1x.configure import configure_default_spanning_tree + + +class TestConfigureDefaultSpanningTree(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + T1-9300-SW1: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['T1-9300-SW1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_default_spanning_tree(self): + result = configure_default_spanning_tree(self.device, 'mode') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/unconfigure_access_session_mac_move/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/unconfigure_access_session_mac_move/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/unconfigure_access_session_mac_move/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/unconfigure_access_session_mac_move/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..cfee18e2e --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/unconfigure_access_session_mac_move/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no access-session mac-move deny-uncontrolled: "no access-session mac-move deny-uncontrolled\r\ + \n" + no logging console: '' + prompt: T1-9300-SP1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: T1-9300-SP1(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: '' + prompt: T1-9300-SP1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/unconfigure_access_session_mac_move/test_api_unconfigure_access_session_mac_move.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/unconfigure_access_session_mac_move/test_api_unconfigure_access_session_mac_move.py new file mode 100644 index 000000000..5d2df43bd --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/dot1x/configure/unconfigure_access_session_mac_move/test_api_unconfigure_access_session_mac_move.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.dot1x.configure import unconfigure_access_session_mac_move + + +class TestUnconfigureAccessSessionMacMove(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + T1-9300-SW1: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['T1-9300-SW1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_access_session_mac_move(self): + result = unconfigure_access_session_mac_move(self.device, 'mac-move', 'deny-uncontrolled') + 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_exporter/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_exporter/mock_data/iosxe/mock_data.yaml index 72c0fbb4a..f25aace72 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_exporter/mock_data/iosxe/mock_data.yaml +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_exporter/mock_data/iosxe/mock_data.yaml @@ -1,24 +1,19 @@ configure: commands: - destination 100.1.1.102: "destination 100.1.1.102\r\n" - dscp 24: "dscp 24\r\n" end: new_state: execute - flow exporter FNF-EXP: "flow exporter FNF-EXP\r\n" + flow exporter dnacexporter: "flow exporter dnacexporter\r\n" line console 0: new_state: configure_line no logging console: '' - option application-table timeout 10: "option application-table timeout 10\r\n" - template data timeout 30: "template data timeout 30\r\n" - transport udp 2055: "transport udp 2055\r\n" - ttl 5: "ttl 5\r\n" - prompt: stack3-nyquist-1(config)# + source GigabitEthernet3/0/15: "source GigabitEthernet3/0/15\r\n" + prompt: VCR(config)# configure_line: commands: end: new_state: execute exec-timeout 0: '' - prompt: stack3-nyquist-1(config-line)# + prompt: VCR(config-line)# connect: commands: ? '' @@ -38,4 +33,4 @@ execute: show version: '' term length 0: '' term width 0: '' - prompt: stack3-nyquist-1# + prompt: VCR# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_exporter/test_api_configure_flow_exporter.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_exporter/test_api_configure_flow_exporter.py index 4c43f7735..7a05ade6e 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_exporter/test_api_configure_flow_exporter.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_flow_exporter/test_api_configure_flow_exporter.py @@ -10,7 +10,7 @@ class TestConfigureFlowExporter(unittest.TestCase): def setUpClass(self): testbed = f""" devices: - stack3-nyquist-1: + VCR: connections: defaults: class: unicon.Unicon @@ -18,11 +18,11 @@ def setUpClass(self): command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect protocol: unknown os: iosxe - platform: cat9k - type: router + platform: c9500 + type: c9500 """ self.testbed = loader.load(testbed) - self.device = self.testbed.devices['stack3-nyquist-1'] + self.device = self.testbed.devices['VCR'] self.device.connect( learn_hostname=True, init_config_commands=[], @@ -30,6 +30,6 @@ def setUpClass(self): ) def test_configure_flow_exporter(self): - result = configure_flow_exporter(self.device, 'FNF-EXP', '100.1.1.102', 2055, 24, 5, 30, 'application-table', 10) + result = configure_flow_exporter(self.device, 'dnacexporter', None, None, None, None, None, None, None, 'GigabitEthernet3/0/15') expected_output = None self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_fnf_flow_record/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_fnf_flow_record/__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_fnf_flow_record/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_fnf_flow_record/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..4f2dec502 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_fnf_flow_record/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,45 @@ +configure: + commands: + collect counter bytes long: "collect counter bytes long\r\n" + collect counter packets long: "collect counter packets long\r\n" + collect policy firewall event: "collect policy firewall event\r\n" + collect transport tcp flags: "collect transport tcp flags\r\n" + end: + new_state: execute + flow record dnacrecord: "flow record dnacrecord\r\n" + line console 0: + new_state: configure_line + match datalink mac source address input: "match datalink mac source address input\r\ + \n" + match interface input: "match interface input\r\n" + match ipv4 protocol: "match ipv4 protocol\r\n" + match ipv4 source address: "match ipv4 source address\r\n" + match transport source-port: "match transport source-port\r\n" + no logging console: '' + prompt: Starfleet(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: Starfleet(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: '' + prompt: Starfleet# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_fnf_flow_record/test_api_configure_fnf_flow_record.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_fnf_flow_record/test_api_configure_fnf_flow_record.py new file mode 100644 index 000000000..0d7577c7c --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/flow/configure/configure_fnf_flow_record/test_api_configure_fnf_flow_record.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.flow.configure import configure_fnf_flow_record + + +class TestConfigureFnfFlowRecord(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Starfleet: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Starfleet'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_fnf_flow_record(self): + result = configure_fnf_flow_record(self.device, 'dnacrecord', True, 'mac', 'source', 'input', 'input', 'protocol', True, True, 'source-port', 'source', True, True) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_client_protocol_under_gkm_group/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_client_protocol_under_gkm_group/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_client_protocol_under_gkm_group/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_client_protocol_under_gkm_group/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..50174d633 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_client_protocol_under_gkm_group/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,37 @@ +configure: + commands: + client protocol gikev2 gikev2-profile: "client protocol gikev2 gikev2-profile\r\ + \n" + crypto gkm group v4-cust-gdoi1001: "crypto gkm group v4-cust-gdoi1001\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: GD(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: GD(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: '' + prompt: GD# diff --git a/test_api_configure_sks_client.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_client_protocol_under_gkm_group/test_api_configure_client_protocol_under_gkm_group.py similarity index 51% rename from test_api_configure_sks_client.py rename to pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_client_protocol_under_gkm_group/test_api_configure_client_protocol_under_gkm_group.py index 615e7bbaa..5ece5b5e1 100644 --- a/test_api_configure_sks_client.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_client_protocol_under_gkm_group/test_api_configure_client_protocol_under_gkm_group.py @@ -1,23 +1,24 @@ +import os import unittest from pyats.topology import loader -from genie.libs.sdk.apis.iosxe.ipsec.configure import configure_sks_client +from genie.libs.sdk.apis.iosxe.gkm.configure import configure_client_protocol_under_gkm_group -class TestConfigureSksClient(unittest.TestCase): +class TestConfigureClientProtocolUnderGkmGroup(unittest.TestCase): @classmethod def setUpClass(self): - testbed = """ + testbed = f""" devices: Hub: connections: defaults: class: unicon.Unicon a: - command: mock_device_cli --os iosxe --mock_data_dir mock_data --state connect + command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect protocol: unknown os: iosxe - platform: iosxe + platform: Curie type: iosxe """ self.testbed = loader.load(testbed) @@ -28,12 +29,7 @@ def setUpClass(self): init_exec_commands=[] ) - def test_configure_sks_client(self): - result = configure_sks_client(self.device, 'test_block_1', 'ipv6', '9e21:953d:1870:c090:4cf3:51a6:cce8:3337', '4321', 'test_psk_1', 'test_password_1') - expected_output = None - self.assertEqual(result, expected_output) - - def test_configure_sks_client_1(self): - result = configure_sks_client(self.device, 'test_block_2', 'ipv4', '23.45.21.43', '9675', 'test_psk_2', 'test_password_2') + def test_configure_client_protocol_under_gkm_group(self): + result = configure_client_protocol_under_gkm_group(self.device, 'v4-cust-gdoi1001', 'gikev2', 'gikev2-profile') expected_output = None self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gikev2_profile_under_gkm_group/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gikev2_profile_under_gkm_group/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gikev2_profile_under_gkm_group/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gikev2_profile_under_gkm_group/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..bf58c4c67 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gikev2_profile_under_gkm_group/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,37 @@ +configure: + commands: + crypto gkm group v4-cust-gdoi1000: "crypto gkm group v4-cust-gdoi1000\r\n" + end: + new_state: execute + gikev2 gikev2-profile: "gikev2 gikev2-profile\r\n" + line console 0: + new_state: configure_line + no logging console: '' + server local: "server local\r\n" + prompt: GD(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: GD(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: '' + prompt: GD# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gikev2_profile_under_gkm_group/test_api_configure_gikev2_profile_under_gkm_group.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gikev2_profile_under_gkm_group/test_api_configure_gikev2_profile_under_gkm_group.py new file mode 100644 index 000000000..dbc3c05b8 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gikev2_profile_under_gkm_group/test_api_configure_gikev2_profile_under_gkm_group.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.gkm.configure import configure_gikev2_profile_under_gkm_group + + +class TestConfigureGikev2ProfileUnderGkmGroup(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Hub: + 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: Curie + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Hub'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_gikev2_profile_under_gkm_group(self): + result = configure_gikev2_profile_under_gkm_group(self.device, 'v4-cust-gdoi1000', True, 'gikev2-profile') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gkm_group_identity_number/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gkm_group_identity_number/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gkm_group_identity_number/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gkm_group_identity_number/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..4661fea5d --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gkm_group_identity_number/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + crypto gkm group v4-cust-gdoi1000: "crypto gkm group v4-cust-gdoi1000\r\n" + end: + new_state: execute + identity number 1000: "identity number 1000\r\n" + line console 0: + new_state: configure_line + no logging console: '' + prompt: GD(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: GD(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: '' + prompt: GD# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gkm_group_identity_number/test_api_configure_gkm_group_identity_number.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gkm_group_identity_number/test_api_configure_gkm_group_identity_number.py new file mode 100644 index 000000000..de9b3bc84 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_gkm_group_identity_number/test_api_configure_gkm_group_identity_number.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.gkm.configure import configure_gkm_group_identity_number + + +class TestConfigureGkmGroupIdentityNumber(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Hub: + 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: Curie + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Hub'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_gkm_group_identity_number(self): + result = configure_gkm_group_identity_number(self.device, 'v4-cust-gdoi1000', '1000') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipsec_under_gkm_group/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipsec_under_gkm_group/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipsec_under_gkm_group/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipsec_under_gkm_group/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..8b93013a2 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipsec_under_gkm_group/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,43 @@ +configure: + commands: + crypto gkm group v4-cust-gdoi1000: "crypto gkm group v4-cust-gdoi1000\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + match address ipv4 ks-max-acl-replace(permit-any): "Profile cust-ipsec is not\ + \ defined.\r\n" + no logging console: '' + no tag: "replay time window-size 20\r\n" + profile cust-ipsec: "profile cust-ipsec\r\n" + replay time window-size 20: "match address ipv4 ks-max-acl-replace(permit-any)\r\ + \n" + sa ipsec 1: "sa ipsec 1\r\n" + server local: "server local\r\n" + prompt: GD(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: GD(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: '' + prompt: GD# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipsec_under_gkm_group/test_api_configure_ipsec_under_gkm_group.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipsec_under_gkm_group/test_api_configure_ipsec_under_gkm_group.py new file mode 100644 index 000000000..a23491019 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipsec_under_gkm_group/test_api_configure_ipsec_under_gkm_group.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.gkm.configure import configure_ipsec_under_gkm_group + + +class TestConfigureIpsecUnderGkmGroup(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Hub: + 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: Curie + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Hub'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_ipsec_under_gkm_group(self): + result = configure_ipsec_under_gkm_group(self.device, 'v4-cust-gdoi1000', True, '1', 'cust-ipsec', 'ks-max-acl-replace(permit-any)', None, True, '20', False) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipv4_server_under_gkm_group/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipv4_server_under_gkm_group/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipv4_server_under_gkm_group/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipv4_server_under_gkm_group/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..a542870b3 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipv4_server_under_gkm_group/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,37 @@ +configure: + commands: + crypto gkm group v4-cust-gdoi1002: "crypto gkm group v4-cust-gdoi1002\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + server address ipv4 3.3.3.3: "server address ipv4 3.3.3.3\r\n" + server address ipv4 4.4.4.4: "% Key server is already configured\r\n" + prompt: GD(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: GD(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: '' + prompt: GD# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipv4_server_under_gkm_group/test_api_configure_ipv4_server_under_gkm_group.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipv4_server_under_gkm_group/test_api_configure_ipv4_server_under_gkm_group.py new file mode 100644 index 000000000..a25f49d40 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_ipv4_server_under_gkm_group/test_api_configure_ipv4_server_under_gkm_group.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.gkm.configure import configure_ipv4_server_under_gkm_group + + +class TestConfigureIpv4ServerUnderGkmGroup(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Hub: + 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: Curie + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Hub'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_ipv4_server_under_gkm_group(self): + result = configure_ipv4_server_under_gkm_group(self.device, 'v4-cust-gdoi1002', '3.3.3.3', '4.4.4.4') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_pfs_enable_or_disable_under_gkm_group/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_pfs_enable_or_disable_under_gkm_group/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_pfs_enable_or_disable_under_gkm_group/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_pfs_enable_or_disable_under_gkm_group/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..2493ace6c --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_pfs_enable_or_disable_under_gkm_group/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,37 @@ +configure: + commands: + crypto gkm group v4-cust-gdoi1000: "crypto gkm group v4-cust-gdoi1000\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + pfs: "pfs\r\n" + server local: "server local\r\n" + prompt: GD(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: GD(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: '' + prompt: GD# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_pfs_enable_or_disable_under_gkm_group/test_api_configure_pfs_enable_or_disable_under_gkm_group.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_pfs_enable_or_disable_under_gkm_group/test_api_configure_pfs_enable_or_disable_under_gkm_group.py new file mode 100644 index 000000000..f2aa8a0d2 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_pfs_enable_or_disable_under_gkm_group/test_api_configure_pfs_enable_or_disable_under_gkm_group.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.gkm.configure import configure_pfs_enable_or_disable_under_gkm_group + + +class TestConfigurePfsEnableOrDisableUnderGkmGroup(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Hub: + 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: Curie + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Hub'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_pfs_enable_or_disable_under_gkm_group(self): + result = configure_pfs_enable_or_disable_under_gkm_group(self.device, 'v4-cust-gdoi1000', True, True) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_protocol_version_optimize_cli_under_gkm_group/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_protocol_version_optimize_cli_under_gkm_group/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_protocol_version_optimize_cli_under_gkm_group/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_protocol_version_optimize_cli_under_gkm_group/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..6d5b0c175 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_protocol_version_optimize_cli_under_gkm_group/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,38 @@ +configure: + commands: + crypto gkm group v4-cust-gdoi1000: "crypto gkm group v4-cust-gdoi1000\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + protocol version optimize: "protocol version optimize\r\n" + redundancy: "redundancy\r\n" + server local: "server local\r\n" + prompt: GD(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: GD(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: '' + prompt: GD# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_protocol_version_optimize_cli_under_gkm_group/test_api_configure_protocol_version_optimize_cli_under_gkm_group.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_protocol_version_optimize_cli_under_gkm_group/test_api_configure_protocol_version_optimize_cli_under_gkm_group.py new file mode 100644 index 000000000..2a41b74c1 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_protocol_version_optimize_cli_under_gkm_group/test_api_configure_protocol_version_optimize_cli_under_gkm_group.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.gkm.configure import configure_protocol_version_optimize_cli_under_gkm_group + + +class TestConfigureProtocolVersionOptimizeCliUnderGkmGroup(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Hub: + 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: Curie + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Hub'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_protocol_version_optimize_cli_under_gkm_group(self): + result = configure_protocol_version_optimize_cli_under_gkm_group(self.device, 'v4-cust-gdoi1000', True, True, True) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_rekey_under_gkm_group/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_rekey_under_gkm_group/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_rekey_under_gkm_group/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_rekey_under_gkm_group/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..6504b506c --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_rekey_under_gkm_group/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,43 @@ +configure: + commands: + crypto gkm group v4-cust-gdoi1000: "crypto gkm group v4-cust-gdoi1000\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + rekey algorithm aes 256: "rekey algorithm aes 256\r\n" + rekey authentication mypubkey rsa KeyServer.cisco.com: "rekey authentication mypubkey\ + \ rsa KeyServer.cisco.com\r\n" + rekey lifetime seconds 32400: "rekey lifetime seconds 32400\r\n" + rekey retransmit 60 number 3: "rekey retransmit 60 number 3\r\n" + rekey sig-hash algorithm sha512: "rekey sig-hash algorithm sha512\r\n" + rekey transport unicast: "rekey transport unicast\r\n" + server local: "server local\r\n" + prompt: GD(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: GD(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: '' + prompt: GD# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_rekey_under_gkm_group/test_api_configure_rekey_under_gkm_group.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_rekey_under_gkm_group/test_api_configure_rekey_under_gkm_group.py new file mode 100644 index 000000000..a06ef2201 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_rekey_under_gkm_group/test_api_configure_rekey_under_gkm_group.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.gkm.configure import configure_rekey_under_gkm_group + + +class TestConfigureRekeyUnderGkmGroup(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Hub: + 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: Curie + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Hub'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_rekey_under_gkm_group(self): + result = configure_rekey_under_gkm_group(self.device, 'v4-cust-gdoi1000', True, 'aes 256', 'sha512', '32400', '60', '3', 'KeyServer.cisco.com', True) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_server_redundancy_under_gkm_group/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_server_redundancy_under_gkm_group/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_server_redundancy_under_gkm_group/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_server_redundancy_under_gkm_group/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..7d37c2c42 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_server_redundancy_under_gkm_group/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,40 @@ +configure: + commands: + crypto gkm group v4-cust-gdoi1000: "crypto gkm group v4-cust-gdoi1000\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + local priority 200: "local priority 200\r\n" + no logging console: '' + peer address ipv4 12.0.0.1: "% ERROR: Local server address must be configured\ + \ first\r\n" + redundancy: "redundancy\r\n" + server local: "server local\r\n" + prompt: GD(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: GD(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: '' + prompt: GD# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_server_redundancy_under_gkm_group/test_api_configure_server_redundancy_under_gkm_group.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_server_redundancy_under_gkm_group/test_api_configure_server_redundancy_under_gkm_group.py new file mode 100644 index 000000000..b9baacab3 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/gkm/configure/configure_server_redundancy_under_gkm_group/test_api_configure_server_redundancy_under_gkm_group.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.gkm.configure import configure_server_redundancy_under_gkm_group + + +class TestConfigureServerRedundancyUnderGkmGroup(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Hub: + 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: Curie + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Hub'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_server_redundancy_under_gkm_group(self): + result = configure_server_redundancy_under_gkm_group(self.device, 'v4-cust-gdoi1000', True, True, '200', '12.0.0.1') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/configure_400g_mode_for_port_group_onsvl/1 b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/configure_400g_mode_for_port_group_onsvl/1 new file mode 100644 index 000000000..64ed9bbf5 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/configure_400g_mode_for_port_group_onsvl/1 @@ -0,0 +1,36 @@ +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.hardware.configure import configure_400g_mode_for_port_group_onsvl + + +class TestConfigure400gModeForPortGrouponsvl(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = """ + devices: + Switch: + connections: + defaults: + class: unicon.Unicon + a: + command: mock_device_cli --os iosxe --mock_data_dir mock_data --state connect + protocol: unknown + os: iosxe + platform: Switch + type: Switch + """ + 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_configure_400g_mode_for_port_group_onsvl(self): + result = configure_400g_mode_for_port_group_onsvl(self.device, '2','2') + expected_output = None + self.assertEqual(result, expected_output) + + diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/configure_400g_mode_for_port_group_onsvl/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/configure_400g_mode_for_port_group_onsvl/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/configure_400g_mode_for_port_group_onsvl/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/configure_400g_mode_for_port_group_onsvl/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..02e819744 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/configure_400g_mode_for_port_group_onsvl/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,38 @@ +configure: + commands: + end: + new_state: execute + hw-module switch 2 slot 2 port-group range 1-2 mode 400G: "hw-module switch 2\ + \ slot 2 port-group range 1-2 mode 400G\r\n% 400G mode is enabled on switch\ + \ 2 slot 2 port-group 1 successfully\r\n% 400G mode is enabled on switch 2 slot\ + \ 2 port-group 2 successfully\r\n" + line console 0: + new_state: configure_line + no logging console: '' + prompt: NG_SVL_AUT1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: NG_SVL_AUT1(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: '' + prompt: NG_SVL_AUT1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/configure_400g_mode_for_port_group_onsvl/test_api_configure_400g_mode_for_port_group_onsvl.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/configure_400g_mode_for_port_group_onsvl/test_api_configure_400g_mode_for_port_group_onsvl.py new file mode 100644 index 000000000..40c3044e7 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/configure_400g_mode_for_port_group_onsvl/test_api_configure_400g_mode_for_port_group_onsvl.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.hardware.configure import configure_400g_mode_for_port_group_onsvl + + +class TestConfigure400gModeForPortGroupOnsvl(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + NG_SVL_AUT1: + 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: INTREPID + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['NG_SVL_AUT1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_400g_mode_for_port_group_onsvl(self): + result = configure_400g_mode_for_port_group_onsvl(self.device, 2, 2, '1-2', None) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/unconfigure_400g_mode_for_port_group_onsvl/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/unconfigure_400g_mode_for_port_group_onsvl/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/unconfigure_400g_mode_for_port_group_onsvl/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/unconfigure_400g_mode_for_port_group_onsvl/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..b9a798793 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/unconfigure_400g_mode_for_port_group_onsvl/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,40 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no hw-module switch 2 slot 2 port-group range 1-2 mode 400G: "no hw-module switch\ + \ 2 slot 2 port-group range 1-2 mode 40\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\ + \b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\ + $e switch 2 slot 2 port-group range 1-2 mode 400 \b\b\b\b\b\b\b\b\b\ + G\r\n% 400G mode is disabled on switch 2 slot 2 port-group 1 successfully\r\n\ + % 400G mode is disabled on switch 2 slot 2 port-group 2 successfully\r\n" + no logging console: '' + prompt: NG_SVL_AUT1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: NG_SVL_AUT1(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: '' + prompt: NG_SVL_AUT1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/unconfigure_400g_mode_for_port_group_onsvl/test_api_unconfigure_400g_mode_for_port_group_onsvl.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/unconfigure_400g_mode_for_port_group_onsvl/test_api_unconfigure_400g_mode_for_port_group_onsvl.py new file mode 100644 index 000000000..0c63f577f --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/hardware/configure/unconfigure_400g_mode_for_port_group_onsvl/test_api_unconfigure_400g_mode_for_port_group_onsvl.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.hardware.configure import unconfigure_400g_mode_for_port_group_onsvl + + +class TestUnconfigure400gModeForPortGroupOnsvl(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + NG_SVL_AUT1: + 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: INTREPID + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['NG_SVL_AUT1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_400g_mode_for_port_group_onsvl(self): + result = unconfigure_400g_mode_for_port_group_onsvl(self.device, 2, 2, '1-2', None) + 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_bandwidth/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_bandwidth/__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_bandwidth/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_bandwidth/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..710555ed5 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_bandwidth/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + bandwidth 30000000: "bandwidth 30000000\r\n" + end: + new_state: execute + interface Port-channel10: "interface Port-channel10\r\n" + line console 0: + new_state: configure_line + no logging console: '' + prompt: Prometheus(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: Prometheus(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: '' + prompt: Prometheus# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_bandwidth/test_api_configure_interface_bandwidth.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_bandwidth/test_api_configure_interface_bandwidth.py new file mode 100644 index 000000000..cc2a464fe --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_bandwidth/test_api_configure_interface_bandwidth.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_bandwidth + + +class TestConfigureInterfaceBandwidth(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Prometheus: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Prometheus'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_interface_bandwidth(self): + result = configure_interface_bandwidth(self.device, 'Port-channel10', '30000000') + 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_no_switchport_voice_vlan/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_no_switchport_voice_vlan/__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_no_switchport_voice_vlan/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_no_switchport_voice_vlan/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..e2e00159f --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_no_switchport_voice_vlan/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface GigabitEthernet1/0/11: "interface GigabitEthernet1/0/11\r\n" + line console 0: + new_state: configure_line + no logging console: '' + no switchport voice vlan 104: "no switchport voice vlan 104\r\n" + prompt: T1-9300-SP1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: T1-9300-SP1(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: '' + prompt: T1-9300-SP1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_no_switchport_voice_vlan/test_api_configure_interface_no_switchport_voice_vlan.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_no_switchport_voice_vlan/test_api_configure_interface_no_switchport_voice_vlan.py new file mode 100644 index 000000000..517466544 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_interface_no_switchport_voice_vlan/test_api_configure_interface_no_switchport_voice_vlan.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_no_switchport_voice_vlan + + +class TestConfigureInterfaceNoSwitchportVoiceVlan(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + T1-9300-SP1: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['T1-9300-SP1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_interface_no_switchport_voice_vlan(self): + result = configure_interface_no_switchport_voice_vlan(self.device, 'GigabitEthernet1/0/11', '104') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_monitor_erspan_source_interface/test_api_configure_monitor_erspan_source_interface.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_monitor_erspan_source_interface/test_api_configure_monitor_erspan_source_interface.py index dd1fbbc18..bd1e9fb82 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_monitor_erspan_source_interface/test_api_configure_monitor_erspan_source_interface.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_monitor_erspan_source_interface/test_api_configure_monitor_erspan_source_interface.py @@ -1,47 +1,16 @@ import os import unittest from pyats.topology import loader -from genie.libs.sdk.apis.iosxe.multicast.configure import configure_mld_version from genie.libs.sdk.apis.iosxe.interface.configure import configure_monitor_erspan_source_interface -class TestConfigureMldVersion(unittest.TestCase): - - @classmethod - def setUpClass(self): - testbed = f""" - devices: - n08HA: - 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: c9500 - type: c9500 - """ - self.testbed = loader.load(testbed) - self.device = self.testbed.devices['n08HA'] - self.device.connect( - learn_hostname=True, - init_config_commands=[], - init_exec_commands=[] - ) - - def test_configure_mld_version(self): - result = configure_mld_version(self.device, 202, 2) - expected_output = None - self.assertEqual(result, expected_output) - class TestConfigureMonitorErspanSourceInterface(unittest.TestCase): @classmethod def setUpClass(self): testbed = f""" devices: - T2-9500-RA_SDG: + n08HA: connections: defaults: class: unicon.Unicon @@ -53,7 +22,7 @@ def setUpClass(self): type: c9500 """ self.testbed = loader.load(testbed) - self.device = self.testbed.devices['T2-9500-RA_SDG'] + self.device = self.testbed.devices['n08HA'] self.device.connect( learn_hostname=True, init_config_commands=[], @@ -64,3 +33,4 @@ def test_configure_monitor_erspan_source_interface(self): result = configure_monitor_erspan_source_interface(self.device, '1', 'te1/0/2', 'rx') expected_output = None self.assertEqual(result, expected_output) + \ No newline at end of file diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/unconfigure_interface_bandwidth/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/unconfigure_interface_bandwidth/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/unconfigure_interface_bandwidth/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/unconfigure_interface_bandwidth/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..6322a2272 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/unconfigure_interface_bandwidth/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + interface Port-channel10: "interface Port-channel10\r\n" + line console 0: + new_state: configure_line + no bandwidth 30000000: "no bandwidth 30000000\r\n" + no logging console: '' + prompt: Prometheus(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: Prometheus(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: '' + prompt: Prometheus# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/unconfigure_interface_bandwidth/test_api_unconfigure_interface_bandwidth.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/unconfigure_interface_bandwidth/test_api_unconfigure_interface_bandwidth.py new file mode 100644 index 000000000..844572552 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/unconfigure_interface_bandwidth/test_api_unconfigure_interface_bandwidth.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.interface.configure import unconfigure_interface_bandwidth + + +class TestUnconfigureInterfaceBandwidth(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Prometheus: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['Prometheus'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_interface_bandwidth(self): + result = unconfigure_interface_bandwidth(self.device, 'Port-channel10', '30000000') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_member_vfi_on_vlan_configuration/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_member_vfi_on_vlan_configuration/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_member_vfi_on_vlan_configuration/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_member_vfi_on_vlan_configuration/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..39718dc21 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_member_vfi_on_vlan_configuration/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,36 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + member vfi vfi11: "member vfi vfi11\r\n" + no logging console: '' + vlan configuration 11: "vlan configuration 11\r\n" + prompt: T2-9500-RA_SDG(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: T2-9500-RA_SDG(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: '' + prompt: T2-9500-RA_SDG# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_member_vfi_on_vlan_configuration/test_api_configure_member_vfi_on_vlan_configuration.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_member_vfi_on_vlan_configuration/test_api_configure_member_vfi_on_vlan_configuration.py new file mode 100644 index 000000000..24eec610c --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_member_vfi_on_vlan_configuration/test_api_configure_member_vfi_on_vlan_configuration.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.mpls.configure import configure_member_vfi_on_vlan_configuration + + +class TestConfigureMemberVfiOnVlanConfiguration(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + T2-9500-RA_SDG: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['T2-9500-RA_SDG'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_member_vfi_on_vlan_configuration(self): + result = configure_member_vfi_on_vlan_configuration(self.device, 11, 'vfi', 'vfi11') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_mpls_ldp_sync_under_ospf/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_mpls_ldp_sync_under_ospf/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_mpls_ldp_sync_under_ospf/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_mpls_ldp_sync_under_ospf/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..76ad3bc8e --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_mpls_ldp_sync_under_ospf/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,37 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + mpls ldp sync: "mpls ldp sync\r\n" + no logging console: '' + router ospf 1: "router ospf 1\r\n" + router-id 3.3.3.3: "router-id 3.3.3.3\r\n" + prompt: T2-9500-RA_SDG(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: T2-9500-RA_SDG(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: '' + prompt: T2-9500-RA_SDG# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_mpls_ldp_sync_under_ospf/test_api_configure_mpls_ldp_sync_under_ospf.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_mpls_ldp_sync_under_ospf/test_api_configure_mpls_ldp_sync_under_ospf.py new file mode 100644 index 000000000..3165324da --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_mpls_ldp_sync_under_ospf/test_api_configure_mpls_ldp_sync_under_ospf.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.mpls.configure import configure_mpls_ldp_sync_under_ospf + + +class TestConfigureMplsLdpSyncUnderOspf(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + T2-9500-RA_SDG#: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['T2-9500-RA_SDG#'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_mpls_ldp_sync_under_ospf(self): + result = configure_mpls_ldp_sync_under_ospf(self.device, 1, '3.3.3.3') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_template_pseudowire/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_template_pseudowire/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_template_pseudowire/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_template_pseudowire/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..e84a33687 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_template_pseudowire/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,37 @@ +configure: + commands: + encapsulation mpls: "encapsulation mpls\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + template type pseudowire vpls-template: "template type pseudowire vpls-template\r\ + \n" + prompt: T2-9500-RA_SDG(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: T2-9500-RA_SDG(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: '' + prompt: T2-9500-RA_SDG# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_template_pseudowire/test_api_configure_template_pseudowire.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_template_pseudowire/test_api_configure_template_pseudowire.py new file mode 100644 index 000000000..bfc749c84 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/mpls/configure/configure_template_pseudowire/test_api_configure_template_pseudowire.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.mpls.configure import configure_template_pseudowire + + +class TestConfigureTemplatePseudowire(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + T2-9500-RA_SDG#: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['T2-9500-RA_SDG#'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_template_pseudowire(self): + result = configure_template_pseudowire(self.device, 'pseudowire', 'vpls-template') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/multicast/configure/configure_mld_version/test_api_configure_mld_version.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/multicast/configure/configure_mld_version/test_api_configure_mld_version.py index 90d523322..a1f5f4033 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/multicast/configure/configure_mld_version/test_api_configure_mld_version.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/multicast/configure/configure_mld_version/test_api_configure_mld_version.py @@ -1,17 +1,10 @@ import os import unittest from pyats.topology import loader -<<<<<<< HEAD:pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/multicast/configure/configure_mld_version/test_api_configure_mld_version.py from genie.libs.sdk.apis.iosxe.multicast.configure import configure_mld_version class TestConfigureMldVersion(unittest.TestCase): -======= -from genie.libs.sdk.apis.iosxe.interface.configure import configure_monitor_erspan_source_interface - - -class TestConfigureMonitorErspanSourceInterface(unittest.TestCase): ->>>>>>> external/master:pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_monitor_erspan_source_interface/test_api_configure_monitor_erspan_source_interface.py @classmethod def setUpClass(self): @@ -36,12 +29,7 @@ def setUpClass(self): init_exec_commands=[] ) -<<<<<<< HEAD:pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/multicast/configure/configure_mld_version/test_api_configure_mld_version.py def test_configure_mld_version(self): result = configure_mld_version(self.device, 202, 2) -======= - def test_configure_monitor_erspan_source_interface(self): - result = configure_monitor_erspan_source_interface(self.device, '1', 'te1/0/2', 'rx') ->>>>>>> external/master:pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/interface/configure/configure_monitor_erspan_source_interface/test_api_configure_monitor_erspan_source_interface.py expected_output = None self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/ospf/configure/unconfigure_route_map/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/ospf/configure/unconfigure_route_map/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/ospf/configure/unconfigure_route_map/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/ospf/configure/unconfigure_route_map/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..92ee38751 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/ospf/configure/unconfigure_route_map/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,39 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + match ip address v4pbr_acl: '% Invalid command at ''^'' marker.' + no logging console: '' + no route-map rm_v4pbr_nexthop1: "no route-map rm_v4pbr_nexthop1\r\n" + route-map rm_v4pbr_nexthop1 permit 10: '% Invalid command at ''^'' marker.' + set extcommunity rt 400:1: '% Invalid command at ''^'' marker.' + set interface tunnel20: '% Invalid command at ''^'' marker.' + prompt: iolpe2(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: iolpe2(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: '' + prompt: iolpe2# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/ospf/configure/unconfigure_route_map/test_api_unconfigure_route_map.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/ospf/configure/unconfigure_route_map/test_api_unconfigure_route_map.py new file mode 100644 index 000000000..d3c479ab3 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/ospf/configure/unconfigure_route_map/test_api_unconfigure_route_map.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.ospf.configure import unconfigure_route_map + + +class TestUnconfigureRouteMap(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + iolpe2: + 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: iol + type: iol + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['iolpe2'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_unconfigure_route_map(self): + result = unconfigure_route_map(self.device, 'rm_v4pbr_nexthop1', None) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/clear/clear_ip_arp/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/clear/clear_ip_arp/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/clear/clear_ip_arp/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/clear/clear_ip_arp/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..b8f2ef620 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/clear/clear_ip_arp/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: '' + prompt: T1-9300-SP1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: T1-9300-SP1(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + clear ip arp 10.0.0.1: + response: + - '' + response_type: circular + config term: + new_state: configure + config-transaction: + new_state: configure + show version: '' + term length 0: '' + term width 0: '' + prompt: T1-9300-SP1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/clear/clear_ip_arp/test_api_clear_ip_arp.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/clear/clear_ip_arp/test_api_clear_ip_arp.py new file mode 100644 index 000000000..ed2a9adbf --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/clear/clear_ip_arp/test_api_clear_ip_arp.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.platform.clear import clear_ip_arp + + +class TestClearIpArp(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + T1-9300-SP1: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['T1-9300-SP1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_clear_ip_arp(self): + result = clear_ip_arp(self.device, '10.0.0.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_graceful_reload/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_graceful_reload/__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_graceful_reload/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_graceful_reload/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..c2be74c68 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_graceful_reload/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,35 @@ +configure: + commands: + end: + new_state: execute + graceful-reload interval 5: "graceful-reload interval 5\r\n" + line console 0: + new_state: configure_line + no logging console: '' + prompt: T1-9300-SP1(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: T1-9300-SP1(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: '' + prompt: T1-9300-SP1# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_graceful_reload/test_api_configure_graceful_reload.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_graceful_reload/test_api_configure_graceful_reload.py new file mode 100644 index 000000000..6814300a8 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/configure_graceful_reload/test_api_configure_graceful_reload.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.platform.configure import configure_graceful_reload + + +class TestConfigureGracefulReload(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + T1-9300-SP1: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['T1-9300-SP1'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_graceful_reload(self): + result = configure_graceful_reload(self.device, '5') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/hw_module_beacon_RP_active_standby/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/hw_module_beacon_RP_active_standby/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/hw_module_beacon_RP_active_standby/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/hw_module_beacon_RP_active_standby/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..98908c74a --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/hw_module_beacon_RP_active_standby/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: '' + prompt: 4-slot(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: 4-slot(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 + hw-module beacon RP active on: + response: + - '' + response_type: circular + show version: '' + term length 0: '' + term width 0: '' + prompt: 4-slot# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/hw_module_beacon_RP_active_standby/test_api_hw_module_beacon_RP_active_standby.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/hw_module_beacon_RP_active_standby/test_api_hw_module_beacon_RP_active_standby.py new file mode 100644 index 000000000..bf6fa6b49 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/configure/hw_module_beacon_RP_active_standby/test_api_hw_module_beacon_RP_active_standby.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.platform.configure import hw_module_beacon_RP_active_standby + + +class TestHwModuleBeaconRpActiveStandby(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + 4-slot: + 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: c9400 + type: iosxe + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['4-slot'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_hw_module_beacon_RP_active_standby(self): + result = hw_module_beacon_RP_active_standby(self.device, 'active', 'on') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/execute/execute_dir_file_system/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/execute/execute_dir_file_system/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/execute/execute_dir_file_system/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/execute/execute_dir_file_system/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..c9d10f28c --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/execute/execute_dir_file_system/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,39 @@ +configure: + commands: + end: + new_state: execute + line console 0: + new_state: configure_line + no logging console: '' + prompt: Sanity-ASR2X(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: Sanity-ASR2X(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 + dir bootflash:/test: + response: + - "Directory of bootflash:/test/\r\n\r\nNo files in directory\r\n\r\n6646632448\ + \ bytes total (3948212224 bytes free)" + response_type: circular + show version: '' + term length 0: '' + term width 0: '' + prompt: Sanity-ASR2X# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/execute/execute_dir_file_system/test_api_execute_dir_file_system.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/execute/execute_dir_file_system/test_api_execute_dir_file_system.py new file mode 100644 index 000000000..7f94025e1 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/platform/execute/execute_dir_file_system/test_api_execute_dir_file_system.py @@ -0,0 +1,39 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.platform.execute import execute_dir_file_system + + +class TestExecuteDirFileSystem(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Sanity-ASR2X: + 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['Sanity-ASR2X'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_execute_dir_file_system(self): + result = execute_dir_file_system(self.device, 'bootflash:', 'test', 120) + expected_output = ('Directory of bootflash:/test/\r\n' + '\r\n' + 'No files in directory\r\n' + '\r\n' + '6646632448 bytes total (3948212224 bytes free)') + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_hqos_policer_map/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_hqos_policer_map/mock_data/iosxe/mock_data.yaml index 706432f83..bb5e6c327 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_hqos_policer_map/mock_data/iosxe/mock_data.yaml +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_hqos_policer_map/mock_data/iosxe/mock_data.yaml @@ -1,21 +1,21 @@ configure: commands: - class class-default: "class class-default\r\n" + class tc7: "class tc7\r\n" end: new_state: execute line console 0: new_state: configure_line no logging console: '' - police 600000000: "police 600000000\r\n" - police cir percent 60: "police cir percent 60\r\n" - policy-map cir: "policy-map cir\r\n" - prompt: SC_9200-2(config)# + police cir percent 5 conform-action transmit: "police cir percent 5 conform-action\ + \ transmit\r\n" + policy-map cs3: "policy-map cs3\r\n" + prompt: NGSVL(config)# configure_line: commands: end: new_state: execute exec-timeout 0: '' - prompt: SC_9200-2(config-line)# + prompt: NGSVL(config-line)# connect: commands: ? '' @@ -35,4 +35,4 @@ execute: show version: '' term length 0: '' term width 0: '' - prompt: SC_9200-2# + prompt: NGSVL# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_hqos_policer_map/test_api_configure_hqos_policer_map.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_hqos_policer_map/test_api_configure_hqos_policer_map.py index 635f39968..0c5fc5ff2 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_hqos_policer_map/test_api_configure_hqos_policer_map.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_hqos_policer_map/test_api_configure_hqos_policer_map.py @@ -10,7 +10,7 @@ class TestConfigureHqosPolicerMap(unittest.TestCase): def setUpClass(self): testbed = f""" devices: - SC_9200-2: + NGSVL: connections: defaults: class: unicon.Unicon @@ -18,11 +18,11 @@ def setUpClass(self): command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect protocol: unknown os: iosxe - platform: c9200 - type: c9200 + platform: c9500 + type: c9500 """ self.testbed = loader.load(testbed) - self.device = self.testbed.devices['SC_9200-2'] + self.device = self.testbed.devices['NGSVL'] self.device.connect( learn_hostname=True, init_config_commands=[], @@ -30,6 +30,6 @@ def setUpClass(self): ) def test_configure_hqos_policer_map(self): - result = configure_hqos_policer_map(self.device, 'cir', 'class-default', None, None, None, None, None, None, '60', '600000000', False) + result = configure_hqos_policer_map(self.device, 'cs3', 'tc7', '5', None, None, None, None, None, None, None, False) expected_output = None self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_service_policy_with_queueing_name/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_service_policy_with_queueing_name/mock_data/iosxe/mock_data.yaml index 5063d1cec..187ddaeb2 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_service_policy_with_queueing_name/mock_data/iosxe/mock_data.yaml +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_service_policy_with_queueing_name/mock_data/iosxe/mock_data.yaml @@ -2,19 +2,18 @@ configure: commands: end: new_state: execute - interface hundredGigE1/0/5: "interface hundredGigE1/0/5\r\n" + interface FourHundredGigE1/0/17: "interface FourHundredGigE1/0/17\r\n" line console 0: new_state: configure_line no logging console: '' - service-policy type queueing output nonllq: "service-policy type queueing output\ - \ nonllq\r\n" - prompt: startrek-1(config)# + service-policy type queue output llq: "service-policy type queue output llq\r\n" + prompt: Startrek-SVL(config)# configure_line: commands: end: new_state: execute exec-timeout 0: '' - prompt: startrek-1(config-line)# + prompt: Startrek-SVL(config-line)# connect: commands: ? '' @@ -34,4 +33,4 @@ execute: show version: '' term length 0: '' term width 0: '' - prompt: startrek-1# + prompt: Startrek-SVL# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_service_policy_with_queueing_name/test_api_configure_service_policy_with_queueing_name.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_service_policy_with_queueing_name/test_api_configure_service_policy_with_queueing_name.py index 01628aaeb..b8ab9e93a 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_service_policy_with_queueing_name/test_api_configure_service_policy_with_queueing_name.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_service_policy_with_queueing_name/test_api_configure_service_policy_with_queueing_name.py @@ -10,7 +10,7 @@ class TestConfigureServicePolicyWithQueueingName(unittest.TestCase): def setUpClass(self): testbed = f""" devices: - startrek-1: + Startrek-SVL: connections: defaults: class: unicon.Unicon @@ -18,11 +18,11 @@ def setUpClass(self): command: mock_device_cli --os iosxe --mock_data_dir {os.path.dirname(__file__)}/mock_data --state connect protocol: unknown os: iosxe - platform: c9300 - type: c9300 + platform: cat9k + type: router """ self.testbed = loader.load(testbed) - self.device = self.testbed.devices['startrek-1'] + self.device = self.testbed.devices['Startrek-SVL'] self.device.connect( learn_hostname=True, init_config_commands=[], @@ -30,6 +30,6 @@ def setUpClass(self): ) def test_configure_service_policy_with_queueing_name(self): - result = configure_service_policy_with_queueing_name(self.device, 'hundredGigE1/0/5', 'queueing', 'nonllq') - expected_output = None + result = configure_service_policy_with_queueing_name(self.device, 'FourHundredGigE1/0/17', 'queue', 'llq') + expected_output = 'interface FourHundredGigE1/0/17\r\ninterface FourHundredGigE1/0/17\r\nservice-policy type queue output llq\r\nservice-policy type queue output llq\r\n' self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_table_map_values/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_table_map_values/__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_table_map/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_table_map_values/mock_data/iosxe/mock_data.yaml similarity index 100% rename from pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_table_map/mock_data/iosxe/mock_data.yaml rename to pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_table_map_values/mock_data/iosxe/mock_data.yaml diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_table_map/test_api_configure_table_map.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_table_map_values/test_api_configure_table_map_values.py similarity index 82% rename from pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_table_map/test_api_configure_table_map.py rename to pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_table_map_values/test_api_configure_table_map_values.py index 4482b86eb..82b36f309 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_table_map/test_api_configure_table_map.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/configure_table_map_values/test_api_configure_table_map_values.py @@ -1,10 +1,10 @@ import os import unittest from pyats.topology import loader -from genie.libs.sdk.apis.iosxe.policy_map.configure import configure_table_map +from genie.libs.sdk.apis.iosxe.policy_map.configure import configure_table_map_values -class TestConfigureTableMap(unittest.TestCase): +class TestConfigureTableMapValues(unittest.TestCase): @classmethod def setUpClass(self): @@ -29,7 +29,7 @@ def setUpClass(self): init_exec_commands=[] ) - def test_configure_table_map(self): - result = configure_table_map(self.device, 't1', 40, 20) + def test_configure_table_map_values(self): + result = configure_table_map_values(self.device, 't1', 40, 20) expected_output = None self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/unconfigure_table_map_values/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/unconfigure_table_map_values/__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/unconfigure_table_map/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/unconfigure_table_map_values/mock_data/iosxe/mock_data.yaml similarity index 100% rename from pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/unconfigure_table_map/mock_data/iosxe/mock_data.yaml rename to pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/unconfigure_table_map_values/mock_data/iosxe/mock_data.yaml diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/unconfigure_table_map/test_api_unconfigure_table_map.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/unconfigure_table_map_values/test_api_unconfigure_table_map_values.py similarity index 81% rename from pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/unconfigure_table_map/test_api_unconfigure_table_map.py rename to pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/unconfigure_table_map_values/test_api_unconfigure_table_map_values.py index 28abffe9d..f6350f9a0 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/unconfigure_table_map/test_api_unconfigure_table_map.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/policy_map/configure/unconfigure_table_map_values/test_api_unconfigure_table_map_values.py @@ -1,10 +1,10 @@ import os import unittest from pyats.topology import loader -from genie.libs.sdk.apis.iosxe.policy_map.configure import unconfigure_table_map +from genie.libs.sdk.apis.iosxe.policy_map.configure import unconfigure_table_map_values -class TestUnconfigureTableMap(unittest.TestCase): +class TestUnconfigureTableMapValues(unittest.TestCase): @classmethod def setUpClass(self): @@ -29,7 +29,7 @@ def setUpClass(self): init_exec_commands=[] ) - def test_unconfigure_table_map(self): - result = unconfigure_table_map(self.device, 't1', 40, 20) + def test_unconfigure_table_map_values(self): + result = unconfigure_table_map_values(self.device, 't1', 40, 20) expected_output = None self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/execute/execute_redundancy_reload/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/execute/execute_redundancy_reload/mock_data/iosxe/mock_data.yaml index 0b823bbf0..f20516212 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/execute/execute_redundancy_reload/mock_data/iosxe/mock_data.yaml +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/redundancy/execute/execute_redundancy_reload/mock_data/iosxe/mock_data.yaml @@ -31,7 +31,7 @@ execute: redundancy reload peer: response: - "Stack is in Half ring setup; Reloading a switch might cause stack split\r\ - \nReload peer [confirm]\r\nPreparing to reload peer" + \nReload peer [confirm]\r\nPreparing to reload peer\n" response_type: circular show version: '' term length 0: '' diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/clear_pdm_steering_policy/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/clear_pdm_steering_policy/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/clear_pdm_steering_policy/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/clear_pdm_steering_policy/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..6e102ae8d --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/clear_pdm_steering_policy/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: '' + prompt: TSN-2(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: TSN-2(config-line)# +connect: + commands: + ? '' + : new_state: execute + preface: 'Trying mock_device ... + + Connected to mock_device. + + Escape character is ''^]''.' + prompt: '' +execute: + commands: + clear pdm steering policy: + response: + - '' + response_type: circular + config term: + new_state: configure + config-transaction: + new_state: configure + show version: '' + term length 0: '' + term width 0: '' + prompt: TSN-2# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/clear_pdm_steering_policy/test_api_clear_pdm_steering_policy.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/clear_pdm_steering_policy/test_api_clear_pdm_steering_policy.py new file mode 100644 index 000000000..673838e13 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/clear_pdm_steering_policy/test_api_clear_pdm_steering_policy.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.utils import clear_pdm_steering_policy + + +class TestClearPdmSteeringPolicy(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + TSN-2: + 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['TSN-2'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_clear_pdm_steering_policy(self): + result = clear_pdm_steering_policy(self.device) + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/upgrade_hw_module_subslot_sfp/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/upgrade_hw_module_subslot_sfp/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/upgrade_hw_module_subslot_sfp/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/upgrade_hw_module_subslot_sfp/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..274dd3b5b --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/upgrade_hw_module_subslot_sfp/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: Elixir_01(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: Elixir_01(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: '' + upgrade hw-module subslot 0/0 sfp 0 bootflash:dsl-sfp-1_62_8548-dev_elixir.bin: + response: + - "$slot 0/0 sfp 0 bootflash:dsl-sfp-1_62_8548-dev_elixir.bin\r\nDigital signature\ + \ successfully verified in file bootflash:dsl-sfp-1_62_8548-dev_elixir.bin\r\ + \n%Firmware already up to date" + response_type: circular + prompt: Elixir_01# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/upgrade_hw_module_subslot_sfp/test_api_upgrade_hw_module_subslot_sfp.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/upgrade_hw_module_subslot_sfp/test_api_upgrade_hw_module_subslot_sfp.py new file mode 100644 index 000000000..7dfbb2fb7 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/utils/upgrade_hw_module_subslot_sfp/test_api_upgrade_hw_module_subslot_sfp.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.utils import upgrade_hw_module_subslot_sfp + + +class TestUpgradeHwModuleSubslotSfp(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + Elixir_01: + 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['Elixir_01'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_upgrade_hw_module_subslot_sfp(self): + result = upgrade_hw_module_subslot_sfp(self.device, '0/0', '0', 'bootflash:dsl-sfp-1_62_8548-dev_elixir.bin', 180) + expected_output = True + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_auto_discovery_inter_as_mdt_type/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_auto_discovery_inter_as_mdt_type/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_auto_discovery_inter_as_mdt_type/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_auto_discovery_inter_as_mdt_type/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..a5f8681c3 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_auto_discovery_inter_as_mdt_type/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,40 @@ +configure: + commands: + address-family ipv4: "address-family ipv4\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + mdt auto-discovery interworking vxlan-pim inter-as: "mdt auto-discovery interworking\ + \ vxlan-pim inter\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\ + \b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b$scovery interworking vxlan-pim inter- \ + \ \b\b\b\b\b\b\b\b\bas\r\n" + no logging console: '' + vrf definition green: "vrf definition green\r\n" + prompt: T2-9500-RA_SDG(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: T2-9500-RA_SDG(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: '' + prompt: T2-9500-RA_SDG# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_auto_discovery_inter_as_mdt_type/test_api_configure_mdt_auto_discovery_inter_as_mdt_type.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_auto_discovery_inter_as_mdt_type/test_api_configure_mdt_auto_discovery_inter_as_mdt_type.py new file mode 100644 index 000000000..bc0a2c654 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_auto_discovery_inter_as_mdt_type/test_api_configure_mdt_auto_discovery_inter_as_mdt_type.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.vrf.configure import configure_mdt_auto_discovery_inter_as_mdt_type + + +class TestConfigureMdtAutoDiscoveryInterAsMdtType(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + T2-9500-RA_SDG#: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['T2-9500-RA_SDG#'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_mdt_auto_discovery_inter_as_mdt_type(self): + result = configure_mdt_auto_discovery_inter_as_mdt_type(self.device, 'green', 'ipv4', 'interworking') + expected_output = None + self.assertEqual(result, expected_output) diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_default/__init__.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_default/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_default/mock_data/iosxe/mock_data.yaml b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_default/mock_data/iosxe/mock_data.yaml new file mode 100644 index 000000000..a538c4524 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_default/mock_data/iosxe/mock_data.yaml @@ -0,0 +1,37 @@ +configure: + commands: + address-family ipv4: "address-family ipv4\r\n" + end: + new_state: execute + line console 0: + new_state: configure_line + mdt default 239.2.2.2: "mdt default 239.2.2.2\r\n" + no logging console: '' + vrf definition green: "vrf definition green\r\n" + prompt: T2-9500-RA_SDG(config)# +configure_line: + commands: + end: + new_state: execute + exec-timeout 0: '' + prompt: T2-9500-RA_SDG(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: '' + prompt: T2-9500-RA_SDG# diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_default/test_api_configure_mdt_default.py b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_default/test_api_configure_mdt_default.py new file mode 100644 index 000000000..5b1da4870 --- /dev/null +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/tests/iosxe/vrf/configure/configure_mdt_default/test_api_configure_mdt_default.py @@ -0,0 +1,35 @@ +import os +import unittest +from pyats.topology import loader +from genie.libs.sdk.apis.iosxe.vrf.configure import configure_mdt_default + + +class TestConfigureMdtDefault(unittest.TestCase): + + @classmethod + def setUpClass(self): + testbed = f""" + devices: + T2-9500-RA_SDG: + 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: c9500 + type: c9500 + """ + self.testbed = loader.load(testbed) + self.device = self.testbed.devices['T2-9500-RA_SDG'] + self.device.connect( + learn_hostname=True, + init_config_commands=[], + init_exec_commands=[] + ) + + def test_configure_mdt_default(self): + result = configure_mdt_default(self.device, 'green', 'ipv4', '239.2.2.2') + expected_output = None + self.assertEqual(result, expected_output) 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 3cfc1f541..8e9e9fe04 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/apis/utils.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/apis/utils.py @@ -1414,7 +1414,7 @@ def _delete_file_on_server(server, raise Exception("Failed to delete file : {}".format(str(e))) -def tftp_config(device, server, cfg_block): +def tftp_config(device, server, cfg_block, timeout=120): """ tftp_config proc Args: device ('obj'): Device object @@ -1456,7 +1456,7 @@ def tftp_config(device, server, cfg_block): 'Merge to running-config on device {0}'.format( device.hostname)) device.api.copy_file_to_running_config( - 'bootflash:', FileName, timeout=120) + 'bootflash:', FileName, timeout=timeout) except Exception: raise Exception( diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/libs/abstracted_libs/processors.py b/pkgs/sdk-pkg/src/genie/libs/sdk/libs/abstracted_libs/processors.py index 8f274c567..69a4fff81 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/libs/abstracted_libs/processors.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/libs/abstracted_libs/processors.py @@ -1131,9 +1131,10 @@ def _restore_running_configuration(section, device, iteration, interval, # delete crypto pki trustpoint configs if no_crypto_pki_trustpoint: out = device.execute('sh run | i crypto pki trustpoint', timeout=timeout) - unconfig = ['no '+line for line in out.splitlines()] - if unconfig: - device.configure(unconfig) + if 'crypto pki trustpoint' in out: + unconfig = ['no '+line for line in out.splitlines()] + if unconfig: + device.configure(unconfig) # Restore configuration from default directory try: diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/gnmi_util.py b/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/gnmi_util.py index 6a8ba72f3..227e51a86 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/gnmi_util.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/gnmi_util.py @@ -19,6 +19,7 @@ from yang.connector import proto from yang.connector.proto import gnmi_pb2 from yang.connector.gnmi import Gnmi +from copy import deepcopy log = logging.getLogger(__name__) @@ -251,7 +252,8 @@ def decode_update_value(val): 'double' in datatype): return float(value) elif 'decimal' in datatype: - return float(value['digits']) / (10 ** value['precision']) + value['digits'] = int(value['digits']) + return value elif 'bytes' in datatype: return bytes(value, encoding='utf8') elif 'leaflist' in datatype: @@ -294,7 +296,7 @@ def process_update(update, prefix=None, namespace={}, opfields=[]): 'double' in datatype): value = float(value) elif 'decimal' in datatype: - value = float(value['digits']) / (10 ** value['precision']) + value['digits'] = int(value['digits']) elif 'bytes' in datatype: value = bytes(value, encoding='utf8') elif 'leaflist' in datatype: @@ -346,7 +348,7 @@ def process_leaf_list_val(value): 'double' in datatype): val = float(val) elif 'decimal' in datatype: - value = float(value['digits']) / (10 ** value['precision']) + value['digits'] = int(value['digits']) elif 'bytes' in datatype: val = bytes(value, encoding='utf8') leaf_list_val.append(val) @@ -1043,7 +1045,7 @@ def xml_xpath_to_gnmi_xpath(self): GnmiMessage.prefix_to_module(self.request) - nodes = self.request.get("nodes", []) + nodes = deepcopy(self.request.get("nodes", [])) if self.msg_type == 'set': # Prune key nodes without edit-op assigned. nodes = [n for n in nodes if not ( @@ -1090,7 +1092,7 @@ def xml_xpath_to_gnmi_xpath(self): value = float(value) elif 'decimal' in datatype: if value: - value = float(value['digits']) / (10 ** value['precision']) + value['digits'] = int(value['digits']) if xpath.startswith('/'): xp = xpath.split('/')[1:] @@ -1377,11 +1379,6 @@ def inner(self): self.log.error("Unknown error: %s", exc) self.result = False self.errors.append(exc) - except GnmiSubscription.TransactionTimeExceeded as exc: - self.log.error(banner( - f'Response time: {exc.response_time} seconds exceeded transaction_time {self.transaction_time}', - )) - self.stop() except Exception as exc: msg = '' if hasattr(exc, 'details'): @@ -1432,29 +1429,15 @@ def run(self): continue if response.HasField('update') and not self.stopped(): arrive_time = time.time() - json_dicts, opfields = self.decode_response( - response, self.namespace - ) if self.transaction_time: timestamp = response.update.timestamp / 10 ** 9 delta_time = arrive_time - timestamp if delta_time < 0: self.errors.append( self.DevieOutOfSyncWithNtp(timestamp, arrive_time, self.ntp_server)) - timestamp_dt = datetime.fromtimestamp(timestamp) - ntp_dt = datetime.fromtimestamp(arrive_time) - self.log.error(banner( - f"""Device is out of sync with NTP server {self.ntp_server} - Device time: {timestamp_dt.strftime('%m/%d/%Y %H:%M:%S.%f')} - NTP time: {ntp_dt.strftime('%m/%d/%Y %H:%M:%S.%f')}""")) - self.results.append(False) elif delta_time > self.transaction_time: self.errors.append(self.TransactionTimeExceeded( delta_time, self.transaction_time)) - self.results.append(False) - self.log.error(banner( - f'Response time: {delta_time} seconds exceeded transaction_time {self.transaction_time}', - )) if self.returns: self.log.info('Processing returns...') decoded_response = self.verifier.gnmi_decoder( @@ -1549,10 +1532,6 @@ def run(self): if (self.transaction_time and t and delta_time > self.transaction_time): self.errors.append(self.TransactionTimeExceeded( delta_time, self.transaction_time)) - self.results.append(False) - self.log.error(banner( - f'Response time: {delta_time} seconds exceeded transaction_time {self.transaction_time}', - )) if response.HasField('sync_response'): self.log.info('Subscribe sync_response') diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/rpcverify.py b/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/rpcverify.py index 1c44cbf0c..13204a441 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/rpcverify.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/rpcverify.py @@ -178,7 +178,7 @@ def field(self, field: OptFields): self.min, self.max = self.integer_limits[datatype] if self.value < self.min or self.value > self.max: self.min_max_failed = True - elif datatype in ['decimal64', 'float']: + elif datatype in ['float', 'double']: self.fval = float(field.value) self.min, self.max = self.integer_limits['int64'] if self.value < self.min or self.value > self.max: diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/tests/test_yangexec.py b/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/tests/test_yangexec.py index 984f3f646..1fb6d4385 100755 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/tests/test_yangexec.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/tests/test_yangexec.py @@ -3995,7 +3995,7 @@ def test_run_subscribe_gnmi_list(self): def test_proto_decimal_val(self): request = self.make_test_request() verifier: DefaultVerifier = request['verifier'] - verifier.returns[0].value = 6.0 / (10 ** 30) + verifier.returns[0].value = {'digits': 6, 'precision': 30} verifier.returns[0].datatype = 'decimal64' response = self.make_test_notification() path_elem1 = proto.gnmi_pb2.PathElem() diff --git a/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/verifiers.py b/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/verifiers.py index 4380170ee..37f414ec9 100644 --- a/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/verifiers.py +++ b/pkgs/sdk-pkg/src/genie/libs/sdk/triggers/blitz/verifiers.py @@ -109,7 +109,7 @@ def end_subscription(self, errors: List[Exception]) -> bool: """ pass - def edit_config_auto_validate(self, response: any, rpc_data: dict, namespace_modules: dict) -> bool: + def edit_config_auto_validate(self, response: Any, rpc_data: dict, namespace_modules: dict) -> bool: """Auto-validaton after set-config operation for netconf and gnmi Args: @@ -129,7 +129,7 @@ def verify_common_cases(func) -> bool: bool: Test result """ - def inner(self, response): + def inner(self, response, *args, **kwargs): # Response will be 'None' when some error is received if response is None: return False @@ -141,7 +141,7 @@ def inner(self, response): # set result to True as response is successfully received. elif response and not self.returns: return True - return func(self, response) + return func(self, response, *args, **kwargs) return inner @@ -299,9 +299,9 @@ def end_subscription(self, errors: List[Exception]) -> bool: result = False return result - def edit_config_auto_validate(self, response: any, rpc_data: dict, namespace_modules: dict) -> bool: - decoded_response = self.gnmi_get_config_decoder( - response, namespace=namespace_modules) + def edit_config_auto_validate(self, response: Any, rpc_data: dict, namespace_modules: dict) -> bool: + decoded_response = self.gnmi_decoder( + response, namespace=namespace_modules, method='get') result = True nodes: List[OperationalFieldsNode] = [] list_keys: List[OptFields] = [] @@ -405,12 +405,14 @@ def edit_config_auto_validate(self, response: any, rpc_data: dict, namespace_mod "Config not removed. {0} operation failed".format(edit_op)) return False for node in nodes: - if not self.get_config_verify(decoded_response, [node.opfields]): + self.returns = [node.opfields] + if not self.get_config_verify(decoded_response): if node.edit_op in ['delete', 'remove'] and not node.default_value: continue result = False for node in list_keys: - if not self.get_config_verify(decoded_response, [node], key=True): + self.returns = [node] + if not self.get_config_verify(decoded_response, key=True): result = False return result