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,466 @@
1
+ #
2
+ # NXAPI implementation of vpc domain class
3
+ #
4
+ # November 2015, Deepak Cherian
5
+ #
6
+ # Copyright (c) 2014-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
+ require_relative 'interface'
22
+ require_relative 'fabricpath_global'
23
+
24
+ # Add vpc-specific constants to Cisco namespace
25
+ module Cisco
26
+ # Vpc - node utility class for VTP configuration management
27
+ class Vpc < NodeUtil
28
+ attr_reader :domain
29
+ # Constructor for Vpc
30
+ def initialize(domain_id, instantiate=true)
31
+ @domain = domain_id
32
+
33
+ create if instantiate
34
+ end
35
+
36
+ def self.domains
37
+ hash = {}
38
+ return hash unless Vpc.enabled
39
+ my_domain = config_get('vpc', 'domain')
40
+ hash[my_domain] = Vpc.new(my_domain, false) unless my_domain.nil?
41
+ hash
42
+ end
43
+
44
+ def self.enabled
45
+ config_get('vpc', 'feature')
46
+ rescue Cisco::CliError => e
47
+ # cmd will syntax reject when feature is not enabled
48
+ raise unless e.clierror =~ /Syntax error/
49
+ return false
50
+ end
51
+
52
+ def create
53
+ enable unless Vpc.enabled
54
+ config_set('vpc', 'domain', state: '', domain: @domain)
55
+ end
56
+
57
+ def destroy
58
+ config_set('vpc', 'feature', state: 'no')
59
+ end
60
+
61
+ def enable
62
+ config_set('vpc', 'feature', state: '')
63
+ end
64
+
65
+ def set_args_keys_default
66
+ keys = { domain: @domain }
67
+ @get_args = @set_args = keys
68
+ end
69
+
70
+ # rubocop:disable Style/AccessorMethodName
71
+ def set_args_keys(hash={})
72
+ set_args_keys_default
73
+ @set_args = @get_args.merge!(hash) unless hash.empty?
74
+ end
75
+ # rubocop:enable Style/AccessorMethodNamefor
76
+
77
+ ########################################################
78
+ # PROPERTIES #
79
+ ########################################################
80
+
81
+ def auto_recovery
82
+ val = config_get('vpc', 'auto_recovery')
83
+ val.nil? ? false : val
84
+ end
85
+
86
+ def auto_recovery=(val)
87
+ set_args_keys(state: val ? '' : 'no')
88
+ config_set('vpc', 'auto_recovery', @set_args)
89
+ end
90
+
91
+ def default_auto_recovery
92
+ config_get_default('vpc', 'auto_recovery')
93
+ end
94
+
95
+ def auto_recovery_reload_delay
96
+ config_get('vpc', 'auto_recovery_reload_delay')
97
+ end
98
+
99
+ def auto_recovery_reload_delay=(val)
100
+ set_args_keys(delay: val)
101
+ config_set('vpc', 'auto_recovery_reload_delay', @set_args)
102
+ end
103
+
104
+ def default_auto_recovery_reload_delay
105
+ config_get_default('vpc', 'auto_recovery_reload_delay')
106
+ end
107
+
108
+ def delay_restore
109
+ config_get('vpc', 'delay_restore')
110
+ end
111
+
112
+ def delay_restore=(delay)
113
+ set_args_keys(delay: delay)
114
+ config_set('vpc', 'delay_restore', @set_args)
115
+ end
116
+
117
+ def default_delay_restore
118
+ config_get_default('vpc', 'delay_restore')
119
+ end
120
+
121
+ def delay_restore_interface_vlan
122
+ config_get('vpc', 'delay_restore_interface_vlan')
123
+ end
124
+
125
+ def delay_restore_interface_vlan=(delay)
126
+ set_args_keys(delay: delay)
127
+ config_set('vpc', 'delay_restore_interface_vlan', @set_args)
128
+ end
129
+
130
+ def default_delay_restore_interface_vlan
131
+ config_get_default('vpc', 'delay_restore_interface_vlan')
132
+ end
133
+
134
+ def dual_active_exclude_interface_vlan_bridge_domain
135
+ config_get('vpc', 'dual_active_exclude_interface_vlan_bridge_domain')
136
+ end
137
+
138
+ def dual_active_exclude_interface_vlan_bridge_domain=(val)
139
+ set_args_keys(state: val ? '' : 'no', range: val)
140
+ config_set('vpc', 'dual_active_exclude_interface_vlan_bridge_domain',
141
+ @set_args)
142
+ end
143
+
144
+ def default_dual_active_exclude_interface_vlan_bridge_domain
145
+ config_get_default('vpc',
146
+ 'dual_active_exclude_interface_vlan_bridge_domain')
147
+ end
148
+
149
+ def fabricpath_emulated_switch_id
150
+ config_get('vpc', 'fabricpath_emulated_switch_id')
151
+ end
152
+
153
+ def fabricpath_emulated_switch_id=(switch_id)
154
+ FabricpathGlobal.fabricpath_enable
155
+ set_args_keys(state: switch_id ? '' : 'no',
156
+ swid: switch_id ? switch_id : '')
157
+ config_set('vpc', 'fabricpath_emulated_switch_id', @set_args)
158
+ end
159
+
160
+ def default_fabricpath_emulated_switch_id
161
+ config_get_default('vpc', 'fabricpath_emulated_switch_id')
162
+ end
163
+
164
+ # Note: fabricpath_multicast_load_balance also requires
165
+ # fabricpath_emulated_switch_id before it will be functional but it
166
+ # will config & nvgen independently.
167
+ def fabricpath_multicast_load_balance
168
+ config_get('vpc', 'fabricpath_multicast_load_balance')
169
+ end
170
+
171
+ def fabricpath_multicast_load_balance=(state)
172
+ FabricpathGlobal.fabricpath_enable
173
+ set_args_keys(state: state ? '' : 'no')
174
+ config_set('vpc', 'fabricpath_multicast_load_balance', @set_args)
175
+ end
176
+
177
+ def default_fabricpath_multicast_load_balance
178
+ config_get_default('vpc', 'fabricpath_multicast_load_balance')
179
+ end
180
+
181
+ def graceful_consistency_check
182
+ val = config_get('vpc', 'graceful_consistency_check')
183
+ val.nil? ? false : val
184
+ end
185
+
186
+ def graceful_consistency_check=(val)
187
+ set_args_keys(state: val ? '' : 'no')
188
+ config_set('vpc', 'graceful_consistency_check', @set_args)
189
+ end
190
+
191
+ def default_graceful_consistency_check
192
+ config_get_default('vpc', 'graceful_consistency_check')
193
+ end
194
+
195
+ def layer3_peer_routing
196
+ config_get('vpc', 'layer3_peer_routing')
197
+ end
198
+
199
+ def layer3_peer_routing=(val)
200
+ return if val == layer3_peer_routing
201
+ set_args_keys(state: val ? '' : 'no')
202
+ # This requires peer_gateway to be set first
203
+ self.peer_gateway = true if !peer_gateway && val
204
+ config_set('vpc', 'layer3_peer_routing', @set_args)
205
+ end
206
+
207
+ def default_layer3_peer_routing
208
+ config_get_default('vpc', 'layer3_peer_routing')
209
+ end
210
+
211
+ # peer keepalive
212
+ def peer_keepalive_dest
213
+ config_get('vpc', 'peer_keepalive_dest')
214
+ end
215
+
216
+ def default_peer_keepalive_dest
217
+ config_get_default('vpc', 'peer_keepalive_dest')
218
+ end
219
+
220
+ def peer_keepalive_hold_timeout
221
+ config_get('vpc', 'peer_keepalive_hold_timeout')
222
+ end
223
+
224
+ def default_peer_keepalive_hold_timeout
225
+ config_get_default('vpc', 'peer_keepalive_hold_timeout')
226
+ end
227
+
228
+ def peer_keepalive_interval
229
+ config_get('vpc', 'peer_keepalive_interval')
230
+ end
231
+
232
+ def default_peer_keepalive_interval
233
+ config_get_default('vpc', 'peer_keepalive_interval')
234
+ end
235
+
236
+ def peer_keepalive_interval_timeout
237
+ config_get('vpc', 'peer_keepalive_timeout')
238
+ end
239
+
240
+ def default_peer_keepalive_interval_timeout
241
+ config_get_default('vpc', 'peer_keepalive_timeout')
242
+ end
243
+
244
+ def peer_keepalive_precedence
245
+ config_get('vpc', 'peer_keepalive_precedence')
246
+ end
247
+
248
+ def default_peer_keepalive_precedence
249
+ config_get_default('vpc', 'peer_keepalive_precedence')
250
+ end
251
+
252
+ def peer_keepalive_src
253
+ config_get('vpc', 'peer_keepalive_src')
254
+ end
255
+
256
+ def default_peer_keepalive_src
257
+ config_get_default('vpc', 'peer_keepalive_src')
258
+ end
259
+
260
+ def peer_keepalive_udp_port
261
+ config_get('vpc', 'peer_keepalive_udp_port')
262
+ end
263
+
264
+ def default_peer_keepalive_udp_port
265
+ config_get_default('vpc', 'peer_keepalive_udp_port')
266
+ end
267
+
268
+ def peer_keepalive_vrf
269
+ config_get('vpc', 'peer_keepalive_vrf')
270
+ end
271
+
272
+ def default_peer_keepalive_vrf
273
+ config_get_default('vpc', 'peer_keepalive_vrf')
274
+ end
275
+
276
+ # common setter
277
+ def peer_keepalive_set(dest, src, udp_port, vrf, interval, timeout,
278
+ prec, hold_timeout)
279
+ set_args_keys(dest: dest, src: src, port_num: udp_port, vrf: vrf,
280
+ interval: interval, timeout: timeout,
281
+ precedence: prec, hold_timeout: hold_timeout)
282
+ config_set('vpc', 'peer_keepalive_set', @set_args)
283
+ end
284
+
285
+ def peer_gateway
286
+ config_get('vpc', 'peer_gateway')
287
+ end
288
+
289
+ def peer_gateway=(val)
290
+ set_args_keys(state: val ? '' : 'no')
291
+ # disable layer3 routing first
292
+ self.layer3_peer_routing = false if !val && layer3_peer_routing
293
+ config_set('vpc', 'peer_gateway', @set_args)
294
+ end
295
+
296
+ def peer_switch
297
+ config_get('vpc', 'peer_switch')
298
+ end
299
+
300
+ def peer_switch=(val)
301
+ set_args_keys(state: val ? '' : 'no')
302
+ config_set('vpc', 'peer_switch', @set_args)
303
+ end
304
+
305
+ def arp_synchronize
306
+ config_get('vpc', 'arp_synchronize')
307
+ end
308
+
309
+ def arp_synchronize=(val)
310
+ set_args_keys(state: val ? '' : 'no')
311
+ config_set('vpc', 'arp_synchronize', @set_args)
312
+ end
313
+
314
+ def nd_synchronize
315
+ config_get('vpc', 'nd_synchronize')
316
+ end
317
+
318
+ def nd_synchronize=(val)
319
+ set_args_keys(state: val ? '' : 'no')
320
+ config_set('vpc', 'nd_synchronize', @set_args)
321
+ end
322
+
323
+ def default_peer_gateway
324
+ config_get_default('vpc', 'peer_gateway')
325
+ end
326
+
327
+ def default_peer_switch
328
+ config_get_default('vpc', 'peer_switch')
329
+ end
330
+
331
+ def default_arp_synchronize
332
+ config_get_default('vpc', 'arp_synchronize')
333
+ end
334
+
335
+ def default_nd_synchronize
336
+ config_get_default('vpc', 'nd_synchronize')
337
+ end
338
+
339
+ def peer_gateway_exclude_bridge_domain
340
+ config_get('vpc', 'peer_gateway_exclude_bridge_domain')
341
+ end
342
+
343
+ def peer_gateway_exclude_bridge_domain=(val)
344
+ set_args_keys(state: val ? '' : 'no', range: val)
345
+ config_set('vpc', 'peer_gateway_exclude_bridge_domain', @set_args)
346
+ end
347
+
348
+ def default_peer_gateway_exclude_bridge_domain
349
+ config_get_default('vpc', 'peer_gateway_exclude_bridge_domain')
350
+ end
351
+
352
+ def peer_gateway_exclude_vlan
353
+ config_get('vpc', 'peer_gateway_exclude_vlan')
354
+ end
355
+
356
+ def peer_gateway_exclude_vlan=(val)
357
+ set_args_keys(state: val ? '' : 'no', range: val)
358
+ config_set('vpc', 'peer_gateway_exclude_vlan', @set_args)
359
+ end
360
+
361
+ def default_peer_gateway_exclude_vlan
362
+ config_get_default('vpc', 'peer_gateway_exclude_vlan')
363
+ end
364
+
365
+ def port_channel_limit
366
+ val = config_get('vpc', 'port_channel_limit')
367
+ val.nil? ? false : val
368
+ end
369
+
370
+ def port_channel_limit=(val)
371
+ set_args_keys(state: val ? '' : 'no')
372
+ # This requires fabricpath_emulated_switch_id to be set first
373
+ fail 'fabricpath_switch_id configuration is required in the vPC domain' if
374
+ !fabricpath_emulated_switch_id && !val
375
+ config_set('vpc', 'port_channel_limit', @set_args)
376
+ end
377
+
378
+ def default_port_channel_limit
379
+ config_get_default('vpc', 'port_channel_limit')
380
+ end
381
+
382
+ def role_priority
383
+ config_get('vpc', 'role_priority')
384
+ end
385
+
386
+ def role_priority=(priority)
387
+ set_args_keys(priority: priority)
388
+ config_set('vpc', 'role_priority', @set_args)
389
+ end
390
+
391
+ def default_role_priority
392
+ config_get_default('vpc', 'role_priority')
393
+ end
394
+
395
+ def self_isolation
396
+ val = config_get('vpc', 'self_isolation')
397
+ val.nil? ? false : val
398
+ end
399
+
400
+ def self_isolation=(val)
401
+ set_args_keys(state: val ? '' : 'no')
402
+ config_set('vpc', 'self_isolation', @set_args)
403
+ end
404
+
405
+ def default_self_isolation
406
+ config_get_default('vpc', 'self_isolation')
407
+ end
408
+
409
+ def shutdown
410
+ config_get('vpc', 'shutdown')
411
+ end
412
+
413
+ def shutdown=(val)
414
+ set_args_keys(state: val ? '' : 'no')
415
+ config_set('vpc', 'shutdown', @set_args)
416
+ end
417
+
418
+ def default_shutdown
419
+ config_get_default('vpc', 'shutdown')
420
+ end
421
+
422
+ def system_mac
423
+ config_get('vpc', 'system_mac')
424
+ end
425
+
426
+ def system_mac=(mac_addr)
427
+ set_args_keys(state: mac_addr.empty? ? 'no' : '', mac_addr: mac_addr)
428
+ config_set('vpc', 'system_mac', @set_args)
429
+ end
430
+
431
+ def default_system_mac
432
+ config_get_default('vpc', 'system_mac')
433
+ end
434
+
435
+ def system_priority
436
+ config_get('vpc', 'system_priority')
437
+ end
438
+
439
+ def system_priority=(priority)
440
+ set_args_keys(priority: priority)
441
+ config_set('vpc', 'system_priority', @set_args)
442
+ end
443
+
444
+ def default_system_priority
445
+ config_get_default('vpc', 'system_priority')
446
+ end
447
+
448
+ def track
449
+ config_get('vpc', 'track')
450
+ end
451
+
452
+ def track=(val)
453
+ unless val.nil?
454
+ fail ArgumentError, 'track must be an Integer' unless
455
+ val.is_a?(Integer)
456
+ end
457
+
458
+ set_args_keys(state: (val == track) ? 'no' : '', val: val)
459
+ config_set('vpc', 'track', @set_args)
460
+ end
461
+
462
+ def default_track
463
+ config_get_default('vpc', 'track')
464
+ end
465
+ end # class Vpc
466
+ end # module Cisco
@@ -0,0 +1,192 @@
1
+ # VRF provider class
2
+ #
3
+ # Jie Yang, July 2015
4
+ #
5
+ # Copyright (c) 2015-2016 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
+ require_relative 'feature'
21
+
22
+ module Cisco
23
+ # Vrf - node utility class for VRF configuration management
24
+ class Vrf < NodeUtil
25
+ attr_reader :name
26
+
27
+ def initialize(name, instantiate=true)
28
+ fail TypeError unless name.is_a?(String)
29
+ @name = name.downcase.strip
30
+ create if instantiate
31
+ end
32
+
33
+ def to_s
34
+ "VRF #{@name}"
35
+ end
36
+
37
+ def self.vrfs
38
+ hash = {}
39
+ vrf_list = config_get('vrf', 'all_vrfs')
40
+ return hash if vrf_list.nil?
41
+
42
+ vrf_list.each do |id|
43
+ id = id.downcase.strip
44
+ hash[id] = Vrf.new(id, false)
45
+ end
46
+ hash
47
+ end
48
+
49
+ def create
50
+ config_set('vrf', 'create', vrf: @name)
51
+ end
52
+
53
+ def destroy
54
+ config_set('vrf', 'destroy', vrf: @name)
55
+ end
56
+
57
+ ########################################################
58
+ # PROPERTIES #
59
+ ########################################################
60
+
61
+ def description
62
+ config_get('vrf', 'description', vrf: @name)
63
+ end
64
+
65
+ def description=(desc)
66
+ fail TypeError unless desc.is_a?(String)
67
+ desc.strip!
68
+ no_cmd = desc.empty? ? 'no' : ''
69
+ config_set('vrf', 'description', vrf: @name, state: no_cmd, desc: desc)
70
+ end
71
+
72
+ def default_description
73
+ config_get_default('vrf', 'description')
74
+ end
75
+
76
+ def mhost_ipv4_default_interface
77
+ config_get('vrf', 'mhost_default_interface', vrf: @name, afi: 'ipv4')
78
+ end
79
+
80
+ def mhost_ipv4_default_interface=(val)
81
+ mhost_default_interface_setter_helper('ipv4', val)
82
+ end
83
+
84
+ def default_mhost_ipv4_default_interface
85
+ config_get_default('vrf', 'mhost_default_interface')
86
+ end
87
+
88
+ def mhost_ipv6_default_interface
89
+ config_get('vrf', 'mhost_default_interface', vrf: @name, afi: 'ipv6')
90
+ end
91
+
92
+ def mhost_ipv6_default_interface=(val)
93
+ mhost_default_interface_setter_helper('ipv6', val)
94
+ end
95
+
96
+ def default_mhost_ipv6_default_interface
97
+ config_get_default('vrf', 'mhost_default_interface')
98
+ end
99
+
100
+ def mhost_default_interface_setter_helper(afi, val)
101
+ val.strip!
102
+ no_cmd = val.empty? ? 'no' : ''
103
+ config_set('vrf', 'mhost_default_interface', vrf: @name,
104
+ state: no_cmd, afi: afi, intf: val)
105
+ end
106
+
107
+ def remote_route_filtering
108
+ config_get('vrf', 'remote_route_filtering', vrf: @name)
109
+ end
110
+
111
+ def remote_route_filtering=(val)
112
+ no_cmd = val ? 'no' : ''
113
+ config_set('vrf', 'remote_route_filtering', vrf: @name,
114
+ state: no_cmd, remote_route_filtering: val)
115
+ end
116
+
117
+ def default_remote_route_filtering
118
+ config_get_default('vrf', 'remote_route_filtering')
119
+ end
120
+
121
+ def shutdown
122
+ config_get('vrf', 'shutdown', vrf: @name)
123
+ end
124
+
125
+ def shutdown=(val)
126
+ no_cmd = (val) ? '' : 'no'
127
+ config_set('vrf', 'shutdown', vrf: @name, state: no_cmd)
128
+ end
129
+
130
+ def default_shutdown
131
+ config_get_default('vrf', 'shutdown')
132
+ end
133
+
134
+ # route_distinguisher
135
+ # Note that this property is supported by both bgp and vrf providers.
136
+ def route_distinguisher
137
+ config_get('vrf', 'route_distinguisher', vrf: @name)
138
+ end
139
+
140
+ def route_distinguisher=(rd)
141
+ # feature bgp and nv overlay required for rd cli in NXOS
142
+ if platform == :nexus
143
+ Feature.bgp_enable
144
+ Feature.nv_overlay_enable if Feature.nv_overlay_supported?
145
+ Feature.nv_overlay_evpn_enable if Feature.nv_overlay_evpn_supported?
146
+ end
147
+ if rd == default_route_distinguisher
148
+ state = 'no'
149
+ # I2 images require an rd for removal
150
+ rd = route_distinguisher
151
+ return if rd.to_s.empty?
152
+ else
153
+ state = ''
154
+ end
155
+ config_set('vrf', 'route_distinguisher', state: state, vrf: @name, rd: rd)
156
+ end
157
+
158
+ def default_route_distinguisher
159
+ config_get_default('vrf', 'route_distinguisher')
160
+ end
161
+
162
+ # Vni (Getter/Setter/Default)
163
+ def vni
164
+ config_get('vrf', 'vni', vrf: @name)
165
+ end
166
+
167
+ def vni=(id)
168
+ Feature.vn_segment_vlan_based_enable if platform == :nexus
169
+ no_cmd = (id) ? '' : 'no'
170
+ id = (id) ? id : vni
171
+ config_set('vrf', 'vni', vrf: @name, state: no_cmd, id: id)
172
+ end
173
+
174
+ def default_vni
175
+ config_get_default('vrf', 'vni')
176
+ end
177
+
178
+ def vpn_id
179
+ config_get('vrf', 'vpn_id', vrf: @name)
180
+ end
181
+
182
+ def vpn_id=(val)
183
+ val.strip!
184
+ no_cmd = val.empty? ? 'no' : ''
185
+ config_set('vrf', 'vpn_id', vrf: @name, state: no_cmd, vpnid: val)
186
+ end
187
+
188
+ def default_vpn_id
189
+ config_get_default('vrf', 'vpn_id')
190
+ end
191
+ end # class
192
+ end # module