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,176 @@
1
+ # November 2015, Jonathan Tripathy
2
+ #
3
+ # Copyright (c) 2014-2016 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 'node_util'
18
+
19
+ module Cisco
20
+ # SnmpNotificationReceiver - node utility class for SNMP server management
21
+ class SnmpNotificationReceiver < NodeUtil
22
+ attr_reader :name
23
+
24
+ def initialize(name, # rubocop:disable CyclomaticComplexity, MethodLength, PerceivedComplexity, LineLength, AbcSize
25
+ instantiate: true,
26
+ type: '',
27
+ version: '',
28
+ security: '',
29
+ username: '',
30
+ port: '',
31
+ vrf: '',
32
+ source_interface: '')
33
+
34
+ fail TypeError unless name.is_a?(String)
35
+ @name = name
36
+
37
+ fail TypeError unless type.is_a?(String)
38
+
39
+ fail TypeError unless version.is_a?(String) || version.is_a?(Integer)
40
+
41
+ fail TypeError unless security.is_a?(String)
42
+
43
+ fail TypeError unless username.is_a?(String)
44
+
45
+ fail TypeError unless port.is_a?(String) || port.is_a?(Integer)
46
+
47
+ fail TypeError unless vrf.is_a?(String)
48
+
49
+ fail TypeError unless source_interface.is_a?(String)
50
+
51
+ return unless instantiate
52
+
53
+ # Mandatory Properties
54
+ fail TypeError unless name.length > 0
55
+ fail TypeError unless type.length > 0
56
+
57
+ if version.is_a?(Integer)
58
+ fail TypeError if version <= 0
59
+ else
60
+ fail TypeError if version.length <= 0
61
+ end
62
+
63
+ fail TypeError unless username.length > 0
64
+
65
+ config_set('snmp_notification_receiver',
66
+ 'receivers',
67
+ state: '',
68
+ ip: name,
69
+ type: type,
70
+ version: version.empty? ? '' : "version #{version}",
71
+ security: security,
72
+ username: username,
73
+ udp_port: port.empty? ? '' : "udp-port #{port}")
74
+
75
+ unless source_interface.empty?
76
+ config_set('snmp_notification_receiver',
77
+ 'source_interface',
78
+ ip: name,
79
+ source_interface: source_interface,
80
+ port: port.empty? ? '' : "udp-port #{port}")
81
+ end
82
+
83
+ return if vrf.empty?
84
+ if platform == :nexus
85
+ config_set('snmp_notification_receiver',
86
+ 'vrf',
87
+ ip: name,
88
+ vrf: vrf,
89
+ port: port.empty? ? '' : "udp-port #{port}")
90
+ else
91
+ config_set('snmp_notification_receiver',
92
+ 'vrf',
93
+ vrf: vrf,
94
+ ip: name,
95
+ username: username)
96
+ end
97
+ end
98
+
99
+ def self.receivers
100
+ hash = {}
101
+
102
+ receivers_list = config_get('snmp_notification_receiver', 'receivers')
103
+ return hash if receivers_list.nil?
104
+
105
+ receivers_list.each do |arr|
106
+ next if !arr.is_a?(Array) || arr.empty?
107
+ id = arr[0]
108
+ hash[id] = SnmpNotificationReceiver.new(id, instantiate: false)
109
+ end
110
+
111
+ hash
112
+ end
113
+
114
+ def ==(other)
115
+ name == other.name
116
+ end
117
+
118
+ def destroy
119
+ config_set('snmp_notification_receiver',
120
+ 'receivers',
121
+ state: 'no',
122
+ ip: name,
123
+ type: type,
124
+ version: version.nil? ? '' : "version #{version}",
125
+ security: security.nil? ? '' : "#{security}",
126
+ username: username,
127
+ udp_port: port.nil? ? '' : "udp-port #{port}")
128
+ end
129
+
130
+ def port
131
+ config_get('snmp_notification_receiver', 'port', @name)
132
+ end
133
+
134
+ def username
135
+ if !port.nil?
136
+ endpoint = 'username_with_port'
137
+ else
138
+ endpoint = 'username'
139
+ end
140
+
141
+ config_get('snmp_notification_receiver', endpoint, @name)
142
+ end
143
+
144
+ def version
145
+ config_get('snmp_notification_receiver', 'version', @name)
146
+ end
147
+
148
+ def type
149
+ config_get('snmp_notification_receiver', 'type', @name)
150
+ end
151
+
152
+ def security
153
+ config_get('snmp_notification_receiver', 'security', @name)
154
+ end
155
+
156
+ def vrf
157
+ if platform == :nexus
158
+ config_get('snmp_notification_receiver', 'vrf', @name)
159
+ else
160
+ # get all vrf
161
+ all_vrf = config_get('snmp_notification_receiver', 'vrf_all')
162
+ all_vrf.each do |vrf|
163
+ vrf_list = config_get('snmp_notification_receiver', 'vrf_values', vrf: vrf) # rubocop:disable Metrics/LineLength
164
+ # if vrf contains @name return vrf
165
+ return vrf if vrf_list.include?(@name)
166
+ end
167
+ end
168
+ end
169
+
170
+ def source_interface
171
+ val = config_get('snmp_notification_receiver', 'source_interface', @name)
172
+ val = val.downcase unless val.nil?
173
+ val
174
+ end
175
+ end
176
+ end
@@ -0,0 +1,109 @@
1
+ # December 2014, Alex Hunsberger
2
+ #
3
+ # Copyright (c) 2014-2016 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 'node_util'
18
+
19
+ module Cisco
20
+ # SnmpCommunity - node utility class for SNMP community config management
21
+ class SnmpCommunity < NodeUtil
22
+ @communities = nil
23
+
24
+ def initialize(name, group, instantiate=true)
25
+ fail TypeError unless name.is_a?(String)
26
+ fail TypeError unless group.is_a?(String)
27
+ @name = name
28
+ return unless instantiate
29
+ if platform == :nexus
30
+ config_set('snmp_community', 'community',
31
+ state: '',
32
+ name: @name,
33
+ group: group)
34
+ else
35
+ config_set('snmp_community', 'community',
36
+ state: '',
37
+ name: @name)
38
+ # create the mapping for group
39
+ config_set('snmp_community', 'group_simple', state: '', group: group)
40
+ config_set('snmp_community', 'group_community_mapping', name: @name, group: group) # rubocop:disable Metrics/LineLength
41
+ end
42
+ end
43
+
44
+ def self.communities
45
+ @communities = {}
46
+ comms = config_get('snmp_community', 'all_communities')
47
+ unless comms.nil?
48
+ comms.each do |comm|
49
+ @communities[comm] = SnmpCommunity.new(comm, '', false)
50
+ end
51
+ end
52
+ @communities
53
+ end
54
+
55
+ def destroy
56
+ # CLI requires specifying a group even for "no" commands
57
+ config_set('snmp_community', 'community',
58
+ state: 'no',
59
+ name: @name,
60
+ group: 'null')
61
+ end
62
+
63
+ # name is read only
64
+ # def name
65
+ # @name
66
+ # end
67
+
68
+ def group
69
+ if platform == :nexus
70
+ config_get('snmp_community', 'group', name: @name)
71
+ else
72
+ config_get('snmp_community', 'group_community_mapping', name: @name)
73
+ end
74
+ end
75
+
76
+ def group=(group)
77
+ fail TypeError unless group.is_a?(String)
78
+ if platform == :nexus
79
+ config_set('snmp_community', 'group', name: @name, group: group)
80
+ else
81
+ # create the mapping
82
+ config_set('snmp_community', 'group_simple', group: group)
83
+ config_set('snmp_community', 'group_community_mapping', name: @name, group: group) # rubocop:disable Metrics/LineLength
84
+ end
85
+ end
86
+
87
+ def self.default_group
88
+ config_get_default('snmp_community', 'group')
89
+ end
90
+
91
+ def acl
92
+ config_get('snmp_community', 'acl', name: @name)
93
+ end
94
+
95
+ def acl=(acl)
96
+ fail TypeError unless acl.is_a?(String)
97
+ if acl.empty?
98
+ acl = self.acl
99
+ config_set('snmp_community', 'acl', state: 'no', name: @name, acl: acl) unless acl.empty? # rubocop:disable Metrics/LineLength
100
+ else
101
+ config_set('snmp_community', 'acl', state: '', name: @name, acl: acl)
102
+ end
103
+ end
104
+
105
+ def self.default_acl
106
+ config_get_default('snmp_community', 'acl')
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,54 @@
1
+ #
2
+ # NXAPI implementation of SnmpGroup class
3
+ #
4
+ # February 2015, Chris Van Heuveln
5
+ #
6
+ # Copyright (c) 2015-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
+ # "group" is a standard SNMP term but in NXOS "role" is used to serve the
21
+ # purpose of group; thus this provider utility does not create snmp groups
22
+ # and is limited to reporting group (role) existence only.
23
+
24
+ require_relative 'node_util'
25
+
26
+ module Cisco
27
+ # SnmpGroup - node utility class for SNMP group configuration management
28
+ class SnmpGroup < NodeUtil
29
+ attr_reader :name
30
+
31
+ def initialize(name)
32
+ fail TypeError unless name.is_a?(String)
33
+ @name = name
34
+ end
35
+
36
+ def self.groups
37
+ group_ids = config_get('snmp_group', 'group')
38
+ return {} if group_ids.nil?
39
+
40
+ hash = {}
41
+ group_ids.each do |name|
42
+ hash[name] = SnmpGroup.new(name)
43
+ end
44
+ hash
45
+ end
46
+
47
+ def self.exists?(group)
48
+ fail ArgumentError if group.empty?
49
+ fail TypeError unless group.is_a? String
50
+ groups = config_get('snmp_group', 'group')
51
+ (!groups.nil? && groups.include?(group))
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,57 @@
1
+ # December 2015
2
+ #
3
+ # Copyright (c) 2014-2016 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 'node_util'
18
+
19
+ module Cisco
20
+ # SnmpNotification - node utility class for SNMP notification management
21
+ class SnmpNotification < NodeUtil
22
+ def initialize(name)
23
+ fail TypeError unless name.is_a?(String)
24
+ @name = name
25
+ end
26
+
27
+ def self.notifications
28
+ @notifications = {}
29
+ notifs = config_get('snmpnotification', 'notifications')
30
+ unless notifs.nil?
31
+ notifs.each do |notif|
32
+ @notifications[notif] = SnmpNotification.new(notif)
33
+ end
34
+ end
35
+ @notifications
36
+ end
37
+
38
+ def destroy
39
+ # not needed
40
+ end
41
+
42
+ # Set enable
43
+ def enable=(enable)
44
+ config_set('snmpnotification',
45
+ 'enable',
46
+ state: enable ? '' : 'no',
47
+ trap_name: @name)
48
+ end
49
+
50
+ # Get enable
51
+ def enable
52
+ value = config_get('snmpnotification', 'enable', trap_name: @name)
53
+ enabled = value.nil? ? false : true
54
+ enabled
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,132 @@
1
+ # November 2014, Alex Hunsberger
2
+ #
3
+ # Copyright (c) 2014-2016 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 'node_util'
18
+
19
+ module Cisco
20
+ # SnmpServer - node utility class for SNMP server management
21
+ class SnmpServer < NodeUtil
22
+ def aaa_user_cache_timeout
23
+ config_get('snmp_server', 'aaa_user_cache_timeout')
24
+ end
25
+
26
+ def aaa_user_cache_timeout=(timeout)
27
+ config_set('snmp_server', 'aaa_user_cache_timeout', '', timeout)
28
+ end
29
+
30
+ def default_aaa_user_cache_timeout
31
+ config_get_default('snmp_server', 'aaa_user_cache_timeout')
32
+ end
33
+
34
+ def location
35
+ match = config_get('snmp_server', 'location')
36
+ match.nil? ? default_location : match
37
+ end
38
+
39
+ def location=(location)
40
+ fail TypeError unless location.is_a?(String)
41
+ if location.empty?
42
+ config_set('snmp_server', 'location', state: 'no', location: '')
43
+ else
44
+ config_set('snmp_server', 'location', state: '', location: location)
45
+ end
46
+ end
47
+
48
+ def default_location
49
+ config_get_default('snmp_server', 'location')
50
+ end
51
+
52
+ def contact
53
+ match = config_get('snmp_server', 'contact')
54
+ match.nil? ? default_contact : match
55
+ end
56
+
57
+ def contact=(contact)
58
+ fail TypeError unless contact.is_a?(String)
59
+ if contact.empty?
60
+ config_set('snmp_server', 'contact', state: 'no', contact: '')
61
+ else
62
+ config_set('snmp_server', 'contact', state: '', contact: contact)
63
+ end
64
+ end
65
+
66
+ def default_contact
67
+ config_get_default('snmp_server', 'contact')
68
+ end
69
+
70
+ def packet_size
71
+ config_get('snmp_server', 'packet_size')
72
+ end
73
+
74
+ def packet_size=(size)
75
+ if size == 0
76
+ ps = packet_size
77
+ config_set('snmp_server', 'packet_size', 'no', ps) unless ps == 0
78
+ else
79
+ config_set('snmp_server', 'packet_size', '', size)
80
+ end
81
+ end
82
+
83
+ def default_packet_size
84
+ config_get_default('snmp_server', 'packet_size')
85
+ end
86
+
87
+ def global_enforce_priv?
88
+ config_get('snmp_server', 'global_enforce_priv')
89
+ end
90
+
91
+ def global_enforce_priv=(enforce)
92
+ if enforce
93
+ config_set('snmp_server', 'global_enforce_priv', '')
94
+ else
95
+ config_set('snmp_server', 'global_enforce_priv', 'no')
96
+ end
97
+ end
98
+
99
+ def default_global_enforce_priv
100
+ config_get_default('snmp_server', 'global_enforce_priv')
101
+ end
102
+
103
+ def protocol?
104
+ config_get('snmp_server', 'protocol')
105
+ end
106
+
107
+ def protocol=(enable)
108
+ no_cmd = (enable ? '' : 'no')
109
+ config_set('snmp_server', 'protocol', no_cmd)
110
+ end
111
+
112
+ def default_protocol
113
+ config_get_default('snmp_server', 'protocol')
114
+ end
115
+
116
+ def tcp_session_auth?
117
+ config_get('snmp_server', 'tcp_session_auth')
118
+ end
119
+
120
+ def tcp_session_auth=(enable)
121
+ if enable
122
+ config_set('snmp_server', 'tcp_session_auth', '', 'auth')
123
+ else
124
+ config_set('snmp_server', 'tcp_session_auth', 'no', '')
125
+ end
126
+ end
127
+
128
+ def default_tcp_session_auth
129
+ config_get_default('snmp_server', 'tcp_session_auth')
130
+ end
131
+ end
132
+ end