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,101 @@
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 'node_util'
16
+
17
+ module Cisco
18
+ # Acl - node utility class for ACL configuration
19
+ class Acl < NodeUtil
20
+ attr_reader :acl_name, :afi
21
+
22
+ def initialize(afi, acl_name, instantiate=true)
23
+ @set_args = @get_args = { afi: Acl.afi_cli(afi), acl_name: acl_name.to_s }
24
+ create if instantiate
25
+ end
26
+
27
+ # Return all acls currently on the switch
28
+ def self.acls
29
+ afis = %w(ipv4 ipv6)
30
+ acl_hash = {}
31
+ afis.each do |afi|
32
+ acl_hash[afi] = {}
33
+ afi_cli = Acl.afi_cli(afi)
34
+ instances = config_get('acl', 'all_acls', afi: afi_cli)
35
+
36
+ next if instances.nil?
37
+ instances.each do |acl_name|
38
+ acl_hash[afi][acl_name] = Acl.new(afi, acl_name, false)
39
+ end
40
+ end
41
+ acl_hash
42
+ end
43
+
44
+ # Platform-specific afi cli string
45
+ def self.afi_cli(afi)
46
+ fail ArgumentError, "Argument afi must be 'ipv4' or 'ipv6'" unless
47
+ afi[/(ipv4|ipv6)/]
48
+ afi = 'ip' if platform == :nexus && afi[/ipv4/]
49
+ afi
50
+ end
51
+
52
+ def create
53
+ config_acl('')
54
+ end
55
+
56
+ def destroy
57
+ config_acl('no')
58
+ end
59
+
60
+ def config_acl(state)
61
+ @set_args[:state] = state
62
+ config_set('acl', 'acl', @set_args)
63
+ end
64
+
65
+ # ----------
66
+ # PROPERTIES
67
+ # ----------
68
+ def stats_per_entry
69
+ config_get('acl', 'stats_per_entry', @get_args)
70
+ end
71
+
72
+ def stats_per_entry=(state)
73
+ @set_args[:state] = (state ? '' : 'no')
74
+ config_set('acl', 'stats_per_entry', @set_args)
75
+ end
76
+
77
+ def default_stats_per_entry
78
+ config_get_default('acl', 'stats_per_entry')
79
+ end
80
+
81
+ def fragments
82
+ config_get('acl', 'fragments', @get_args)
83
+ end
84
+
85
+ def fragments=(action)
86
+ @set_args[:state] = (action ? '' : 'no')
87
+ action = fragments unless action
88
+ @set_args[:action] = action
89
+ config_set('acl', 'fragments', @set_args) if action
90
+ end
91
+
92
+ def default_fragments
93
+ config_get_default('acl', 'fragments')
94
+ end
95
+
96
+ # acl == overide func
97
+ def ==(other)
98
+ acl_name == other.acl_name && afi == other.afi
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,63 @@
1
+ # Banner provider class
2
+ #
3
+ # Rick Sherman et al., August 2018
4
+ #
5
+ # Copyright (c) 2014-2018 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 'node_util'
20
+
21
+ module Cisco
22
+ # Banner - node utility class for Banner configuration management
23
+ class Banner < NodeUtil
24
+ attr_reader :name
25
+
26
+ def initialize(name)
27
+ fail TypeError unless name.is_a?(String)
28
+ fail ArgumentError,
29
+ "This provider only accepts an id of 'default'" \
30
+ unless name.eql?('default')
31
+ @name = name
32
+ end
33
+
34
+ def self.banners
35
+ hash = {}
36
+ hash['default'] = Banner.new('default')
37
+ hash
38
+ end
39
+
40
+ def ==(other)
41
+ name == other.name
42
+ end
43
+
44
+ def motd
45
+ config_get('banner', 'motd')
46
+ end
47
+
48
+ def motd=(val)
49
+ if val.nil? && (motd != default_motd)
50
+ config_set('banner', 'motd', state: 'no', motd: '')
51
+ elsif !val.nil?
52
+ config_set('banner',
53
+ 'motd',
54
+ state: '',
55
+ motd: "^#{val.gsub(/\n/, '\\n')}^")
56
+ end
57
+ end
58
+
59
+ def default_motd
60
+ config_get_default('banner', 'motd')
61
+ end
62
+ end # class
63
+ end # module
@@ -0,0 +1,305 @@
1
+ #
2
+ # NXAPI implementation of BFD Global class
3
+ #
4
+ # May 2016, Sai Chintalapudi
5
+ #
6
+ # Copyright (c) 2016 Cisco and/or its affiliates.
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+
20
+ require_relative 'node_util'
21
+
22
+ module Cisco
23
+ # node_utils class for bfd_global
24
+ class BfdGlobal < NodeUtil
25
+ attr_reader :name
26
+
27
+ def initialize(instantiate=true)
28
+ set_args_keys_default
29
+
30
+ Feature.bfd_enable if instantiate
31
+ end
32
+
33
+ # Reset everything back to default
34
+ def destroy
35
+ return unless Feature.bfd_enabled?
36
+ [:interval,
37
+ :ipv4_interval,
38
+ :ipv6_interval,
39
+ :fabricpath_interval,
40
+ :echo_interface,
41
+ :echo_rx_interval,
42
+ :ipv4_echo_rx_interval,
43
+ :ipv6_echo_rx_interval,
44
+ :fabricpath_vlan,
45
+ :slow_timer,
46
+ :ipv4_slow_timer,
47
+ :ipv6_slow_timer,
48
+ :fabricpath_slow_timer,
49
+ :startup_timer,
50
+ ].each do |prop|
51
+ send("#{prop}=", send("default_#{prop}")) if
52
+ send prop
53
+ end
54
+ set_args_keys_default
55
+ end
56
+
57
+ # Helper method to delete @set_args hash keys
58
+ def set_args_keys_default
59
+ keys = { state: '' }
60
+ @get_args = @set_args = keys
61
+ end
62
+
63
+ # rubocop:disable Style/AccessorMethodName
64
+ def set_args_keys(hash={})
65
+ set_args_keys_default
66
+ @set_args = @get_args.merge!(hash) unless hash.empty?
67
+ end
68
+
69
+ ########################################################
70
+ # PROPERTIES #
71
+ ########################################################
72
+
73
+ def echo_interface
74
+ config_get('bfd_global', 'echo_interface', @get_args)
75
+ end
76
+
77
+ def echo_interface=(val)
78
+ set_args_keys(intf: val ? val : echo_interface,
79
+ state: val ? '' : 'no')
80
+ config_set('bfd_global', 'echo_interface', @set_args) if
81
+ @set_args[:intf]
82
+ end
83
+
84
+ def default_echo_interface
85
+ config_get_default('bfd_global', 'echo_interface')
86
+ end
87
+
88
+ def echo_rx_interval
89
+ config_get('bfd_global', 'echo_rx_interval', @get_args)
90
+ end
91
+
92
+ def echo_rx_interval=(val)
93
+ set_args_keys(rxi: val,
94
+ state: val == default_echo_rx_interval ? 'no' : '')
95
+ config_set('bfd_global', 'echo_rx_interval', @set_args)
96
+ end
97
+
98
+ def default_echo_rx_interval
99
+ config_get_default('bfd_global', 'echo_rx_interval')
100
+ end
101
+
102
+ def ipv4_echo_rx_interval
103
+ config_get('bfd_global', 'ipv4_echo_rx_interval', @get_args)
104
+ end
105
+
106
+ def ipv4_echo_rx_interval=(val)
107
+ set_args_keys(rxi: val,
108
+ state: val == default_ipv4_echo_rx_interval ? 'no' : '')
109
+ config_set('bfd_global', 'ipv4_echo_rx_interval', @set_args)
110
+ end
111
+
112
+ def default_ipv4_echo_rx_interval
113
+ config_get_default('bfd_global', 'ipv4_echo_rx_interval')
114
+ end
115
+
116
+ def ipv6_echo_rx_interval
117
+ config_get('bfd_global', 'ipv6_echo_rx_interval', @get_args)
118
+ end
119
+
120
+ def ipv6_echo_rx_interval=(val)
121
+ set_args_keys(rxi: val,
122
+ state: val == default_ipv6_echo_rx_interval ? 'no' : '')
123
+ config_set('bfd_global', 'ipv6_echo_rx_interval', @set_args)
124
+ end
125
+
126
+ def default_ipv6_echo_rx_interval
127
+ config_get_default('bfd_global', 'ipv6_echo_rx_interval')
128
+ end
129
+
130
+ def slow_timer
131
+ config_get('bfd_global', 'slow_timer', @get_args)
132
+ end
133
+
134
+ def slow_timer=(val)
135
+ set_args_keys(timer: val,
136
+ state: val == default_slow_timer ? 'no' : '')
137
+ config_set('bfd_global', 'slow_timer', @set_args)
138
+ end
139
+
140
+ def default_slow_timer
141
+ config_get_default('bfd_global', 'slow_timer')
142
+ end
143
+
144
+ def ipv4_slow_timer
145
+ config_get('bfd_global', 'ipv4_slow_timer', @get_args)
146
+ end
147
+
148
+ def ipv4_slow_timer=(val)
149
+ # Only set the value if it's not already configured and default
150
+ return if val == default_ipv4_slow_timer && val == ipv4_slow_timer
151
+ set_args_keys(timer: val,
152
+ state: val == default_ipv4_slow_timer ? 'no' : '')
153
+ config_set('bfd_global', 'ipv4_slow_timer', @set_args)
154
+ end
155
+
156
+ def default_ipv4_slow_timer
157
+ config_get_default('bfd_global', 'ipv4_slow_timer')
158
+ end
159
+
160
+ def ipv6_slow_timer
161
+ config_get('bfd_global', 'ipv6_slow_timer', @get_args)
162
+ end
163
+
164
+ def ipv6_slow_timer=(val)
165
+ # Only set the value if it's not already configured and default
166
+ return if val == default_ipv6_slow_timer && val == ipv6_slow_timer
167
+ set_args_keys(timer: val,
168
+ state: val == default_ipv6_slow_timer ? 'no' : '')
169
+ config_set('bfd_global', 'ipv6_slow_timer', @set_args)
170
+ end
171
+
172
+ def default_ipv6_slow_timer
173
+ config_get_default('bfd_global', 'ipv6_slow_timer')
174
+ end
175
+
176
+ def fabricpath_slow_timer
177
+ config_get('bfd_global', 'fabricpath_slow_timer', @get_args)
178
+ end
179
+
180
+ def fabricpath_slow_timer=(val)
181
+ set_args_keys(timer: val,
182
+ state: val == default_fabricpath_slow_timer ? 'no' : '')
183
+ config_set('bfd_global', 'fabricpath_slow_timer', @set_args)
184
+ end
185
+
186
+ def default_fabricpath_slow_timer
187
+ config_get_default('bfd_global', 'fabricpath_slow_timer')
188
+ end
189
+
190
+ def startup_timer
191
+ config_get('bfd_global', 'startup_timer', @get_args)
192
+ end
193
+
194
+ def startup_timer=(val)
195
+ set_args_keys(timer: val,
196
+ state: val == default_startup_timer ? 'no' : '')
197
+ config_set('bfd_global', 'startup_timer', @set_args)
198
+ end
199
+
200
+ def default_startup_timer
201
+ config_get_default('bfd_global', 'startup_timer')
202
+ end
203
+
204
+ def fabricpath_vlan
205
+ config_get('bfd_global', 'fabricpath_vlan', @get_args)
206
+ end
207
+
208
+ def fabricpath_vlan=(val)
209
+ set_args_keys(vlan: val,
210
+ state: val == default_fabricpath_vlan ? 'no' : '')
211
+ config_set('bfd_global', 'fabricpath_vlan', @set_args)
212
+ end
213
+
214
+ def default_fabricpath_vlan
215
+ config_get_default('bfd_global', 'fabricpath_vlan')
216
+ end
217
+
218
+ def default_interval
219
+ config_get_default('bfd_global', 'interval')
220
+ end
221
+
222
+ def default_ipv4_interval
223
+ config_get_default('bfd_global', 'ipv4_interval')
224
+ end
225
+
226
+ def default_ipv6_interval
227
+ config_get_default('bfd_global', 'ipv6_interval')
228
+ end
229
+
230
+ def default_fabricpath_interval
231
+ config_get_default('bfd_global', 'fabricpath_interval')
232
+ end
233
+
234
+ # interval is an array of interval, min_rx and multiplier
235
+ # CLI: bfd interval 100 min_rx 100 multiplier 25
236
+ def interval
237
+ config_get('bfd_global', 'interval', @get_args)
238
+ end
239
+
240
+ # ipv4_interval is an array of ipv4_interval, ipv4_min_rx and
241
+ # ipv4_multiplier
242
+ # CLI: bfd ipv4 interval 100 min_rx 100 multiplier 25
243
+ def ipv4_interval
244
+ config_get('bfd_global', 'ipv4_interval', @get_args)
245
+ end
246
+
247
+ # ipv6_interval is an array of ipv6_interval, ipv6_min_rx and
248
+ # ipv6_multiplier
249
+ # CLI: bfd ipv6 interval 100 min_rx 100 multiplier 25
250
+ def ipv6_interval
251
+ config_get('bfd_global', 'ipv6_interval', @get_args)
252
+ end
253
+
254
+ # fabricpath_interval is an array of fabricpath_interval,
255
+ # fabricpath_min_rx and fabricpath_multiplier
256
+ # CLI: bfd fabricpath interval 100 min_rx 100 multiplier 25
257
+ def fabricpath_interval
258
+ config_get('bfd_global', 'fabricpath_interval', @get_args)
259
+ end
260
+
261
+ # interval is an array of interval, min_rx and multiplier
262
+ # ex: ['100', '100', '25']
263
+ # CLI: bfd interval 100 min_rx 100 multiplier 25
264
+ def interval=(arr)
265
+ return if arr == interval
266
+ interval, min_rx, multiplier = arr
267
+ set_args_keys(interval: interval, min_rx: min_rx, multiplier: multiplier,
268
+ state: arr == default_interval ? 'no' : '')
269
+ config_set('bfd_global', 'interval', @set_args)
270
+ end
271
+
272
+ # ipv4_interval is an array of ipv4_interval, ipv4_min_rx and
273
+ # ipv4_multiplier
274
+ # ex: ['100', '100', '25']
275
+ # CLI: bfd ipv4 interval 100 min_rx 100 multiplier 25
276
+ def ipv4_interval=(arr)
277
+ interval, min_rx, multiplier = arr
278
+ set_args_keys(interval: interval, min_rx: min_rx, multiplier: multiplier,
279
+ state: arr == default_ipv4_interval ? 'no' : '')
280
+ config_set('bfd_global', 'ipv4_interval', @set_args)
281
+ end
282
+
283
+ # ipv6_interval is an array of ipv6_interval, ipv6_min_rx and
284
+ # ipv6_multiplier
285
+ # ex: ['100', '100', '25']
286
+ # CLI: bfd ipv6 interval 100 min_rx 100 multiplier 25
287
+ def ipv6_interval=(arr)
288
+ interval, min_rx, multiplier = arr
289
+ set_args_keys(interval: interval, min_rx: min_rx, multiplier: multiplier,
290
+ state: arr == default_ipv6_interval ? 'no' : '')
291
+ config_set('bfd_global', 'ipv6_interval', @set_args)
292
+ end
293
+
294
+ # fabricpath_interval is an array of fabricpath_interval,
295
+ # fabricpath_min_rx and fabricpath_multiplier
296
+ # ex: ['100', '100', '25']
297
+ # CLI: bfd fabricpath interval 100 min_rx 100 multiplier 25
298
+ def fabricpath_interval=(arr)
299
+ interval, min_rx, multiplier = arr
300
+ set_args_keys(interval: interval, min_rx: min_rx, multiplier: multiplier,
301
+ state: arr == default_fabricpath_interval ? 'no' : '')
302
+ config_set('bfd_global', 'fabricpath_interval', @set_args)
303
+ end
304
+ end # class
305
+ end # module