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,80 @@
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/interface'
17
+ require_relative '../lib/cisco_node_utils/bridge_domain'
18
+
19
+ include Cisco
20
+
21
+ # TestBdi - Minitest for Interface configuration of BDI interfaces.
22
+ class TestInterfaceBdi < CiscoTestCase
23
+ @@pre_clean_needed = true # rubocop:disable Style/ClassVars
24
+ attr_reader :bdi
25
+
26
+ def self.runnable_methods
27
+ # We don't have a separate YAML file to key off, so we check platform
28
+ return super if node.product_id[/N7/]
29
+ remove_method :setup if instance_methods(false).include?(:setup)
30
+ remove_method :teardown if instance_methods(false).include?(:teardown)
31
+ [:unsupported]
32
+ end
33
+
34
+ def unsupported
35
+ skip("Skipping #{self.class}; Bdi interfaces are not supported on the \
36
+ platform")
37
+ end
38
+
39
+ def setup
40
+ super
41
+ remove_all_bdis if @@pre_clean_needed
42
+ @@pre_clean_needed = false # rubocop:disable Style/ClassVars
43
+ BridgeDomain.new('100')
44
+ @bdi = Interface.new('Bdi100')
45
+ end
46
+
47
+ def remove_all_bdis
48
+ Interface.interfaces.each do |int, obj|
49
+ next unless int[/bdi/i]
50
+ obj.destroy
51
+ end
52
+ remove_all_bridge_domains
53
+ end
54
+
55
+ def teardown
56
+ remove_all_bdis
57
+ super
58
+ end
59
+
60
+ def test_bdi
61
+ # Check all the default values
62
+ assert_equal(@bdi.default_vrf, @bdi.vrf)
63
+ assert_equal(@bdi.default_ipv4_address, @bdi.ipv4_address)
64
+ assert_equal(@bdi.default_ipv4_netmask_length, @bdi.ipv4_netmask_length)
65
+ address = '8.7.1.1'
66
+ length = 15
67
+
68
+ @bdi.ipv4_addr_mask_set(address, length)
69
+ assert_equal(address, @bdi.ipv4_address,
70
+ 'Error: ipv4 address get value mismatch')
71
+ assert_equal(length, @bdi.ipv4_netmask_length,
72
+ 'Error: ipv4 netmask length get value mismatch')
73
+
74
+ vrf = 'test'
75
+ @bdi.vrf = vrf
76
+ assert_equal(vrf, @bdi.vrf)
77
+ @bdi.vrf = ''
78
+ assert_equal(@bdi.default_vrf, @bdi.vrf)
79
+ end
80
+ end
@@ -0,0 +1,131 @@
1
+ # Copyright (c) 2015-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/interface_channel_group'
17
+
18
+ # TestInterface - Minitest for general functionality of the Interface class.
19
+ class TestInterfaceChanGrp < CiscoTestCase
20
+ @@clean = false # rubocop:disable Style/ClassVars
21
+ def setup
22
+ super
23
+ @intf = InterfaceChannelGroup.new(interfaces[1])
24
+
25
+ # Only pre-clean interface on initial setup
26
+ interface_cleanup(@intf.name) unless @@clean
27
+ @@clean = true # rubocop:disable Style/ClassVars
28
+ end
29
+
30
+ def teardown
31
+ interface_cleanup(@intf.name)
32
+ end
33
+
34
+ # Test InterfaceChannelGroup.interfaces class method api
35
+ def test_interface_apis
36
+ intf = interfaces[0]
37
+ intf2 = interfaces[1]
38
+
39
+ # Verify show_name usage
40
+ one = InterfaceChannelGroup.interfaces(intf)
41
+ assert_equal(1, one.length,
42
+ 'Invalid number of keys returned, should be 1')
43
+ assert_equal(Utils.normalize_intf_pattern(intf), one[intf].show_name,
44
+ ':show_name should be intf name when show_name param specified')
45
+
46
+ # Verify 'all' interfaces
47
+ all = InterfaceChannelGroup.interfaces
48
+ assert_operator(all.length, :>, 1,
49
+ 'Invalid number of keys returned, should exceed 1')
50
+ assert_empty(all[intf2].show_name,
51
+ ':show_name should be empty string when show_name param is nil')
52
+
53
+ # Test non-existent loopback does NOT raise when calling interfaces
54
+ Interface.new('loopback543', false).destroy if
55
+ Interface.interfaces(nil, 'loopback543').any?
56
+ one = InterfaceChannelGroup.interfaces('loopback543')
57
+ assert_empty(one, 'InterfaceChannelGroup.interfaces hash should be empty')
58
+ end
59
+
60
+ def test_channel_group_mode
61
+ skip if platform == :ios_xr
62
+ i = @intf
63
+ group = 55
64
+
65
+ # Default Case: group = mode = false
66
+ refute(i.channel_group)
67
+ refute(i.channel_group_mode)
68
+
69
+ # group = 55, mode = on
70
+ i.channel_group_mode_set(group)
71
+ assert_equal(group, i.channel_group)
72
+ assert_equal(i.default_channel_group_mode, i.channel_group_mode)
73
+
74
+ # group = 55, mode = active
75
+ i.channel_group_mode_set(group, 'active')
76
+ assert_equal(group, i.channel_group)
77
+ assert_equal('active', i.channel_group_mode)
78
+
79
+ # group = 55, mode = passive
80
+ i.channel_group_mode_set(group, 'passive')
81
+ assert_equal(group, i.channel_group)
82
+ assert_equal('passive', i.channel_group_mode)
83
+
84
+ # group = 55, mode = on
85
+ i.channel_group_mode_set(group, 'on')
86
+ assert_equal(group, i.channel_group)
87
+ assert_equal(i.default_channel_group_mode, i.channel_group_mode)
88
+
89
+ # group = 66, mode = active
90
+ group = 66
91
+ i.channel_group_mode_set(group, 'active')
92
+ assert_equal(group, i.channel_group)
93
+ assert_equal('active', i.channel_group_mode)
94
+
95
+ # group = 66, mode = on
96
+ i.channel_group_mode_set(group)
97
+ assert_equal(group, i.channel_group)
98
+ assert_equal(i.default_channel_group_mode, i.channel_group_mode)
99
+
100
+ # Default Case: group = mode = false
101
+ i.channel_group_mode_set(i.default_channel_group)
102
+ refute(i.channel_group)
103
+ refute(i.channel_group_mode)
104
+ end
105
+
106
+ def test_description
107
+ i = @intf
108
+ desc = 'test desc'
109
+ i.description = desc
110
+ assert_equal(desc, i.description)
111
+
112
+ desc = 'test desc changed'
113
+ i.description = desc
114
+ assert_equal(desc, i.description)
115
+
116
+ desc = i.default_description
117
+ i.description = desc
118
+ assert_equal(desc, i.description)
119
+ end
120
+
121
+ def test_shutdown
122
+ i = @intf
123
+ i.shutdown = true
124
+ assert(i.shutdown)
125
+ i.shutdown = false
126
+ refute(i.shutdown)
127
+
128
+ i.shutdown = i.default_shutdown
129
+ assert_equal(i.default_shutdown, i.shutdown)
130
+ end
131
+ end
@@ -0,0 +1,94 @@
1
+ # Interface Evpn Multisite Unit Tests
2
+ #
3
+ # Rahul Shenoy, October, 2017
4
+ #
5
+ # Copyright (c) 2017 Cisco and/or its affiliates.
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+
19
+ require_relative 'ciscotest'
20
+ require_relative '../lib/cisco_node_utils/interface_evpn_multisite'
21
+ require_relative '../lib/cisco_node_utils/evpn_multisite'
22
+
23
+ # TestInterfaceEvpnMultisite - Minitest for InterfaceEvpnMultisite class
24
+ class TestInterfaceEvpnMultisite < CiscoTestCase
25
+ @skip_unless_supported = 'interface_evpn_multisite'
26
+
27
+ def setup
28
+ # ensure we are starting with a clean slate for each test.
29
+ super
30
+ skip("#{node.product_id} doesn't support this feature") unless
31
+ node.product_id[/N9K.*EX/]
32
+ interface_ethernet_default(interfaces[0])
33
+ end
34
+
35
+ def interface_ethernet_default(intf)
36
+ config("default interface #{intf}")
37
+ end
38
+
39
+ # Test InterfaceEvpnMultisite.interfaces class method api
40
+ def test_interface_apis
41
+ # setup
42
+ ms = EvpnMultisite.new(100)
43
+ intf = interfaces[0]
44
+ intf2 = interfaces[1]
45
+ interface_ethernet_default(intf2)
46
+ [intf, intf2].each do |i|
47
+ InterfaceEvpnMultisite.new(i).enable('dci-tracking')
48
+ end
49
+
50
+ # Verify show_name usage
51
+ one = InterfaceEvpnMultisite.interfaces(intf)
52
+ assert_equal(1, one.length,
53
+ 'Invalid number of keys returned, should be 1')
54
+ assert_equal(Utils.normalize_intf_pattern(intf), one[intf].show_name,
55
+ ':show_name should be intf name when show_name param specified')
56
+
57
+ # Verify 'all' interfaces
58
+ all = InterfaceEvpnMultisite.interfaces
59
+ assert_operator(all.length, :>, 1,
60
+ 'Invalid number of keys returned, should exceed 1')
61
+ assert_empty(all[intf2].show_name,
62
+ ':show_name should be empty string when show_name param is nil')
63
+
64
+ # Test non-existent interface does NOT raise when calling interfaces
65
+ Interface.new('loopback543', false).destroy if
66
+ Interface.interfaces(nil, 'loopback543').any?
67
+ no_intf = InterfaceEvpnMultisite.interfaces('loopback543')
68
+ assert_empty(no_intf,
69
+ 'InterfaceEvpnMultisite.interfaces hash should be empty')
70
+
71
+ ms.destroy
72
+ end
73
+
74
+ def test_enable_disable
75
+ interface = interfaces[0]
76
+ intf_ms = InterfaceEvpnMultisite.new(interface)
77
+ ms = EvpnMultisite.new(100)
78
+ intf_ms.enable('dci-tracking')
79
+ assert_equal('dci-tracking', intf_ms.tracking)
80
+ intf_ms.disable('dci-tracking')
81
+ assert_nil(intf_ms.tracking)
82
+ ms.destroy
83
+ end
84
+
85
+ def test_enable_with_no_multisite_bordergateway
86
+ interface = interfaces[0]
87
+ intf_ms = InterfaceEvpnMultisite.new(interface)
88
+ ms = EvpnMultisite.new(100)
89
+ ms.destroy
90
+ assert_raises(CliError, 'Invalid command') do
91
+ intf_ms.enable('dci-tracking')
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,134 @@
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/interface'
17
+
18
+ # TestX__CLASS_NAME__X - Minitest for X__CLASS_NAME__X node utility class
19
+ class TestInterfaceHsrp < CiscoTestCase
20
+ @skip_unless_supported = 'interface'
21
+ # TESTS
22
+
23
+ def setup
24
+ super
25
+ config_no_warn('no feature hsrp')
26
+ end
27
+
28
+ def teardown
29
+ config_no_warn('no feature hsrp') if first_or_last_teardown
30
+ super
31
+ end
32
+
33
+ def create_intf
34
+ interface = Interface.new(interfaces[0])
35
+ interface.switchport_mode = :disabled
36
+ interface
37
+ end
38
+
39
+ def test_hsrp_bfd
40
+ skip_legacy_defect?('7.3.0.D1.1', 'CSCuh90262: hsrp indentation')
41
+ ih = create_intf
42
+ if validate_property_excluded?('interface', 'hsrp_bfd')
43
+ assert_nil(ih.hsrp_bfd)
44
+ assert_raises(Cisco::UnsupportedError) do
45
+ ih.hsrp_bfd = true
46
+ end
47
+ return
48
+ end
49
+ assert_equal(ih.default_hsrp_bfd, ih.hsrp_bfd)
50
+ ih.hsrp_bfd = true
51
+ assert_equal(true, ih.hsrp_bfd)
52
+ ih.hsrp_bfd = ih.default_hsrp_bfd
53
+ assert_equal(ih.default_hsrp_bfd, ih.hsrp_bfd)
54
+ end
55
+
56
+ def test_hsrp_delay
57
+ skip_legacy_defect?('7.3.0.D1.1', 'CSCuh90262: hsrp indentation')
58
+ ih = create_intf
59
+ if validate_property_excluded?('interface', 'hsrp_delay')
60
+ assert_nil(ih.hsrp_delay_minimum)
61
+ assert_nil(ih.hsrp_delay_reload)
62
+ assert_raises(Cisco::UnsupportedError) do
63
+ ih.hsrp_delay_minimum = 100
64
+ ih.hsrp_delay_reload = 555
65
+ end
66
+ return
67
+ end
68
+ assert_equal(ih.default_hsrp_delay_minimum, ih.hsrp_delay_minimum)
69
+ assert_equal(ih.default_hsrp_delay_reload, ih.hsrp_delay_reload)
70
+ ih.hsrp_delay_minimum = 100
71
+ ih.hsrp_delay_reload = 555
72
+ assert_equal(100, ih.hsrp_delay_minimum)
73
+ assert_equal(555, ih.hsrp_delay_reload)
74
+ ih.hsrp_delay_minimum = ih.default_hsrp_delay_minimum
75
+ ih.hsrp_delay_reload = ih.default_hsrp_delay_reload
76
+ assert_equal(ih.default_hsrp_delay_minimum, ih.hsrp_delay_minimum)
77
+ assert_equal(ih.default_hsrp_delay_reload, ih.hsrp_delay_reload)
78
+ end
79
+
80
+ def test_hsrp_mac_refresh
81
+ skip_legacy_defect?('7.3.0.D1.1', 'CSCuh90262: hsrp indentation')
82
+ ih = create_intf
83
+ if validate_property_excluded?('interface', 'hsrp_mac_refresh')
84
+ assert_nil(ih.hsrp_mac_refresh)
85
+ assert_raises(Cisco::UnsupportedError) do
86
+ ih.hsrp_mac_refresh = 60
87
+ end
88
+ return
89
+ end
90
+ assert_equal(ih.default_hsrp_mac_refresh, ih.hsrp_mac_refresh)
91
+ ih.hsrp_mac_refresh = 60
92
+ assert_equal(60, ih.hsrp_mac_refresh)
93
+ ih.hsrp_mac_refresh = ih.default_hsrp_mac_refresh
94
+ assert_equal(ih.default_hsrp_mac_refresh, ih.hsrp_mac_refresh)
95
+ end
96
+
97
+ def test_hsrp_use_bia
98
+ skip_legacy_defect?('7.3.0.D1.1', 'CSCuh90262: hsrp indentation')
99
+ ih = create_intf
100
+ if validate_property_excluded?('interface', 'hsrp_use_bia')
101
+ assert_nil(ih.hsrp_use_bia)
102
+ assert_raises(Cisco::UnsupportedError) do
103
+ ih.hsrp_use_bia = :use_bia
104
+ end
105
+ return
106
+ end
107
+ assert_equal(ih.default_hsrp_use_bia, ih.hsrp_use_bia)
108
+ ih.hsrp_use_bia = :use_bia
109
+ assert_equal(:use_bia, ih.hsrp_use_bia)
110
+ ih.hsrp_use_bia = :use_bia_intf
111
+ assert_equal(:use_bia_intf, ih.hsrp_use_bia)
112
+ ih.hsrp_use_bia = :use_bia
113
+ assert_equal(:use_bia, ih.hsrp_use_bia)
114
+ ih.hsrp_use_bia = ih.default_hsrp_use_bia
115
+ assert_equal(ih.default_hsrp_use_bia, ih.hsrp_use_bia)
116
+ end
117
+
118
+ def test_hsrp_version
119
+ skip_legacy_defect?('7.3.0.D1.1', 'CSCuh90262: hsrp indentation')
120
+ ih = create_intf
121
+ if validate_property_excluded?('interface', 'hsrp_version')
122
+ assert_nil(ih.hsrp_version)
123
+ assert_raises(Cisco::UnsupportedError) do
124
+ ih.hsrp_version = 2
125
+ end
126
+ return
127
+ end
128
+ assert_equal(ih.default_hsrp_version, ih.hsrp_version)
129
+ ih.hsrp_version = 2
130
+ assert_equal(2, ih.hsrp_version)
131
+ ih.hsrp_version = ih.default_hsrp_version
132
+ assert_equal(ih.default_hsrp_version, ih.hsrp_version)
133
+ end
134
+ end