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.
Files changed (357) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +96 -0
  5. data/.travis.yml +17 -0
  6. data/CHANGELOG.md +676 -0
  7. data/CONTRIBUTING.md +43 -0
  8. data/Gemfile +10 -0
  9. data/LICENSE +201 -0
  10. data/README.md +246 -0
  11. data/Rakefile +44 -0
  12. data/SUPPORT.md +3 -0
  13. data/bin/.rubocop.yml +18 -0
  14. data/bin/check_metric_limits.rb +109 -0
  15. data/bin/git/hooks/commit-msg/enforce_style +89 -0
  16. data/bin/git/hooks/hook_lib +115 -0
  17. data/bin/git/hooks/hooks-wrapper +38 -0
  18. data/bin/git/hooks/post-flow-hotfix-start/update-version +24 -0
  19. data/bin/git/hooks/post-flow-release-finish/update-version +29 -0
  20. data/bin/git/hooks/post-flow-release-start/update-version +19 -0
  21. data/bin/git/hooks/post-merge/update-hooks +6 -0
  22. data/bin/git/hooks/post-rewrite/update-hooks +6 -0
  23. data/bin/git/hooks/pre-commit/check_unstaged_changes +18 -0
  24. data/bin/git/hooks/pre-commit/rubocop +25 -0
  25. data/bin/git/hooks/pre-commit/validate-diffs +45 -0
  26. data/bin/git/hooks/pre-commit/validate-yaml +18 -0
  27. data/bin/git/hooks/pre-push/check-changelog +24 -0
  28. data/bin/git/hooks/pre-push/rubocop +7 -0
  29. data/bin/git/update-hooks +123 -0
  30. data/bin/show_running_yang.rb +233 -0
  31. data/cisco_node_utils.gemspec +41 -0
  32. data/docs/README-develop-best-practices.md +521 -0
  33. data/docs/README-develop-node-utils-APIs.md +570 -0
  34. data/docs/README-maintainers.md +77 -0
  35. data/docs/README-test-execution.md +57 -0
  36. data/docs/README-utilities.md +14 -0
  37. data/docs/agent_files.png +0 -0
  38. data/docs/cisco_node_utils.yaml.example +36 -0
  39. data/docs/template-router.rb +123 -0
  40. data/docs/template-test_router.rb +104 -0
  41. data/ext/mkrf_conf.rb +63 -0
  42. data/lib/.rubocop.yml +18 -0
  43. data/lib/cisco_node_utils/aaa_authentication_login.rb +95 -0
  44. data/lib/cisco_node_utils/aaa_authentication_login_service.rb +138 -0
  45. data/lib/cisco_node_utils/aaa_authorization_service.rb +156 -0
  46. data/lib/cisco_node_utils/ace.rb +467 -0
  47. data/lib/cisco_node_utils/acl.rb +101 -0
  48. data/lib/cisco_node_utils/banner.rb +63 -0
  49. data/lib/cisco_node_utils/bfd_global.rb +305 -0
  50. data/lib/cisco_node_utils/bgp.rb +988 -0
  51. data/lib/cisco_node_utils/bgp_af.rb +545 -0
  52. data/lib/cisco_node_utils/bgp_af_aggr_addr.rb +207 -0
  53. data/lib/cisco_node_utils/bgp_neighbor.rb +527 -0
  54. data/lib/cisco_node_utils/bgp_neighbor_af.rb +780 -0
  55. data/lib/cisco_node_utils/bridge_domain.rb +178 -0
  56. data/lib/cisco_node_utils/bridge_domain_vni.rb +206 -0
  57. data/lib/cisco_node_utils/cisco_cmn_utils.rb +444 -0
  58. data/lib/cisco_node_utils/client/client.rb +238 -0
  59. data/lib/cisco_node_utils/client/grpc/client.rb +395 -0
  60. data/lib/cisco_node_utils/client/grpc/ems.proto +148 -0
  61. data/lib/cisco_node_utils/client/grpc/ems.rb +111 -0
  62. data/lib/cisco_node_utils/client/grpc/ems_services.rb +49 -0
  63. data/lib/cisco_node_utils/client/grpc.rb +33 -0
  64. data/lib/cisco_node_utils/client/nxapi/client.rb +368 -0
  65. data/lib/cisco_node_utils/client/nxapi.rb +31 -0
  66. data/lib/cisco_node_utils/client/utils.rb +180 -0
  67. data/lib/cisco_node_utils/client.rb +35 -0
  68. data/lib/cisco_node_utils/cmd_ref/README_YAML.md +590 -0
  69. data/lib/cisco_node_utils/cmd_ref/aaa_auth_login_service.yaml +25 -0
  70. data/lib/cisco_node_utils/cmd_ref/aaa_authentication_login.yaml +38 -0
  71. data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +40 -0
  72. data/lib/cisco_node_utils/cmd_ref/acl.yaml +48 -0
  73. data/lib/cisco_node_utils/cmd_ref/banner.yaml +11 -0
  74. data/lib/cisco_node_utils/cmd_ref/bfd_global.yaml +117 -0
  75. data/lib/cisco_node_utils/cmd_ref/bgp.yaml +383 -0
  76. data/lib/cisco_node_utils/cmd_ref/bgp_af.yaml +223 -0
  77. data/lib/cisco_node_utils/cmd_ref/bgp_af_aa.yaml +38 -0
  78. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +174 -0
  79. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +236 -0
  80. data/lib/cisco_node_utils/cmd_ref/bridge_domain.yaml +49 -0
  81. data/lib/cisco_node_utils/cmd_ref/bridge_domain_vni.yaml +33 -0
  82. data/lib/cisco_node_utils/cmd_ref/dhcp_relay_global.yaml +128 -0
  83. data/lib/cisco_node_utils/cmd_ref/dnsclient.yaml +55 -0
  84. data/lib/cisco_node_utils/cmd_ref/encapsulation.yaml +25 -0
  85. data/lib/cisco_node_utils/cmd_ref/evpn_multicast.yaml +12 -0
  86. data/lib/cisco_node_utils/cmd_ref/evpn_multisite.yaml +18 -0
  87. data/lib/cisco_node_utils/cmd_ref/evpn_stormcontrol.yaml +18 -0
  88. data/lib/cisco_node_utils/cmd_ref/evpn_vni.yaml +48 -0
  89. data/lib/cisco_node_utils/cmd_ref/fabricpath.yaml +183 -0
  90. data/lib/cisco_node_utils/cmd_ref/fabricpath_topology.yaml +40 -0
  91. data/lib/cisco_node_utils/cmd_ref/feature.yaml +126 -0
  92. data/lib/cisco_node_utils/cmd_ref/hostname.yaml +8 -0
  93. data/lib/cisco_node_utils/cmd_ref/hsrp_global.yaml +25 -0
  94. data/lib/cisco_node_utils/cmd_ref/images.yaml +8 -0
  95. data/lib/cisco_node_utils/cmd_ref/interface.yaml +781 -0
  96. data/lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml +45 -0
  97. data/lib/cisco_node_utils/cmd_ref/interface_evpn_multisite.yaml +17 -0
  98. data/lib/cisco_node_utils/cmd_ref/interface_hsrp_group.yaml +120 -0
  99. data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +112 -0
  100. data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +87 -0
  101. data/lib/cisco_node_utils/cmd_ref/interface_service_vni.yaml +42 -0
  102. data/lib/cisco_node_utils/cmd_ref/inventory.yaml +45 -0
  103. data/lib/cisco_node_utils/cmd_ref/ip_multicast.yaml +22 -0
  104. data/lib/cisco_node_utils/cmd_ref/itd_device_group.yaml +83 -0
  105. data/lib/cisco_node_utils/cmd_ref/itd_service.yaml +119 -0
  106. data/lib/cisco_node_utils/cmd_ref/memory.yaml +24 -0
  107. data/lib/cisco_node_utils/cmd_ref/ntp_auth_key.yaml +10 -0
  108. data/lib/cisco_node_utils/cmd_ref/ntp_config.yaml +27 -0
  109. data/lib/cisco_node_utils/cmd_ref/ntp_server.yaml +34 -0
  110. data/lib/cisco_node_utils/cmd_ref/object_group.yaml +32 -0
  111. data/lib/cisco_node_utils/cmd_ref/ospf.yaml +91 -0
  112. data/lib/cisco_node_utils/cmd_ref/ospf_area.yaml +91 -0
  113. data/lib/cisco_node_utils/cmd_ref/ospf_area_vlink.yaml +88 -0
  114. data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +37 -0
  115. data/lib/cisco_node_utils/cmd_ref/pim.yaml +43 -0
  116. data/lib/cisco_node_utils/cmd_ref/portchannel_global.yaml +86 -0
  117. data/lib/cisco_node_utils/cmd_ref/radius_global.yaml +37 -0
  118. data/lib/cisco_node_utils/cmd_ref/radius_server.yaml +100 -0
  119. data/lib/cisco_node_utils/cmd_ref/radius_server_group.yaml +19 -0
  120. data/lib/cisco_node_utils/cmd_ref/route_map.yaml +601 -0
  121. data/lib/cisco_node_utils/cmd_ref/show_system.yaml +9 -0
  122. data/lib/cisco_node_utils/cmd_ref/show_version.yaml +84 -0
  123. data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +81 -0
  124. data/lib/cisco_node_utils/cmd_ref/snmp_group.yaml +9 -0
  125. data/lib/cisco_node_utils/cmd_ref/snmp_notification_receiver.yaml +74 -0
  126. data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +91 -0
  127. data/lib/cisco_node_utils/cmd_ref/snmp_user.yaml +57 -0
  128. data/lib/cisco_node_utils/cmd_ref/snmpnotification.yaml +23 -0
  129. data/lib/cisco_node_utils/cmd_ref/span_session.yaml +65 -0
  130. data/lib/cisco_node_utils/cmd_ref/stp_global.yaml +235 -0
  131. data/lib/cisco_node_utils/cmd_ref/syslog_facility.yaml +10 -0
  132. data/lib/cisco_node_utils/cmd_ref/syslog_server.yaml +34 -0
  133. data/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml +45 -0
  134. data/lib/cisco_node_utils/cmd_ref/system.yaml +7 -0
  135. data/lib/cisco_node_utils/cmd_ref/tacacs_global.yaml +37 -0
  136. data/lib/cisco_node_utils/cmd_ref/tacacs_server.yaml +63 -0
  137. data/lib/cisco_node_utils/cmd_ref/tacacs_server_group.yaml +45 -0
  138. data/lib/cisco_node_utils/cmd_ref/tacacs_server_host.yaml +64 -0
  139. data/lib/cisco_node_utils/cmd_ref/upgrade.yaml +38 -0
  140. data/lib/cisco_node_utils/cmd_ref/vdc.yaml +52 -0
  141. data/lib/cisco_node_utils/cmd_ref/virtual_service.yaml +8 -0
  142. data/lib/cisco_node_utils/cmd_ref/vlan.yaml +106 -0
  143. data/lib/cisco_node_utils/cmd_ref/vpc.yaml +233 -0
  144. data/lib/cisco_node_utils/cmd_ref/vrf.yaml +86 -0
  145. data/lib/cisco_node_utils/cmd_ref/vrf_af.yaml +139 -0
  146. data/lib/cisco_node_utils/cmd_ref/vtp.yaml +32 -0
  147. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +114 -0
  148. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +71 -0
  149. data/lib/cisco_node_utils/cmd_ref/yang.yaml +7 -0
  150. data/lib/cisco_node_utils/cmd_ref/yum.yaml +68 -0
  151. data/lib/cisco_node_utils/command_reference.rb +724 -0
  152. data/lib/cisco_node_utils/configparser_lib.rb +195 -0
  153. data/lib/cisco_node_utils/constants.rb +40 -0
  154. data/lib/cisco_node_utils/dhcp_relay_global.rb +302 -0
  155. data/lib/cisco_node_utils/dns_domain.rb +93 -0
  156. data/lib/cisco_node_utils/domain_name.rb +82 -0
  157. data/lib/cisco_node_utils/encapsulation.rb +112 -0
  158. data/lib/cisco_node_utils/environment.rb +110 -0
  159. data/lib/cisco_node_utils/evpn_multicast.rb +66 -0
  160. data/lib/cisco_node_utils/evpn_multisite.rb +96 -0
  161. data/lib/cisco_node_utils/evpn_stormcontrol.rb +84 -0
  162. data/lib/cisco_node_utils/evpn_vni.rb +159 -0
  163. data/lib/cisco_node_utils/exceptions.rb +140 -0
  164. data/lib/cisco_node_utils/fabricpath_global.rb +405 -0
  165. data/lib/cisco_node_utils/fabricpath_topology.rb +137 -0
  166. data/lib/cisco_node_utils/feature.rb +377 -0
  167. data/lib/cisco_node_utils/hostname.rb +62 -0
  168. data/lib/cisco_node_utils/hsrp_global.rb +97 -0
  169. data/lib/cisco_node_utils/interface.rb +2128 -0
  170. data/lib/cisco_node_utils/interface_channel_group.rb +142 -0
  171. data/lib/cisco_node_utils/interface_evpn_multisite.rb +72 -0
  172. data/lib/cisco_node_utils/interface_hsrp_group.rb +557 -0
  173. data/lib/cisco_node_utils/interface_ospf.rb +378 -0
  174. data/lib/cisco_node_utils/interface_portchannel.rb +180 -0
  175. data/lib/cisco_node_utils/interface_service_vni.rb +132 -0
  176. data/lib/cisco_node_utils/ip_multicast.rb +90 -0
  177. data/lib/cisco_node_utils/itd_device_group.rb +228 -0
  178. data/lib/cisco_node_utils/itd_device_group_node.rb +144 -0
  179. data/lib/cisco_node_utils/itd_service.rb +511 -0
  180. data/lib/cisco_node_utils/logger.rb +78 -0
  181. data/lib/cisco_node_utils/name_server.rb +64 -0
  182. data/lib/cisco_node_utils/node.rb +443 -0
  183. data/lib/cisco_node_utils/node_util.rb +111 -0
  184. data/lib/cisco_node_utils/ntp_auth_key.rb +67 -0
  185. data/lib/cisco_node_utils/ntp_config.rb +83 -0
  186. data/lib/cisco_node_utils/ntp_server.rb +86 -0
  187. data/lib/cisco_node_utils/object_group.rb +75 -0
  188. data/lib/cisco_node_utils/object_group_entry.rb +143 -0
  189. data/lib/cisco_node_utils/overlay_global.rb +142 -0
  190. data/lib/cisco_node_utils/pim.rb +131 -0
  191. data/lib/cisco_node_utils/pim_group_list.rb +109 -0
  192. data/lib/cisco_node_utils/pim_rp_address.rb +103 -0
  193. data/lib/cisco_node_utils/platform.rb +217 -0
  194. data/lib/cisco_node_utils/portchannel_global.rb +347 -0
  195. data/lib/cisco_node_utils/radius_global.rb +165 -0
  196. data/lib/cisco_node_utils/radius_server.rb +421 -0
  197. data/lib/cisco_node_utils/radius_server_group.rb +117 -0
  198. data/lib/cisco_node_utils/route_map.rb +2540 -0
  199. data/lib/cisco_node_utils/router_ospf.rb +77 -0
  200. data/lib/cisco_node_utils/router_ospf_area.rb +416 -0
  201. data/lib/cisco_node_utils/router_ospf_area_vlink.rb +313 -0
  202. data/lib/cisco_node_utils/router_ospf_vrf.rb +342 -0
  203. data/lib/cisco_node_utils/snmp_notification_receiver.rb +176 -0
  204. data/lib/cisco_node_utils/snmpcommunity.rb +109 -0
  205. data/lib/cisco_node_utils/snmpgroup.rb +54 -0
  206. data/lib/cisco_node_utils/snmpnotification.rb +57 -0
  207. data/lib/cisco_node_utils/snmpserver.rb +132 -0
  208. data/lib/cisco_node_utils/snmpuser.rb +403 -0
  209. data/lib/cisco_node_utils/span_session.rb +149 -0
  210. data/lib/cisco_node_utils/stp_global.rb +676 -0
  211. data/lib/cisco_node_utils/syslog_facility.rb +64 -0
  212. data/lib/cisco_node_utils/syslog_server.rb +146 -0
  213. data/lib/cisco_node_utils/syslog_settings.rb +174 -0
  214. data/lib/cisco_node_utils/tacacs_global.rb +137 -0
  215. data/lib/cisco_node_utils/tacacs_server.rb +173 -0
  216. data/lib/cisco_node_utils/tacacs_server_group.rb +149 -0
  217. data/lib/cisco_node_utils/tacacs_server_host.rb +216 -0
  218. data/lib/cisco_node_utils/upgrade.rb +122 -0
  219. data/lib/cisco_node_utils/vdc.rb +118 -0
  220. data/lib/cisco_node_utils/version.rb +21 -0
  221. data/lib/cisco_node_utils/vlan.rb +301 -0
  222. data/lib/cisco_node_utils/vpc.rb +466 -0
  223. data/lib/cisco_node_utils/vrf.rb +192 -0
  224. data/lib/cisco_node_utils/vrf_af.rb +327 -0
  225. data/lib/cisco_node_utils/vtp.rb +125 -0
  226. data/lib/cisco_node_utils/vxlan_vtep.rb +286 -0
  227. data/lib/cisco_node_utils/vxlan_vtep_vni.rb +331 -0
  228. data/lib/cisco_node_utils/yang.rb +160 -0
  229. data/lib/cisco_node_utils/yum.rb +213 -0
  230. data/lib/cisco_node_utils.rb +21 -0
  231. data/lib/minitest/environment_plugin.rb +31 -0
  232. data/lib/minitest/log_level_plugin.rb +41 -0
  233. data/spec/client_spec.rb +7 -0
  234. data/spec/environment_spec.rb +384 -0
  235. data/spec/grpc_client_spec.rb +23 -0
  236. data/spec/isolate/all_clients_spec.rb +9 -0
  237. data/spec/isolate/grpc_only_spec.rb +16 -0
  238. data/spec/isolate/no_clients_spec.rb +26 -0
  239. data/spec/isolate/nxapi_only_spec.rb +16 -0
  240. data/spec/nxapi_client_spec.rb +42 -0
  241. data/spec/schema.yaml +82 -0
  242. data/spec/shared_examples_for_clients.rb +14 -0
  243. data/spec/spec_helper.rb +91 -0
  244. data/spec/whitespace_spec.rb +10 -0
  245. data/spec/yaml_spec.rb +42 -0
  246. data/tests/.rubocop.yml +18 -0
  247. data/tests/CSCuxdublin-1.0.0-7.0.3.I3.1.lib32_n9000.rpm +0 -0
  248. data/tests/basetest.rb +243 -0
  249. data/tests/ciscotest.rb +577 -0
  250. data/tests/cmd_config.yaml +75 -0
  251. data/tests/cmd_config_invalid.yaml +16 -0
  252. data/tests/n9000_sample-1.0.0-7.0.3.x86_64.rpm +0 -0
  253. data/tests/noop.rb +7 -0
  254. data/tests/platform_info.rb +63 -0
  255. data/tests/tacacs_server.yaml.example +6 -0
  256. data/tests/test_aaa_authentication_login.rb +243 -0
  257. data/tests/test_aaa_authentication_login_service.rb +761 -0
  258. data/tests/test_aaa_authorization_service.rb +874 -0
  259. data/tests/test_ace.rb +304 -0
  260. data/tests/test_acl.rb +185 -0
  261. data/tests/test_banner.rb +85 -0
  262. data/tests/test_bfd_global.rb +272 -0
  263. data/tests/test_bgp_af.rb +875 -0
  264. data/tests/test_bgp_af_aa.rb +108 -0
  265. data/tests/test_bgp_neighbor.rb +596 -0
  266. data/tests/test_bgp_neighbor_af.rb +781 -0
  267. data/tests/test_bridge_domain.rb +198 -0
  268. data/tests/test_bridge_domain_vni.rb +109 -0
  269. data/tests/test_client_utils.rb +111 -0
  270. data/tests/test_cmn_utils.rb +76 -0
  271. data/tests/test_command_config.rb +206 -0
  272. data/tests/test_command_reference.rb +669 -0
  273. data/tests/test_dhcp_relay_global.rb +286 -0
  274. data/tests/test_dns_domain.rb +123 -0
  275. data/tests/test_domain_name.rb +96 -0
  276. data/tests/test_encapsulation.rb +75 -0
  277. data/tests/test_evpn_multicast.rb +65 -0
  278. data/tests/test_evpn_multisite.rb +70 -0
  279. data/tests/test_evpn_stormcontrol.rb +56 -0
  280. data/tests/test_evpn_vni.rb +131 -0
  281. data/tests/test_fabricpath_global.rb +246 -0
  282. data/tests/test_fabricpath_topology.rb +77 -0
  283. data/tests/test_feature.rb +272 -0
  284. data/tests/test_grpc.rb +166 -0
  285. data/tests/test_hostname.rb +64 -0
  286. data/tests/test_hsrp_global.rb +79 -0
  287. data/tests/test_interface.rb +1958 -0
  288. data/tests/test_interface_bdi.rb +80 -0
  289. data/tests/test_interface_channel_group.rb +131 -0
  290. data/tests/test_interface_evpn_multisite.rb +94 -0
  291. data/tests/test_interface_hsrp.rb +134 -0
  292. data/tests/test_interface_hsrp_group.rb +570 -0
  293. data/tests/test_interface_ospf.rb +820 -0
  294. data/tests/test_interface_portchannel.rb +135 -0
  295. data/tests/test_interface_private_vlan.rb +365 -0
  296. data/tests/test_interface_service_vni.rb +203 -0
  297. data/tests/test_interface_svi.rb +210 -0
  298. data/tests/test_interface_switchport.rb +468 -0
  299. data/tests/test_ip_multicast.rb +80 -0
  300. data/tests/test_itd_device_group.rb +145 -0
  301. data/tests/test_itd_device_group_node.rb +199 -0
  302. data/tests/test_itd_service.rb +314 -0
  303. data/tests/test_logger.rb +43 -0
  304. data/tests/test_name_server.rb +94 -0
  305. data/tests/test_node.rb +50 -0
  306. data/tests/test_node_ext.rb +406 -0
  307. data/tests/test_node_util.rb +119 -0
  308. data/tests/test_ntp_auth_key.rb +77 -0
  309. data/tests/test_ntp_config.rb +100 -0
  310. data/tests/test_ntp_server.rb +146 -0
  311. data/tests/test_nxapi.rb +236 -0
  312. data/tests/test_object_group.rb +122 -0
  313. data/tests/test_overlay_global.rb +108 -0
  314. data/tests/test_pim.rb +203 -0
  315. data/tests/test_pim_group_list.rb +147 -0
  316. data/tests/test_pim_rp_address.rb +155 -0
  317. data/tests/test_platform.rb +254 -0
  318. data/tests/test_portchannel_global.rb +322 -0
  319. data/tests/test_radius_global.rb +108 -0
  320. data/tests/test_radius_server.rb +377 -0
  321. data/tests/test_radius_server_group.rb +151 -0
  322. data/tests/test_route_map.rb +1479 -0
  323. data/tests/test_router_bgp.rb +1325 -0
  324. data/tests/test_router_ospf.rb +56 -0
  325. data/tests/test_router_ospf_area.rb +433 -0
  326. data/tests/test_router_ospf_area_vlink.rb +298 -0
  327. data/tests/test_router_ospf_vrf.rb +690 -0
  328. data/tests/test_snmp_notification_receiver.rb +169 -0
  329. data/tests/test_snmpcommunity.rb +422 -0
  330. data/tests/test_snmpgroup.rb +71 -0
  331. data/tests/test_snmpnotification.rb +91 -0
  332. data/tests/test_snmpserver.rb +251 -0
  333. data/tests/test_snmpuser.rb +666 -0
  334. data/tests/test_span_session.rb +155 -0
  335. data/tests/test_stp_global.rb +575 -0
  336. data/tests/test_syslog_facility.rb +80 -0
  337. data/tests/test_syslog_server.rb +119 -0
  338. data/tests/test_syslog_settings.rb +123 -0
  339. data/tests/test_tacacs_global.rb +109 -0
  340. data/tests/test_tacacs_server.rb +436 -0
  341. data/tests/test_tacacs_server_group.rb +434 -0
  342. data/tests/test_tacacs_server_host.rb +427 -0
  343. data/tests/test_upgrade.rb +105 -0
  344. data/tests/test_vdc.rb +64 -0
  345. data/tests/test_vlan.rb +386 -0
  346. data/tests/test_vlan_private.rb +656 -0
  347. data/tests/test_vpc.rb +548 -0
  348. data/tests/test_vrf.rb +248 -0
  349. data/tests/test_vrf_af.rb +288 -0
  350. data/tests/test_vtp.rb +278 -0
  351. data/tests/test_vxlan_vtep.rb +327 -0
  352. data/tests/test_vxlan_vtep_vni.rb +326 -0
  353. data/tests/test_yang.rb +369 -0
  354. data/tests/test_yum.rb +109 -0
  355. data/tests/upgrade_info.yaml.example +3 -0
  356. data/tests/yum_package.yaml +94 -0
  357. metadata +534 -0
@@ -0,0 +1,56 @@
1
+ # Copyright (c) 2014-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/router_ospf'
17
+
18
+ # TestRouterOspf - Minitest for the RouterOspf node utility class.
19
+ class TestRouterOspf < CiscoTestCase
20
+ @skip_unless_supported = 'ospf'
21
+
22
+ def setup
23
+ super
24
+ remove_all_ospfs
25
+ end
26
+
27
+ def test_create_destroy
28
+ assert_empty(RouterOspf.routers, 'RouterOspf.routers should be empty')
29
+
30
+ # Create two ospf instances
31
+ o1_name = 'ospf1'
32
+ o1 = RouterOspf.new(o1_name)
33
+ assert(RouterOspf.routers[o1_name],
34
+ "router ospf #{o1_name} not present")
35
+ assert_equal(o1_name, o1.name)
36
+
37
+ o2_name = 'ospf2'
38
+ o2 = RouterOspf.new(o2_name)
39
+ assert(RouterOspf.routers[o2_name],
40
+ "router ospf #{o2_name} not present")
41
+
42
+ # Destroy each in turn
43
+ o1.destroy
44
+ assert_nil(RouterOspf.routers[o1_name],
45
+ "router ospf #{o1_name} still present")
46
+ assert(RouterOspf.routers[o2_name],
47
+ "router ospf #{o2_name} not present")
48
+
49
+ o2.destroy
50
+ assert_nil(RouterOspf.routers[o2_name],
51
+ "router ospf #{o2_name} still present")
52
+
53
+ # Negative
54
+ assert_raises(ArgumentError) { RouterOspf.new('') }
55
+ end
56
+ end
@@ -0,0 +1,433 @@
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/router_ospf'
17
+ require_relative '../lib/cisco_node_utils/router_ospf_vrf'
18
+ require_relative '../lib/cisco_node_utils/router_ospf_area'
19
+
20
+ # TestRouterOspfArea - Minitest for RouterOspfArea node utility class
21
+ class TestRouterOspfArea < CiscoTestCase
22
+ @skip_unless_supported = 'ospf_area'
23
+ @@pre_clean_needed = true # rubocop:disable Style/ClassVars
24
+
25
+ def setup
26
+ super
27
+ remove_all_ospfs if @@pre_clean_needed
28
+ @@pre_clean_needed = false # rubocop:disable Style/ClassVars
29
+ end
30
+
31
+ def teardown
32
+ remove_all_ospfs
33
+ config 'no feature ospf'
34
+ super
35
+ end
36
+
37
+ def create_routerospfarea_default(router='Wolfpack', name='default',
38
+ area_id='1.1.1.1')
39
+ RouterOspfArea.new(router, name, area_id)
40
+ end
41
+
42
+ def create_routerospfarea_vrf(router='Wolfpack', name='blue',
43
+ area_id='1450')
44
+ RouterOspfArea.new(router, name, area_id)
45
+ end
46
+
47
+ def test_collection_size
48
+ ad = create_routerospfarea_default
49
+ ad.stub = true
50
+ assert_equal(1, RouterOspfArea.areas['Wolfpack'].size)
51
+ av = create_routerospfarea_vrf
52
+ av.stub = true
53
+ assert_equal(2, RouterOspfArea.areas['Wolfpack'].size)
54
+ av.destroy
55
+ # on n(3|9)k-f (only), we cannot remove "area <area> default-cost 1",
56
+ # unless the entire ospf router is removed. The default value of
57
+ # default_cost is 1 and so this is just a cosmetic issue but
58
+ # need to skip the below test as the size will be wrong.
59
+ # platform as the size will be wrong. bug ID: CSCva04066
60
+ assert_equal(1, RouterOspfArea.areas['Wolfpack'].size) unless
61
+ /N(3|9)K.*-F/ =~ node.product_id
62
+ ad.destroy
63
+ assert_empty(RouterOspfArea.areas) unless
64
+ /N(3|9)K.*-F/ =~ node.product_id
65
+ end
66
+
67
+ def test_authentication
68
+ ad = create_routerospfarea_default
69
+ assert_equal(ad.default_authentication, ad.authentication)
70
+ ad.authentication = 'md5'
71
+ assert_equal('md5', ad.authentication)
72
+ ad.authentication = 'cleartext'
73
+ assert_equal('cleartext', ad.authentication)
74
+ ad.authentication = ad.default_authentication
75
+ assert_equal(ad.default_authentication, ad.authentication)
76
+ av = create_routerospfarea_vrf
77
+ assert_equal(av.default_authentication, av.authentication)
78
+ av.authentication = 'md5'
79
+ assert_equal('md5', av.authentication)
80
+ av.authentication = 'cleartext'
81
+ assert_equal('cleartext', av.authentication)
82
+ av.authentication = av.default_authentication
83
+ assert_equal(av.default_authentication, av.authentication)
84
+ end
85
+
86
+ def test_default_cost
87
+ ad = create_routerospfarea_default
88
+ assert_equal(ad.default_default_cost, ad.default_cost)
89
+ ad.default_cost = 2000
90
+ assert_equal(2000, ad.default_cost)
91
+ ad.default_cost = ad.default_default_cost
92
+ assert_equal(ad.default_default_cost, ad.default_cost)
93
+ av = create_routerospfarea_vrf
94
+ assert_equal(av.default_default_cost, av.default_cost)
95
+ av.default_cost = 10_000
96
+ assert_equal(10_000, av.default_cost)
97
+ av.default_cost = av.default_default_cost
98
+ assert_equal(av.default_default_cost, av.default_cost)
99
+ end
100
+
101
+ def test_filter_list
102
+ ad = create_routerospfarea_default
103
+ assert_equal(ad.default_filter_list_in, ad.filter_list_in)
104
+ assert_equal(ad.default_filter_list_out, ad.filter_list_out)
105
+ ad.filter_list_in = 'abc'
106
+ assert_equal('abc', ad.filter_list_in)
107
+ ad.filter_list_out = 'efg'
108
+ assert_equal('efg', ad.filter_list_out)
109
+ ad.filter_list_in = ad.default_filter_list_in
110
+ assert_equal(ad.default_filter_list_in, ad.filter_list_in)
111
+ ad.filter_list_out = ad.default_filter_list_out
112
+ assert_equal(ad.default_filter_list_out, ad.filter_list_out)
113
+ av = create_routerospfarea_vrf
114
+ assert_equal(av.default_filter_list_in, av.filter_list_in)
115
+ assert_equal(av.default_filter_list_out, av.filter_list_out)
116
+ av.filter_list_in = 'uvw'
117
+ assert_equal('uvw', av.filter_list_in)
118
+ av.filter_list_out = 'xyz'
119
+ assert_equal('xyz', av.filter_list_out)
120
+ av.filter_list_in = av.default_filter_list_in
121
+ assert_equal(av.default_filter_list_in, av.filter_list_in)
122
+ av.filter_list_out = av.default_filter_list_out
123
+ assert_equal(av.default_filter_list_out, av.filter_list_out)
124
+ end
125
+
126
+ def test_stub
127
+ ad = create_routerospfarea_default
128
+ assert_equal(ad.default_stub, ad.stub)
129
+ assert_equal(ad.default_stub_no_summary, ad.stub_no_summary)
130
+ ad.stub = true
131
+ assert_equal(true, ad.stub)
132
+ assert_equal(ad.default_stub_no_summary, ad.stub_no_summary)
133
+ ad.stub_no_summary = true
134
+ assert_equal(true, ad.stub_no_summary)
135
+ assert_equal(true, ad.stub)
136
+ ad.stub_no_summary = ad.default_stub_no_summary
137
+ assert_equal(ad.default_stub_no_summary, ad.stub_no_summary)
138
+ assert_equal(true, ad.stub)
139
+ ad.stub = ad.default_stub
140
+ assert_equal(ad.default_stub, ad.stub)
141
+ assert_equal(ad.default_stub_no_summary, ad.stub_no_summary)
142
+ av = create_routerospfarea_vrf
143
+ assert_equal(av.default_stub, av.stub)
144
+ assert_equal(av.default_stub_no_summary, av.stub_no_summary)
145
+ av.stub = true
146
+ assert_equal(true, av.stub)
147
+ assert_equal(av.default_stub_no_summary, av.stub_no_summary)
148
+ av.stub_no_summary = true
149
+ assert_equal(true, av.stub_no_summary)
150
+ assert_equal(true, av.stub)
151
+ av.stub_no_summary = av.default_stub_no_summary
152
+ assert_equal(av.default_stub_no_summary, av.stub_no_summary)
153
+ assert_equal(true, av.stub)
154
+ av.stub = av.default_stub
155
+ assert_equal(av.default_stub, av.stub)
156
+ assert_equal(av.default_stub_no_summary, av.stub_no_summary)
157
+ end
158
+
159
+ def test_range
160
+ ad = create_routerospfarea_default
161
+ assert_equal(ad.default_range, ad.range)
162
+ ranges = [['10.3.0.0/16', 'not_advertise', '23'],
163
+ ['10.3.0.0/32', 'not_advertise'],
164
+ ['10.3.0.1/32'],
165
+ ['10.3.3.0/24', '450']]
166
+ ad.range = ranges
167
+ assert_equal(ranges, ad.range)
168
+ ranges = [['10.3.0.0/16', 'not_advertise', '23'],
169
+ ['10.3.3.0/24', '450']]
170
+ ad.range = ranges
171
+ assert_equal(ranges, ad.range)
172
+ ad.range = ad.default_range
173
+ assert_equal(ad.default_range, ad.range)
174
+ av = create_routerospfarea_vrf
175
+ assert_equal(av.default_range, av.range)
176
+ ranges = [['10.3.0.0/16', '8000'],
177
+ ['10.3.0.0/32', 'not_advertise'],
178
+ ['10.3.0.1/32'],
179
+ ['10.3.3.0/24', 'not_advertise', '10212']]
180
+ av.range = ranges
181
+ assert_equal(ranges, av.range)
182
+ ranges = [['10.3.0.0/16', '4989'],
183
+ ['10.3.1.1/32'],
184
+ ['10.3.3.0/24', 'not_advertise', '76376']]
185
+ av.range = ranges
186
+ assert_equal(ranges, av.range)
187
+ av.range = av.default_range
188
+ assert_equal(av.default_range, av.range)
189
+ end
190
+
191
+ def test_nssa
192
+ hash = {}
193
+ ad = create_routerospfarea_default
194
+ assert_equal(ad.default_nssa, ad.nssa)
195
+ hash[:nssa] = true
196
+ ad.nssa_set(hash)
197
+ assert_equal(true, ad.nssa)
198
+ assert_equal(ad.default_nssa_default_originate, ad.nssa_default_originate)
199
+ assert_equal(ad.default_nssa_no_redistribution, ad.nssa_no_redistribution)
200
+ assert_equal(ad.default_nssa_no_summary, ad.nssa_no_summary)
201
+ assert_equal(ad.default_nssa_route_map, ad.nssa_route_map)
202
+
203
+ hash = {}
204
+ ad.nssa_set(hash)
205
+ assert_equal(ad.default_nssa, ad.nssa)
206
+ assert_equal(ad.default_nssa_default_originate, ad.nssa_default_originate)
207
+ assert_equal(ad.default_nssa_no_redistribution, ad.nssa_no_redistribution)
208
+ assert_equal(ad.default_nssa_no_summary, ad.nssa_no_summary)
209
+ assert_equal(ad.default_nssa_route_map, ad.nssa_route_map)
210
+
211
+ av = create_routerospfarea_vrf
212
+ assert_equal(av.default_nssa, av.nssa)
213
+ hash[:nssa] = true
214
+ av.nssa_set(hash)
215
+ assert_equal(true, av.nssa)
216
+ assert_equal(av.default_nssa_default_originate, av.nssa_default_originate)
217
+ assert_equal(av.default_nssa_no_redistribution, av.nssa_no_redistribution)
218
+ assert_equal(av.default_nssa_no_summary, av.nssa_no_summary)
219
+ assert_equal(av.default_nssa_route_map, av.nssa_route_map)
220
+
221
+ hash = {}
222
+ av.nssa_set(hash)
223
+ assert_equal(av.default_nssa, av.nssa)
224
+ assert_equal(av.default_nssa_default_originate, av.nssa_default_originate)
225
+ assert_equal(av.default_nssa_no_redistribution, av.nssa_no_redistribution)
226
+ assert_equal(av.default_nssa_no_summary, av.nssa_no_summary)
227
+ assert_equal(av.default_nssa_route_map, av.nssa_route_map)
228
+ end
229
+
230
+ def nssa_helper(ad)
231
+ hash = {}
232
+ hash[:nssa] = true
233
+ hash[:nssa_default_originate] = true
234
+ ad.nssa_set(hash)
235
+ assert_equal(true, ad.nssa)
236
+ assert(ad.nssa_default_originate)
237
+ assert_equal(ad.default_nssa_no_redistribution, ad.nssa_no_redistribution)
238
+ assert_equal(ad.default_nssa_no_summary, ad.nssa_no_summary)
239
+ assert_equal(ad.default_nssa_route_map, ad.nssa_route_map)
240
+ # on n(3|9)k-f (only), we cannot configure
241
+ # "area <area> nssa default-information-originate",
242
+ # properly if we reset it first. It is only configuring nssa
243
+ # but not the other parameters. bug ID: CSCva11482
244
+ hash[:nssa_route_map] = 'aaa'
245
+ ad.nssa_set(hash)
246
+ assert_equal(true, ad.nssa)
247
+ if node.product_id[/N(3|9)K-F/]
248
+ refute(ad.nssa_default_originate)
249
+ else
250
+ assert(ad.nssa_default_originate)
251
+ end
252
+ assert_equal(ad.default_nssa_no_redistribution, ad.nssa_no_redistribution)
253
+ assert_equal(ad.default_nssa_no_summary, ad.nssa_no_summary)
254
+ if node.product_id[/N(3|9)K-F/]
255
+ refute_equal('aaa', ad.nssa_route_map)
256
+ else
257
+ assert_equal('aaa', ad.nssa_route_map)
258
+ end
259
+ hash[:nssa_no_summary] = true
260
+ hash.delete(:nssa_route_map)
261
+ ad.nssa_set(hash)
262
+ assert_equal(true, ad.nssa)
263
+ assert_equal(true, ad.nssa_default_originate)
264
+ assert_equal(ad.default_nssa_no_redistribution, ad.nssa_no_redistribution)
265
+ assert_equal(true, ad.nssa_no_summary)
266
+ assert_equal(ad.default_nssa_route_map, ad.nssa_route_map)
267
+ hash[:nssa_route_map] = 'aaa'
268
+ ad.nssa_set(hash)
269
+ assert_equal(true, ad.nssa)
270
+ assert_equal(true, ad.nssa_default_originate)
271
+ assert_equal(ad.default_nssa_no_redistribution, ad.nssa_no_redistribution)
272
+ assert_equal(true, ad.nssa_no_summary)
273
+ assert_equal('aaa', ad.nssa_route_map)
274
+
275
+ hash = {}
276
+ hash[:nssa] = true
277
+ hash[:nssa_default_originate] = true
278
+ hash[:nssa_no_redistribution] = true
279
+ ad.nssa_set(hash)
280
+ assert_equal(true, ad.nssa)
281
+ assert_equal(true, ad.nssa_default_originate)
282
+ assert_equal(true, ad.nssa_no_redistribution)
283
+ assert_equal(ad.default_nssa_no_summary, ad.nssa_no_summary)
284
+ assert_equal(ad.default_nssa_route_map, ad.nssa_route_map)
285
+ hash = {}
286
+ hash[:nssa] = true
287
+ hash[:nssa_default_originate] = true
288
+ hash[:nssa_no_redistribution] = true
289
+ hash[:nssa_route_map] = 'aaa'
290
+ ad.nssa_set(hash)
291
+ assert_equal(true, ad.nssa)
292
+ assert_equal(true, ad.nssa_default_originate)
293
+ assert_equal(true, ad.nssa_no_redistribution)
294
+ assert_equal(ad.default_nssa_no_summary, ad.nssa_no_summary)
295
+ assert_equal('aaa', ad.nssa_route_map)
296
+ hash = {}
297
+ hash[:nssa] = true
298
+ hash[:nssa_default_originate] = true
299
+ hash[:nssa_no_redistribution] = true
300
+ hash[:nssa_route_map] = 'aaa'
301
+ hash[:nssa_no_summary] = true
302
+ ad.nssa_set(hash)
303
+ assert_equal(true, ad.nssa)
304
+ assert_equal(true, ad.nssa_default_originate)
305
+ assert_equal(true, ad.nssa_no_redistribution)
306
+ assert_equal(true, ad.nssa_no_summary)
307
+ assert_equal('aaa', ad.nssa_route_map)
308
+ hash = {}
309
+ hash[:nssa] = true
310
+ hash[:nssa_no_redistribution] = true
311
+ hash[:nssa_no_summary] = true
312
+ ad.nssa_set(hash)
313
+ assert_equal(true, ad.nssa)
314
+ assert_equal(ad.default_nssa_default_originate, ad.nssa_default_originate)
315
+ assert_equal(true, ad.nssa_no_redistribution)
316
+ assert_equal(true, ad.nssa_no_summary)
317
+ assert_equal(ad.default_nssa_route_map, ad.nssa_route_map)
318
+ hash = {}
319
+ hash[:nssa] = true
320
+ hash[:nssa_no_redistribution] = true
321
+ ad.nssa_set(hash)
322
+ assert_equal(true, ad.nssa)
323
+ assert_equal(ad.default_nssa_default_originate, ad.nssa_default_originate)
324
+ assert_equal(true, ad.nssa_no_redistribution)
325
+ assert_equal(ad.default_nssa_no_summary, ad.nssa_no_summary)
326
+ assert_equal(ad.default_nssa_route_map, ad.nssa_route_map)
327
+ hash = {}
328
+ hash[:nssa] = true
329
+ hash[:nssa_no_summary] = true
330
+ ad.nssa_set(hash)
331
+ assert_equal(true, ad.nssa)
332
+ assert_equal(ad.default_nssa_default_originate, ad.nssa_default_originate)
333
+ assert_equal(ad.default_nssa_no_redistribution, ad.nssa_no_redistribution)
334
+ assert_equal(true, ad.nssa_no_summary)
335
+ assert_equal(ad.default_nssa_route_map, ad.nssa_route_map)
336
+ end
337
+
338
+ def test_nssa_non_default_vrf_others
339
+ nssa_helper(create_routerospfarea_vrf)
340
+ end
341
+
342
+ def test_nssa_default_vrf_others
343
+ nssa_helper(create_routerospfarea_default)
344
+ end
345
+
346
+ def test_nssa_translate_type7
347
+ ad = create_routerospfarea_default
348
+ assert_equal(ad.default_nssa_translate_type7, ad.nssa_translate_type7)
349
+ ad.nssa_translate_type7 = 'never'
350
+ assert_equal('never', ad.nssa_translate_type7)
351
+ ad.nssa_translate_type7 = 'supress_fa'
352
+ assert_equal('supress_fa', ad.nssa_translate_type7)
353
+ ad.nssa_translate_type7 = 'always_supress_fa'
354
+ assert_equal('always_supress_fa', ad.nssa_translate_type7)
355
+ ad.nssa_translate_type7 = 'always'
356
+ assert_equal('always', ad.nssa_translate_type7)
357
+ ad.nssa_translate_type7 = ad.default_nssa_translate_type7
358
+ assert_equal(ad.default_nssa_translate_type7, ad.nssa_translate_type7)
359
+ av = create_routerospfarea_vrf
360
+ assert_equal(av.default_nssa_translate_type7, av.nssa_translate_type7)
361
+ av.nssa_translate_type7 = 'never'
362
+ assert_equal('never', av.nssa_translate_type7)
363
+ av.nssa_translate_type7 = 'supress_fa'
364
+ assert_equal('supress_fa', av.nssa_translate_type7)
365
+ av.nssa_translate_type7 = 'always_supress_fa'
366
+ assert_equal('always_supress_fa', av.nssa_translate_type7)
367
+ av.nssa_translate_type7 = 'always'
368
+ assert_equal('always', av.nssa_translate_type7)
369
+ av.nssa_translate_type7 = av.default_nssa_translate_type7
370
+ assert_equal(av.default_nssa_translate_type7, av.nssa_translate_type7)
371
+ end
372
+
373
+ def test_destroy
374
+ ad = create_routerospfarea_default
375
+ # destroy without changing any properties
376
+ ad.destroy
377
+ [:authentication,
378
+ :default_cost,
379
+ :filter_list_in,
380
+ :filter_list_out,
381
+ :range,
382
+ :nssa,
383
+ :nssa_default_originate,
384
+ :nssa_no_redistribution,
385
+ :nssa_no_summary,
386
+ :nssa_route_map,
387
+ :nssa_translate_type7,
388
+ :stub,
389
+ :stub_no_summary,
390
+ ].each do |prop|
391
+ assert_equal(ad.send("default_#{prop}"), ad.send("#{prop}"))
392
+ end
393
+ ad.authentication = 'md5'
394
+ ad.default_cost = 2000
395
+ ad.filter_list_in = 'abc'
396
+ ad.filter_list_out = 'efg'
397
+ ranges = [['10.3.0.0/16', 'not_advertise', '23'],
398
+ ['10.3.0.0/32', 'not_advertise'],
399
+ ['10.3.0.1/32'],
400
+ ['10.3.3.0/24', '450']]
401
+ hash = {}
402
+ hash[:nssa] = true
403
+ hash[:default_information_originate] = 'default-information-originate'
404
+ hash[:no_summary] = 'no-summary'
405
+ hash[:no_redistribution] = 'no-redistribution'
406
+ hash[:route_map] = 'route-map'
407
+ hash[:rm] = 'aaa'
408
+ ad.nssa_set(hash)
409
+
410
+ ad.nssa_translate_type7 = 'never'
411
+ ad.range = ranges
412
+ ad.stub = true
413
+ ad.stub_no_summary = true
414
+ # destroy after changing properties
415
+ ad.destroy
416
+ [:authentication,
417
+ :default_cost,
418
+ :filter_list_in,
419
+ :filter_list_out,
420
+ :range,
421
+ :nssa,
422
+ :nssa_default_originate,
423
+ :nssa_no_redistribution,
424
+ :nssa_no_summary,
425
+ :nssa_route_map,
426
+ :nssa_translate_type7,
427
+ :stub,
428
+ :stub_no_summary,
429
+ ].each do |prop|
430
+ assert_equal(ad.send("default_#{prop}"), ad.send("#{prop}"))
431
+ end
432
+ end
433
+ end