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
@@ -3,35 +3,45 @@
3
3
  # The current simplified implementation assumes no admin-vdc and that the
4
4
  # default vdc name uses id 1. Full multi-vdc support is TBD.
5
5
  ---
6
- _exclude: [/N(3|5|6|9)/]
6
+ _exclude: [N3k, N5k, N6k, N8k, N9k, ios_xr]
7
7
 
8
8
  _template:
9
- config_get: 'show run vdc all'
10
- config_get_token: '/^vdc <vdc>/'
11
- config_set: 'terminal dont-ask ; vdc <vdc>'
9
+ get_command: 'show run vdc all'
10
+ get_context: ['/^vdc <vdc>/']
11
+ set_context: ['terminal dont-ask', 'vdc <vdc>']
12
12
 
13
13
  all_vdcs:
14
14
  multiple:
15
- config_get: 'show run vdc all'
16
- config_get_token: '/^vdc (\S+) id/'
15
+ get_command: 'show run vdc all'
16
+ get_context: ~
17
+ get_value: '/^vdc (\S+) id/'
17
18
 
18
19
  allocate_interface_unallocated:
19
20
  kind: boolean
20
- config_set_append: 'allocate interface unallocated-interfaces'
21
+ set_value: 'allocate interface unallocated-interfaces'
21
22
 
22
23
  default_vdc_name:
23
24
  # Name of the default vdc. Assumes no admin-vdc.
24
- config_get_token: '/^vdc (\S+) id 1$/' # Assumes id 1 for default vdc
25
+ get_context: ~
26
+ get_value: '/^vdc (\S+) id 1$/' # Assumes id 1 for default vdc
25
27
 
26
28
  limit_resource_module_type:
27
- config_get_token_append: '/^limit-resource module-type (.*)/'
28
- config_set_append: '<state> limit-resource module-type <mods>'
29
+ get_value: '/^limit-resource module-type (.*)/'
30
+ set_value: '<state> limit-resource module-type <mods>'
29
31
  default_value: ''
30
32
 
33
+ membership:
34
+ multiple:
35
+ get_command: 'show vdc membership'
36
+ get_context: ['/^vdc_id: \d+ vdc_name: <vdc> interfaces:$/']
37
+ get_value: '/(Ethernet\d+\/\d+)/'
38
+ set_value: 'allocate interface <intf>'
39
+ default_value: []
40
+
31
41
  vdc_support:
32
42
  # This is a only used for determining support for VDCs
33
43
  kind: boolean
34
- /N7/:
44
+ N7k:
35
45
  default_only: true
36
46
  else:
37
47
  # this feature is always off on these platforms and cannot be changed
@@ -1,6 +1,7 @@
1
1
  # virtual_service
2
2
  ---
3
3
  services:
4
+ _exclude: [ios_xr]
4
5
  multiple: true
5
- config_get: 'show virtual-service detail'
6
- config_get_token: ["TABLE_detail", "ROW_detail"]
6
+ get_command: 'show virtual-service detail'
7
+ get_context: ["TABLE_detail", "ROW_detail"]
@@ -1,56 +1,84 @@
1
1
  # vlan
2
2
  ---
3
+ _exclude: [ios_xr]
4
+
3
5
  all_vlans:
4
6
  multiple: true
5
- config_get: "show vlan brief"
6
- config_get_token: '/^(\d+)\s/'
7
+ get_command: "show vlan brief"
8
+ get_value: '/^(\d+)\s/'
7
9
 
8
10
  create:
9
- config_set: ["vlan %s" , "end"]
11
+ set_value: "vlan %s"
10
12
 
11
13
  destroy:
12
- config_set: "no vlan %s"
14
+ set_value: "no vlan %s"
15
+
16
+ fabric_control:
17
+ _exclude: [N3k, N5k, N6k, N8k, N9k]
18
+ kind: boolean
19
+ get_command: "show running-config vlan"
20
+ get_context: ['/^vlan <vlan>/']
21
+ get_value: '/fabric-control/'
22
+ set_context: ["vlan <vlan>"]
23
+ set_value: "<state> fabric-control ; end"
24
+ default_value: false
13
25
 
14
26
  mapped_vni:
15
- /N(3|9)/:
27
+ N3k: &mapped_vni_n3k_n9k
16
28
  kind: int
17
- config_get: 'show running vlan'
18
- config_get_token: ['/^vlan <vlan>$/', '/^vn-segment (\d+)$/']
19
- # In the cli 'vn-segment' config is not applied untill the 'end'
20
- # statement is issued.
21
- config_set: ['vlan <vlan>', '<state> vn-segment <vni> ; end']
29
+ get_command: 'show running vlan'
30
+ get_context: ['/^vlan <vlan>$/']
31
+ get_value: '/^vn-segment (\d+)$/'
32
+ set_context: ['vlan <vlan>']
33
+ set_value: '<state> vn-segment <vni> ; end'
22
34
  default_value: ''
35
+ N9k: *mapped_vni_n3k_n9k
23
36
 
24
37
  mode:
25
- _exclude:
26
- - /N(3|9)/
27
- kind: string
28
- config_get: "show vlan"
38
+ _exclude: [N3k, N9k]
39
+ multiple: true
40
+ get_command: "show vlan"
29
41
  # TBD: 'show vlan' is problematic and should be converted to use show run
30
42
  # regex workaround: N7 cli bug displays 'trnet' instead of 'enet'
31
- config_get_token: '/^%d\s+.+net\s+(\S+)/'
32
- config_set: ["vlan %d" , "%s mode %s", "end"]
33
- default_value: "ce"
43
+ get_value: '/^%d\s+.+net\s+(\S+)/'
44
+ set_context: ["vlan %d"]
45
+ set_value: "%s mode %s ; end"
46
+ default_value: 'CE'
34
47
 
35
48
  name:
36
- config_get: "show vlan brief"
37
- config_get_token: '/^%d\s+(\S+)\s/'
38
- config_set: ["vlan %d", "%s name %s", "end"]
39
- /N9K/:
40
- test_config_result:
41
- 32: "Long VLAN name knob is not enabled"
42
- else:
43
- test_config_result:
44
- 32: "String exceeded max length of (32)"
49
+ get_command: "show vlan brief"
50
+ get_value: '/^%d\s+(\S+)\s/'
51
+ set_context: ["vlan %d"]
52
+ set_value: "%s name %s ; end"
53
+
54
+ private_vlan_association:
55
+ _exclude: [N8k]
56
+ multiple: true
57
+ get_command: "show vlan private-vlan"
58
+ get_value: '/^<id>\s+(\d+)/'
59
+ set_context: ['vlan <vlan>']
60
+ set_value: "<state> private-vlan association <vlans> ; end"
61
+ default_value: []
62
+
63
+ private_vlan_type:
64
+ _exclude: [N8k]
65
+ kind: string
66
+ get_command: 'show vlan private-vlan type'
67
+ get_value: '/^<id>\s+(\S+)/'
68
+ set_context: ['vlan <vlan>']
69
+ set_value: "<state> private-vlan <type> ; end"
70
+ default_value: ""
45
71
 
46
72
  shutdown:
47
- config_get: "show vlan brief"
48
- config_get_token: '/^%d\s+\S+\s+(\S+)\s/'
49
- config_set: ["vlan %d", "%s shutdown", "end"]
73
+ get_command: "show vlan brief"
74
+ get_value: '/^%d\s+\S+\s+(\S+)\s/'
75
+ set_context: ["vlan %d"]
76
+ set_value: "%s shutdown ; end"
50
77
  default_value: false
51
78
 
52
79
  state:
53
- config_get: "show vlan brief"
54
- config_get_token: '/^%d\s+\S+\s+(\S+)\s/'
55
- config_set: ["vlan %d", "%s state %s", "end"]
80
+ get_command: "show vlan brief"
81
+ get_value: '/^%d\s+\S+\s+(\S+)\s/'
82
+ set_context: ["vlan %d"]
83
+ set_value: "%s state %s ; end"
56
84
  default_value: "active"
@@ -1,197 +1,214 @@
1
1
  # vpc
2
2
  ---
3
- _template:
4
- config_get: 'show running-config vpc all'
5
- config_get_token: '/^vpc domain\s*(\d+)$/'
6
- config_set: "vpc domain <domain>"
3
+ _exclude: [ios_xr, N8k]
7
4
 
8
- auto_recovery:
5
+ _template:
6
+ get_command: 'show running-config vpc all'
7
+ get_context: ['/^vpc domain\s*(\d+)$/']
8
+ set_context: ['vpc domain <domain>']
9
+
10
+ auto_recovery:
9
11
  kind: boolean
10
- _exclude: [/N5K/, /N6K/]
12
+ _exclude: [N5k, N6k]
11
13
  auto_default: false
12
- config_get_token_append: '/^auto\-recovery/'
13
- config_set_append: "<state> auto-recovery"
14
- /(N3K|N9K)/:
14
+ get_value: '/^auto-recovery/'
15
+ set_value: "<state> auto-recovery"
16
+ N3k:
17
+ default_value: false
18
+ N9k:
15
19
  default_value: false
16
20
  else:
17
21
  default_value: true
18
22
 
19
- auto_recovery_reload_delay:
23
+ auto_recovery_reload_delay:
20
24
  kind: int
21
- config_get_token_append: '/auto\-recovery reload\-delay (\d+)/'
22
- config_set_append: "auto-recovery reload-delay <delay>"
25
+ get_value: '/^auto-recovery reload-delay (\d+)/'
26
+ set_value: "auto-recovery reload-delay <delay>"
23
27
  default_value: 240
24
28
 
25
- delay_restore:
29
+ delay_restore:
26
30
  kind: int
27
- config_get_token_append: '/^delay restore\s+(\d+)/'
28
- config_set_append: "delay restore <delay>"
31
+ get_value: '/^delay restore\s+(\d+)/'
32
+ set_value: "delay restore <delay>"
29
33
  default_value: 30
30
34
 
31
- delay_restore_interface_vlan:
35
+ delay_restore_interface_vlan:
32
36
  kind: int
33
- config_get_token_append: '/^delay restore interface\-vlan\s+(\d+)/'
34
- config_set_append: "delay restore interface-vlan <delay>"
37
+ get_value: '/^delay restore interface-vlan\s+(\d+)/'
38
+ set_value: "delay restore interface-vlan <delay>"
35
39
  default_value: 10
36
40
 
37
- domain:
41
+ domain:
38
42
  auto_default: false
39
- config_get: "show running-config vpc all"
40
- config_get_token: '/^vpc domain\s+(\d+)/'
41
- config_set: "<state> vpc domain <domain>"
43
+ get_command: "show running-config vpc all"
44
+ get_context: ~
45
+ get_value: '/^vpc domain\s+(\d+)/'
46
+ set_context: ~
47
+ set_value: "<state> vpc domain <domain>"
42
48
  default_value: ''
43
49
 
44
- dual_active_exclude_interface_vlan_bridge_domain:
50
+ dual_active_exclude_interface_vlan_bridge_domain:
45
51
  kind: string
46
- /N7/:
47
- config_get_token_append: '/^dual\-active exclude interface\-vlan\-bridge\-domain\s+(\S+)/'
48
- config_set_append: "<state> dual-active exclude interface-vlan-bridge-domain <range>"
52
+ N7k:
53
+ get_value: '/^dual-active exclude interface-vlan-bridge-domain\s+(\S+)/'
54
+ set_value: "<state> dual-active exclude interface-vlan-bridge-domain <range>"
49
55
  else:
50
- config_get_token_append: '/^dual\-active exclude interface\-vlan\s+(\S+)/'
51
- config_set_append: "<state> dual-active exclude interface-vlan <range>"
56
+ get_value: '/^dual-active exclude interface-vlan\s+(\S+)/'
57
+ set_value: "<state> dual-active exclude interface-vlan <range>"
52
58
  default_value: 'none'
53
59
 
54
- #vPC+ CLIs
55
- fabricpath_multicast_load_balance:
56
- kind: boolean
57
- config_get_token_append: '/^fabricpath multicast load-balance'
58
- config_set_append: "<state> fabricpath multicast load-balance"
59
- default_value: false
60
-
61
- fabricpath_switch_id:
60
+ fabricpath_emulated_switch_id:
61
+ _exclude: [N3k, N5k, N6k, N8k, N9k]
62
62
  kind: int
63
- config_get_token_append: '/^fabricpath switch\-id\s+(\d+)/'
64
- config_set_append: "<state> fabricpath switch-id <swid>"
63
+ set_context: ['terminal dont-ask', 'vpc domain <domain>']
64
+ get_value: '/^fabricpath switch-id\s+(\d+)$/'
65
+ set_value: '<state> fabricpath switch-id <swid>'
65
66
  default_value: false
66
67
 
67
- #END vPC+ CLIs
68
+ fabricpath_multicast_load_balance:
69
+ _exclude: [N3k, N5k, N6k, N8k, N9k]
70
+ kind: boolean
71
+ get_value: '/^fabricpath multicast load-balance$/'
72
+ set_value: "<state> fabricpath multicast load-balance"
73
+ default_value: false
68
74
 
69
- feature:
75
+ feature:
70
76
  kind: boolean
71
- config_get: "show feature | section vpc"
72
- config_get_token: '/^vpc\s+\d+\s+enabled\s*$/'
73
- config_set: ["terminal dont-ask", "<state> feature vpc"]
77
+ get_command: "show feature | section vpc"
78
+ get_context: ~
79
+ get_value: '/^vpc\s+\d+\s+enabled\s*$/'
80
+ set_context: ['terminal dont-ask']
81
+ set_value: "<state> feature vpc"
74
82
  default_value: false
75
83
 
76
- graceful_consistency_check:
84
+ graceful_consistency_check:
77
85
  auto_default: false
78
86
  kind: boolean
79
- config_get_token_append: '/^graceful consistency\-check/'
80
- config_set_append: "<state> graceful consistency-check"
87
+ get_value: '/^graceful consistency-check/'
88
+ set_value: "<state> graceful consistency-check"
81
89
  default_value: true
82
90
 
83
- layer3_peer_routing:
91
+ layer3_peer_routing:
84
92
  kind: boolean
85
- _exclude: [/N3K/, /N5K/, /N9K/]
86
- config_get_token_append: '/^layer3 peer-router$/'
87
- config_set_append: "<state> layer3 peer-router"
93
+ _exclude: [N3k, N8k, N9k]
94
+ get_value: '/^layer3 peer-router$/'
95
+ set_value: "<state> layer3 peer-router"
88
96
  default_value: false
89
97
 
90
- peer_gateway:
98
+ peer_gateway:
91
99
  kind: boolean
92
- config_get_token_append: '/^peer\-gateway/'
93
- config_set_append: ["terminal dont-ask", "<state> peer-gateway"]
100
+ set_context: ['terminal dont-ask', 'vpc domain <domain>']
101
+ get_value: '/^peer-gateway/'
102
+ set_value: "<state> peer-gateway"
94
103
  default_value: false
95
104
 
96
105
  # Exclude everyone for now till the BD command is fully supported
97
- peer_gateway_exclude_bridge_domain:
106
+ peer_gateway_exclude_bridge_domain:
98
107
  kind: string
99
- _exclude: [/N3K/, /N5K/, /N6K/, /N7/, /N9K/]
100
- config_get_token_append: '/^peer\-gateway exclude bridge\-domain\s+(\S+)/'
101
- config_set_append: ["terminal dont-ask", "peer-gateway exclude-bridge-domain <range>"]
108
+ _exclude: [N3k, N5k, N6k, N7k, N8k, N9k]
109
+ set_context: ['terminal dont-ask', 'vpc domain <domain>']
110
+ get_value: '/^peer-gateway exclude bridge-domain\s+(\S+)/'
111
+ set_value: "peer-gateway exclude-bridge-domain <range>"
102
112
  default_value: ''
103
113
 
104
- peer_gateway_exclude_vlan:
105
- _exclude: [/N3K/, /N9K/]
114
+ peer_gateway_exclude_vlan:
115
+ _exclude: [N3k, N8k, N9k]
106
116
  kind: string
107
- config_get_token_append: '/^peer\-gateway exclude-vlan\s(\S+)/'
108
- config_set_append: ["terminal dont-ask", "peer-gateway exclude-vlan <range>"]
117
+ set_context: ['terminal dont-ask', 'vpc domain <domain>']
118
+ get_value: '/^peer-gateway exclude-vlan\s(\S+)/'
119
+ set_value: "peer-gateway exclude-vlan <range>"
109
120
  default_value: ''
110
121
 
111
122
  # Peer-keep-alive
112
123
  peer_keepalive_dest:
113
- config_get_token_append: '/^peer\-keepalive destination (\S+)/'
124
+ get_value: '/^peer-keepalive destination (\S+)/'
114
125
  default_value: ''
115
126
 
116
- peer_keepalive_hold_timeout:
127
+ peer_keepalive_hold_timeout:
117
128
  kind: int
118
- config_get_token_append: '/^peer\-keepalive .*hold\-timeout (\S+)/'
129
+ get_value: '/^peer-keepalive .*hold-timeout (\S+)/'
119
130
  default_value: 3
120
131
 
121
- peer_keepalive_interval:
132
+ peer_keepalive_interval:
122
133
  kind: int
123
- config_get_token_append: '/^peer\-keepalive .*interval (\S+)/'
134
+ get_value: '/^peer-keepalive .*interval (\S+)/'
124
135
  default_value: 1000
125
136
 
126
- peer_keepalive_precedence:
137
+ peer_keepalive_precedence:
127
138
  kind: int
128
- config_get_token_append: '/^peer\-keepalive .*precedence (\S+)/'
139
+ get_value: '/^peer-keepalive .*precedence (\S+)/'
129
140
  default_value: 6
130
141
 
131
- peer_keepalive_set:
132
- config_set_append: "peer-keepalive destination <dest> source <src> udp-port <port_num> vrf <vrf> interval <interval> timeout <timeout> precedence <precedence> hold-timeout <hold_timeout>"
142
+ peer_keepalive_set:
143
+ set_value: "peer-keepalive destination <dest> source <src> udp-port <port_num> vrf <vrf> interval <interval> timeout <timeout> precedence <precedence> hold-timeout <hold_timeout>"
133
144
 
134
145
  peer_keepalive_src:
135
- config_get_token_append: '/^peer\-keepalive .*source (\S+)/'
146
+ get_value: '/^peer-keepalive .*source (\S+)/'
136
147
  default_value: ''
137
148
 
138
- peer_keepalive_timeout:
149
+ peer_keepalive_timeout:
139
150
  kind: int
140
- config_get_token_append: '/^peer\-keepalive .* timeout (\S+)/'
151
+ get_value: '/^peer-keepalive .* timeout (\S+)/'
141
152
  default_value: 5
142
153
 
143
- peer_keepalive_udp_port:
154
+ peer_keepalive_udp_port:
144
155
  kind: int
145
- config_get_token_append: '/^peer\-keepalive .*udp\-port (\S+)/'
156
+ get_value: '/^peer-keepalive .*udp-port (\S+)/'
146
157
  default_value: 3200
147
158
 
148
159
  peer_keepalive_vrf:
149
- config_get_token_append: '/^peer\-keepalive .*vrf (\S+)/'
160
+ get_value: '/^peer-keepalive .*vrf (\S+)/'
150
161
  default_value: 'management'
151
162
 
152
- port_channel_limit:
153
- _exclude: [/N5K/, /N6K/, /N9K/]
154
- kind: boolean
155
- config_get_token_append: '/^port\-channel limit/'
156
- config_set_append: "<state> port-channel limit"
163
+ phy_port_vpc_module_pids:
164
+ _exclude: [N3k, N5k, N6k, N8k, N9k]
165
+ default_only: 'N7[K7]-(?:F2|F3|F4|M3)'
166
+
167
+ port_channel_limit:
168
+ _exclude: [N3k, N5k, N6k, N8k, N9k]
169
+ auto_default: false
170
+ kind: boolean
171
+ get_value: '/^port-channel limit/'
172
+ set_value: "<state> port-channel limit"
173
+ default_value: true
157
174
 
158
- role_priority:
175
+ role_priority:
159
176
  kind: int
160
- config_get_token_append: '/^role priority\s+(\d+)/'
161
- config_set_append: "role priority <priority>"
177
+ get_value: '/^role priority\s+(\d+)/'
178
+ set_value: "role priority <priority>"
162
179
  default_value: 32667
163
180
 
164
- self_isolation:
181
+ self_isolation:
165
182
  kind: boolean
166
- _exclude: [/N5K/, /N6K/, /N9K/]
167
- config_get_token_append: '/^self\-isolation/'
168
- config_set_append: "<state> self-isolation"
183
+ _exclude: [N3k, N5k, N6k, N8k, N9k]
184
+ get_value: '/^self-isolation/'
185
+ set_value: "<state> self-isolation"
169
186
  default_value: false
170
187
 
171
- shutdown:
188
+ shutdown:
172
189
  kind: boolean
173
- _exclude: [/N3K/, /N9K/]
174
- config_get_token_append: '/^shutdown/'
175
- config_set_append: "<state> shutdown"
190
+ _exclude: [N3k, N8k, N9k]
191
+ get_value: '/^shutdown/'
192
+ set_value: "<state> shutdown"
176
193
  default_value: false
177
194
 
178
195
  system_mac:
179
196
  kind: string
180
- config_get_token_append: '/^system\-mac (\S+)$/'
181
- config_set_append: "<state> system-mac <mac_addr>"
197
+ get_value: '/^system-mac (\S+)$/'
198
+ set_value: "<state> system-mac <mac_addr>"
182
199
  default_value: ''
183
200
 
184
- system_priority:
201
+ system_priority:
185
202
  kind: int
186
- config_get_token_append: '/^system\-priority\s+(\d+)/'
187
- config_set_append: "system-priority <priority>"
203
+ get_value: '/^system-priority\s+(\d+)/'
204
+ set_value: "system-priority <priority>"
188
205
  default_value: 32667
189
206
 
190
207
  # Exclude everyone for now till the track command is fully supported
191
- track:
208
+ track:
192
209
  kind: int
193
- _exclude: [/N3K/, /N5K/, /N6K/, /N7/, /N9K/]
194
- config_get_token_append: '/^track\s+(\d+)/'
195
- config_set_append: "<state> track <val>"
210
+ _exclude: [N3k, N5k, N6k, N7k, N8k, N9k]
211
+ get_value: '/^track\s+(\d+)/'
212
+ set_value: "<state> track <val>"
196
213
  default_value: 0
197
214