cisco_node_utils 1.2.0 → 1.3.0

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 (255) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +13 -0
  5. data/.travis.yml +4 -1
  6. data/CHANGELOG.md +81 -2
  7. data/CONTRIBUTING.md +2 -17
  8. data/Gemfile +5 -0
  9. data/README.md +92 -47
  10. data/Rakefile +23 -1
  11. data/bin/git/hooks/hook_lib +7 -0
  12. data/bin/git/hooks/pre-commit/check_unstaged_changes +18 -0
  13. data/bin/git/hooks/pre-commit/rubocop +7 -2
  14. data/bin/git/hooks/pre-commit/validate-diffs +18 -4
  15. data/bin/git/hooks/pre-commit/validate-yaml +18 -0
  16. data/bin/git/update-hooks +64 -6
  17. data/cisco_node_utils.gemspec +9 -6
  18. data/docs/README-develop-best-practices.md +149 -50
  19. data/docs/README-develop-node-utils-APIs.md +92 -42
  20. data/docs/README-maintainers.md +7 -4
  21. data/docs/README-test-execution.md +57 -0
  22. data/docs/cisco_node_utils.yaml.example +30 -0
  23. data/docs/template-router.rb +4 -0
  24. data/ext/mkrf_conf.rb +63 -0
  25. data/lib/.rubocop.yml +2 -2
  26. data/lib/cisco_node_utils.rb +5 -0
  27. data/lib/cisco_node_utils/aaa_authentication_login.rb +5 -6
  28. data/lib/cisco_node_utils/aaa_authorization_service.rb +1 -1
  29. data/lib/cisco_node_utils/ace.rb +165 -12
  30. data/lib/cisco_node_utils/acl.rb +2 -1
  31. data/lib/cisco_node_utils/bgp.rb +184 -21
  32. data/lib/cisco_node_utils/bgp_af.rb +94 -249
  33. data/lib/cisco_node_utils/bgp_neighbor.rb +94 -14
  34. data/lib/cisco_node_utils/bgp_neighbor_af.rb +75 -8
  35. data/lib/cisco_node_utils/bridge_domain.rb +183 -0
  36. data/lib/cisco_node_utils/bridge_domain_vni.rb +206 -0
  37. data/lib/cisco_node_utils/cisco_cmn_utils.rb +85 -2
  38. data/lib/cisco_node_utils/client.rb +35 -0
  39. data/lib/cisco_node_utils/client/client.rb +234 -0
  40. data/lib/cisco_node_utils/client/grpc.rb +33 -0
  41. data/lib/cisco_node_utils/client/grpc/client.rb +311 -0
  42. data/lib/cisco_node_utils/client/grpc/ems.proto +148 -0
  43. data/lib/cisco_node_utils/client/grpc/ems.rb +111 -0
  44. data/lib/cisco_node_utils/client/grpc/ems_services.rb +49 -0
  45. data/lib/cisco_node_utils/client/nxapi.rb +31 -0
  46. data/lib/cisco_node_utils/client/nxapi/client.rb +305 -0
  47. data/lib/cisco_node_utils/client/utils.rb +164 -0
  48. data/lib/cisco_node_utils/cmd_ref/README_YAML.md +222 -254
  49. data/lib/cisco_node_utils/cmd_ref/aaa_auth_login_service.yaml +11 -8
  50. data/lib/cisco_node_utils/cmd_ref/aaa_authentication_login.yaml +22 -15
  51. data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +11 -8
  52. data/lib/cisco_node_utils/cmd_ref/acl.yaml +21 -16
  53. data/lib/cisco_node_utils/cmd_ref/bgp.yaml +239 -109
  54. data/lib/cisco_node_utils/cmd_ref/bgp_af.yaml +114 -55
  55. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +76 -52
  56. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +106 -62
  57. data/lib/cisco_node_utils/cmd_ref/bridge_domain.yaml +71 -0
  58. data/lib/cisco_node_utils/cmd_ref/bridge_domain_vni.yaml +33 -0
  59. data/lib/cisco_node_utils/cmd_ref/dnsclient.yaml +35 -14
  60. data/lib/cisco_node_utils/cmd_ref/encapsulation.yaml +25 -0
  61. data/lib/cisco_node_utils/cmd_ref/evpn_vni.yaml +23 -17
  62. data/lib/cisco_node_utils/cmd_ref/fabricpath.yaml +94 -83
  63. data/lib/cisco_node_utils/cmd_ref/fabricpath_topology.yaml +22 -17
  64. data/lib/cisco_node_utils/cmd_ref/feature.yaml +76 -26
  65. data/lib/cisco_node_utils/cmd_ref/images.yaml +3 -2
  66. data/lib/cisco_node_utils/cmd_ref/interface.yaml +381 -153
  67. data/lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml +21 -11
  68. data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +21 -21
  69. data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +30 -21
  70. data/lib/cisco_node_utils/cmd_ref/interface_service_vni.yaml +18 -13
  71. data/lib/cisco_node_utils/cmd_ref/inventory.yaml +26 -31
  72. data/lib/cisco_node_utils/cmd_ref/itd_device_group.yaml +83 -0
  73. data/lib/cisco_node_utils/cmd_ref/itd_service.yaml +119 -0
  74. data/lib/cisco_node_utils/cmd_ref/memory.yaml +17 -6
  75. data/lib/cisco_node_utils/cmd_ref/ntp_config.yaml +10 -3
  76. data/lib/cisco_node_utils/cmd_ref/ntp_server.yaml +17 -5
  77. data/lib/cisco_node_utils/cmd_ref/ospf.yaml +33 -29
  78. data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +12 -10
  79. data/lib/cisco_node_utils/cmd_ref/pim.yaml +16 -19
  80. data/lib/cisco_node_utils/cmd_ref/portchannel_global.yaml +40 -25
  81. data/lib/cisco_node_utils/cmd_ref/radius_global.yaml +17 -12
  82. data/lib/cisco_node_utils/cmd_ref/radius_server.yaml +71 -35
  83. data/lib/cisco_node_utils/cmd_ref/radius_server_group.yaml +10 -5
  84. data/lib/cisco_node_utils/cmd_ref/show_system.yaml +6 -2
  85. data/lib/cisco_node_utils/cmd_ref/show_version.yaml +47 -43
  86. data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +13 -11
  87. data/lib/cisco_node_utils/cmd_ref/snmp_group.yaml +4 -2
  88. data/lib/cisco_node_utils/cmd_ref/snmp_notification_receiver.yaml +23 -21
  89. data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +26 -22
  90. data/lib/cisco_node_utils/cmd_ref/snmp_user.yaml +19 -17
  91. data/lib/cisco_node_utils/cmd_ref/snmpnotification.yaml +18 -6
  92. data/lib/cisco_node_utils/cmd_ref/stp_global.yaml +234 -0
  93. data/lib/cisco_node_utils/cmd_ref/syslog_server.yaml +24 -9
  94. data/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml +5 -3
  95. data/lib/cisco_node_utils/cmd_ref/system.yaml +4 -3
  96. data/lib/cisco_node_utils/cmd_ref/tacacs_server.yaml +22 -20
  97. data/lib/cisco_node_utils/cmd_ref/tacacs_server_group.yaml +27 -15
  98. data/lib/cisco_node_utils/cmd_ref/tacacs_server_host.yaml +45 -16
  99. data/lib/cisco_node_utils/cmd_ref/vdc.yaml +21 -11
  100. data/lib/cisco_node_utils/cmd_ref/virtual_service.yaml +3 -2
  101. data/lib/cisco_node_utils/cmd_ref/vlan.yaml +60 -32
  102. data/lib/cisco_node_utils/cmd_ref/vpc.yaml +118 -101
  103. data/lib/cisco_node_utils/cmd_ref/vrf.yaml +54 -58
  104. data/lib/cisco_node_utils/cmd_ref/vrf_af.yaml +118 -0
  105. data/lib/cisco_node_utils/cmd_ref/vtp.yaml +19 -25
  106. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +28 -18
  107. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +34 -17
  108. data/lib/cisco_node_utils/cmd_ref/yum.yaml +6 -4
  109. data/lib/cisco_node_utils/command_reference.rb +261 -142
  110. data/lib/cisco_node_utils/constants.rb +33 -0
  111. data/lib/cisco_node_utils/encapsulation.rb +112 -0
  112. data/lib/cisco_node_utils/environment.rb +102 -0
  113. data/lib/cisco_node_utils/evpn_vni.rb +5 -3
  114. data/lib/cisco_node_utils/exceptions.rb +111 -0
  115. data/lib/cisco_node_utils/fabricpath_global.rb +52 -35
  116. data/lib/cisco_node_utils/fabricpath_topology.rb +44 -57
  117. data/lib/cisco_node_utils/feature.rb +165 -3
  118. data/lib/cisco_node_utils/interface.rb +1051 -260
  119. data/lib/cisco_node_utils/interface_channel_group.rb +11 -10
  120. data/lib/cisco_node_utils/interface_ospf.rb +1 -2
  121. data/lib/cisco_node_utils/interface_portchannel.rb +4 -12
  122. data/lib/cisco_node_utils/interface_service_vni.rb +7 -7
  123. data/lib/cisco_node_utils/itd_device_group.rb +248 -0
  124. data/lib/cisco_node_utils/itd_device_group_node.rb +144 -0
  125. data/lib/cisco_node_utils/itd_service.rb +523 -0
  126. data/lib/cisco_node_utils/logger.rb +75 -0
  127. data/lib/cisco_node_utils/node.rb +62 -192
  128. data/lib/cisco_node_utils/node_util.rb +56 -10
  129. data/lib/cisco_node_utils/overlay_global.rb +2 -2
  130. data/lib/cisco_node_utils/pim.rb +2 -13
  131. data/lib/cisco_node_utils/pim_group_list.rb +1 -1
  132. data/lib/cisco_node_utils/pim_rp_address.rb +1 -1
  133. data/lib/cisco_node_utils/platform.rb +52 -21
  134. data/lib/cisco_node_utils/portchannel_global.rb +89 -19
  135. data/lib/cisco_node_utils/radius_server.rb +168 -37
  136. data/lib/cisco_node_utils/router_ospf.rb +20 -35
  137. data/lib/cisco_node_utils/router_ospf_vrf.rb +4 -4
  138. data/lib/cisco_node_utils/snmpserver.rb +1 -6
  139. data/lib/cisco_node_utils/snmpuser.rb +6 -4
  140. data/lib/cisco_node_utils/stp_global.rb +676 -0
  141. data/lib/cisco_node_utils/syslog_server.rb +77 -18
  142. data/lib/cisco_node_utils/syslog_settings.rb +1 -1
  143. data/lib/cisco_node_utils/tacacs_server_group.rb +8 -4
  144. data/lib/cisco_node_utils/tacacs_server_host.rb +115 -25
  145. data/lib/cisco_node_utils/vdc.rb +12 -0
  146. data/lib/cisco_node_utils/version.rb +1 -1
  147. data/lib/cisco_node_utils/vlan.rb +147 -29
  148. data/lib/cisco_node_utils/vpc.rb +55 -3
  149. data/lib/cisco_node_utils/vrf.rb +72 -11
  150. data/lib/cisco_node_utils/vrf_af.rb +114 -29
  151. data/lib/cisco_node_utils/vtp.rb +34 -52
  152. data/lib/cisco_node_utils/vxlan_vtep.rb +34 -8
  153. data/lib/cisco_node_utils/vxlan_vtep_vni.rb +36 -4
  154. data/lib/minitest/environment_plugin.rb +31 -0
  155. data/lib/minitest/log_level_plugin.rb +41 -0
  156. data/spec/client_spec.rb +7 -0
  157. data/spec/environment_spec.rb +263 -0
  158. data/spec/grpc_client_spec.rb +23 -0
  159. data/spec/isolate/all_clients_spec.rb +9 -0
  160. data/spec/isolate/grpc_only_spec.rb +16 -0
  161. data/spec/isolate/no_clients_spec.rb +26 -0
  162. data/spec/isolate/nxapi_only_spec.rb +16 -0
  163. data/spec/nxapi_client_spec.rb +42 -0
  164. data/spec/schema.yaml +75 -0
  165. data/spec/shared_examples_for_clients.rb +14 -0
  166. data/spec/spec_helper.rb +91 -0
  167. data/spec/whitespace_spec.rb +10 -0
  168. data/spec/yaml_spec.rb +42 -0
  169. data/tests/.rubocop.yml +2 -2
  170. data/tests/CSCuxdublin-1.0.0-7.0.3.I3.1.lib32_n9000.rpm +0 -0
  171. data/tests/basetest.rb +96 -36
  172. data/tests/ciscotest.rb +220 -12
  173. data/tests/cmd_config.yaml +71 -49
  174. data/tests/cmd_config_invalid.yaml +1 -1
  175. data/tests/test_aaa_authentication_login.rb +1 -0
  176. data/tests/test_aaa_authentication_login_service.rb +9 -0
  177. data/tests/test_aaa_authorization_service.rb +173 -367
  178. data/tests/test_ace.rb +171 -100
  179. data/tests/test_acl.rb +10 -1
  180. data/tests/test_bgp_af.rb +395 -728
  181. data/tests/test_bgp_neighbor.rb +274 -115
  182. data/tests/test_bgp_neighbor_af.rb +178 -77
  183. data/tests/test_bridge_domain.rb +191 -0
  184. data/tests/test_bridge_domain_vni.rb +116 -0
  185. data/tests/test_client_utils.rb +111 -0
  186. data/tests/test_command_config.rb +9 -5
  187. data/tests/test_command_reference.rb +380 -102
  188. data/tests/test_dns_domain.rb +13 -3
  189. data/tests/test_domain_name.rb +13 -3
  190. data/tests/test_encapsulation.rb +77 -0
  191. data/tests/test_evpn_vni.rb +25 -7
  192. data/tests/test_fabricpath_global.rb +167 -163
  193. data/tests/test_fabricpath_topology.rb +12 -33
  194. data/tests/test_feature.rb +215 -0
  195. data/tests/test_grpc.rb +166 -0
  196. data/tests/test_interface.rb +585 -344
  197. data/tests/test_interface_bdi.rb +80 -0
  198. data/tests/test_interface_channel_group.rb +6 -3
  199. data/tests/test_interface_ospf.rb +26 -24
  200. data/tests/test_interface_portchannel.rb +1 -0
  201. data/tests/test_interface_private_vlan.rb +724 -0
  202. data/tests/test_interface_service_vni.rb +37 -66
  203. data/tests/test_interface_svi.rb +98 -101
  204. data/tests/test_interface_switchport.rb +419 -549
  205. data/tests/test_itd_device_group.rb +145 -0
  206. data/tests/test_itd_device_group_node.rb +199 -0
  207. data/tests/test_itd_service.rb +298 -0
  208. data/tests/test_logger.rb +43 -0
  209. data/tests/test_name_server.rb +11 -2
  210. data/tests/test_node.rb +16 -75
  211. data/tests/test_node_ext.rb +174 -163
  212. data/tests/test_node_util.rb +119 -0
  213. data/tests/test_ntp_config.rb +5 -1
  214. data/tests/test_ntp_server.rb +2 -2
  215. data/tests/test_nxapi.rb +221 -0
  216. data/tests/test_overlay_global.rb +47 -38
  217. data/tests/test_pim.rb +2 -0
  218. data/tests/test_pim_group_list.rb +2 -0
  219. data/tests/test_pim_rp_address.rb +2 -0
  220. data/tests/test_platform.rb +86 -39
  221. data/tests/test_portchannel_global.rb +211 -135
  222. data/tests/test_radius_global.rb +13 -5
  223. data/tests/test_radius_server.rb +256 -104
  224. data/tests/test_radius_server_group.rb +2 -0
  225. data/tests/test_router_bgp.rb +781 -485
  226. data/tests/test_router_ospf.rb +26 -103
  227. data/tests/test_router_ospf_vrf.rb +52 -57
  228. data/tests/test_snmp_notification_receiver.rb +2 -0
  229. data/tests/test_snmpcommunity.rb +2 -0
  230. data/tests/test_snmpgroup.rb +2 -0
  231. data/tests/test_snmpnotification.rb +40 -21
  232. data/tests/test_snmpserver.rb +2 -0
  233. data/tests/test_snmpuser.rb +2 -0
  234. data/tests/test_stp_global.rb +563 -0
  235. data/tests/test_syslog_server.rb +32 -8
  236. data/tests/test_syslog_settings.rb +22 -9
  237. data/tests/test_tacacs_server.rb +32 -27
  238. data/tests/test_tacacs_server_group.rb +100 -45
  239. data/tests/test_tacacs_server_host.rb +135 -43
  240. data/tests/test_vdc.rb +2 -16
  241. data/tests/test_vlan.rb +106 -54
  242. data/tests/test_vlan_mt_full.rb +11 -21
  243. data/tests/test_vlan_private.rb +669 -0
  244. data/tests/test_vpc.rb +312 -159
  245. data/tests/test_vrf.rb +122 -113
  246. data/tests/test_vrf_af.rb +238 -0
  247. data/tests/test_vtp.rb +58 -102
  248. data/tests/test_vxlan_vtep.rb +38 -17
  249. data/tests/test_vxlan_vtep_vni.rb +61 -9
  250. data/tests/test_yum.rb +49 -25
  251. metadata +122 -36
  252. data/lib/cisco_node_utils/cmd_ref/fex.yaml +0 -9
  253. data/lib/cisco_node_utils/cmd_ref/vni.yaml +0 -76
  254. data/lib/cisco_node_utils/vni.rb +0 -227
  255. data/tests/test_vni.rb +0 -106
@@ -0,0 +1,25 @@
1
+ # encapsulation_profile_vni
2
+ # encapsulation_profile_vni feature is available only on n7k
3
+ ---
4
+ _exclude: [N3k, N5k, N6k, N8k, N9k, ios_xr]
5
+
6
+ all_encaps:
7
+ multiple: true
8
+ get_command: "show running-config vni"
9
+ get_value: '/^encapsulation profile vni (\S+)/'
10
+
11
+ create:
12
+ set_value: "encapsulation profile vni <profile>"
13
+
14
+ destroy:
15
+ set_value: "no encapsulation profile vni <profile>"
16
+
17
+ # Eg:
18
+ # encapsulation profile vni my_vni_profile
19
+ # [no] dot1q 100-200, 300 vni 5000-5100, 5300
20
+ dot1q_map:
21
+ get_command: "show encapsulation profile"
22
+ get_value: '/^.* vni <profile>\s+dot1q ([\d\s,-]+) vni ([\d\s,-]+)$/'
23
+ set_context: ['encapsulation profile vni <profile>']
24
+ set_value: '<state> dot1q <vlans> vni <vnis>'
25
+ default_value: []
@@ -1,42 +1,48 @@
1
1
  # evpn_vni.yaml
2
2
  ---
3
+ _exclude: [ios_xr]
4
+
3
5
  _template:
4
- config_get: "show running bgp all"
5
- config_get_token: '/^evpn$/'
6
- config_get_token_append:
6
+ get_command: "show running bgp all"
7
+ get_context:
8
+ - '/^evpn$/'
7
9
  - '/^vni <vni> l2$/'
8
- config_set: 'evpn'
9
- config_set_append:
10
+ set_context:
11
+ - 'evpn'
10
12
  - "vni <vni> l2"
11
13
 
12
14
  evpn:
13
- config_get_token: "/^evpn$/"
14
- config_set: "<state> evpn"
15
+ get_context: ~
16
+ get_value: "/^evpn$/"
17
+ set_context: ~
18
+ set_value: "<state> evpn"
15
19
 
16
20
  route_distinguisher:
17
- config_get_token_append: '/^rd (\S+)$/'
18
- config_set_append: "<state> rd <rd>"
21
+ get_value: '/^rd (\S+)$/'
22
+ set_value: "<state> rd <rd>"
19
23
  default_value: ""
20
24
 
21
25
  route_target_both:
22
- config_get_token_append: '/^route-target both (\S+)$/'
23
- config_set_append: "<state> route-target both <community>"
26
+ get_value: '/^route-target both (\S+)$/'
27
+ set_value: "<state> route-target both <community>"
24
28
  multiple: true
25
29
  default_value: []
26
30
 
27
31
  route_target_export:
28
- config_get_token_append: '/^route-target export (\S+)$/'
29
- config_set_append: "<state> route-target export <community>"
32
+ get_value: '/^route-target export (\S+)$/'
33
+ set_value: "<state> route-target export <community>"
30
34
  multiple: true
31
35
  default_value: []
32
36
 
33
37
  route_target_import:
34
- config_get_token_append: '/^route-target import (\S+)$/'
35
- config_set_append: "<state> route-target import <community>"
38
+ get_value: '/^route-target import (\S+)$/'
39
+ set_value: "<state> route-target import <community>"
36
40
  multiple: true
37
41
  default_value: []
38
42
 
39
43
  vni:
40
44
  multiple: true
41
- config_get_token_append: '/^vni\s+(\S+)\s+l2$/'
42
- config_set: ["evpn", "<state> vni <vni> l2", "end"]
45
+ get_context: ['/^evpn$/']
46
+ get_value: '/^vni\s+(\S+)\s+l2$/'
47
+ set_context: ['evpn']
48
+ set_value: "<state> vni <vni> l2"
@@ -1,172 +1,183 @@
1
1
  # fabricpath
2
2
  ---
3
- # Fabricpath feature is not available on N3K and N9K
4
- _exclude: [/N3/, /N9K/]
3
+ _exclude: [N3k, N8k, N9k, ios_xr]
5
4
 
6
5
  aggregate_multicast_routes:
7
- _exclude: [/N5K/, /N6K/]
6
+ _exclude: [N5k, N6k]
8
7
  kind: boolean
9
- config_get: "show run fabricpath all"
10
- config_get_token: '/^fabricpath multicast aggregate\-routes\s*$/'
11
- config_set: "<state> fabricpath multicast aggregate-routes"
8
+ get_command: "show run fabricpath all"
9
+ get_value: '/^fabricpath multicast aggregate\-routes\s*$/'
10
+ set_value: "<state> fabricpath multicast aggregate-routes"
12
11
  default_value: false
13
-
12
+
14
13
  allocate_delay:
15
14
  kind: int
16
- config_get: "show run fabricpath all"
17
- config_get_token: '/^fabricpath timers allocate\-delay (\d+)/'
18
- config_set: "<state> fabricpath timers allocate-delay <delay>"
15
+ get_command: "show run fabricpath all"
16
+ get_value: '/^fabricpath timers allocate\-delay (\d+)/'
17
+ set_value: "<state> fabricpath timers allocate-delay <delay>"
19
18
  default_value: 10
20
19
 
21
- auto_switch_id:
20
+ auto_switch_id:
22
21
  kind: int
23
- config_get: "show fabricpath switch-id"
24
- config_get_token: '/^\*\s+(\d+).*No\s*$/'
22
+ get_command: "show fabricpath switch-id"
23
+ get_value: '/^\*\s+(\d+).*No\s*$/'
25
24
 
26
25
  feature:
27
- config_get: "show feature-set"
28
- config_get_token: '/^fabricpath[\s]+[\d]+[\s]+(\S+)/'
29
- config_set: "<state> feature-set fabricpath"
26
+ get_command: "show feature-set"
27
+ get_value: '/^fabricpath[\s]+[\d]+[\s]+(\S+)/'
28
+ set_value: "<state> feature-set fabricpath"
30
29
  default_value: disabled
31
30
 
32
31
  feature_install:
33
- config_set: "<state> install feature-set fabricpath"
32
+ set_value: "<state> install feature-set fabricpath"
34
33
 
35
34
  graceful_merge:
36
35
  auto_default: false
37
- kind: boolean
38
- config_get: "show run fabricpath all"
39
- config_get_token: '/^fabricpath graceful\-merge disable\s*$/'
40
- config_set: "<state> fabricpath graceful-merge disable"
41
- default_value: true
36
+ get_command: "show run fabricpath all"
37
+ get_value: '/^fabricpath graceful-merge disable\s*$/'
38
+ set_value: "<state> fabricpath graceful-merge disable"
39
+ default_value: enable
42
40
 
43
41
  linkup_delay:
44
42
  kind: int
45
- config_get: "show run fabricpath all"
46
- config_get_token: '/^fabricpath timers linkup-delay (\d+)\s*$/'
47
- config_set: "<state> fabricpath timers linkup-delay <delay>"
43
+ get_command: "show run fabricpath all"
44
+ get_value: '/^fabricpath timers linkup\-delay (\d+)\s*$/'
45
+ set_value: "<state> fabricpath timers linkup-delay <delay>"
48
46
  default_value: 10
49
47
 
50
48
  linkup_delay_always:
51
- _exclude: [/N5K/, /N6K/]
49
+ _exclude: [N5k, N6k]
52
50
  kind: boolean
53
- config_get: "show run fabricpath all"
54
- config_get_token: '/^fabricpath timers linkup-delay always\s*$/'
55
- config_set: "<state> fabricpath timers linkup-delay always"
51
+ get_command: "show run fabricpath all"
52
+ get_value: '/^fabricpath timers linkup\-delay always\s*$/'
53
+ set_value: "<state> fabricpath timers linkup-delay always"
56
54
  default_value: false
57
-
55
+
58
56
  linkup_delay_enable:
59
- _exclude: [/N5K/, /N6K/]
57
+ _exclude: [N5k, N6k]
60
58
  auto_default: false
61
59
  kind: boolean
62
- config_get: "show run fabricpath all"
63
- config_get_token: '/^fabricpath linkup-delay\s*$/'
64
- config_set: "<state> fabricpath linkup-delay"
60
+ get_command: "show run fabricpath all"
61
+ get_value: '/^fabricpath linkup\-delay\s*$/'
62
+ set_value: "<state> fabricpath linkup-delay"
65
63
  default_value: true
66
-
64
+
67
65
  loadbalance_algorithm:
68
66
  kind: string
69
- config_get: "show run fabricpath all"
70
- config_get_token: '/^fabricpath load-balance (\S+)\s*$/'
71
- config_set: "<state> fabricpath load-balance <algo>"
72
- /N5K/:
67
+ get_command: "show run fabricpath all"
68
+ get_value: '/^fabricpath load\-balance (\S+)\s*$/'
69
+ set_value: "<state> fabricpath load-balance <algo>"
70
+ N5k: &loadbal_alg_src_dst
73
71
  default_value: "source-destination"
72
+ N6k: *loadbal_alg_src_dst
74
73
  else:
75
74
  default_value: "symmetric"
76
75
 
76
+ loadbalance_algorithm_symmetric_support:
77
+ _exclude: [N5k, N6k]
78
+ kind: boolean
79
+ default_only: true
80
+
77
81
  loadbalance_multicast_has_vlan:
78
- _exclude: [/N5K/, /N6K/]
82
+ _exclude: [N5k, N6k]
79
83
  kind: boolean
80
84
  auto_default: false
81
- config_get: "show fabricpath load-balance | begin Ftag"
82
- config_get_token: '/^Use VLAN: TRUE\s*$/'
85
+ get_command: 'show run fabricpath all'
86
+ get_value: '/^fabricpath load-balance multicast .*include-vlan/'
83
87
  default_value: true
84
88
 
85
89
  loadbalance_multicast_reset:
86
- _exclude: [/N5K/, /N6K/]
87
- config_set: "no fabricpath load-balance multicast"
90
+ _exclude: [N5k, N6k]
91
+ set_value: "no fabricpath load-balance multicast"
88
92
 
89
93
  loadbalance_multicast_rotate:
90
- _exclude: [/N5K/, /N6K/]
94
+ _exclude: [N5k, N6k]
91
95
  kind: int
92
- config_get: "show fabricpath load-balance | begin Ftag"
93
- config_get_token: '/^Rotate amount: (\d+)/'
94
- default_value: 1
95
-
96
+ get_command: "show fabricpath load-balance | begin Ftag"
97
+ get_value: '/^Rotate amount: (\d+)/'
98
+ # default_value: n/a. The default rotate amount is randomized to avoid polarization.
99
+
96
100
  loadbalance_multicast_set:
97
- _exclude: [/N5K/, /N6K/]
98
- config_set: 'fabricpath load-balance multicast <rotate_amt> <inc_vlan>'
101
+ _exclude: [N5k, N6k]
102
+ set_value: 'fabricpath load-balance multicast <rotate> <has_vlan>'
99
103
 
100
104
  loadbalance_unicast_has_vlan:
101
105
  kind: boolean
102
106
  auto_default: false
103
- config_get: "show fabricpath load-balance | begin ECMP next 4"
104
- config_get_token: '/^Use VLAN: TRUE\s*$/'
105
- config_set: "<state> fabricpath load-balance unicast include-vlan"
107
+ get_command: 'show run fabricpath all'
108
+ get_value: '/^fabricpath load-balance unicast .*include-vlan/'
109
+ set_value: "<state> fabricpath load-balance unicast include-vlan"
106
110
  default_value: true
107
111
 
108
112
  loadbalance_unicast_layer:
109
113
  kind: string
110
- config_get: "show fabricpath load-balance | begin ECMP next 4"
111
- config_get_token: '/^L3\/L4 Preference: (\S+)/'
112
- config_set: "<state> fabricpath load-balance unicast <pref>"
114
+ get_command: "show fabricpath load-balance | begin ECMP next 4"
115
+ get_value: '/^L3\/L4 Preference: (\S+)/'
116
+ set_value: "<state> fabricpath load-balance unicast <layer>"
113
117
  default_value: "mixed"
114
118
 
115
119
  loadbalance_unicast_reset:
116
- config_set: "no fabricpath load-balance unicast"
120
+ set_value: "no fabricpath load-balance unicast"
117
121
 
118
122
  loadbalance_unicast_rotate:
119
- _exclude: [/N5K/, /N6K/]
123
+ _exclude: [N5k, N6k]
120
124
  kind: int
121
- config_get: "show fabricpath load-balance | begin ECMP next 4"
122
- config_get_token: '/^Rotate amount: (\d+)/'
123
- default_value: 1
125
+ get_command: "show fabricpath load-balance | begin ECMP next 4"
126
+ get_value: '/^Rotate amount: (\d+)/'
127
+ # default_value: n/a. The default rotate amount is randomized to avoid polarization.
124
128
 
125
129
  loadbalance_unicast_set:
126
- config_set: 'fabricpath load-balance unicast <pref> <rotate_amt> <inc_vlan>'
130
+ set_value: 'fabricpath load-balance unicast <layer> <rotate> <has_vlan>'
127
131
 
128
132
  loadbalance_unicast_support:
129
133
  kind: string
130
- /N5K/:
131
- default_only: "split"
132
- /N6K/:
134
+ N5k: &loadbal_uni_split
133
135
  default_only: "split"
136
+ N6k: *loadbal_uni_split
134
137
  else:
135
138
  default_only: "combined"
136
139
 
137
140
  mode:
138
141
  kind: string
139
- config_get: "show run fabricpath all"
140
- config_get_token: '/^fabricpath mode (\S+)/'
141
- config_set: "<state> fabricpath mode transit"
142
+ get_command: "show run fabricpath all"
143
+ get_value: '/^fabricpath mode (\S+)/'
144
+ set_value: "<state> fabricpath mode transit"
142
145
  default_value: "normal"
143
146
 
147
+ supported_module_pids:
148
+ _exclude: [N5k, N6k]
149
+ default_only: 'N7[K7]-(?:F2.*2.E|F3|F4|M3)'
150
+
151
+ supported_modules:
152
+ _exclude: [N5k, N6k]
153
+ default_only: "f2e f3"
154
+
144
155
  switch_id:
145
156
  kind: int
146
- config_get: "show run fabricpath all"
147
- config_get_token: '/^fabricpath switch-id (\d+)\s*$/'
148
- config_set: "fabricpath switch-id <swid>"
157
+ get_command: "show run fabricpath all"
158
+ get_value: '/^fabricpath switch\-id (\d+)\s*$/'
159
+ set_value: "fabricpath switch-id <swid>"
149
160
 
150
161
  transition_delay:
151
162
  kind: int
152
- config_get: "show run fabricpath all"
153
- config_get_token: '/^fabricpath timers transition\-delay (\d+)\s*$/'
154
- config_set: "<state> fabricpath timers transition-delay <delay>"
163
+ get_command: "show run fabricpath all"
164
+ get_value: '/^fabricpath timers transition\-delay (\d+)\s*$/'
165
+ set_value: "<state> fabricpath timers transition-delay <delay>"
155
166
  default_value: 10
156
167
 
157
168
  ttl_multicast:
158
- _exclude: [/N5K/, /N6K/]
169
+ _exclude: [N5k, N6k]
159
170
  kind: int
160
- config_get: "show run fabricpath all"
161
- config_get_token: '/^fabricpath ttl multicast (\d+)\s*$/'
162
- config_set: "<state> fabricpath ttl multicast <ttl>"
171
+ get_command: "show run fabricpath all"
172
+ get_value: '/^fabricpath ttl multicast (\d+)\s*$/'
173
+ set_value: "<state> fabricpath ttl multicast <ttl>"
163
174
  default_value: 32
164
175
 
165
176
  ttl_unicast:
166
- _exclude: [/N5K/, /N6K/]
177
+ _exclude: [N5k, N6k]
167
178
  kind: int
168
- config_get: "show run fabricpath all"
169
- config_get_token: '/^fabricpath ttl unicast (\d+)\s*$/'
170
- config_set: "<state> fabricpath ttl unicast <ttl>"
179
+ get_command: "show run fabricpath all"
180
+ get_value: '/^fabricpath ttl unicast (\d+)\s*$/'
181
+ set_value: "<state> fabricpath ttl unicast <ttl>"
171
182
  default_value: 32
172
183
 
@@ -1,35 +1,40 @@
1
1
  # fabricpath_topology
2
2
  ---
3
3
  # Fabricpath feature is not available on N3K and N9K
4
- _exclude: [/N3/, /N9K/]
4
+ _exclude: [N3k, N8k, N9k, ios_xr]
5
+
6
+ _template:
7
+ get_command: 'show running-config fabricpath all'
8
+ get_context: ['/^fabricpath topology %d$/']
9
+ set_context: ['fabricpath topology <topo_id>']
5
10
 
6
11
  all_topos:
7
12
  multiple:
8
- config_get: "show fabricpath topology"
9
- config_get_token: '/^\S+[\s]+(\d+)[\s]+/'
13
+ get_context: ~
14
+ get_value: '/^fabricpath topology (\d+)/'
15
+ default_value: []
10
16
 
11
17
  create:
12
- config_set: ["fabricpath topology <topo>" , "end"]
18
+ set_value: "fabricpath topology <topo_id>"
13
19
 
14
20
  description:
15
21
  kind: string
16
- config_get: "show fabricpath topology"
17
- config_get_token: '/^(\S+)[\s]+%d+[\s]+\S+/'
18
- config_set: ["fabricpath topology <topo>" , "<state> description <name>", "end"]
19
- default_value: ""
22
+ get_value: '/^description (\S+)$/'
23
+ set_value: '<state> description <name>'
24
+ default_value: ''
20
25
 
21
26
  destroy:
22
- config_set: "no fabricpath topology <topo>"
27
+ set_value: "no fabricpath topology <topo_id>"
23
28
 
24
29
  member_vlans:
25
30
  kind: string
26
- config_get: "show fabricpath topology vlan"
27
- config_get_token: '/^\S+[\s]+%d+[\s]+(\S+)/'
28
- config_set: ["fabricpath topology <topo>" , "<state> member vlan <vlan_range>", "end"]
29
- default_value: "--"
31
+ get_value: '/^member vlan (.+)/'
32
+ set_value: '<state> member vlan <vlan_range>'
33
+ default_value: ''
30
34
 
31
- state:
35
+ member_vnis:
36
+ _exclude: [N5k, N6k]
32
37
  kind: string
33
- config_get: "show fabricpath topology"
34
- config_get_token: '/^\S+[\s]+%d+[\s]+(\S+)/'
35
- default_value: "up"
38
+ get_value: '/^member vni (\S+)/'
39
+ set_value: '<state> member vni <vni_range>'
40
+ default_value: ''
@@ -1,42 +1,92 @@
1
1
  # feature
2
2
  ---
3
+ _exclude: [ios_xr]
4
+
5
+ _template:
6
+ get_command: "show running | i ^feature"
7
+
3
8
  bgp:
4
9
  kind: boolean
5
- config_get: "show running | i feature"
6
- config_get_token: '/^feature bgp$/'
7
- config_set: "feature bgp"
10
+ get_value: '/^feature bgp$/'
11
+ set_value: "feature bgp"
8
12
 
9
13
  fabric:
10
- _exclude: [/N(3|9)/]
11
- config_get: "show feature-set"
12
- config_get_token: '/^fabric[\s\d]+(\w+)/'
13
- config_set: "<state> feature-set fabric"
14
+ _exclude: [N3k, N8k, N9k]
15
+ get_command: "show feature-set"
16
+ get_value: '/^fabric[\s\d]+(\w+)/'
17
+ set_value: "<state> feature-set fabric"
14
18
 
15
19
  fabric_forwarding:
16
- _exclude: [/N3/]
17
- config_get: "show running | i ^feature"
18
- config_get_token: '/^feature fabric forwarding$/'
19
- config_set: "feature fabric forwarding"
20
+ _exclude: [N3k]
21
+ get_value: '/^feature fabric forwarding$/'
22
+ set_value: "feature fabric forwarding"
23
+
24
+ fex:
25
+ _exclude: [C3064, C3132, N5k, N6k, N8k]
26
+ get_command: "show feature-set"
27
+ get_value: '/^fex[\s\d]+(\w+)/'
28
+ set_value: "<state> feature-set fex"
29
+
30
+ itd:
31
+ _exclude: [N3k, N5k, N6k]
32
+ get_value: '/^feature itd$/'
33
+ set_value: "feature itd"
20
34
 
21
35
  nv_overlay:
22
- _exclude: [/N(3|5|6)/]
36
+ # N3k - native vxlan support in a future release
37
+ _exclude: [N3k]
23
38
  kind: boolean
24
- config_get: 'show running nv overlay'
25
- config_get_token: '/^feature nv overlay$/'
26
- config_set: "feature nv overlay"
39
+ get_value: '/^feature nv overlay$/'
40
+ set_value: "<state> feature nv overlay"
27
41
 
28
42
  nv_overlay_evpn:
29
- _exclude: [/N3/]
43
+ # N3k - native vxlan support in a future release
44
+ _exclude: [N3k]
30
45
  kind: boolean
31
- config_get: "show running | section nv"
32
- config_get_token: '/^nv overlay evpn$/'
33
- config_set: "nv overlay evpn"
46
+ get_command: "show running | section nv"
47
+ get_value: '/^nv overlay evpn$/'
48
+ set_value: "nv overlay evpn"
49
+
50
+ ospf:
51
+ kind: boolean
52
+ get_value: '/^feature ospf$/'
53
+ set_value: "feature ospf"
54
+
55
+ pim:
56
+ kind: boolean
57
+ get_value: '/^feature pim$/' # TBD pim6
58
+ set_value: 'feature pim'
59
+
60
+ private_vlan:
61
+ _exclude: [N8k]
62
+ kind: boolean
63
+ get_value: '/^feature private-vlan$/'
64
+ set_value: "feature private-vlan"
65
+
66
+ tacacs:
67
+ kind: boolean
68
+ get_value: '/^feature tacacs\+$/'
69
+ set_value: "feature tacacs"
34
70
 
35
71
  vn_segment_vlan_based:
36
- # MT-lite only
37
- /N(3|9)/:
38
- kind: boolean
39
- config_get: 'show running section feature'
40
- config_get_token: '/^feature vn-segment-vlan-based$/'
41
- config_set: 'feature vn-segment-vlan-based'
42
- default_value: false
72
+ _exclude: [N7k]
73
+ kind: boolean
74
+ get_value: '/^feature vn-segment-vlan-based$/'
75
+ set_value: 'feature vn-segment-vlan-based'
76
+ default_value: false
77
+
78
+ vni:
79
+ kind: boolean
80
+ N7k:
81
+ # MT-Full only
82
+ get_value: '/^feature vni$/'
83
+ set_value: 'feature vni'
84
+ else:
85
+ get_value: '/^feature vn-segment-vlan-based$/'
86
+ set_value: 'feature vn-segment-vlan-based'
87
+
88
+ vtp:
89
+ kind: boolean
90
+ get_value: '/^feature vtp$/'
91
+ set_value: "<state> feature vtp"
92
+ default_value: false