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
@@ -1,13 +1,24 @@
1
1
  # memory
2
2
  ---
3
+ _template:
4
+ nexus:
5
+ get_command: 'show system resources'
6
+ ios_xr:
7
+ get_command: 'show memory summary'
8
+
3
9
  free:
4
- config_get: 'show system resources'
5
- config_get_token: '/Memory.* (\S+) free/'
10
+ ios_xr:
11
+ get_value: '/Physical Memory:.*\((\S+) available\)/'
12
+ nexus:
13
+ get_value: '/Memory.* (\S+) free/'
6
14
 
7
15
  total:
8
- config_get: 'show system resources'
9
- config_get_token: '/Memory.* (\S+) total/'
16
+ ios_xr:
17
+ get_value: '/Physical Memory: *(\S+) total/'
18
+ nexus:
19
+ get_value: '/Memory.* (\S+) total/'
10
20
 
11
21
  used:
12
- config_get: 'show system resources'
13
- config_get_token: '/Memory.* (\S+) used/'
22
+ _exclude: [ios_xr]
23
+ nexus:
24
+ get_value: '/Memory.* (\S+) used/'
@@ -1,7 +1,14 @@
1
1
  # ntp_config
2
2
  ---
3
+ _template:
4
+ get_command: "show running-config ntp"
5
+
3
6
  source_interface:
4
- config_get: "show running-config ntp"
5
- config_get_token: '/^ntp source-interface\s+(.*)$/'
6
- config_set: '<state> ntp source-interface <source_interface>'
7
7
  default_value: ~
8
+ nexus:
9
+ get_value: '/^ntp source-interface\s+(.*)$/'
10
+ set_value: '<state> ntp source-interface <source_interface>'
11
+ ios_xr:
12
+ context: ["ntp"]
13
+ get_value: '/source\s+(.*)$/'
14
+ set_value: '<state> source <source_interface>'
@@ -1,14 +1,26 @@
1
1
  # ntp_server
2
2
  ---
3
+ _template:
4
+ ios_xr:
5
+ context: ["ntp"]
6
+ get_command: "show running-config ntp"
7
+
3
8
  prefer:
4
9
  multiple: true
5
- config_get: "show running-config all | include 'ntp server(.*)(prefer)'"
6
- config_get_token: '/ntp server (\S+)/'
7
10
  default_value: []
11
+ nexus:
12
+ get_command: "show running-config all | include 'ntp server(.*)(prefer)'"
13
+ get_value: '/ntp server (\S+)/'
14
+ ios_xr:
15
+ get_value: '/server (?:ipv6 )?(\S+) prefer/'
8
16
 
9
17
  server:
10
18
  multiple: true
11
- config_get: "show running-config all | include 'ntp server'"
12
- config_get_token: '/ntp server (\S+)/'
13
- config_set: '<state> ntp server <ip> <prefer>'
14
19
  default_value: []
20
+ nexus:
21
+ get_command: "show running-config all | include 'ntp server'"
22
+ get_value: '/ntp server (\S+)/'
23
+ set_value: '<state> ntp server <ip> <prefer>'
24
+ ios_xr:
25
+ get_value: '/server (?:ipv6 )?(\S+)/'
26
+ set_value: '<state> server <ip> <prefer>'
@@ -1,50 +1,53 @@
1
1
  # ospf
2
2
  ---
3
+ _exclude: [ios_xr]
4
+
3
5
  _template:
4
- config_get: "show running ospf all"
5
- config_get_token: '/^router ospf <name>$/'
6
- config_get_token_append:
7
- - '/^vrf <vrf>$/'
8
- config_set: "router ospf <name>"
9
- config_set_append:
10
- - "vrf <vrf>"
6
+ get_command: "show running ospf all"
7
+ context:
8
+ - "router ospf <name>"
9
+ - "(?)vrf <vrf>"
11
10
 
12
11
  auto_cost:
13
- config_get_token_append: '/^auto-cost reference-bandwidth (\d+)\s*(\S+)?$/'
14
- config_set_append: "auto-cost reference-bandwidth <cost> <type>"
12
+ get_value: '/^auto-cost reference-bandwidth (\d+)\s*(\S+)?$/'
13
+ set_value: "auto-cost reference-bandwidth <cost> <type>"
15
14
  default_value: [40, "Gbps"]
16
15
 
17
16
  default_metric:
18
17
  kind: int
19
- config_get_token_append: '/^default-metric (\d+)?$/'
20
- config_set_append: "<state> default-metric <metric>"
18
+ get_value: '/^default-metric (\d+)?$/'
19
+ set_value: "<state> default-metric <metric>"
21
20
  default_value: 0
22
21
 
23
- feature:
24
- config_get: "show running ospf"
25
- config_get_token: '/^feature ospf$/'
26
- config_set: "%s feature ospf"
27
-
28
22
  log_adjacency:
29
23
  auto_default: false
30
- config_get_token_append: '/^(log-adjacency-changes)\s*(detail)?$/'
31
- config_set_append: "<state> log-adjacency-changes <type>"
24
+ get_value: '/^(log-adjacency-changes)\s*(detail)?$/'
25
+ set_value: "<state> log-adjacency-changes <type>"
32
26
  default_value: :none
33
27
 
28
+ process_initialized:
29
+ _exclude: [ios_xr, N3k, N7k, N8k, N9k]
30
+ # ospf process initialization state
31
+ kind: boolean
32
+ context: ~
33
+ get_command: "show ip ospf stat"
34
+ get_value: '/^No SAP is registered/' # Ospf is not initialized when seen
35
+
34
36
  router:
35
37
  multiple: true
36
- config_get: "show running ospf"
37
- config_get_token: '/^router ospf (\S+)$/'
38
- config_set: "%s router ospf %s"
38
+ get_command: "show running ospf"
39
+ context: ~
40
+ get_value: '/^router ospf (\S+)$/'
41
+ set_value: "<state> router ospf <name>"
39
42
 
40
43
  router_id:
41
- config_get_token_append: '/^router-id (\S+)?$/'
42
- config_set_append: "<state> router-id <router_id>"
44
+ get_value: '/^router-id (\S+)?$/'
45
+ set_value: "<state> router-id <router_id>"
43
46
  default_value: ""
44
47
 
45
48
  timer_throttle_lsa:
46
- config_get_token_append: '/^timers throttle lsa (\d+) (\d+) (\d+)$/'
47
- config_set_append: "timers throttle lsa <start> <hold> <max>"
49
+ get_value: '/^timers throttle lsa (\d+) (\d+) (\d+)$/'
50
+ set_value: "timers throttle lsa <start> <hold> <max>"
48
51
 
49
52
  timer_throttle_lsa_hold:
50
53
  default_value: 5000
@@ -56,8 +59,8 @@ timer_throttle_lsa_start:
56
59
  default_value: 0
57
60
 
58
61
  timer_throttle_spf:
59
- config_get_token_append: '/^timers throttle spf (\d+) (\d+) (\d+)$/'
60
- config_set_append: "timers throttle spf <start> <hold> <max>"
62
+ get_value: '/^timers throttle spf (\d+) (\d+) (\d+)$/'
63
+ set_value: "timers throttle spf <start> <hold> <max>"
61
64
 
62
65
  timer_throttle_spf_hold:
63
66
  default_value: 1000
@@ -70,5 +73,6 @@ timer_throttle_spf_start:
70
73
 
71
74
  vrf:
72
75
  multiple: true
73
- config_get_token: ['/^router ospf <name>$/i', '/^vrf\s+(\S+)$/']
74
- config_set: ["router ospf <name>", "<state> vrf <vrf>", "end"]
76
+ context: ["router ospf <name>"]
77
+ get_value: '/^vrf\s+(\S+)$/'
78
+ set_value: "<state> vrf <vrf>"
@@ -1,16 +1,18 @@
1
1
  # overlay_global
2
2
  ---
3
+ _exclude: [N3k, ios_xr]
4
+
3
5
  anycast_gateway_mac:
4
6
  kind: string
5
- config_get: "show running all | inc 'fabric forwarding'"
6
- config_get_token: '/^fabric forwarding anycast-gateway-mac (\S+)$/'
7
- config_set: "<state> fabric forwarding anycast-gateway-mac <mac_addr>"
7
+ get_command: "show running all | inc 'fabric forwarding'"
8
+ get_value: '/^fabric forwarding anycast-gateway-mac (\S+)$/'
9
+ set_value: "<state> fabric forwarding anycast-gateway-mac <mac_addr>"
8
10
  default_value: ""
9
11
 
10
12
  dup_host_ip_addr_detection:
11
- config_get: "show running all | inc 'fabric forwarding'"
12
- config_get_token: '/^fabric forwarding dup-host-ip-addr-detection (\d+) (\d+)$/'
13
- config_set: "<state> fabric forwarding dup-host-ip-addr-detection <host_moves> <timeout>"
13
+ get_command: "show running all | inc 'fabric forwarding'"
14
+ get_value: '/^fabric forwarding dup-host-ip-addr-detection (\d+) (\d+)$/'
15
+ set_value: "<state> fabric forwarding dup-host-ip-addr-detection <host_moves> <timeout>"
14
16
 
15
17
  dup_host_ip_addr_detection_host_moves:
16
18
  default_value: 5
@@ -19,12 +21,12 @@ dup_host_ip_addr_detection_timeout:
19
21
  default_value: 180
20
22
 
21
23
  dup_host_mac_detection:
22
- config_get: 'show running | i l2rib'
23
- config_get_token: '/^l2rib dup-host-mac-detection (\d+) (\d+)$/'
24
- config_set: "l2rib dup-host-mac-detection <host_moves> <timeout>"
24
+ get_command: 'show running | i l2rib'
25
+ get_value: '/^l2rib dup-host-mac-detection (\d+) (\d+)$/'
26
+ set_value: "l2rib dup-host-mac-detection <host_moves> <timeout>"
25
27
 
26
28
  dup_host_mac_detection_default:
27
- config_set: "l2rib dup-host-mac-detection default"
29
+ set_value: "l2rib dup-host-mac-detection default"
28
30
 
29
31
  dup_host_mac_detection_host_moves:
30
32
  default_value: 5
@@ -1,40 +1,37 @@
1
1
  # pim
2
2
  ---
3
+ _exclude: [ios_xr]
4
+
3
5
  _template:
4
- config_get : "show run pim all"
5
- config_get_token :
6
- - '/^vrf context <vrf>$/'
7
- config_set :
8
- - "vrf context <vrf>"
6
+ get_command: "show run pim all"
7
+ get_context:
8
+ - '(?)/^vrf context <vrf>$/'
9
+ set_context:
10
+ - '(?)vrf context <vrf>'
9
11
 
10
12
  all_group_lists:
11
13
  multiple:
12
- config_get_token_append : '/^<afi> pim rp-address ([0-9\.]+) group-list (\S+)/'
14
+ get_value : '/^<afi> pim rp-address ([0-9\.]+) group-list (\S+)/'
13
15
 
14
16
  all_rp_addresses:
15
17
  multiple:
16
- config_get_token_append: '/^<afi> pim rp-address ([0-9\.]+)/'
18
+ get_value: '/^<afi> pim rp-address ([0-9\.]+)/'
17
19
 
18
20
  all_ssm_ranges:
19
21
  multiple:
20
- config_get_token_append : '/^<afi> pim ssm range (.*)$/'
21
-
22
- feature:
23
- config_get: 'show running | section feature'
24
- config_get_token: '/^feature pim$/' # TBD pim6
25
- config_set: 'feature pim'
22
+ get_value : '/^<afi> pim ssm range (.*)$/'
26
23
 
27
24
  group_list:
28
25
  default_value: ~
29
- config_get_token_append: '/^<afi> pim rp-address (\S+) group-list (\S+)/'
30
- config_set_append: "<state> <afi> pim rp-address <addr> group-list <group>"
26
+ get_value: '/^<afi> pim rp-address (\S+) group-list (\S+)/'
27
+ set_value: "<state> <afi> pim rp-address <addr> group-list <group>"
31
28
 
32
29
  rp_address:
33
30
  multiple:
34
- config_get_token_append: '/^<afi> pim rp-address (\S+)/'
35
- config_set_append: "<state> <afi> pim rp-address <addr>"
31
+ get_value: '/^<afi> pim rp-address (\S+)/'
32
+ set_value: "<state> <afi> pim rp-address <addr>"
36
33
  default_value: ~
37
34
 
38
35
  ssm_range:
39
- config_get_token_append: '/^<afi> pim ssm range (.*)/'
40
- config_set_append: "<state> <afi> pim ssm range <ssm_range>"
36
+ get_value: '/^<afi> pim ssm range (.*)/'
37
+ set_value: "<state> <afi> pim ssm range <ssm_range>"
@@ -1,69 +1,84 @@
1
1
  # portchannel_global
2
2
  ---
3
+ _exclude: [ios_xr]
4
+
3
5
  _template:
4
- config_get: "show running all"
6
+ get_command: "show running all"
5
7
 
6
8
  asymmetric:
7
- _exclude: [/N6/, /N5/, /N3/, /N9/]
9
+ _exclude: [N3k, N5k, N6k, N8k, N9k]
8
10
  default_value: false
9
11
 
10
12
  bundle_hash:
11
- /N(5|6|7)/:
13
+ N3k: &bundle_hash_ip
12
14
  default_value: 'ip'
13
- /N(3|9)/:
15
+ N5k: *bundle_hash_ip
16
+ N6k: *bundle_hash_ip
17
+ N7k: *bundle_hash_ip
18
+ N8k: &bundle_hash_ip_l4port
14
19
  default_value: 'ip-l4port'
20
+ N9k: *bundle_hash_ip_l4port
15
21
 
16
22
  bundle_select:
17
23
  default_value: 'src-dst'
18
24
 
19
25
  concatenation:
20
- _exclude: [/N7/, /N5/, /N6/]
26
+ _exclude: [N3k, N5k, N6k, N7k, N8k]
21
27
  default_value: false
22
28
 
23
29
  hash_distribution:
24
- _exclude: [/N6/, /N5/, /N3/, /N9/]
25
- config_get_token: ['/^port.channel hash.distribution (.*)$/']
26
- config_set: ["terminal dont-ask", "port-channel hash-distribution %s", "end"]
30
+ _exclude: [N3k, N5k, N6k, N8k, N9k]
31
+ get_value: '/^port.channel hash.distribution (.*)$/'
32
+ set_context: ['terminal dont-ask']
33
+ set_value: "port-channel hash-distribution %s"
27
34
  default_value: 'adaptive'
28
35
 
29
36
  hash_poly:
30
- _exclude: [/N7/, /N3/, /N9/]
31
- default_value: 'CRC10b'
37
+ _exclude: [N3k, N7k, N8k, N9k]
38
+ default_value: ~
32
39
 
33
40
  load_balance_type:
34
41
  kind: string
35
- /N(5|6)/:
42
+ N3k: &load_balance_type_symmetric
43
+ default_only: "no_rotate"
44
+ N5k: &load_balance_type_ethernet
36
45
  default_only: "ethernet"
37
- /N7/:
46
+ N6k: *load_balance_type_ethernet
47
+ N7k: &load_balance_type_asymmetric
38
48
  default_only: "asymmetric"
39
- /N(3|9)/:
49
+ N8k: &load_balance_type_no_hash
50
+ default_only: "no_hash"
51
+ N9k: &load_balance_type_symmetry
40
52
  default_only: "symmetry"
41
53
 
42
54
  load_defer:
43
- _exclude: [/N6/, /N5/, /N3/, /N9/]
55
+ _exclude: [N3k, N5k, N6k, N8k, N9k]
44
56
  kind: int
45
- config_get_token: ['/^port.channel load.defer (\d+)$/']
46
- config_set: ["port-channel load-defer %s"]
57
+ get_value: '/^port.channel load.defer (\d+)$/'
58
+ set_value: "port-channel load-defer %s"
47
59
  default_value: 120
48
60
 
49
61
  port_channel_load_balance:
50
62
  multiple:
51
- config_get_token: '/^port-channel load-balance (.*)$/'
52
- config_set: "port-channel load-balance %s %s %s %s %s %s"
63
+ get_value: '/^port-channel load-balance (.*)$/'
64
+ set_value: "port-channel load-balance %s %s %s %s %s %s"
53
65
 
54
66
  resilient:
55
- _exclude: [/N6/, /N5/, /N7/]
67
+ _exclude: [N5k, N6k, N7k, N8k]
56
68
  kind: boolean
57
- config_get: "show running-config all"
58
- config_get_token: '/^port-channel load-balance resilient$/'
59
- config_set: "%s port-channel load-balance resilient"
60
- default_value: false
69
+ get_value: '/^port-channel load-balance resilient$/'
70
+ set_value: "%s port-channel load-balance resilient"
71
+ N3k:
72
+ auto_default: false
73
+ default_value: true
74
+ N9k:
75
+ default_value: false
61
76
 
62
77
  rotate:
63
- _exclude: [/N5/, /N6/]
78
+ _exclude: [N3k, N5k, N6k]
64
79
  kind: int
65
80
  default_value: 0
66
81
 
67
82
  symmetry:
68
- _exclude: [/N7/, /N3/, /N5/, /N6/]
83
+ _exclude: [N5k, N6k, N7k, N8k]
69
84
  default_value: false
@@ -1,25 +1,30 @@
1
1
  # radius_global.yaml
2
2
  ---
3
+ _template:
4
+ nexus:
5
+ get_command: "show running-config radius all"
6
+ ios_xr:
7
+ get_command: "show running-config radius-server"
8
+
3
9
  key:
4
- config_get: "show running-config radius all"
5
- config_get_token: '/^radius-server key \d+\s+(\S+)/'
6
- config_set: '<state> radius-server key <key>'
10
+ get_value: '/^radius-server key \d+\s+(\S+)/'
11
+ set_value: '<state> radius-server key <key>'
7
12
 
8
13
  key_format:
9
14
  kind: int
10
- config_get: "show running-config radius all"
11
- config_get_token: '/^radius-server key (\d).*/'
15
+ get_value: '/^radius-server key (\d).*/'
12
16
 
13
17
  retransmit:
14
18
  kind: int
15
- config_get: "show running-config radius all"
16
- config_get_token: '/^radius-server retransmit (\d+).*/'
17
- config_set: '<state> radius-server retransmit <count>'
18
- default_value: 1
19
+ get_value: '/^radius-server retransmit (\d+).*/'
20
+ set_value: '<state> radius-server retransmit <count>'
21
+ nexus:
22
+ default_value: 1
23
+ ios_xr:
24
+ default_value: 3
19
25
 
20
26
  timeout:
21
27
  kind: int
22
- config_get: "show running-config radius all"
23
- config_get_token: '/^radius-server timeout (\d+).*/'
24
- config_set: '<state> radius-server timeout <timeout>'
28
+ get_value: '/^radius-server timeout (\d+).*/'
29
+ set_value: '<state> radius-server timeout <timeout>'
25
30
  default_value: 5
@@ -1,64 +1,100 @@
1
1
  # radius_server.yaml
2
2
  ---
3
+ _template:
4
+ nexus:
5
+ get_command: "show running-config radius all"
6
+ ios_xr:
7
+ get_command: "show running-config radius-server"
8
+ multiple: true
9
+
3
10
  accounting:
11
+ _exclude: [ios_xr]
4
12
  auto_default: false
5
13
  kind: boolean
6
- config_get: "show running-config radius"
7
- config_get_token: '/^radius-server host %s.* (accounting) .*$/'
8
- config_set: '<state> radius-server host <ip> accounting'
14
+ get_command: "show running-config radius"
15
+ get_value: '/^radius-server host <ip>.* (accounting) .*$/'
16
+ set_value: '<state> radius-server host <ip> accounting'
9
17
  default_value: true
10
18
 
11
19
  acct-port:
12
- kind: int
13
- config_get: "show running-config radius all"
14
- config_get_token: '/^radius-server host %s.* acct-port (\d+).*$/'
15
- config_set: '<state> radius-server host <ip> acct-port <port>'
16
- default_value: 1813
20
+ get_value: '/^radius-server host <ip>.* acct-port (\d+).*$/'
21
+ nexus:
22
+ default_value: 1813
23
+ kind: int
24
+ set_value: '<state> radius-server host <ip> acct-port <port>'
25
+ ios_xr:
26
+ default_value: 1646
17
27
 
18
28
  auth-port:
19
- kind: int
20
- config_get: "show running-config radius all"
21
- config_get_token: '/^radius-server host %s.* auth-port (\d+).*$/'
22
- config_set: '<state> radius-server host <ip> auth-port <port>'
23
- default_value: 1812
29
+ get_value: '/^radius-server host <ip>.* auth-port (\d+).*$/'
30
+ nexus:
31
+ default_value: 1812
32
+ kind: int
33
+ set_value: '<state> radius-server host <ip> auth-port <port>'
34
+ ios_xr:
35
+ default_value: 1645
24
36
 
25
37
  authentication:
26
- auto_default: false
38
+ _exclude: [ios_xr]
27
39
  kind: boolean
28
- config_get: "show running-config radius"
29
- config_get_token: '/^radius-server host %s.* (authentication) .*$/'
30
- config_set: '<state> radius-server host <ip> authentication'
40
+ get_command: "show running-config radius"
41
+ get_value: '/^radius-server host <ip>.* (authentication) .*$/'
42
+ set_value: '<state> radius-server host <ip> authentication'
31
43
  default_value: true
32
44
 
33
- hosts:
45
+ host_port_pairs:
46
+ _exclude: [nexus]
34
47
  multiple: true
35
- config_get: "show running-config radius"
36
- config_get_token: '/^radius-server host (\S+).*/'
37
- config_set: '<state> radius-server host <ip>'
48
+ get_command: "show running-config radius-server"
49
+ get_value: '/^radius-server host <ip> auth-port (\d+) acct-port (\d+)/'
50
+ default_value: ''
51
+
52
+ hosts:
53
+ get_value: '/^radius-server host (\S+).*/'
38
54
  default_value: ''
55
+ nexus:
56
+ multiple: true
57
+ get_command: "show running-config radius"
58
+ set_value: '<state> radius-server host <ip>'
59
+ ios_xr:
60
+ set_value: '<state> radius-server host <ip> auth-port <auth_port> acct-port <acct_port>'
39
61
 
40
62
  key:
41
- config_get: "show running-config radius all"
42
- config_get_token: '/^radius-server host %s.* key \d+\s+(\S+)/'
43
- config_set: '<state> radius-server host <ip> key <key>'
44
63
  default_value: ~
64
+ nexus:
65
+ get_value: '/^radius-server host <ip>.* key \d+\s+(\S+)/'
66
+ set_value: '<state> radius-server host <ip> key <key>'
67
+ ios_xr:
68
+ context: ["radius-server host <ip> auth-port <auth_port> acct-port <acct_port>"]
69
+ get_value: '/key \d+\s+(\S+)/'
70
+ set_value: '<state> key <key>'
45
71
 
46
72
  key_format:
47
- kind: int
48
- config_get: "show running-config radius all"
49
- config_get_token: '/^radius-server host %s.* key (\d).*$/'
50
73
  default_value: ~
74
+ nexus:
75
+ get_value: '/^radius-server host <ip>.* key (\d).*$/'
76
+ ios_xr:
77
+ context: ["radius-server host <ip> auth-port <auth_port> acct-port <acct_port>"]
78
+ get_value: '/key (\d).*/'
51
79
 
52
80
  retransmit:
53
- kind: int
54
- config_get: "show running-config radius all"
55
- config_get_token: '/^radius-server host %s.* retransmit (\d+).*$/'
56
- config_set: '<state> radius-server host <ip> retransmit <count>'
57
81
  default_value: ~
82
+ nexus:
83
+ kind: int
84
+ get_value: '/^radius-server host <ip>.* retransmit (\d+).*$/'
85
+ set_value: '<state> radius-server host <ip> retransmit <count>'
86
+ ios_xr:
87
+ context: ["radius-server host <ip> auth-port <auth_port> acct-port <acct_port>"]
88
+ get_value: '/retransmit (\d+).*$/'
89
+ set_value: '<state> retransmit <count>'
58
90
 
59
91
  timeout:
60
- kind: int
61
- config_get: "show running-config radius all"
62
- config_get_token: '/^radius-server host %s.* timeout (\d+).*$/'
63
- config_set: '<state> radius-server host <ip> timeout <timeout>'
64
92
  default_value: ~
93
+ nexus:
94
+ kind: int
95
+ get_value: '/^radius-server host <ip>.* timeout (\d+).*$/'
96
+ set_value: '<state> radius-server host <ip> timeout <timeout>'
97
+ ios_xr:
98
+ context: ["radius-server host <ip> auth-port <auth_port> acct-port <acct_port>"]
99
+ get_value: '/timeout (\d+).*$/'
100
+ set_value: '<state> timeout <timeout>'