cisco_node_utils 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
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,88 +1,84 @@
1
1
  # vrf.yaml
2
2
  ---
3
3
  _template:
4
- config_get: "show running all | section '^vrf context'"
5
- config_get_token: '/^vrf context <vrf>$/'
6
- config_get_token_append:
7
- - '/^address-family <afi> <safi>$/'
8
- config_set: 'vrf context <vrf>'
9
- config_set_append:
10
- - 'address-family <afi> <safi>'
4
+ nexus:
5
+ get_command: "show running all | section '^vrf context'"
6
+ context:
7
+ - 'vrf context <vrf>'
8
+ ios_xr:
9
+ get_command: "show run vrf"
10
+ context:
11
+ - 'vrf <vrf>'
11
12
 
12
13
  address_family:
13
- config_set: ['vrf context <vrf>', '<state> address-family <afi> <safi>']
14
-
15
- all_vrf_afs:
16
- multiple: true
17
- config_get_token_append: '/^address-family (\S+) (\S+)$/'
14
+ set_value: '<state> address-family <afi> <safi>'
18
15
 
19
16
  all_vrfs:
20
17
  multiple: true
21
- config_get_token: '/^vrf context (.*)/'
18
+ context: ~
19
+ nexus:
20
+ get_value: '/^vrf context (.*)/'
21
+ ios_xr:
22
+ get_value: '/^vrf (.*)/'
22
23
 
23
24
  create:
24
- config_set: 'vrf context <vrf>'
25
+ context: ~
26
+ nexus:
27
+ set_value: 'vrf context <vrf>'
28
+ ios_xr:
29
+ set_value: 'vrf <vrf>'
25
30
 
26
31
  description:
27
- config_get_token_append: '/^description (.*)/'
28
- config_set_append: '<state> description <desc>'
32
+ get_value: '/^description (.*)/'
33
+ set_value: '<state> description <desc>'
29
34
  kind: string
30
35
  default_value: ''
31
36
 
32
37
  destroy:
33
- config_set: 'no vrf context <vrf>'
38
+ context: ~
39
+ nexus:
40
+ set_value: 'no vrf context <vrf>'
41
+ ios_xr:
42
+ set_value: 'no vrf <vrf>'
34
43
 
35
- route_distinguisher:
36
- config_get_token_append: '/^rd (\S+)$/'
37
- config_set_append: '<state> rd <rd>'
44
+ mhost_default_interface:
45
+ _exclude: [nexus]
46
+ get_value: '/^mhost <afi> default-interface (\S+)$/'
47
+ set_value: '<state> mhost <afi> default-interface <intf>'
38
48
  default_value: ''
39
49
 
40
- route_target_both_auto:
41
- kind: boolean
42
- config_get_token_append: '/^route-target both auto$/'
43
- config_set_append: '<state> route-target both auto'
44
- default_value: false
45
-
46
- route_target_both_auto_evpn:
50
+ remote_route_filtering:
51
+ _exclude: [nexus]
47
52
  kind: boolean
48
- config_get_token_append: '/^route-target both auto evpn$/'
49
- config_set_append: '<state> route-target both auto evpn'
50
- default_value: false
53
+ get_value: '/^remote-route-filtering disable$/'
54
+ set_value: '<state> remote-route-filtering disable'
55
+ default_value: true
51
56
 
52
- route_target_export:
53
- multiple: true
54
- config_get_token_append: '/^route-target export (\S+)$/'
55
- config_set_append: '<state> route-target export <community>'
56
- default_value: []
57
-
58
- route_target_export_evpn:
59
- multiple: true
60
- config_get_token_append: '/^route-target export (\S+) evpn$/'
61
- config_set_append: '<state> route-target export <community> evpn'
62
- default_value: []
63
-
64
- route_target_import:
65
- multiple: true
66
- config_get_token_append: '/^route-target import (\S+)$/'
67
- config_set_append: '<state> route-target import <community>'
68
- default_value: []
69
-
70
- route_target_import_evpn:
71
- multiple: true
72
- config_get_token_append: '/^route-target import (\S+) evpn$/'
73
- config_set_append: '<state> route-target import <community> evpn'
74
- default_value: []
57
+ route_distinguisher:
58
+ # Only configurable under BGP in IOS XR, not under VRF context
59
+ _exclude: [ios_xr]
60
+ get_value: '/^rd (\S+)$/'
61
+ set_value: '<state> rd <rd>'
62
+ default_value: ''
75
63
 
76
64
  shutdown:
65
+ _exclude: [ios_xr]
77
66
  kind: boolean
78
- config_get_token_append: '/^shutdown$/'
79
- config_set_append: '<state> shutdown'
67
+ get_value: '/^shutdown$/'
68
+ set_value: '<state> shutdown'
80
69
  default_value: false
81
70
 
82
71
  vni: # TBD Should this move to the vni provider as vrf_vni?
83
72
  # MT-lite only
84
- /N9/:
73
+ N9k:
85
74
  kind: int
86
- config_get_token_append: '/^vni (\d+)$/'
87
- config_set_append: '<state> vni <id>'
75
+ get_value: '/^vni (\d+)$/'
76
+ set_value: '<state> vni <id>'
88
77
  default_value: false
78
+
79
+ vpn_id:
80
+ _exclude: [nexus]
81
+ get_value: '/^vpn id (\S+)$/'
82
+ set_value: '<state> vpn id <vpnid>'
83
+ default_value: ''
84
+
@@ -0,0 +1,118 @@
1
+ # vrf_af.yaml
2
+ ---
3
+ _template:
4
+ nexus:
5
+ get_command: "show running all | section '^vrf context'"
6
+ context:
7
+ - 'vrf context <vrf>'
8
+ - 'address-family <afi> <safi>'
9
+ ios_xr:
10
+ get_command: "show run vrf"
11
+ context:
12
+ - 'vrf <vrf>'
13
+ - 'address-family <afi> <safi>'
14
+
15
+ all_afs:
16
+ multiple: true
17
+ get_value: '/^address-family (\S+) (\S+)$/'
18
+ nexus:
19
+ context: ['vrf context <vrf>']
20
+ ios_xr:
21
+ context: ['vrf <vrf>']
22
+
23
+ route_policy_export:
24
+ default_value: ~
25
+ nexus:
26
+ get_value: '/^export map (\S+)$/'
27
+ set_value: '<state> export map <policy_name>'
28
+ ios_xr:
29
+ get_value: '/^export route-policy (\S+)$/'
30
+ set_value: '<state> export route-policy <policy_name>'
31
+
32
+ route_policy_import:
33
+ default_value: ~
34
+ nexus:
35
+ get_value: '/^import map (\S+)$/'
36
+ set_value: '<state> import map <policy_name>'
37
+ ios_xr:
38
+ get_value: '/^import route-policy (\S+)$/'
39
+ set_value: '<state> import route-policy <policy_name>'
40
+
41
+ route_target_both_auto:
42
+ _exclude: [N3k, ios_xr]
43
+ kind: boolean
44
+ get_value: '/^route-target both auto$/'
45
+ set_value: '<state> route-target both auto'
46
+ default_value: false
47
+
48
+ route_target_both_auto_evpn:
49
+ _exclude: [N3k, ios_xr]
50
+ kind: boolean
51
+ get_value: '/^route-target both auto evpn$/'
52
+ set_value: '<state> route-target both auto evpn'
53
+ default_value: false
54
+
55
+ route_target_export:
56
+ multiple: true
57
+ default_value: []
58
+ nexus:
59
+ get_value: '/^route-target export (\S+)$/'
60
+ set_value: '<state> route-target export <community>'
61
+ ios_xr:
62
+ get_context:
63
+ - '/^vrf <vrf>$/i'
64
+ - '/^address-family <afi> <safi>$/'
65
+ - '/^export route-target$/'
66
+ get_value: '/^(\S+)$/'
67
+ set_value: '<state> export route-target <community>'
68
+
69
+ route_target_export_evpn:
70
+ _exclude: [N3k, ios_xr]
71
+ multiple: true
72
+ get_value: '/^route-target export (\S+) evpn$/'
73
+ set_value: '<state> route-target export <community> evpn'
74
+ default_value: []
75
+
76
+ route_target_export_stitching:
77
+ _exclude: [nexus]
78
+ multiple: true
79
+ get_context:
80
+ - '/^vrf <vrf>$/i'
81
+ - '/^address-family <afi> <safi>$/'
82
+ - '/^export route-target$/'
83
+ get_value: '/^(\S+) stitching$/'
84
+ set_value: '<state> export route-target <community> stitching'
85
+ default_value: []
86
+
87
+ route_target_import:
88
+ multiple: true
89
+ default_value: []
90
+ nexus:
91
+ get_value: '/^route-target import (\S+)$/'
92
+ set_value: '<state> route-target import <community>'
93
+ ios_xr:
94
+ get_context:
95
+ - '/^vrf <vrf>$/i'
96
+ - '/^address-family <afi> <safi>$/'
97
+ - '/^import route-target$/'
98
+ get_value: '/^(\S+)$/'
99
+ set_value: '<state> import route-target <community>'
100
+
101
+ route_target_import_evpn:
102
+ _exclude: [N3k, ios_xr]
103
+ multiple: true
104
+ get_value: '/^route-target import (\S+) evpn$/'
105
+ set_value: '<state> route-target import <community> evpn'
106
+ default_value: []
107
+
108
+ route_target_import_stitching:
109
+ _exclude: [nexus]
110
+ multiple: true
111
+ get_context:
112
+ - '/^vrf <vrf>$/i'
113
+ - '/^address-family <afi> <safi>$/'
114
+ - '/^import route-target$/'
115
+ get_value: '/^(\S+) stitching$/'
116
+ set_value: '<state> import route-target <community> stitching'
117
+ default_value: []
118
+
@@ -1,38 +1,32 @@
1
1
  # vtp
2
2
  ---
3
- domain:
4
- config_get: "show vtp status"
5
- config_get_token: "domain_name"
6
- config_set: "vtp domain %s"
3
+ _exclude: [ios_xr]
7
4
 
8
- feature:
9
- kind: boolean
10
- config_get: "show running vtp"
11
- config_get_token: '/^feature vtp$/'
12
- config_set: "%s feature vtp"
13
- default_value: false
5
+ # VTP behaves differently across the various Nexus platforms and as a
6
+ # result it's not currently possible to use a single 'show running'
7
+ # command to query the device state.
8
+ domain:
9
+ get_command: "show vtp status"
10
+ get_value: '/^VTP\s+Domain\s+Name\s+:\s+(\S+)$/'
11
+ set_value: "vtp domain <domain>"
12
+ default_value: ""
14
13
 
15
14
  filename:
16
- config_get: "show running vtp"
17
- config_get_token: '/vtp file (\S+)/'
18
- config_set: "%s vtp file %s"
15
+ get_command: "show running-config vtp all"
16
+ get_value: '/vtp\s+file\s+(\S+)/'
17
+ set_value: "<state> vtp file <uri>"
19
18
  default_value: "bootflash:/vlan.dat"
20
19
 
21
20
  password:
22
- config_get: "show vtp password"
23
- config_get_token: "passwd"
24
- config_set: "%s vtp password %s"
21
+ get_data_format: nxapi_structured
22
+ get_command: "show vtp password"
23
+ get_value: "passwd"
24
+ set_value: "<state> vtp password <password>"
25
25
  default_value: ""
26
26
 
27
27
  version:
28
28
  kind: int
29
- config_get: "show vtp status"
30
- config_get_token: '/VTP\s+version\s+running\s+:\s+(\d+)/'
31
- config_set: "vtp version %s"
29
+ get_command: "show vtp status"
30
+ get_value: '/^VTP\s+version\s+running\s+:\s+(\d+)$/'
31
+ set_value: "vtp version <version>"
32
32
  default_value: 1
33
- /N7/:
34
- test_config_result:
35
- 3: 3
36
- else:
37
- test_config_result:
38
- 3: "Cisco::CliError"
@@ -1,26 +1,26 @@
1
1
  # vxlan_vtep
2
2
  ---
3
- _exclude: [/N(3|5|6)/]
3
+ _exclude: [N3k, ios_xr]
4
4
 
5
5
  _template:
6
- config_get: "show running-config interface all | section 'interface nve'"
7
- config_get_token: '/^interface <name>$/i'
8
- config_set: 'interface <name>'
6
+ get_command: "show running-config interface all | section 'interface nve'"
7
+ context:
8
+ - 'interface <name>'
9
9
 
10
10
  all_interfaces:
11
11
  multiple:
12
- config_get_token: '/^interface (.*)$/'
12
+ get_context: ~
13
+ get_value: '/^interface (.*)$/'
13
14
 
14
15
  host_reachability:
15
- /N(7|9)/:
16
- config_get_token_append: '/^host-reachability protocol (\S+)/'
17
- config_set_append: '<state> host-reachability protocol <proto>'
18
- default_value: 'flood'
16
+ get_value: '/^host-reachability protocol (\S+)/'
17
+ set_value: '<state> host-reachability protocol <proto>'
18
+ default_value: 'flood'
19
19
 
20
20
  mt_full_support:
21
21
  # This is only used for determining support for Multi-Tenancy Full
22
22
  kind: boolean
23
- /N(7)/:
23
+ N7k:
24
24
  default_only: true
25
25
  else:
26
26
  # this feature is always off on these platforms and cannot be changed
@@ -29,32 +29,42 @@ mt_full_support:
29
29
  mt_lite_support:
30
30
  # This is only used for determining support for Multi-Tenancy Lite
31
31
  kind: boolean
32
- /N9/:
32
+ N9k: &mt_lite_default
33
33
  default_only: true
34
+ N8k: *mt_lite_default
35
+ N6k: *mt_lite_default
36
+ N5k: *mt_lite_default
34
37
  else:
35
38
  # this feature is always off on these platforms and cannot be changed
36
39
  default_only: false
37
40
 
38
41
  shutdown:
39
42
  kind: boolean
40
- config_get_token_append: '/^no shutdown$/'
41
- config_set_append: '<state> shutdown'
43
+ get_value: '/^no shutdown$/'
44
+ set_value: '<state> shutdown'
42
45
  default_value: true
43
46
 
44
47
  source_intf:
45
- config_get_token_append: '/^source\-interface (\S+)$/'
46
- config_set_append: '<state> source-interface <lpbk_intf>'
48
+ get_value: '/^source\-interface (\S+)$/'
49
+ set_value: '<state> source-interface <lpbk_intf>'
50
+ default_value: ''
51
+
52
+ source_intf_hold_down_time:
53
+ _exclude: [N5k, N6k, N7k, N8k]
54
+ kind: int
55
+ get_value: '/^source-interface hold-down-time (\d+)$/'
56
+ set_value: '<state> source-interface hold-down-time <time>'
47
57
  default_value: ''
48
58
 
49
59
  vni:
50
- config_set_append: '<state> member vni <vni> <assoc_vrf>'
60
+ set_value: '<state> member vni <vni> <assoc_vrf>'
51
61
 
52
62
  vni_with_vrf:
53
63
  kind: boolean
54
- config_get_token_append: '/^member vni <vni> associate-vrf$/'
64
+ get_value: '/^member vni <vni> associate-vrf$/'
55
65
  default_value: false
56
66
 
57
67
  vni_without_vrf:
58
68
  kind: boolean
59
- config_get_token_append: '/^member vni <vni>$/'
69
+ get_value: '/^member vni <vni>$/'
60
70
  default_value: false
@@ -1,39 +1,56 @@
1
1
  # vxlan_vtep_vni
2
2
  ---
3
- _exclude: [/N(3|5|6)/]
3
+ _exclude: [N3k, ios_xr]
4
4
 
5
5
  _template:
6
- config_get: "show running-config interface all | section 'interface nve'"
7
- config_get_token: '/^interface <name>$/i'
8
- config_get_token_append:
9
- - '/^member vni <vni> ?(associate-vrf)?$/'
10
- config_set: 'interface <name>'
11
- config_set_append:
12
- - 'member vni <vni> <assoc_vrf>'
6
+ get_command: "show running-config interface all | section 'interface nve'"
7
+ get_context:
8
+ - '/^interface <name>$/i'
9
+ - '(?)/^member vni <vni> ?(associate-vrf)?$/'
10
+ set_context:
11
+ - 'interface <name>'
12
+ - '(?)member vni <vni> <assoc_vrf>'
13
13
 
14
14
  all_vnis:
15
15
  multiple:
16
- config_get_token_append: '/^member vni (\d+|\d+-\d+) ?(associate-vrf)?$/'
16
+ get_value: '/^member vni (\d+|\d+-\d+) ?(associate-vrf)?$/'
17
17
 
18
18
  ingress_replication:
19
+ _exclude: [N5k, N6k, N7k]
19
20
  kind: string
20
- config_get_token_append: '/^ingress-replication protocol (\S+)$/'
21
- config_set_append: '<state> ingress-replication protocol <protocol>'
21
+ get_value: '/^ingress-replication protocol (\S+)$/'
22
+ set_value: '<state> ingress-replication protocol <protocol>'
22
23
  default_value: ''
23
24
 
24
25
  multicast_group:
25
- config_get_token_append: '/^mcast-group (\S+)\s?(\S+)?$/'
26
- config_set_append: '<state> mcast-group <ip_start> <ip_end>'
26
+ get_value: '/^mcast-group (\S+)\s?(\S+)?$/'
27
+ set_value: '<state> mcast-group <ip_start> <ip_end>'
27
28
  default_value: ''
28
29
 
29
30
  peer_list:
31
+ _exclude: [N5k, N6k, N7k]
30
32
  multiple:
31
- config_get_token_append: ['/^ingress-replication protocol static$/', '/^peer-ip (\S+)$/']
32
- config_set_append: ['ingress-replication protocol static', '<state> peer-ip <peer>']
33
+ get_context:
34
+ - '/^interface <name>$/i'
35
+ - '/^member vni <vni>?$/'
36
+ - '/^ingress-replication protocol static$/'
37
+ set_context:
38
+ - 'interface <name>'
39
+ - 'member vni <vni>'
40
+ - 'ingress-replication protocol static'
41
+ get_value: '/^peer-ip (\S+)$/'
42
+ set_value: '<state> peer-ip <peer>'
33
43
  default_value: []
34
44
 
35
45
  suppress_arp:
36
46
  kind: boolean
37
- config_get_token_append: '/^suppress-arp$/'
38
- config_set_append: '<state> suppress-arp'
47
+ get_value: '/^suppress-arp$/'
48
+ set_value: '<state> suppress-arp'
49
+ default_value: false
50
+
51
+ suppress_uuc:
52
+ _exclude: [N7k, N8k, N9k]
53
+ kind: boolean
54
+ get_value: '/^suppress-unknown-unicast$/'
55
+ set_value: '<state> suppress-unknown-unicast'
39
56
  default_value: false