cisco_node_utils_mgx 2.1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +10 -0
- data/.rspec +2 -0
- data/.rubocop.yml +96 -0
- data/.travis.yml +17 -0
- data/CHANGELOG.md +676 -0
- data/CONTRIBUTING.md +43 -0
- data/Gemfile +10 -0
- data/LICENSE +201 -0
- data/README.md +246 -0
- data/Rakefile +44 -0
- data/SUPPORT.md +3 -0
- data/bin/.rubocop.yml +18 -0
- data/bin/check_metric_limits.rb +109 -0
- data/bin/git/hooks/commit-msg/enforce_style +89 -0
- data/bin/git/hooks/hook_lib +115 -0
- data/bin/git/hooks/hooks-wrapper +38 -0
- data/bin/git/hooks/post-flow-hotfix-start/update-version +24 -0
- data/bin/git/hooks/post-flow-release-finish/update-version +29 -0
- data/bin/git/hooks/post-flow-release-start/update-version +19 -0
- data/bin/git/hooks/post-merge/update-hooks +6 -0
- data/bin/git/hooks/post-rewrite/update-hooks +6 -0
- data/bin/git/hooks/pre-commit/check_unstaged_changes +18 -0
- data/bin/git/hooks/pre-commit/rubocop +25 -0
- data/bin/git/hooks/pre-commit/validate-diffs +45 -0
- data/bin/git/hooks/pre-commit/validate-yaml +18 -0
- data/bin/git/hooks/pre-push/check-changelog +24 -0
- data/bin/git/hooks/pre-push/rubocop +7 -0
- data/bin/git/update-hooks +123 -0
- data/bin/show_running_yang.rb +233 -0
- data/cisco_node_utils.gemspec +41 -0
- data/docs/README-develop-best-practices.md +521 -0
- data/docs/README-develop-node-utils-APIs.md +570 -0
- data/docs/README-maintainers.md +77 -0
- data/docs/README-test-execution.md +57 -0
- data/docs/README-utilities.md +14 -0
- data/docs/agent_files.png +0 -0
- data/docs/cisco_node_utils.yaml.example +36 -0
- data/docs/template-router.rb +123 -0
- data/docs/template-test_router.rb +104 -0
- data/ext/mkrf_conf.rb +63 -0
- data/lib/.rubocop.yml +18 -0
- data/lib/cisco_node_utils/aaa_authentication_login.rb +95 -0
- data/lib/cisco_node_utils/aaa_authentication_login_service.rb +138 -0
- data/lib/cisco_node_utils/aaa_authorization_service.rb +156 -0
- data/lib/cisco_node_utils/ace.rb +467 -0
- data/lib/cisco_node_utils/acl.rb +101 -0
- data/lib/cisco_node_utils/banner.rb +63 -0
- data/lib/cisco_node_utils/bfd_global.rb +305 -0
- data/lib/cisco_node_utils/bgp.rb +988 -0
- data/lib/cisco_node_utils/bgp_af.rb +545 -0
- data/lib/cisco_node_utils/bgp_af_aggr_addr.rb +207 -0
- data/lib/cisco_node_utils/bgp_neighbor.rb +527 -0
- data/lib/cisco_node_utils/bgp_neighbor_af.rb +780 -0
- data/lib/cisco_node_utils/bridge_domain.rb +178 -0
- data/lib/cisco_node_utils/bridge_domain_vni.rb +206 -0
- data/lib/cisco_node_utils/cisco_cmn_utils.rb +444 -0
- data/lib/cisco_node_utils/client/client.rb +238 -0
- data/lib/cisco_node_utils/client/grpc/client.rb +395 -0
- data/lib/cisco_node_utils/client/grpc/ems.proto +148 -0
- data/lib/cisco_node_utils/client/grpc/ems.rb +111 -0
- data/lib/cisco_node_utils/client/grpc/ems_services.rb +49 -0
- data/lib/cisco_node_utils/client/grpc.rb +33 -0
- data/lib/cisco_node_utils/client/nxapi/client.rb +368 -0
- data/lib/cisco_node_utils/client/nxapi.rb +31 -0
- data/lib/cisco_node_utils/client/utils.rb +180 -0
- data/lib/cisco_node_utils/client.rb +35 -0
- data/lib/cisco_node_utils/cmd_ref/README_YAML.md +590 -0
- data/lib/cisco_node_utils/cmd_ref/aaa_auth_login_service.yaml +25 -0
- data/lib/cisco_node_utils/cmd_ref/aaa_authentication_login.yaml +38 -0
- data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +40 -0
- data/lib/cisco_node_utils/cmd_ref/acl.yaml +48 -0
- data/lib/cisco_node_utils/cmd_ref/banner.yaml +11 -0
- data/lib/cisco_node_utils/cmd_ref/bfd_global.yaml +117 -0
- data/lib/cisco_node_utils/cmd_ref/bgp.yaml +383 -0
- data/lib/cisco_node_utils/cmd_ref/bgp_af.yaml +223 -0
- data/lib/cisco_node_utils/cmd_ref/bgp_af_aa.yaml +38 -0
- data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +174 -0
- data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +236 -0
- data/lib/cisco_node_utils/cmd_ref/bridge_domain.yaml +49 -0
- data/lib/cisco_node_utils/cmd_ref/bridge_domain_vni.yaml +33 -0
- data/lib/cisco_node_utils/cmd_ref/dhcp_relay_global.yaml +128 -0
- data/lib/cisco_node_utils/cmd_ref/dnsclient.yaml +55 -0
- data/lib/cisco_node_utils/cmd_ref/encapsulation.yaml +25 -0
- data/lib/cisco_node_utils/cmd_ref/evpn_multicast.yaml +12 -0
- data/lib/cisco_node_utils/cmd_ref/evpn_multisite.yaml +18 -0
- data/lib/cisco_node_utils/cmd_ref/evpn_stormcontrol.yaml +18 -0
- data/lib/cisco_node_utils/cmd_ref/evpn_vni.yaml +48 -0
- data/lib/cisco_node_utils/cmd_ref/fabricpath.yaml +183 -0
- data/lib/cisco_node_utils/cmd_ref/fabricpath_topology.yaml +40 -0
- data/lib/cisco_node_utils/cmd_ref/feature.yaml +126 -0
- data/lib/cisco_node_utils/cmd_ref/hostname.yaml +8 -0
- data/lib/cisco_node_utils/cmd_ref/hsrp_global.yaml +25 -0
- data/lib/cisco_node_utils/cmd_ref/images.yaml +8 -0
- data/lib/cisco_node_utils/cmd_ref/interface.yaml +781 -0
- data/lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml +45 -0
- data/lib/cisco_node_utils/cmd_ref/interface_evpn_multisite.yaml +17 -0
- data/lib/cisco_node_utils/cmd_ref/interface_hsrp_group.yaml +120 -0
- data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +112 -0
- data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +87 -0
- data/lib/cisco_node_utils/cmd_ref/interface_service_vni.yaml +42 -0
- data/lib/cisco_node_utils/cmd_ref/inventory.yaml +45 -0
- data/lib/cisco_node_utils/cmd_ref/ip_multicast.yaml +22 -0
- data/lib/cisco_node_utils/cmd_ref/itd_device_group.yaml +83 -0
- data/lib/cisco_node_utils/cmd_ref/itd_service.yaml +119 -0
- data/lib/cisco_node_utils/cmd_ref/memory.yaml +24 -0
- data/lib/cisco_node_utils/cmd_ref/ntp_auth_key.yaml +10 -0
- data/lib/cisco_node_utils/cmd_ref/ntp_config.yaml +27 -0
- data/lib/cisco_node_utils/cmd_ref/ntp_server.yaml +34 -0
- data/lib/cisco_node_utils/cmd_ref/object_group.yaml +32 -0
- data/lib/cisco_node_utils/cmd_ref/ospf.yaml +91 -0
- data/lib/cisco_node_utils/cmd_ref/ospf_area.yaml +91 -0
- data/lib/cisco_node_utils/cmd_ref/ospf_area_vlink.yaml +88 -0
- data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +37 -0
- data/lib/cisco_node_utils/cmd_ref/pim.yaml +43 -0
- data/lib/cisco_node_utils/cmd_ref/portchannel_global.yaml +86 -0
- data/lib/cisco_node_utils/cmd_ref/radius_global.yaml +37 -0
- data/lib/cisco_node_utils/cmd_ref/radius_server.yaml +100 -0
- data/lib/cisco_node_utils/cmd_ref/radius_server_group.yaml +19 -0
- data/lib/cisco_node_utils/cmd_ref/route_map.yaml +601 -0
- data/lib/cisco_node_utils/cmd_ref/show_system.yaml +9 -0
- data/lib/cisco_node_utils/cmd_ref/show_version.yaml +84 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +81 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_group.yaml +9 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_notification_receiver.yaml +74 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +91 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_user.yaml +57 -0
- data/lib/cisco_node_utils/cmd_ref/snmpnotification.yaml +23 -0
- data/lib/cisco_node_utils/cmd_ref/span_session.yaml +65 -0
- data/lib/cisco_node_utils/cmd_ref/stp_global.yaml +235 -0
- data/lib/cisco_node_utils/cmd_ref/syslog_facility.yaml +10 -0
- data/lib/cisco_node_utils/cmd_ref/syslog_server.yaml +34 -0
- data/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml +45 -0
- data/lib/cisco_node_utils/cmd_ref/system.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_global.yaml +37 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_server.yaml +63 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_server_group.yaml +45 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_server_host.yaml +64 -0
- data/lib/cisco_node_utils/cmd_ref/upgrade.yaml +38 -0
- data/lib/cisco_node_utils/cmd_ref/vdc.yaml +52 -0
- data/lib/cisco_node_utils/cmd_ref/virtual_service.yaml +8 -0
- data/lib/cisco_node_utils/cmd_ref/vlan.yaml +106 -0
- data/lib/cisco_node_utils/cmd_ref/vpc.yaml +233 -0
- data/lib/cisco_node_utils/cmd_ref/vrf.yaml +86 -0
- data/lib/cisco_node_utils/cmd_ref/vrf_af.yaml +139 -0
- data/lib/cisco_node_utils/cmd_ref/vtp.yaml +32 -0
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +114 -0
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +71 -0
- data/lib/cisco_node_utils/cmd_ref/yang.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/yum.yaml +68 -0
- data/lib/cisco_node_utils/command_reference.rb +724 -0
- data/lib/cisco_node_utils/configparser_lib.rb +195 -0
- data/lib/cisco_node_utils/constants.rb +40 -0
- data/lib/cisco_node_utils/dhcp_relay_global.rb +302 -0
- data/lib/cisco_node_utils/dns_domain.rb +93 -0
- data/lib/cisco_node_utils/domain_name.rb +82 -0
- data/lib/cisco_node_utils/encapsulation.rb +112 -0
- data/lib/cisco_node_utils/environment.rb +110 -0
- data/lib/cisco_node_utils/evpn_multicast.rb +66 -0
- data/lib/cisco_node_utils/evpn_multisite.rb +96 -0
- data/lib/cisco_node_utils/evpn_stormcontrol.rb +84 -0
- data/lib/cisco_node_utils/evpn_vni.rb +159 -0
- data/lib/cisco_node_utils/exceptions.rb +140 -0
- data/lib/cisco_node_utils/fabricpath_global.rb +405 -0
- data/lib/cisco_node_utils/fabricpath_topology.rb +137 -0
- data/lib/cisco_node_utils/feature.rb +377 -0
- data/lib/cisco_node_utils/hostname.rb +62 -0
- data/lib/cisco_node_utils/hsrp_global.rb +97 -0
- data/lib/cisco_node_utils/interface.rb +2128 -0
- data/lib/cisco_node_utils/interface_channel_group.rb +142 -0
- data/lib/cisco_node_utils/interface_evpn_multisite.rb +72 -0
- data/lib/cisco_node_utils/interface_hsrp_group.rb +557 -0
- data/lib/cisco_node_utils/interface_ospf.rb +378 -0
- data/lib/cisco_node_utils/interface_portchannel.rb +180 -0
- data/lib/cisco_node_utils/interface_service_vni.rb +132 -0
- data/lib/cisco_node_utils/ip_multicast.rb +90 -0
- data/lib/cisco_node_utils/itd_device_group.rb +228 -0
- data/lib/cisco_node_utils/itd_device_group_node.rb +144 -0
- data/lib/cisco_node_utils/itd_service.rb +511 -0
- data/lib/cisco_node_utils/logger.rb +78 -0
- data/lib/cisco_node_utils/name_server.rb +64 -0
- data/lib/cisco_node_utils/node.rb +443 -0
- data/lib/cisco_node_utils/node_util.rb +111 -0
- data/lib/cisco_node_utils/ntp_auth_key.rb +67 -0
- data/lib/cisco_node_utils/ntp_config.rb +83 -0
- data/lib/cisco_node_utils/ntp_server.rb +86 -0
- data/lib/cisco_node_utils/object_group.rb +75 -0
- data/lib/cisco_node_utils/object_group_entry.rb +143 -0
- data/lib/cisco_node_utils/overlay_global.rb +142 -0
- data/lib/cisco_node_utils/pim.rb +131 -0
- data/lib/cisco_node_utils/pim_group_list.rb +109 -0
- data/lib/cisco_node_utils/pim_rp_address.rb +103 -0
- data/lib/cisco_node_utils/platform.rb +217 -0
- data/lib/cisco_node_utils/portchannel_global.rb +347 -0
- data/lib/cisco_node_utils/radius_global.rb +165 -0
- data/lib/cisco_node_utils/radius_server.rb +421 -0
- data/lib/cisco_node_utils/radius_server_group.rb +117 -0
- data/lib/cisco_node_utils/route_map.rb +2540 -0
- data/lib/cisco_node_utils/router_ospf.rb +77 -0
- data/lib/cisco_node_utils/router_ospf_area.rb +416 -0
- data/lib/cisco_node_utils/router_ospf_area_vlink.rb +313 -0
- data/lib/cisco_node_utils/router_ospf_vrf.rb +342 -0
- data/lib/cisco_node_utils/snmp_notification_receiver.rb +176 -0
- data/lib/cisco_node_utils/snmpcommunity.rb +109 -0
- data/lib/cisco_node_utils/snmpgroup.rb +54 -0
- data/lib/cisco_node_utils/snmpnotification.rb +57 -0
- data/lib/cisco_node_utils/snmpserver.rb +132 -0
- data/lib/cisco_node_utils/snmpuser.rb +403 -0
- data/lib/cisco_node_utils/span_session.rb +149 -0
- data/lib/cisco_node_utils/stp_global.rb +676 -0
- data/lib/cisco_node_utils/syslog_facility.rb +64 -0
- data/lib/cisco_node_utils/syslog_server.rb +146 -0
- data/lib/cisco_node_utils/syslog_settings.rb +174 -0
- data/lib/cisco_node_utils/tacacs_global.rb +137 -0
- data/lib/cisco_node_utils/tacacs_server.rb +173 -0
- data/lib/cisco_node_utils/tacacs_server_group.rb +149 -0
- data/lib/cisco_node_utils/tacacs_server_host.rb +216 -0
- data/lib/cisco_node_utils/upgrade.rb +122 -0
- data/lib/cisco_node_utils/vdc.rb +118 -0
- data/lib/cisco_node_utils/version.rb +21 -0
- data/lib/cisco_node_utils/vlan.rb +301 -0
- data/lib/cisco_node_utils/vpc.rb +466 -0
- data/lib/cisco_node_utils/vrf.rb +192 -0
- data/lib/cisco_node_utils/vrf_af.rb +327 -0
- data/lib/cisco_node_utils/vtp.rb +125 -0
- data/lib/cisco_node_utils/vxlan_vtep.rb +286 -0
- data/lib/cisco_node_utils/vxlan_vtep_vni.rb +331 -0
- data/lib/cisco_node_utils/yang.rb +160 -0
- data/lib/cisco_node_utils/yum.rb +213 -0
- data/lib/cisco_node_utils.rb +21 -0
- data/lib/minitest/environment_plugin.rb +31 -0
- data/lib/minitest/log_level_plugin.rb +41 -0
- data/spec/client_spec.rb +7 -0
- data/spec/environment_spec.rb +384 -0
- data/spec/grpc_client_spec.rb +23 -0
- data/spec/isolate/all_clients_spec.rb +9 -0
- data/spec/isolate/grpc_only_spec.rb +16 -0
- data/spec/isolate/no_clients_spec.rb +26 -0
- data/spec/isolate/nxapi_only_spec.rb +16 -0
- data/spec/nxapi_client_spec.rb +42 -0
- data/spec/schema.yaml +82 -0
- data/spec/shared_examples_for_clients.rb +14 -0
- data/spec/spec_helper.rb +91 -0
- data/spec/whitespace_spec.rb +10 -0
- data/spec/yaml_spec.rb +42 -0
- data/tests/.rubocop.yml +18 -0
- data/tests/CSCuxdublin-1.0.0-7.0.3.I3.1.lib32_n9000.rpm +0 -0
- data/tests/basetest.rb +243 -0
- data/tests/ciscotest.rb +577 -0
- data/tests/cmd_config.yaml +75 -0
- data/tests/cmd_config_invalid.yaml +16 -0
- data/tests/n9000_sample-1.0.0-7.0.3.x86_64.rpm +0 -0
- data/tests/noop.rb +7 -0
- data/tests/platform_info.rb +63 -0
- data/tests/tacacs_server.yaml.example +6 -0
- data/tests/test_aaa_authentication_login.rb +243 -0
- data/tests/test_aaa_authentication_login_service.rb +761 -0
- data/tests/test_aaa_authorization_service.rb +874 -0
- data/tests/test_ace.rb +304 -0
- data/tests/test_acl.rb +185 -0
- data/tests/test_banner.rb +85 -0
- data/tests/test_bfd_global.rb +272 -0
- data/tests/test_bgp_af.rb +875 -0
- data/tests/test_bgp_af_aa.rb +108 -0
- data/tests/test_bgp_neighbor.rb +596 -0
- data/tests/test_bgp_neighbor_af.rb +781 -0
- data/tests/test_bridge_domain.rb +198 -0
- data/tests/test_bridge_domain_vni.rb +109 -0
- data/tests/test_client_utils.rb +111 -0
- data/tests/test_cmn_utils.rb +76 -0
- data/tests/test_command_config.rb +206 -0
- data/tests/test_command_reference.rb +669 -0
- data/tests/test_dhcp_relay_global.rb +286 -0
- data/tests/test_dns_domain.rb +123 -0
- data/tests/test_domain_name.rb +96 -0
- data/tests/test_encapsulation.rb +75 -0
- data/tests/test_evpn_multicast.rb +65 -0
- data/tests/test_evpn_multisite.rb +70 -0
- data/tests/test_evpn_stormcontrol.rb +56 -0
- data/tests/test_evpn_vni.rb +131 -0
- data/tests/test_fabricpath_global.rb +246 -0
- data/tests/test_fabricpath_topology.rb +77 -0
- data/tests/test_feature.rb +272 -0
- data/tests/test_grpc.rb +166 -0
- data/tests/test_hostname.rb +64 -0
- data/tests/test_hsrp_global.rb +79 -0
- data/tests/test_interface.rb +1958 -0
- data/tests/test_interface_bdi.rb +80 -0
- data/tests/test_interface_channel_group.rb +131 -0
- data/tests/test_interface_evpn_multisite.rb +94 -0
- data/tests/test_interface_hsrp.rb +134 -0
- data/tests/test_interface_hsrp_group.rb +570 -0
- data/tests/test_interface_ospf.rb +820 -0
- data/tests/test_interface_portchannel.rb +135 -0
- data/tests/test_interface_private_vlan.rb +365 -0
- data/tests/test_interface_service_vni.rb +203 -0
- data/tests/test_interface_svi.rb +210 -0
- data/tests/test_interface_switchport.rb +468 -0
- data/tests/test_ip_multicast.rb +80 -0
- data/tests/test_itd_device_group.rb +145 -0
- data/tests/test_itd_device_group_node.rb +199 -0
- data/tests/test_itd_service.rb +314 -0
- data/tests/test_logger.rb +43 -0
- data/tests/test_name_server.rb +94 -0
- data/tests/test_node.rb +50 -0
- data/tests/test_node_ext.rb +406 -0
- data/tests/test_node_util.rb +119 -0
- data/tests/test_ntp_auth_key.rb +77 -0
- data/tests/test_ntp_config.rb +100 -0
- data/tests/test_ntp_server.rb +146 -0
- data/tests/test_nxapi.rb +236 -0
- data/tests/test_object_group.rb +122 -0
- data/tests/test_overlay_global.rb +108 -0
- data/tests/test_pim.rb +203 -0
- data/tests/test_pim_group_list.rb +147 -0
- data/tests/test_pim_rp_address.rb +155 -0
- data/tests/test_platform.rb +254 -0
- data/tests/test_portchannel_global.rb +322 -0
- data/tests/test_radius_global.rb +108 -0
- data/tests/test_radius_server.rb +377 -0
- data/tests/test_radius_server_group.rb +151 -0
- data/tests/test_route_map.rb +1479 -0
- data/tests/test_router_bgp.rb +1325 -0
- data/tests/test_router_ospf.rb +56 -0
- data/tests/test_router_ospf_area.rb +433 -0
- data/tests/test_router_ospf_area_vlink.rb +298 -0
- data/tests/test_router_ospf_vrf.rb +690 -0
- data/tests/test_snmp_notification_receiver.rb +169 -0
- data/tests/test_snmpcommunity.rb +422 -0
- data/tests/test_snmpgroup.rb +71 -0
- data/tests/test_snmpnotification.rb +91 -0
- data/tests/test_snmpserver.rb +251 -0
- data/tests/test_snmpuser.rb +666 -0
- data/tests/test_span_session.rb +155 -0
- data/tests/test_stp_global.rb +575 -0
- data/tests/test_syslog_facility.rb +80 -0
- data/tests/test_syslog_server.rb +119 -0
- data/tests/test_syslog_settings.rb +123 -0
- data/tests/test_tacacs_global.rb +109 -0
- data/tests/test_tacacs_server.rb +436 -0
- data/tests/test_tacacs_server_group.rb +434 -0
- data/tests/test_tacacs_server_host.rb +427 -0
- data/tests/test_upgrade.rb +105 -0
- data/tests/test_vdc.rb +64 -0
- data/tests/test_vlan.rb +386 -0
- data/tests/test_vlan_private.rb +656 -0
- data/tests/test_vpc.rb +548 -0
- data/tests/test_vrf.rb +248 -0
- data/tests/test_vrf_af.rb +288 -0
- data/tests/test_vtp.rb +278 -0
- data/tests/test_vxlan_vtep.rb +327 -0
- data/tests/test_vxlan_vtep_vni.rb +326 -0
- data/tests/test_yang.rb +369 -0
- data/tests/test_yum.rb +109 -0
- data/tests/upgrade_info.yaml.example +3 -0
- data/tests/yum_package.yaml +94 -0
- metadata +534 -0
data/tests/test_pim.rb
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# Copyright (c) 2013-2016 Cisco and/or its affiliates.
|
|
2
|
+
#
|
|
3
|
+
# Smitha Gopalan, November 2015
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#-------------------------------------------------------------------------------
|
|
17
|
+
# CLI: <afi> pim ssm-range <range> (under different VRFs)
|
|
18
|
+
#-------------------------------------------------------------------------------
|
|
19
|
+
# Testcases: All Tests create all instances within a test
|
|
20
|
+
# 1. test_single_ssm_range_single_vrf:
|
|
21
|
+
# vrf default, ip pim ssm-range 229.0.0.0/8
|
|
22
|
+
#
|
|
23
|
+
# 2. test_single_ssm_range_none_single_vrf:
|
|
24
|
+
# vrf default, ip pim ssm-range none
|
|
25
|
+
#
|
|
26
|
+
# 3. test_multiple_ssm_range_multiple_vrfs:
|
|
27
|
+
# vrf default, ip pim ssm-range 229.0.0.0/8 225.0.0.0/8 224.0.0.0/8
|
|
28
|
+
# vrf red, ip pim ssm-range 230.0.0.0/8 228.0.0.0/8 224.0.0.0/8
|
|
29
|
+
# vrf black, ip pim ssm-range none
|
|
30
|
+
#
|
|
31
|
+
# 4. test_multiple_ssm_range_overwrite_multiple_vrfs:
|
|
32
|
+
# vrf default, ip pim ssm-range 229.0.0.0/8 225.0.0.0/8 224.0.0.0/8
|
|
33
|
+
# vrf red, ip pim ssm-range 230.0.0.0/8 228.0.0.0/8 224.0.0.0/8 ->
|
|
34
|
+
# gets overwritten to
|
|
35
|
+
# vrf red, ip pim ssm-range none
|
|
36
|
+
#
|
|
37
|
+
# 5. test_single_invalid_ssm_range_single_vrf:
|
|
38
|
+
# vrf default, ip pim ssm-range 1.1.1.1/8
|
|
39
|
+
#-------------------------------------------------------------------------------
|
|
40
|
+
|
|
41
|
+
require_relative 'ciscotest'
|
|
42
|
+
require_relative '../lib/cisco_node_utils/pim'
|
|
43
|
+
|
|
44
|
+
include Cisco
|
|
45
|
+
|
|
46
|
+
# TestPim - Minitest for Pim Feature
|
|
47
|
+
class TestPim < CiscoTestCase
|
|
48
|
+
@skip_unless_supported = 'pim'
|
|
49
|
+
|
|
50
|
+
@@pre_clean_needed = true # rubocop:disable Style/ClassVars
|
|
51
|
+
|
|
52
|
+
# Enables feature pim
|
|
53
|
+
#---------------------
|
|
54
|
+
def setup
|
|
55
|
+
super
|
|
56
|
+
remove_all_pims if @@pre_clean_needed
|
|
57
|
+
@@pre_clean_needed = false # rubocop:disable Style/ClassVars
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def teardown
|
|
61
|
+
super
|
|
62
|
+
remove_all_pims
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def remove_all_pims
|
|
66
|
+
Pim.pims.each do |_afi, vrfs|
|
|
67
|
+
vrfs.each do |_vrf, obj|
|
|
68
|
+
obj.destroy
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# Creates single ssm range under default vrf
|
|
74
|
+
#-----------------------------------------------
|
|
75
|
+
def create_single_ssm_range_single_vrf(afi)
|
|
76
|
+
range = '229.0.0.0/8'
|
|
77
|
+
p1 = Pim.new(afi, 'default')
|
|
78
|
+
p1.ssm_range = (range)
|
|
79
|
+
assert_equal(p1.ssm_range.split.sort.join(' '), range.split.sort.join(' '))
|
|
80
|
+
p1.ssm_range = 'none'
|
|
81
|
+
assert_equal('none', p1.ssm_range)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Tests single ssm range none under default vrf
|
|
85
|
+
#-----------------------------------------------
|
|
86
|
+
def test_ssm_range
|
|
87
|
+
%w(ipv4).each do |afi|
|
|
88
|
+
create_single_ssm_range_single_vrf(afi)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Creates single ssm range none under default vrf
|
|
93
|
+
#-----------------------------------------------
|
|
94
|
+
def create_single_ssm_range_none_single_vrf(afi)
|
|
95
|
+
range = 'none'
|
|
96
|
+
p1 = Pim.new(afi, 'default')
|
|
97
|
+
p1.ssm_range = (range)
|
|
98
|
+
assert_equal(p1.ssm_range.split.sort.join(' '), range.split.sort.join(' '))
|
|
99
|
+
p1.ssm_range = 'none'
|
|
100
|
+
assert_equal('none', p1.ssm_range)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# Tests single ssm range none under default vrf
|
|
104
|
+
#-----------------------------------------------
|
|
105
|
+
def test_ssm_range_none
|
|
106
|
+
%w(ipv4).each do |afi|
|
|
107
|
+
create_single_ssm_range_none_single_vrf(afi)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# Creates multiple ssm ranges under different vrfs
|
|
112
|
+
#-----------------------------------------------
|
|
113
|
+
def create_multiple_ssm_range_multiple_vrfs(afi)
|
|
114
|
+
range1 = '229.0.0.0/8 225.0.0.0/8 224.0.0.0/8'
|
|
115
|
+
range2 = '230.0.0.0/8 228.0.0.0/8 224.0.0.0/8'
|
|
116
|
+
range3 = 'none'
|
|
117
|
+
p1 = Pim.new(afi, 'default')
|
|
118
|
+
p2 = Pim.new(afi, 'red')
|
|
119
|
+
p3 = Pim.new(afi, 'black')
|
|
120
|
+
p1.ssm_range = (range1)
|
|
121
|
+
p2.ssm_range = (range2)
|
|
122
|
+
p3.ssm_range = (range3)
|
|
123
|
+
assert_equal(p1.ssm_range.split.sort.join(' '), range1.split.sort.join(' '))
|
|
124
|
+
assert_equal(p2.ssm_range.split.sort.join(' '), range2.split.sort.join(' '))
|
|
125
|
+
assert_equal(p3.ssm_range.split.sort.join(' '), range3.split.sort.join(' '))
|
|
126
|
+
p1.ssm_range = 'none'
|
|
127
|
+
assert_equal('none', p1.ssm_range)
|
|
128
|
+
p2.ssm_range = 'none'
|
|
129
|
+
assert_equal('none', p2.ssm_range)
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
# Tests multiple ssm ranges under different vrfs
|
|
133
|
+
#-----------------------------------------------
|
|
134
|
+
def test_ssm_range_multiple
|
|
135
|
+
%w(ipv4).each do |afi|
|
|
136
|
+
create_multiple_ssm_range_multiple_vrfs(afi)
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Creates multiple ssm ranges overwrite under different vrfs
|
|
141
|
+
#-----------------------------------------------
|
|
142
|
+
def create_multiple_ssm_range_overwrite_multiple_vrfs(afi)
|
|
143
|
+
range1 = '229.0.0.0/8 225.0.0.0/8 224.0.0.0/8'
|
|
144
|
+
range2 = '230.0.0.0/8 228.0.0.0/8 224.0.0.0/8'
|
|
145
|
+
range3 = 'none'
|
|
146
|
+
p1 = Pim.new(afi, 'default')
|
|
147
|
+
p2 = Pim.new(afi, 'red')
|
|
148
|
+
p1.ssm_range = (range1)
|
|
149
|
+
p2.ssm_range = (range2)
|
|
150
|
+
assert_equal(p1.ssm_range.split.sort.join(' '), range1.split.sort.join(' '))
|
|
151
|
+
assert_equal(p2.ssm_range.split.sort.join(' '), range2.split.sort.join(' '))
|
|
152
|
+
p2.ssm_range = (range3)
|
|
153
|
+
assert_equal(p2.ssm_range.split.sort.join(' '), range3.split.sort.join(' '))
|
|
154
|
+
|
|
155
|
+
p1.ssm_range = 'none'
|
|
156
|
+
assert_equal('none', p1.ssm_range)
|
|
157
|
+
p1.destroy
|
|
158
|
+
p2.destroy
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
# Tests multiple ssm ranges overwrite under different vrfs
|
|
162
|
+
#-----------------------------------------------
|
|
163
|
+
def test_ssm_range_multiple_overwrite
|
|
164
|
+
%w(ipv4).each do |afi|
|
|
165
|
+
create_multiple_ssm_range_overwrite_multiple_vrfs(afi)
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
# Creates single invalid ssm range under vrf default
|
|
170
|
+
#---------------------------------------------------
|
|
171
|
+
def create_single_invalid_ssm_range_single_vrf(afi)
|
|
172
|
+
range = '1.1.1.1/8'
|
|
173
|
+
p1 = Pim.new(afi, 'default')
|
|
174
|
+
assert_raises(CliError) do
|
|
175
|
+
p1.ssm_range = (range)
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
# Tests single invalid ssm range under vrf default
|
|
180
|
+
#---------------------------------------------------
|
|
181
|
+
def test_ssm_range_inv
|
|
182
|
+
%w(ipv4).each do |afi|
|
|
183
|
+
create_single_invalid_ssm_range_single_vrf(afi)
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
def test_bfd
|
|
188
|
+
%w(ipv4).each do |afi|
|
|
189
|
+
p1 = Pim.new(afi, 'default')
|
|
190
|
+
p2 = Pim.new(afi, 'red')
|
|
191
|
+
assert_equal(p1.default_bfd, p1.bfd)
|
|
192
|
+
assert_equal(p2.default_bfd, p1.bfd)
|
|
193
|
+
p1.bfd = true
|
|
194
|
+
p2.bfd = true
|
|
195
|
+
assert_equal(true, p1.bfd)
|
|
196
|
+
assert_equal(true, p2.bfd)
|
|
197
|
+
p1.bfd = p1.default_bfd
|
|
198
|
+
p2.bfd = p2.default_bfd
|
|
199
|
+
assert_equal(p1.default_bfd, p1.bfd)
|
|
200
|
+
assert_equal(p2.default_bfd, p1.bfd)
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
end
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Copyright (c) 2013-2016 Cisco and/or its affiliates.
|
|
2
|
+
#
|
|
3
|
+
# Smitha Gopalan, November 2015
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#-----------------------------------------------------------
|
|
17
|
+
# CLI: <afi> pim rp-address <rp-address> group-list <group>
|
|
18
|
+
# (under different VRFs)
|
|
19
|
+
#-----------------------------------------------------------
|
|
20
|
+
# Testcases: All Tests create and destroy all instances within a test
|
|
21
|
+
#
|
|
22
|
+
# 1. test_all_group_lists
|
|
23
|
+
#
|
|
24
|
+
# 2. test_single_rpaddr_single_invalid_grouplist_single_vrf:
|
|
25
|
+
# vrf default, ip pim rp-address 25.25.25.25 group-list 25.0.0.0/8
|
|
26
|
+
#-------------------------------------------------------------------------------
|
|
27
|
+
|
|
28
|
+
require_relative 'ciscotest'
|
|
29
|
+
require_relative '../lib/cisco_node_utils/pim_group_list'
|
|
30
|
+
|
|
31
|
+
include Cisco
|
|
32
|
+
|
|
33
|
+
# TestPim - Minitest for PimGrouplist
|
|
34
|
+
class TestPimGrpLst < CiscoTestCase
|
|
35
|
+
@skip_unless_supported = 'pim'
|
|
36
|
+
|
|
37
|
+
# Enables feature pim
|
|
38
|
+
#--------------------
|
|
39
|
+
def setup
|
|
40
|
+
super
|
|
41
|
+
config('no feature pim')
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Test Pim.group_lists
|
|
45
|
+
# - multiple vrfs, groups, rp_addrs
|
|
46
|
+
# - same rp_addr, different group
|
|
47
|
+
# - same rp_addr, different vrf
|
|
48
|
+
# - same group, different rp_addr
|
|
49
|
+
# - same group, different vrf
|
|
50
|
+
#--------------------------------------------
|
|
51
|
+
def all_group_lists(afi)
|
|
52
|
+
rp_addr1 = '11.11.11.11'
|
|
53
|
+
rp_addr2 = '22.22.22.22'
|
|
54
|
+
grouplist1 = '227.0.0.0/8'
|
|
55
|
+
grouplist2 = '228.0.0.0/8'
|
|
56
|
+
|
|
57
|
+
# Basic setup
|
|
58
|
+
vrf = 'default'
|
|
59
|
+
pd1 = PimGroupList.new(afi, vrf, rp_addr1, grouplist1)
|
|
60
|
+
pd2 = PimGroupList.new(afi, vrf, rp_addr2, grouplist2)
|
|
61
|
+
hash = PimGroupList.group_lists
|
|
62
|
+
assert(hash.key?(afi))
|
|
63
|
+
assert(hash[afi].key?(vrf))
|
|
64
|
+
assert_equal(2, hash[afi][vrf].keys.count,
|
|
65
|
+
"hash[#{afi}][#{vrf}] should have 2 group lists")
|
|
66
|
+
assert(hash[afi][vrf].key?([rp_addr1, grouplist1]),
|
|
67
|
+
"hash[#{afi}][#{vrf}] does not contain [#{rp_addr1}, #{grouplist1}]")
|
|
68
|
+
assert(hash[afi][vrf].key?([rp_addr2, grouplist2]),
|
|
69
|
+
"hash[#{afi}][#{vrf}] does not contain [#{rp_addr2}, #{grouplist2}]")
|
|
70
|
+
|
|
71
|
+
# vrf with same rp_addrs/groups as in default
|
|
72
|
+
vrf = 'red'
|
|
73
|
+
pd3 = PimGroupList.new(afi, vrf, rp_addr1, grouplist1)
|
|
74
|
+
pd4 = PimGroupList.new(afi, vrf, rp_addr2, grouplist2)
|
|
75
|
+
hash = PimGroupList.group_lists
|
|
76
|
+
assert_equal(2, hash[afi].keys.count,
|
|
77
|
+
"hash[#{afi}] does not have 2 vrfs")
|
|
78
|
+
assert(hash[afi].key?(vrf))
|
|
79
|
+
assert_equal(2, hash[afi][vrf].keys.count,
|
|
80
|
+
"hash[#{afi}][#{vrf}] should have 2 group lists")
|
|
81
|
+
assert(hash[afi][vrf].key?([rp_addr1, grouplist1]),
|
|
82
|
+
"hash[#{afi}][#{vrf}] does not contain [#{rp_addr1}, #{grouplist1}]")
|
|
83
|
+
assert(hash[afi][vrf].key?([rp_addr2, grouplist2]),
|
|
84
|
+
"hash[#{afi}][#{vrf}] does not contain [#{rp_addr2}, #{grouplist2}]")
|
|
85
|
+
|
|
86
|
+
# different vrf, same rps / diff groups, etc.
|
|
87
|
+
vrf = 'black'
|
|
88
|
+
rp_addr7 = '7.7.7.7'
|
|
89
|
+
pd5 = PimGroupList.new(afi, vrf, rp_addr1, grouplist1)
|
|
90
|
+
pd6 = PimGroupList.new(afi, vrf, rp_addr1, grouplist2)
|
|
91
|
+
pd7 = PimGroupList.new(afi, vrf, rp_addr7, grouplist2)
|
|
92
|
+
hash = PimGroupList.group_lists
|
|
93
|
+
assert_equal(3, hash[afi].keys.count,
|
|
94
|
+
"hash[#{afi}] does not have 3 vrfs")
|
|
95
|
+
assert(hash[afi].key?(vrf))
|
|
96
|
+
assert_equal(3, hash[afi][vrf].keys.count,
|
|
97
|
+
"hash[#{afi}][#{vrf}] should have 3 group lists")
|
|
98
|
+
assert(hash[afi][vrf].key?([rp_addr1, grouplist1]),
|
|
99
|
+
"hash[#{afi}][#{vrf}] does not contain [#{rp_addr1}, #{grouplist2}]")
|
|
100
|
+
assert(hash[afi][vrf].key?([rp_addr1, grouplist2]),
|
|
101
|
+
"hash[#{afi}][#{vrf}] does not contain [#{rp_addr1}, #{grouplist2}]")
|
|
102
|
+
assert(hash[afi][vrf].key?([rp_addr7, grouplist2]),
|
|
103
|
+
"hash[#{afi}][#{vrf}] does not contain [#{rp_addr7}, #{grouplist2}]")
|
|
104
|
+
|
|
105
|
+
# Test removal
|
|
106
|
+
vrf = 'default'
|
|
107
|
+
pd1.destroy
|
|
108
|
+
hash = PimGroupList.group_lists
|
|
109
|
+
assert_equal(1, hash[afi][vrf].keys.count,
|
|
110
|
+
"hash[#{afi}][#{vrf}] should have 1 group lists")
|
|
111
|
+
refute(hash[afi][vrf].key?([rp_addr1, grouplist1]),
|
|
112
|
+
"hash[#{afi}][#{vrf}] should not contain "\
|
|
113
|
+
"[#{rp_addr1}, #{grouplist1}]")
|
|
114
|
+
|
|
115
|
+
vrf = 'red'
|
|
116
|
+
pd3.destroy
|
|
117
|
+
hash = PimGroupList.group_lists
|
|
118
|
+
assert_equal(1, hash[afi][vrf].keys.count,
|
|
119
|
+
"hash[#{afi}][#{vrf}] should have 1 group lists")
|
|
120
|
+
refute(hash[afi][vrf].key?([rp_addr1, grouplist1]),
|
|
121
|
+
"hash[#{afi}][#{vrf}] should not contain "\
|
|
122
|
+
"[#{rp_addr1}, #{grouplist1}]")
|
|
123
|
+
|
|
124
|
+
vrf = 'black'
|
|
125
|
+
pd5.destroy
|
|
126
|
+
pd7.destroy
|
|
127
|
+
hash = PimGroupList.group_lists
|
|
128
|
+
assert_equal(1, hash[afi][vrf].keys.count,
|
|
129
|
+
"hash[#{afi}][#{vrf}] should have 1 group lists")
|
|
130
|
+
refute(hash[afi][vrf].key?([rp_addr1, grouplist1]),
|
|
131
|
+
"hash[#{afi}][#{vrf}] should not contain "\
|
|
132
|
+
"[#{rp_addr1}, #{grouplist1}]")
|
|
133
|
+
pd2.destroy
|
|
134
|
+
pd4.destroy
|
|
135
|
+
pd6.destroy
|
|
136
|
+
hash = PimGroupList.group_lists
|
|
137
|
+
assert_empty(hash[afi], 'hash[#{afi}] is not empty')
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Tests Pim.group_lists
|
|
141
|
+
#------------------------------------------
|
|
142
|
+
def test_all_group_lists
|
|
143
|
+
%w(ipv4).each do |afi|
|
|
144
|
+
all_group_lists(afi)
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Copyright (c) 2013-2016 Cisco and/or its affiliates.
|
|
2
|
+
#
|
|
3
|
+
# Smitha Gopalan, November 2015
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
# ---------------------------------------------------------------------
|
|
17
|
+
# Cli: <afi> pim rp-address <rp-address> (under different VRFs)
|
|
18
|
+
# ---------------------------------------------------------------------
|
|
19
|
+
# Testcases: All Tests create and destroy all instances within a test
|
|
20
|
+
#
|
|
21
|
+
# 1. test_all_rp_addrs
|
|
22
|
+
#
|
|
23
|
+
# 2. test_single_invalid_rpaddr_single_vrf:
|
|
24
|
+
# vrf default, ip pim rp-address 256.256.256.256
|
|
25
|
+
# ---------------------------------------------------------------------
|
|
26
|
+
|
|
27
|
+
require_relative 'ciscotest'
|
|
28
|
+
require_relative '../lib/cisco_node_utils/pim_rp_address'
|
|
29
|
+
|
|
30
|
+
include Cisco
|
|
31
|
+
|
|
32
|
+
# TestPimRpAddress - Minitest for PimRpAddress
|
|
33
|
+
class TestPimRpAddress < CiscoTestCase
|
|
34
|
+
@skip_unless_supported = 'pim'
|
|
35
|
+
|
|
36
|
+
# Enables feature pim
|
|
37
|
+
#--------------------
|
|
38
|
+
def setup
|
|
39
|
+
super
|
|
40
|
+
config('no feature pim')
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Test PimRpAddress.rp_addresses
|
|
44
|
+
# - multiple vrfs, rp_addrs
|
|
45
|
+
# - same rp_addr, different vrf
|
|
46
|
+
#--------------------------------------------
|
|
47
|
+
def all_rp_addrs(afi)
|
|
48
|
+
rp_addr1 = '11.11.11.11'
|
|
49
|
+
rp_addr2 = '22.22.22.22'
|
|
50
|
+
|
|
51
|
+
# Basic setup
|
|
52
|
+
vrf = 'default'
|
|
53
|
+
pd1 = PimRpAddress.new(afi, vrf, rp_addr1)
|
|
54
|
+
pd2 = PimRpAddress.new(afi, vrf, rp_addr2)
|
|
55
|
+
hash = PimRpAddress.rp_addresses
|
|
56
|
+
assert(hash.key?(afi))
|
|
57
|
+
assert(hash[afi].key?(vrf))
|
|
58
|
+
assert_equal(2, hash[afi][vrf].keys.count,
|
|
59
|
+
"hash[#{afi}][#{vrf}] should have 2 rp-address")
|
|
60
|
+
assert(hash[afi][vrf].key?(rp_addr1),
|
|
61
|
+
"hash[#{afi}][#{vrf}] does not contain #{rp_addr1}")
|
|
62
|
+
assert(hash[afi][vrf].key?(rp_addr2),
|
|
63
|
+
"hash[#{afi}][#{vrf}] does not contain #{rp_addr2}")
|
|
64
|
+
|
|
65
|
+
# vrf with same rp_addrs as in default
|
|
66
|
+
vrf = 'red'
|
|
67
|
+
pd3 = PimRpAddress.new(afi, vrf, rp_addr1)
|
|
68
|
+
pd4 = PimRpAddress.new(afi, vrf, rp_addr2)
|
|
69
|
+
hash = PimRpAddress.rp_addresses
|
|
70
|
+
assert_equal(2, hash[afi].keys.count,
|
|
71
|
+
"hash[#{afi}] does not have 2 vrfs")
|
|
72
|
+
assert(hash[afi].key?(vrf))
|
|
73
|
+
assert_equal(2, hash[afi][vrf].keys.count,
|
|
74
|
+
"hash[#{afi}][#{vrf}] should have 2 rp-address")
|
|
75
|
+
assert(hash[afi][vrf].key?(rp_addr1),
|
|
76
|
+
"hash[#{afi}][#{vrf}] does not contain #{rp_addr1}")
|
|
77
|
+
assert(hash[afi][vrf].key?(rp_addr2),
|
|
78
|
+
"hash[#{afi}][#{vrf}] does not contain #{rp_addr2}")
|
|
79
|
+
|
|
80
|
+
# different vrf, same/diff rps
|
|
81
|
+
vrf = 'black'
|
|
82
|
+
rp_addr7 = '7.7.7.7'
|
|
83
|
+
pd5 = PimRpAddress.new(afi, vrf, rp_addr1)
|
|
84
|
+
pd6 = PimRpAddress.new(afi, vrf, rp_addr2)
|
|
85
|
+
pd7 = PimRpAddress.new(afi, vrf, rp_addr7)
|
|
86
|
+
hash = PimRpAddress.rp_addresses
|
|
87
|
+
assert_equal(3, hash[afi].keys.count,
|
|
88
|
+
"hash[#{afi}] does not have 3 vrfs")
|
|
89
|
+
assert(hash[afi].key?(vrf))
|
|
90
|
+
assert_equal(3, hash[afi][vrf].keys.count,
|
|
91
|
+
"hash[#{afi}][#{vrf}] should have 3 rp-address")
|
|
92
|
+
assert(hash[afi][vrf].key?(rp_addr1),
|
|
93
|
+
"hash[#{afi}][#{vrf}] does not contain #{rp_addr1}")
|
|
94
|
+
assert(hash[afi][vrf].key?(rp_addr1),
|
|
95
|
+
"hash[#{afi}][#{vrf}] does not contain #{rp_addr2}")
|
|
96
|
+
assert(hash[afi][vrf].key?(rp_addr7),
|
|
97
|
+
"hash[#{afi}][#{vrf}] does not contain #{rp_addr7}")
|
|
98
|
+
|
|
99
|
+
# Test removal
|
|
100
|
+
vrf = 'default'
|
|
101
|
+
pd1.destroy
|
|
102
|
+
hash = PimRpAddress.rp_addresses
|
|
103
|
+
assert_equal(1, hash[afi][vrf].keys.count,
|
|
104
|
+
"hash[#{afi}][#{vrf}] should have 1 rp-address")
|
|
105
|
+
refute(hash[afi][vrf].key?(rp_addr1),
|
|
106
|
+
"hash[#{afi}][#{vrf}] should not contain #{rp_addr1}")
|
|
107
|
+
|
|
108
|
+
vrf = 'red'
|
|
109
|
+
pd3.destroy
|
|
110
|
+
hash = PimRpAddress.rp_addresses
|
|
111
|
+
assert_equal(1, hash[afi][vrf].keys.count,
|
|
112
|
+
"hash[#{afi}][#{vrf}] should have 1 rp-address")
|
|
113
|
+
refute(hash[afi][vrf].key?(rp_addr1),
|
|
114
|
+
"hash[#{afi}][#{vrf}] should not contain #{rp_addr1}")
|
|
115
|
+
|
|
116
|
+
vrf = 'black'
|
|
117
|
+
pd5.destroy
|
|
118
|
+
pd7.destroy
|
|
119
|
+
hash = PimRpAddress.rp_addresses
|
|
120
|
+
assert_equal(1, hash[afi][vrf].keys.count,
|
|
121
|
+
"hash[#{afi}][#{vrf}] should have 1 rp-address")
|
|
122
|
+
refute(hash[afi][vrf].key?([rp_addr1]),
|
|
123
|
+
"hash[#{afi}][#{vrf}] should not contain [#{rp_addr1}]")
|
|
124
|
+
pd2.destroy
|
|
125
|
+
pd4.destroy
|
|
126
|
+
pd6.destroy
|
|
127
|
+
hash = PimRpAddress.rp_addresses
|
|
128
|
+
assert_empty(hash[afi], 'hash[#{afi}] is not empty')
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# Tests PimRpAddress.rp_addresses
|
|
132
|
+
#------------------------------------------
|
|
133
|
+
def test_all_rp_addrs
|
|
134
|
+
%w(ipv4).each do |afi|
|
|
135
|
+
all_rp_addrs(afi)
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
# Creates single invalid rp address under vrf default
|
|
140
|
+
#---------------------------------------------------
|
|
141
|
+
def create_single_invalid_rpaddr_single_vrf(afi)
|
|
142
|
+
rp_addr = '256.256.256.256'
|
|
143
|
+
assert_raises(CliError) do
|
|
144
|
+
PimRpAddress.new(afi, 'default', rp_addr)
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
# Tests single invalid rp address under vrf default
|
|
149
|
+
#---------------------------------------------------
|
|
150
|
+
def test_rpaddr
|
|
151
|
+
%w(ipv4).each do |afi|
|
|
152
|
+
create_single_invalid_rpaddr_single_vrf(afi)
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|