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
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
# Copyright (c) 2016 Cisco and/or its affiliates.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
require_relative 'ciscotest'
|
|
16
|
+
require_relative '../lib/cisco_node_utils/itd_device_group_node'
|
|
17
|
+
require_relative '../lib/cisco_node_utils/itd_service'
|
|
18
|
+
|
|
19
|
+
include Cisco
|
|
20
|
+
# TestInterface - Minitest for general functionality
|
|
21
|
+
# of the ItdService class.
|
|
22
|
+
class TestItdSvc < CiscoTestCase
|
|
23
|
+
@skip_unless_supported = 'itd_service'
|
|
24
|
+
# Tests
|
|
25
|
+
|
|
26
|
+
def setup
|
|
27
|
+
super
|
|
28
|
+
config 'no feature itd'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def teardown
|
|
32
|
+
config 'no feature itd'
|
|
33
|
+
super
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_itd_service_create_destroy
|
|
37
|
+
skip_nexus_i2_image?
|
|
38
|
+
i1 = ItdService.new('abc')
|
|
39
|
+
i2 = ItdService.new('BCD')
|
|
40
|
+
i3 = ItdService.new('xyzABC')
|
|
41
|
+
assert_equal(3, ItdService.itds.keys.count)
|
|
42
|
+
|
|
43
|
+
i2.destroy
|
|
44
|
+
assert_equal(2, ItdService.itds.keys.count)
|
|
45
|
+
|
|
46
|
+
i1.destroy
|
|
47
|
+
i3.destroy
|
|
48
|
+
assert_equal(0, ItdService.itds.keys.count)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_access_list
|
|
52
|
+
skip_nexus_i2_image?
|
|
53
|
+
itd = ItdService.new('new_group')
|
|
54
|
+
config 'ip access-list include ; permit ip any any'
|
|
55
|
+
config 'ip access-list exclude'
|
|
56
|
+
itd.access_list = 'include'
|
|
57
|
+
itd.exclude_access_list = 'exclude'
|
|
58
|
+
assert_equal('include', itd.access_list)
|
|
59
|
+
assert_equal('exclude', itd.exclude_access_list)
|
|
60
|
+
itd.access_list = itd.default_access_list
|
|
61
|
+
itd.exclude_access_list = itd.default_exclude_access_list
|
|
62
|
+
assert_equal(itd.default_access_list,
|
|
63
|
+
itd.access_list)
|
|
64
|
+
assert_equal(itd.default_exclude_access_list,
|
|
65
|
+
itd.exclude_access_list)
|
|
66
|
+
config 'no ip access-list include'
|
|
67
|
+
config 'no ip access-list exclude'
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def test_device_group
|
|
71
|
+
skip_nexus_i2_image?
|
|
72
|
+
itd = ItdService.new('new_group')
|
|
73
|
+
ItdDeviceGroup.new('myGroup')
|
|
74
|
+
itd.device_group = 'myGroup'
|
|
75
|
+
assert_equal('myGroup', itd.device_group)
|
|
76
|
+
itd.device_group = itd.default_device_group
|
|
77
|
+
assert_equal(itd.default_device_group,
|
|
78
|
+
itd.device_group)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def test_fail_action
|
|
82
|
+
skip_nexus_i2_image?
|
|
83
|
+
itd = ItdService.new('new_group')
|
|
84
|
+
itd.fail_action = true
|
|
85
|
+
assert_equal(true, itd.fail_action)
|
|
86
|
+
itd.fail_action = itd.default_fail_action
|
|
87
|
+
assert_equal(itd.default_fail_action,
|
|
88
|
+
itd.fail_action)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def test_ingress_interface
|
|
92
|
+
skip_nexus_i2_image?
|
|
93
|
+
config 'feature interface-vlan'
|
|
94
|
+
config 'vlan 2'
|
|
95
|
+
config 'interface vlan 2'
|
|
96
|
+
config 'interface port-channel 100 ; no switchport'
|
|
97
|
+
itd = ItdService.new('new_group')
|
|
98
|
+
intf = interfaces[0].dup
|
|
99
|
+
new_intf = Interface.new(interfaces[0])
|
|
100
|
+
new_intf.switchport_mode = :disabled
|
|
101
|
+
# The next-hop setting as part of the ingress_interface
|
|
102
|
+
# is not needed for n9k and in the latest images is not
|
|
103
|
+
# even supported by the cli.
|
|
104
|
+
if Platform.image_version[/9\.\d+/]
|
|
105
|
+
next_hop1 = ''
|
|
106
|
+
next_hop2 = ''
|
|
107
|
+
next_hop3 = ''
|
|
108
|
+
else
|
|
109
|
+
next_hop1 = '1.1.1.1'
|
|
110
|
+
next_hop2 = '2.2.2.2'
|
|
111
|
+
next_hop3 = '3.3.3.3'
|
|
112
|
+
end
|
|
113
|
+
ii = [['vlan 2', next_hop1],
|
|
114
|
+
[intf.insert(8, ' '), next_hop2],
|
|
115
|
+
['port-channel 100', next_hop3]]
|
|
116
|
+
itd.ingress_interface = ii
|
|
117
|
+
assert_equal(itd.ingress_interface, ii)
|
|
118
|
+
ii = [['vlan 2', ''],
|
|
119
|
+
['port-channel 100', '']]
|
|
120
|
+
itd.ingress_interface = ii
|
|
121
|
+
assert_equal(itd.ingress_interface, ii)
|
|
122
|
+
itd.ingress_interface = itd.default_ingress_interface
|
|
123
|
+
assert_equal(itd.ingress_interface, itd.default_ingress_interface)
|
|
124
|
+
config 'no interface port-channel 100'
|
|
125
|
+
config 'no interface vlan 2'
|
|
126
|
+
config 'no vlan 2'
|
|
127
|
+
config 'no feature interface-vlan'
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def lb_helper(props)
|
|
131
|
+
itd = ItdService.new('new_group')
|
|
132
|
+
test_hash = {
|
|
133
|
+
load_bal_enable: true,
|
|
134
|
+
load_bal_method_bundle_select: itd.default_load_bal_method_bundle_select,
|
|
135
|
+
load_bal_method_bundle_hash: itd.default_load_bal_method_bundle_hash,
|
|
136
|
+
load_bal_method_proto: itd.default_load_bal_method_proto,
|
|
137
|
+
load_bal_buckets: itd.default_load_bal_buckets,
|
|
138
|
+
load_bal_method_end_port: itd.default_load_bal_method_end_port,
|
|
139
|
+
load_bal_method_start_port: itd.default_load_bal_method_start_port,
|
|
140
|
+
}.merge!(props)
|
|
141
|
+
itd.load_balance_set(test_hash)
|
|
142
|
+
itd
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def test_load_balance
|
|
146
|
+
skip_nexus_i2_image?
|
|
147
|
+
itd = lb_helper(load_bal_method_bundle_select: 'src',
|
|
148
|
+
load_bal_method_bundle_hash: 'ip',
|
|
149
|
+
load_bal_buckets: 16,
|
|
150
|
+
load_bal_mask_pos: 4)
|
|
151
|
+
assert_equal(true, itd.load_bal_enable)
|
|
152
|
+
assert_equal(16, itd.load_bal_buckets)
|
|
153
|
+
assert_equal(4, itd.load_bal_mask_pos)
|
|
154
|
+
assert_equal('ip', itd.load_bal_method_bundle_hash)
|
|
155
|
+
assert_equal('src', itd.load_bal_method_bundle_select)
|
|
156
|
+
itd = lb_helper(load_bal_enable: true,
|
|
157
|
+
load_bal_method_bundle_select: 'dst',
|
|
158
|
+
load_bal_method_bundle_hash: 'ip-l4port',
|
|
159
|
+
load_bal_buckets: 128,
|
|
160
|
+
load_bal_mask_pos: 10,
|
|
161
|
+
load_bal_method_end_port: 700,
|
|
162
|
+
load_bal_method_proto: 'tcp',
|
|
163
|
+
load_bal_method_start_port: 200)
|
|
164
|
+
assert_equal(128, itd.load_bal_buckets)
|
|
165
|
+
assert_equal(10, itd.load_bal_mask_pos)
|
|
166
|
+
assert_equal('ip-l4port', itd.load_bal_method_bundle_hash)
|
|
167
|
+
assert_equal('dst', itd.load_bal_method_bundle_select)
|
|
168
|
+
assert_equal(700, itd.load_bal_method_end_port)
|
|
169
|
+
assert_equal(200, itd.load_bal_method_start_port)
|
|
170
|
+
assert_equal('tcp', itd.load_bal_method_proto)
|
|
171
|
+
itd = lb_helper(load_bal_mask_pos: 20)
|
|
172
|
+
assert_equal(itd.default_load_bal_buckets,
|
|
173
|
+
itd.load_bal_buckets)
|
|
174
|
+
assert_equal(20, itd.load_bal_mask_pos)
|
|
175
|
+
assert_equal(itd.default_load_bal_method_bundle_hash,
|
|
176
|
+
itd.load_bal_method_bundle_hash)
|
|
177
|
+
assert_equal(itd.default_load_bal_method_bundle_select,
|
|
178
|
+
itd.load_bal_method_bundle_select)
|
|
179
|
+
assert_equal(itd.default_load_bal_method_end_port,
|
|
180
|
+
itd.load_bal_method_end_port)
|
|
181
|
+
assert_equal(itd.default_load_bal_method_start_port,
|
|
182
|
+
itd.load_bal_method_start_port)
|
|
183
|
+
assert_equal(itd.default_load_bal_method_proto,
|
|
184
|
+
itd.load_bal_method_proto)
|
|
185
|
+
itd = lb_helper(load_bal_enable: true,
|
|
186
|
+
load_bal_buckets: 256)
|
|
187
|
+
assert_equal(256, itd.load_bal_buckets)
|
|
188
|
+
assert_equal(itd.default_load_bal_mask_pos,
|
|
189
|
+
itd.load_bal_mask_pos)
|
|
190
|
+
assert_equal(itd.default_load_bal_method_bundle_hash,
|
|
191
|
+
itd.load_bal_method_bundle_hash)
|
|
192
|
+
assert_equal(itd.default_load_bal_method_bundle_select,
|
|
193
|
+
itd.load_bal_method_bundle_select)
|
|
194
|
+
assert_equal(itd.default_load_bal_method_end_port,
|
|
195
|
+
itd.load_bal_method_end_port)
|
|
196
|
+
assert_equal(itd.default_load_bal_method_start_port,
|
|
197
|
+
itd.load_bal_method_start_port)
|
|
198
|
+
assert_equal(itd.default_load_bal_method_proto,
|
|
199
|
+
itd.load_bal_method_proto)
|
|
200
|
+
itd = lb_helper(load_bal_enable: false)
|
|
201
|
+
assert_equal(itd.load_bal_enable,
|
|
202
|
+
itd.default_load_bal_enable)
|
|
203
|
+
assert_equal(itd.load_bal_buckets, itd.default_load_bal_buckets)
|
|
204
|
+
assert_equal(itd.load_bal_mask_pos, itd.default_load_bal_mask_pos)
|
|
205
|
+
assert_equal(itd.load_bal_method_bundle_hash,
|
|
206
|
+
itd.default_load_bal_method_bundle_hash)
|
|
207
|
+
assert_equal(itd.load_bal_method_bundle_select,
|
|
208
|
+
itd.default_load_bal_method_bundle_select)
|
|
209
|
+
assert_equal(itd.load_bal_method_end_port,
|
|
210
|
+
itd.default_load_bal_method_end_port)
|
|
211
|
+
assert_equal(itd.load_bal_method_start_port,
|
|
212
|
+
itd.default_load_bal_method_start_port)
|
|
213
|
+
assert_equal(itd.load_bal_method_proto,
|
|
214
|
+
itd.default_load_bal_method_proto)
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
def test_nat_destination
|
|
218
|
+
skip_nexus_i2_image?
|
|
219
|
+
itd = ItdService.new('new_group')
|
|
220
|
+
if validate_property_excluded?('itd_service', 'nat_destination')
|
|
221
|
+
assert_nil(itd.nat_destination)
|
|
222
|
+
assert_raises(Cisco::UnsupportedError) do
|
|
223
|
+
itd.nat_destination = false
|
|
224
|
+
end
|
|
225
|
+
return
|
|
226
|
+
end
|
|
227
|
+
itddg = ItdDeviceGroup.new('abc')
|
|
228
|
+
ItdDeviceGroupNode.new(itddg.name, '1.1.1.1', 'ip')
|
|
229
|
+
itd.device_group = 'abc'
|
|
230
|
+
itd.virtual_ip = ['ip 2.2.2.2 255.255.255.0']
|
|
231
|
+
intf = interfaces[0].dup
|
|
232
|
+
new_intf = Interface.new(interfaces[0])
|
|
233
|
+
new_intf.switchport_mode = :disabled
|
|
234
|
+
ii = [[intf.insert(8, ' '), '2.2.2.2']]
|
|
235
|
+
itd.ingress_interface = ii
|
|
236
|
+
itd.nat_destination = true
|
|
237
|
+
assert_equal(true, itd.nat_destination)
|
|
238
|
+
itd.nat_destination = itd.default_nat_destination
|
|
239
|
+
assert_equal(itd.default_nat_destination, itd.nat_destination)
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
def test_shutdown
|
|
243
|
+
skip_nexus_i2_image?
|
|
244
|
+
itd = ItdService.new('new_group')
|
|
245
|
+
itddg = ItdDeviceGroup.new('abc')
|
|
246
|
+
ItdDeviceGroupNode.new(itddg.name, '1.1.1.1', 'ip')
|
|
247
|
+
itd.device_group = 'abc'
|
|
248
|
+
itd.virtual_ip = ['ip 2.2.2.2 255.255.255.0']
|
|
249
|
+
intf = Interface.new(interfaces[0])
|
|
250
|
+
new_intf = Interface.new(interfaces[0])
|
|
251
|
+
new_intf.switchport_mode = :disabled
|
|
252
|
+
intf.switchport_mode = :disabled
|
|
253
|
+
intf_dup = interfaces[0].dup
|
|
254
|
+
ii = [[intf_dup.insert(8, ' '), '2.2.2.2']]
|
|
255
|
+
itd.ingress_interface = ii
|
|
256
|
+
itd.shutdown = false
|
|
257
|
+
assert_equal(false, itd.shutdown)
|
|
258
|
+
itd.shutdown = itd.default_shutdown
|
|
259
|
+
assert_equal(itd.default_shutdown,
|
|
260
|
+
itd.shutdown)
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
def test_peer_vdc
|
|
264
|
+
skip_nexus_i2_image?
|
|
265
|
+
itd = ItdService.new('new_group')
|
|
266
|
+
parray = %w(vdc1 ser1)
|
|
267
|
+
if validate_property_excluded?('itd_service', 'peer_vdc')
|
|
268
|
+
assert_nil(itd.peer_vdc)
|
|
269
|
+
assert_raises(Cisco::UnsupportedError) do
|
|
270
|
+
itd.peer_vdc = parray
|
|
271
|
+
end
|
|
272
|
+
return
|
|
273
|
+
end
|
|
274
|
+
itd.peer_vdc = parray
|
|
275
|
+
assert_equal(parray, itd.peer_vdc)
|
|
276
|
+
itd.peer_vdc = itd.default_peer_vdc
|
|
277
|
+
assert_equal(itd.default_peer_vdc,
|
|
278
|
+
itd.peer_vdc)
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
def test_peer_local
|
|
282
|
+
skip_nexus_i2_image?
|
|
283
|
+
itd = ItdService.new('new_group')
|
|
284
|
+
service = 'ser1'
|
|
285
|
+
if validate_property_excluded?('itd_service', 'peer_local')
|
|
286
|
+
assert_nil(itd.peer_local)
|
|
287
|
+
assert_raises(Cisco::UnsupportedError) do
|
|
288
|
+
itd.peer_local = service
|
|
289
|
+
end
|
|
290
|
+
return
|
|
291
|
+
end
|
|
292
|
+
itd.peer_local = service
|
|
293
|
+
assert_equal(service, itd.peer_local)
|
|
294
|
+
itd.peer_local = itd.default_peer_local
|
|
295
|
+
assert_equal(itd.default_peer_local,
|
|
296
|
+
itd.peer_local)
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
def test_virtual_ip
|
|
300
|
+
skip_nexus_i2_image?
|
|
301
|
+
itd = ItdService.new('new_group')
|
|
302
|
+
ItdDeviceGroup.new('myGroup1')
|
|
303
|
+
ItdDeviceGroup.new('myGroup2')
|
|
304
|
+
values = ['ip 1.1.1.1 255.255.255.0 tcp 2000 advertise enable',
|
|
305
|
+
'ip 2.2.2.2 255.0.0.0 udp 1000 device-group myGroup1',
|
|
306
|
+
'ip 3.3.3.3 255.0.255.0 device-group myGroup2']
|
|
307
|
+
itd.virtual_ip = values
|
|
308
|
+
assert_equal(itd.virtual_ip,
|
|
309
|
+
values)
|
|
310
|
+
itd.virtual_ip = itd.default_virtual_ip
|
|
311
|
+
assert_equal(itd.virtual_ip,
|
|
312
|
+
itd.default_virtual_ip)
|
|
313
|
+
end
|
|
314
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# January 2015, Jie Yang
|
|
2
|
+
#
|
|
3
|
+
# Copyright (c) 2015 Cisco and/or its affiliates.
|
|
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
|
+
require_relative 'basetest'
|
|
18
|
+
require_relative '../lib/cisco_node_utils/logger'
|
|
19
|
+
|
|
20
|
+
# TestLogger - unit tests for Cisco::Logger module
|
|
21
|
+
class TestLogger < TestCase
|
|
22
|
+
def test_logger_methods
|
|
23
|
+
assert(defined?(Cisco::Logger.debug), 'debug method not defined')
|
|
24
|
+
assert(defined?(Cisco::Logger.info), 'info method not defined')
|
|
25
|
+
assert(defined?(Cisco::Logger.warn), 'warning method not defined')
|
|
26
|
+
assert(defined?(Cisco::Logger.error), 'error method not defined')
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Due to current limitation of minitest, the following test case actually
|
|
30
|
+
# will never fail. But it will print out all the messages that the tested
|
|
31
|
+
# functions are supposed to print. So I still keep this test here
|
|
32
|
+
def test_default_logger_output
|
|
33
|
+
level = Cisco::Logger.level
|
|
34
|
+
Cisco::Logger.level = Logger::DEBUG
|
|
35
|
+
assert_equal(Logger::DEBUG, Cisco::Logger.level)
|
|
36
|
+
assert_output { Cisco::Logger.debug('Test default debug output') }
|
|
37
|
+
assert_output { Cisco::Logger.info('Test default info output') }
|
|
38
|
+
assert_output { Cisco::Logger.warn('Test default warn output') }
|
|
39
|
+
assert_output { Cisco::Logger.error('Test default error output') }
|
|
40
|
+
Cisco::Logger.level = level
|
|
41
|
+
assert_equal(level, Cisco::Logger.level)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Minitest for NameServer class
|
|
3
|
+
#
|
|
4
|
+
# Copyright (c) 2014-2016 Cisco and/or its affiliates.
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
|
|
18
|
+
require_relative 'ciscotest'
|
|
19
|
+
require_relative '../lib/cisco_node_utils/name_server'
|
|
20
|
+
|
|
21
|
+
# TestNameServer - Minitest for NameServer node utility.
|
|
22
|
+
class TestNameServer < CiscoTestCase
|
|
23
|
+
@skip_unless_supported = 'dnsclient'
|
|
24
|
+
|
|
25
|
+
def setup
|
|
26
|
+
# setup runs at the beginning of each test
|
|
27
|
+
super
|
|
28
|
+
@backup_resolve = backup_resolv_file
|
|
29
|
+
no_nameserver_google
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def teardown
|
|
33
|
+
# teardown runs at the end of each test
|
|
34
|
+
no_nameserver_google
|
|
35
|
+
restore_resolv_file(@backup_resolve)
|
|
36
|
+
super
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def no_nameserver_google
|
|
40
|
+
# Turn the feature off for a clean test.
|
|
41
|
+
if platform == :ios_xr
|
|
42
|
+
config('no domain name-server 7.7.7.7',
|
|
43
|
+
'no domain name-server 2001:4860:4860::7777')
|
|
44
|
+
else
|
|
45
|
+
config('no ip name-server 7.7.7.7',
|
|
46
|
+
'no ip name-server 2001:4860:4860::7777')
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# TESTS
|
|
51
|
+
|
|
52
|
+
def test_ipv4
|
|
53
|
+
id = '7.7.7.7'
|
|
54
|
+
refute_includes(Cisco::NameServer.nameservers, id)
|
|
55
|
+
|
|
56
|
+
ns = Cisco::NameServer.new(id)
|
|
57
|
+
assert_includes(Cisco::NameServer.nameservers, id)
|
|
58
|
+
assert_equal(Cisco::NameServer.nameservers[id], ns)
|
|
59
|
+
|
|
60
|
+
ns.destroy
|
|
61
|
+
refute_includes(Cisco::NameServer.nameservers, id)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_ipv6
|
|
65
|
+
id = '2001:4860:4860::7777'
|
|
66
|
+
refute_includes(Cisco::NameServer.nameservers, id)
|
|
67
|
+
|
|
68
|
+
ns = Cisco::NameServer.new(id)
|
|
69
|
+
assert_includes(Cisco::NameServer.nameservers, id)
|
|
70
|
+
assert_equal(Cisco::NameServer.nameservers[id], ns)
|
|
71
|
+
|
|
72
|
+
ns.destroy
|
|
73
|
+
refute_includes(Cisco::NameServer.nameservers, id)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def test_multiple
|
|
77
|
+
id1 = '7.7.7.7'
|
|
78
|
+
id2 = '2001:4860:4860::7777'
|
|
79
|
+
refute_includes(Cisco::NameServer.nameservers, id1)
|
|
80
|
+
refute_includes(Cisco::NameServer.nameservers, id2)
|
|
81
|
+
|
|
82
|
+
ns1 = Cisco::NameServer.new(id1)
|
|
83
|
+
ns2 = Cisco::NameServer.new(id2)
|
|
84
|
+
assert_includes(Cisco::NameServer.nameservers, id1)
|
|
85
|
+
assert_includes(Cisco::NameServer.nameservers, id2)
|
|
86
|
+
assert_equal(Cisco::NameServer.nameservers[id1], ns1)
|
|
87
|
+
assert_equal(Cisco::NameServer.nameservers[id2], ns2)
|
|
88
|
+
|
|
89
|
+
ns1.destroy
|
|
90
|
+
ns2.destroy
|
|
91
|
+
refute_includes(Cisco::NameServer.nameservers, id1)
|
|
92
|
+
refute_includes(Cisco::NameServer.nameservers, id2)
|
|
93
|
+
end
|
|
94
|
+
end
|
data/tests/test_node.rb
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Copyright (c) 2013-2016 Cisco and/or its affiliates.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
require_relative 'basetest'
|
|
16
|
+
|
|
17
|
+
require_relative '../lib/cisco_node_utils/node'
|
|
18
|
+
require_relative '../lib/cisco_node_utils/command_reference'
|
|
19
|
+
|
|
20
|
+
include Cisco
|
|
21
|
+
|
|
22
|
+
# TestNode - Minitest for core functionality of Node class
|
|
23
|
+
class TestNode < TestCase
|
|
24
|
+
def setup
|
|
25
|
+
super
|
|
26
|
+
# Clear out the environment so we have control over which parameters
|
|
27
|
+
# we provide to Node to connect with.
|
|
28
|
+
Node.instance_variable_set(:@instance, nil)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_connect_no_environment
|
|
32
|
+
environment = Node::Environment.default_environment_name
|
|
33
|
+
Node::Environment.default_environment_name = '!@#$&@#$' # nonexistent
|
|
34
|
+
# No UDS present on the test host, so default environment fails to connect
|
|
35
|
+
assert_raises(Cisco::ConnectionRefused) do
|
|
36
|
+
Node.new
|
|
37
|
+
end
|
|
38
|
+
assert_raises(Cisco::ConnectionRefused) do
|
|
39
|
+
Node.instance
|
|
40
|
+
end
|
|
41
|
+
ensure
|
|
42
|
+
Node::Environment.default_environment_name = environment
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_singleton
|
|
46
|
+
node = Node.instance
|
|
47
|
+
node2 = Node.instance
|
|
48
|
+
assert_equal(node, node2)
|
|
49
|
+
end
|
|
50
|
+
end
|