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,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
@@ -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