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,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