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,434 @@
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/tacacs_server_group'
17
+ require_relative '../lib/cisco_node_utils/tacacs_server_host'
18
+
19
+ # Test class for Tacacs Server Group
20
+ class TestTacacsSvrGrp < CiscoTestCase
21
+ @skip_unless_supported = 'tacacs_server_group'
22
+
23
+ def clean_tacacs_config
24
+ config('no feature tacacs',
25
+ 'feature tacacs')
26
+ end
27
+
28
+ def create_tacacsserverhost(name='defaulttest')
29
+ config("tacacs-server host #{name}")
30
+ end
31
+
32
+ def detach_tacacsserverhost(name)
33
+ config("no tacacs-server host #{name}")
34
+ end
35
+
36
+ def config_command
37
+ if platform == :ios_xr
38
+ 'show running-config aaa'
39
+ else
40
+ 'show run tacacs+ all | no-more'
41
+ end
42
+ end
43
+
44
+ def detach_aaaservergroup(aaa_server_group)
45
+ aaa_server_group.destroy
46
+ end
47
+
48
+ def create_aaa_group(group_name, server)
49
+ config("aaa group server #{server} #{group_name}")
50
+ end
51
+
52
+ def destroy_aaa_group(group_name, server)
53
+ config("no aaa group server #{server} #{group_name}")
54
+ end
55
+
56
+ def create_vrf(group_name, server, vrf_name)
57
+ config("aaa group server #{server} #{group_name} ; use-vrf #{vrf_name}")
58
+ end
59
+
60
+ def create_deadtime(group_name, server, deadtime)
61
+ config("aaa group server #{server} #{group_name} ; deadtime #{deadtime}")
62
+ end
63
+
64
+ def create_source_interface(group_name, server, interface)
65
+ config("aaa group server #{server} #{group_name} ; " \
66
+ "source-interface #{interface}")
67
+ end
68
+
69
+ def test_create_invalid_name_tacacs
70
+ assert_raises(TypeError) do
71
+ TacacsServerGroup.new(nil)
72
+ end
73
+ end
74
+
75
+ def test_create_valid_tacacs
76
+ group_name = 'Group1'
77
+ aaa_group = TacacsServerGroup.new(group_name)
78
+ assert_show_match(command: config_command,
79
+ pattern: /#{group_name}/)
80
+
81
+ detach_aaaservergroup(aaa_group)
82
+ end
83
+
84
+ def test_create_valid_multiple_tacacs
85
+ group_name1 = 'Group1'
86
+ group_name2 = 'Group2'
87
+ aaa_group1 = TacacsServerGroup.new(group_name1)
88
+ aaa_group2 = TacacsServerGroup.new(group_name2)
89
+
90
+ assert_show_match(command: config_command,
91
+ pattern: /#{group_name1}/)
92
+ assert_show_match(command: config_command,
93
+ pattern: /#{group_name2}/)
94
+
95
+ detach_aaaservergroup(aaa_group1)
96
+ detach_aaaservergroup(aaa_group2)
97
+ end
98
+
99
+ def test_collection_empty_tacacs
100
+ return if platform == :ios_xr
101
+
102
+ clean_tacacs_config
103
+ aaa_group_list = TacacsServerGroup.groups
104
+ assert_empty(aaa_group_list,
105
+ 'Error: TacacsServerGroup collection is not empty')
106
+ end
107
+
108
+ def test_collection_multi_tacacs
109
+ clean_tacacs_config
110
+ group_name1 = 'Group1'
111
+ group_name2 = 'Group2'
112
+ group_name3 = 'Group3'
113
+ aaa_group1 = TacacsServerGroup.new(group_name1)
114
+
115
+ groups = TacacsServerGroup.groups
116
+ assert_equal(1, groups.size,
117
+ 'Error: TacacsServerGroup collection reporting incorrect size')
118
+ assert(groups.key?(group_name1),
119
+ "Error: TacacsServerGroup collection does contain #{group_name1}")
120
+ detach_aaaservergroup(aaa_group1)
121
+
122
+ create_aaa_group(group_name2, 'tacacs+')
123
+ create_aaa_group(group_name3, 'tacacs+')
124
+ groups = TacacsServerGroup.groups
125
+ refute_empty(groups, 'Error: TacacsServerGroup collection is not filled')
126
+ assert_equal(2, groups.size,
127
+ 'Error: TacacsServerGroup collection reporting incorrect size')
128
+ assert(groups.key?(group_name2),
129
+ "Error: TacacsServerGroup collection does contain #{group_name2}")
130
+ assert(groups.key?(group_name3),
131
+ "Error: TacacsServerGroup collection does contain #{group_name3}")
132
+
133
+ destroy_aaa_group(group_name2, 'tacacs+')
134
+ destroy_aaa_group(group_name3, 'tacacs+')
135
+ end
136
+
137
+ def test_servers
138
+ clean_tacacs_config
139
+ server_name1 = '1.1.1.1'
140
+ server_name2 = '2.2.2.2'
141
+ create_tacacsserverhost(server_name1)
142
+ create_tacacsserverhost(server_name2)
143
+
144
+ aaa_group = TacacsServerGroup.new('Group1')
145
+
146
+ # pre check that default servers are empty
147
+ default_server = aaa_group.default_servers
148
+ assert_empty(default_server, 'Error: Default Servers are not empty')
149
+
150
+ aaa_group.servers = [server_name1, server_name2]
151
+
152
+ # Check collection size
153
+ servers = aaa_group.servers
154
+ assert_equal(2, servers.size,
155
+ 'Error: Collection is not two servers')
156
+ assert(servers.include?(server_name1),
157
+ "Error: Collection does not contain #{server_name1}")
158
+ assert(servers.include?(server_name2),
159
+ "Error: Collection does not contain #{server_name2}")
160
+
161
+ detach_aaaservergroup(aaa_group)
162
+ detach_tacacsserverhost(server_name1)
163
+ detach_tacacsserverhost(server_name2)
164
+ end
165
+
166
+ def test_remove_server_tacacs
167
+ clean_tacacs_config
168
+ server_name1 = '1.1.1.1'
169
+ server_name2 = '2.2.2.2'
170
+ create_tacacsserverhost(server_name1)
171
+ create_tacacsserverhost(server_name2)
172
+
173
+ aaa_group = TacacsServerGroup.new('Group1')
174
+ aaa_group.servers = [server_name1, server_name2]
175
+
176
+ # Check collection size
177
+ servers = aaa_group.servers
178
+ assert_equal(2, servers.size,
179
+ 'Error: Collection is not two servers')
180
+
181
+ # Now remove them and then check again
182
+ aaa_group.servers = [server_name2]
183
+ refute_show_match(command: config_command,
184
+ pattern: /server #{server_name1}/)
185
+
186
+ aaa_group.servers = []
187
+ refute_show_match(command: config_command,
188
+ pattern: /server #{server_name2}/)
189
+
190
+ detach_aaaservergroup(aaa_group)
191
+ detach_tacacsserverhost(server_name1)
192
+ detach_tacacsserverhost(server_name2)
193
+ end
194
+
195
+ def test_remove_server_twice_tacacs
196
+ clean_tacacs_config
197
+ server_name1 = '1.1.1.1'
198
+ server_name2 = '2.2.2.2'
199
+ create_tacacsserverhost(server_name1)
200
+ create_tacacsserverhost(server_name2)
201
+
202
+ aaa_group = TacacsServerGroup.new('Group1')
203
+ aaa_group.servers = [server_name1, server_name2]
204
+
205
+ # Check collection size
206
+ servers = aaa_group.servers
207
+ assert_equal(2, servers.size,
208
+ 'Error: Collection is not two servers')
209
+
210
+ # Remove server 1
211
+ aaa_group.servers = [server_name2]
212
+ refute_show_match(command: config_command,
213
+ pattern: /server #{server_name1}/)
214
+
215
+ # Now remove server 2
216
+ aaa_group.servers = []
217
+ refute_show_match(command: config_command,
218
+ pattern: /server #{server_name2}/)
219
+
220
+ # Check collection size
221
+ servers = aaa_group.servers
222
+ assert_empty(servers, 'Error: Collection not empty')
223
+
224
+ detach_aaaservergroup(aaa_group)
225
+ detach_tacacsserverhost(server_name1)
226
+ detach_tacacsserverhost(server_name2)
227
+ end
228
+
229
+ def test_get_vrf_tacacs
230
+ # TODO
231
+ return if validate_property_excluded?('tacacs_server_group',
232
+ 'vrf')
233
+
234
+ group_name1 = 'Group1'
235
+ aaa_group = TacacsServerGroup.new(group_name1)
236
+
237
+ vrf = cmd_ref.lookup('tacacs_server_group', 'vrf').default_value
238
+ assert_equal(vrf, aaa_group.vrf,
239
+ 'Error: TacacsServerGroup, vrf not default')
240
+
241
+ vrf = 'TESTME'
242
+ create_vrf(group_name1, 'tacacs+', vrf)
243
+ assert_equal(vrf, aaa_group.vrf,
244
+ 'Error: TacacsServerGroup, vrf not configured')
245
+
246
+ vrf = cmd_ref.lookup('tacacs_server_group', 'vrf').default_value
247
+ aaa_group.vrf = vrf
248
+ assert_equal(vrf, aaa_group.vrf,
249
+ 'Error: TacacsServerGroup, vrf not restored to default')
250
+
251
+ detach_aaaservergroup(aaa_group)
252
+ end
253
+
254
+ def test_get_default_vrf_tacacs
255
+ # TODO
256
+ return if validate_property_excluded?('tacacs_server_group',
257
+ 'vrf')
258
+
259
+ aaa_group = TacacsServerGroup.new('Group1')
260
+ assert_equal(cmd_ref.lookup('tacacs_server_group', 'vrf').default_value,
261
+ aaa_group.default_vrf,
262
+ 'Error: TacacsServerGroup, default vrf incorrect')
263
+ detach_aaaservergroup(aaa_group)
264
+ end
265
+
266
+ def test_set_vrf_tacacs
267
+ # TODO
268
+ return if validate_property_excluded?('tacacs_server_group',
269
+ 'vrf')
270
+
271
+ vrf = 'management-123'
272
+ aaa_group = TacacsServerGroup.new('Group1')
273
+ aaa_group.vrf = vrf
274
+ assert_show_match(command: config_command,
275
+ pattern: /use-vrf #{vrf}/)
276
+
277
+ # Invalid case
278
+ assert_raises(TypeError) do
279
+ aaa_group.vrf = 2450
280
+ end
281
+ detach_aaaservergroup(aaa_group)
282
+ end
283
+
284
+ def test_get_deadtime_tacacs
285
+ # TODO
286
+ return if validate_property_excluded?('tacacs_server_group',
287
+ 'deadtime')
288
+
289
+ group_name = 'Group1'
290
+ aaa_group = TacacsServerGroup.new(group_name)
291
+
292
+ deadtime = cmd_ref.lookup('tacacs_server_group', 'deadtime').default_value
293
+ assert_equal(deadtime, aaa_group.deadtime,
294
+ 'Error: TacacsServerGroup, deadtime not default')
295
+
296
+ deadtime = 850
297
+ create_deadtime(group_name, 'tacacs+', deadtime)
298
+ assert_equal(deadtime, aaa_group.deadtime,
299
+ 'Error: TacacsServerGroup, deadtime not configured')
300
+
301
+ deadtime = cmd_ref.lookup('tacacs_server_group', 'deadtime').default_value
302
+ aaa_group.deadtime = deadtime
303
+ assert_equal(deadtime, aaa_group.deadtime,
304
+ 'Error: TacacsServerGroup, deadtime not restored to default')
305
+
306
+ detach_aaaservergroup(aaa_group)
307
+ end
308
+
309
+ def test_get_default_deadtime_tacacs
310
+ # TODO
311
+ return if validate_property_excluded?('tacacs_server_group',
312
+ 'deadtime')
313
+
314
+ aaa_group = TacacsServerGroup.new('Group1')
315
+ assert_equal(
316
+ cmd_ref.lookup('tacacs_server_group', 'deadtime').default_value,
317
+ aaa_group.default_deadtime,
318
+ 'Error: TacacsServerGroup, default deadtime incorrect')
319
+ detach_aaaservergroup(aaa_group)
320
+ end
321
+
322
+ def test_set_deadtime_tacacs
323
+ # TODO
324
+ return if validate_property_excluded?('tacacs_server_group',
325
+ 'deadtime')
326
+
327
+ deadtime = 1250
328
+ aaa_group = TacacsServerGroup.new('Group1')
329
+ aaa_group.deadtime = deadtime
330
+ assert_show_match(command: config_command,
331
+ pattern: /deadtime #{deadtime}/,
332
+ msg: 'Error: deadtime not configured')
333
+ # Invalid case
334
+ deadtime = 2450
335
+ assert_raises(CliError) do
336
+ aaa_group.deadtime = deadtime
337
+ end
338
+ detach_aaaservergroup(aaa_group)
339
+ end
340
+
341
+ def test_get_source_interface_tacacs
342
+ # TODO
343
+ return if validate_property_excluded?('tacacs_server_group',
344
+ 'source_interface')
345
+
346
+ group_name = 'Group1'
347
+ aaa_group = TacacsServerGroup.new(group_name)
348
+ intf =
349
+ cmd_ref.lookup('tacacs_server_group', 'source_interface').default_value
350
+ assert_equal(intf, aaa_group.source_interface,
351
+ 'Error: TacacsServerGroup, source-interface set')
352
+
353
+ intf = interfaces[0]
354
+ create_source_interface(group_name, 'tacacs+', intf)
355
+ assert_equal(intf, aaa_group.source_interface,
356
+ 'Error: TacacsServerGroup, source-interface not correct')
357
+
358
+ intf = interfaces[1]
359
+ create_source_interface(group_name, 'tacacs+', intf)
360
+ assert_equal(intf, aaa_group.source_interface,
361
+ 'Error: TacacsServerGroup, source-interface not correct')
362
+
363
+ detach_aaaservergroup(aaa_group)
364
+ end
365
+
366
+ def test_source_interface
367
+ # TODO
368
+ return if validate_property_excluded?('tacacs_server_group',
369
+ 'source_interface')
370
+
371
+ aaa_group = TacacsServerGroup.new('Group1')
372
+ assert_equal(
373
+ cmd_ref.lookup('tacacs_server_group', 'source_interface').default_value,
374
+ aaa_group.default_source_interface,
375
+ 'Error: Aaa_Group Server, default source-interface incorrect')
376
+ detach_aaaservergroup(aaa_group)
377
+ end
378
+
379
+ def test_set_source_interface_tacacs
380
+ # TODO
381
+ return if validate_property_excluded?('tacacs_server_group',
382
+ 'source_interface')
383
+
384
+ intf =
385
+ cmd_ref.lookup('tacacs_server_group', 'source_interface').default_value
386
+ aaa_group = TacacsServerGroup.new('Group1')
387
+ assert_equal(intf, aaa_group.source_interface,
388
+ 'Error: Aaa_Group Server, source-interface not default')
389
+
390
+ aaa_group.source_interface = 'loopback1'
391
+ assert_show_match(command: config_command,
392
+ pattern: /source-interface loopback1/,
393
+ msg: 'Error: source-interface not correct')
394
+
395
+ aaa_group.source_interface =
396
+ cmd_ref.lookup('tacacs_server_group', 'source_interface').default_value
397
+ refute_show_match(command: config_command,
398
+ pattern: /source-interface loopback1/)
399
+
400
+ # Invalid case
401
+ state = true
402
+ assert_raises(TypeError) do
403
+ aaa_group.source_interface = state
404
+ end
405
+
406
+ detach_aaaservergroup(aaa_group)
407
+ end
408
+
409
+ # tacacs_server_groups method is the same as groups, added for netdev
410
+ # compatibility, make sure output is the same
411
+ def test_groups_methods_equality
412
+ aaagroup1 = TacacsServerGroup.new('test1')
413
+ aaagroup2 = TacacsServerGroup.new('test2')
414
+ aaagroup3 = TacacsServerGroup.new('test3')
415
+
416
+ groups1 = TacacsServerGroup.groups.sort
417
+ groups2 = TacacsServerGroup.tacacs_server_groups.sort
418
+
419
+ assert_equal(groups1, groups2)
420
+
421
+ detach_aaaservergroup(aaagroup1)
422
+ detach_aaaservergroup(aaagroup2)
423
+ detach_aaaservergroup(aaagroup3)
424
+ end
425
+
426
+ def test_destroy_tacacs
427
+ group_name = 'Group1'
428
+ aaa_group = TacacsServerGroup.new(group_name)
429
+
430
+ detach_aaaservergroup(aaa_group)
431
+ refute_show_match(command: config_command,
432
+ pattern: /#{group_name}/)
433
+ end
434
+ end