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,7 +1,8 @@
1
1
  # images
2
2
  ---
3
3
  packages:
4
+ _exclude: [ios_xr]
4
5
  multiple: true
5
- config_get: 'show install patches'
6
+ get_command: 'show install patches'
6
7
  # Package state should always be some variant of Active or Inactive
7
- config_get_token: '/^(\S+)\s+(\S*[aA]ctive.*)\s*$/'
8
+ get_value: '/^(\S+)\s+(\S*[aA]ctive.*)\s*$/'
@@ -1,186 +1,243 @@
1
1
  # interface
2
2
  ---
3
3
  _template:
4
- config_set: ["interface %s"]
5
- config_get_token: '/^interface %s$/i'
6
- cli_nexus:
7
- config_get: "show running interface all"
4
+ context: ["interface <name>"]
5
+ ios_xr:
6
+ get_command: "show running interface"
7
+ nexus:
8
+ get_command: "show running interface all"
8
9
 
9
10
  access_vlan:
10
- config_get_token_append: '/^switchport access vlan (.*)$/'
11
- config_set_append: "switchport access vlan %s"
11
+ _exclude: [ios_xr]
12
12
  kind: int
13
+ get_value: '/^switchport access vlan (.*)$/'
14
+ set_value: "switchport access vlan <vlan>"
13
15
  default_value: 1
14
16
 
15
- admin_state_ethernet_noswitchport_shutdown:
16
- # TODO: is this actually used?
17
- cli_nexus:
18
- /N7/:
19
- default_value: "shutdown"
20
-
21
17
  all_interfaces:
22
18
  multiple:
23
- config_get_token: '/^interface (.*)/'
19
+ ios_xr:
20
+ get_command: 'show running all-interfaces'
21
+ get_context: ~
22
+ get_value: '/^interface (.*)/'
23
+
24
+ capabilities:
25
+ _exclude: [ios_xr]
26
+ multiple:
27
+ get_context: ["<name>"]
28
+ get_command: "show interface capabilities"
29
+ get_value: '/(.*)/'
30
+ default_value: [] # :raw default
24
31
 
25
32
  create:
26
- config_set: "interface %s"
33
+ set_context: ~
34
+ set_value: "interface <name>"
27
35
 
28
36
  description:
29
37
  kind: string
30
- config_get_token_append: '/^description (.*)/'
31
- config_set_append: "%s description %s"
38
+ get_value: '/^description (.*)/'
39
+ set_value: "<state> description <desc>"
32
40
  default_value: ""
33
41
 
34
42
  destroy:
35
- config_set: "no interface %s"
43
+ set_context: ~
44
+ set_value: "no interface <name>"
36
45
 
37
46
  duplex:
47
+ _exclude: [ios_xr]
38
48
  kind: string
39
- config_get_token_append: '/^duplex (.*)$/'
40
- config_set_append: "duplex %s"
41
- default_value: "auto"
49
+ get_value: '/^duplex (.*)$/'
50
+ set_value: "duplex <duplex>"
51
+ C3064:
52
+ default_value: 'full'
53
+ else:
54
+ default_value: 'auto'
42
55
 
43
56
  encapsulation_dot1q:
44
57
  kind: int
45
- config_get_token_append: '/^encapsulation dot1q (.*)/i'
46
- config_set_append: "%s encapsulation dot1q %s"
47
58
  default_value: ""
59
+ get_value: '/^encapsulation dot1q (.*)/i'
60
+ set_value: "<state> encapsulation dot1q <vlan>"
48
61
 
49
62
  fabric_forwarding_anycast_gateway:
63
+ _exclude: [ios_xr, N3k]
50
64
  kind: boolean
51
- config_get_token_append: '/^fabric forwarding mode anycast-gateway$/'
52
- config_set_append: "%s fabric forwarding mode anycast-gateway"
65
+ get_value: '/^fabric forwarding mode anycast-gateway$/'
66
+ set_value: "<state> fabric forwarding mode anycast-gateway"
53
67
  default_value: false
54
68
 
55
69
  feature_lacp:
56
70
  kind: boolean
57
- config_get: "show running | i ^feature"
58
- config_get_token: '/^feature lacp$/'
59
- config_set: "%s feature lacp"
71
+ nexus:
72
+ get_command: "show running | i ^feature"
73
+ context: ~
74
+ get_value: '/^feature lacp$/'
75
+ set_value: "<state> feature lacp"
76
+ ios_xr:
77
+ default_only: true
60
78
 
61
79
  feature_vlan:
62
- kind: boolean
63
- cli_nexus:
64
- config_get: "show running | i ^feature"
65
- config_get_token: '/^feature interface-vlan$/'
66
- config_set: "%s feature interface-vlan"
80
+ _exclude: [ios_xr]
81
+ nexus:
82
+ kind: boolean
83
+ get_command: "show running | i ^feature"
84
+ context: ~
85
+ get_value: '/^feature interface-vlan$/'
86
+ set_value: "<state> feature interface-vlan"
67
87
 
68
88
  ipv4_acl_in:
69
- config_get_token_append: '/^ip access-group (\S+) in/'
70
- config_set_append: "%s ip access-group %s in"
89
+ ios_xr:
90
+ get_value: '/^ipv4 access-group (\S+) ingress/'
91
+ set_value: "<state> ipv4 access-group <acl> ingress"
92
+ nexus:
93
+ get_value: '/^ip access-group (\S+) in/'
94
+ set_value: "<state> ip access-group <acl> in"
71
95
  default_value: ""
72
96
 
73
97
  ipv4_acl_out:
74
- config_get_token_append: '/^ip access-group (\S+) out/'
75
- config_set_append: "%s ip access-group %s out"
98
+ ios_xr:
99
+ get_value: '/^ipv4 access-group (\S+) egress/'
100
+ set_value: "<state> ipv4 access-group <acl> egress"
101
+ nexus:
102
+ get_value: '/^ip access-group (\S+) out/'
103
+ set_value: "<state> ip access-group <acl> out"
76
104
  default_value: ""
77
105
 
78
106
  ipv4_addr_mask:
79
107
  # This handles both primary and secondary addresses
80
108
  multiple:
81
- cli_nexus:
82
- config_get_token_append: '/^ip address ([0-9\.]+)[\s\/](.*)/'
83
- config_set_append: "%s ip address %s %s"
109
+ nexus:
110
+ get_value: '/^ip address ([0-9\.]+)[\s\/](.*)/'
111
+ set_value: "<state> ip address <addr> <secondary>"
112
+ ios_xr:
113
+ get_value: '/^ipv4 address ([0-9\.]+) (.*)/'
114
+ set_value: '<state> ipv4 address <addr> <secondary>'
84
115
 
85
116
  ipv4_address:
86
117
  default_value: ~
87
118
 
88
119
  ipv4_arp_timeout:
89
120
  kind: int
90
- config_get_token_append: '/^ip arp timeout (\d+)$/'
91
- config_set_append: "%s ip arp timeout %s"
121
+ get_value: '/^ip arp timeout (\d+)$/'
122
+ set_value: "<state> ip arp timeout <timeout>"
92
123
  default_value: 700
93
124
 
94
125
  ipv4_arp_timeout_non_vlan_interfaces:
95
126
  default_only: ~
96
127
 
128
+ ipv4_forwarding:
129
+ _exclude: [ios_xr]
130
+ kind: boolean
131
+ default_value: false
132
+ get_value: '/^ip forward$/'
133
+ set_value: '<state> ip forward'
134
+
97
135
  ipv4_netmask_length:
98
136
  default_value: ~
99
137
 
100
138
  ipv4_pim_sparse_mode:
139
+ _exclude: [ios_xr]
101
140
  kind: boolean
102
141
  default_value: false
103
- cli_nexus:
104
- config_get_token_append: '/^ip pim sparse-mode$/'
105
- config_set_append: "%s ip pim sparse-mode"
142
+ nexus:
143
+ get_value: '/^ip pim sparse-mode$/'
144
+ set_value: "<state> ip pim sparse-mode"
106
145
 
107
146
  ipv4_proxy_arp:
108
147
  kind: boolean
109
148
  default_value: false
110
- cli_nexus:
111
- config_get_token_append: '/^ip proxy-arp$/'
112
- config_set_append: "%s ip proxy-arp"
149
+ nexus:
150
+ get_value: '/^ip proxy-arp$/'
151
+ set_value: "<state> ip proxy-arp"
152
+ ios_xr:
153
+ get_value: '/^proxy-arp$/'
154
+ set_value: "<state> proxy-arp"
113
155
 
114
156
  ipv4_redirects_loopback:
115
157
  kind: boolean
116
- cli_nexus:
158
+ nexus:
117
159
  default_only: false
160
+ ios_xr:
161
+ get_value: '/^((?:no )?ipv4 redirects)$/'
162
+ set_value: "<state> ipv4 redirects"
163
+ default_value: false
118
164
 
119
165
  ipv4_redirects_other_interfaces:
120
166
  kind: boolean
121
- test_config_result:
122
- false: false
123
- true: true
124
- cli_nexus:
125
- config_get_token_append: '/^((?:no )?ip redirects)$/'
126
- config_set_append: "%s ip redirects"
167
+ nexus:
168
+ get_value: '/^((?:no )?ip redirects)$/'
169
+ set_value: "<state> ip redirects"
127
170
  default_value: true
128
- test_config_get_regex: [
129
- '/^\s+ip redirects/',
130
- '/^\s+no ip redirects/'
131
- ]
171
+ ios_xr:
172
+ get_value: '/^((?:no )?ipv4 redirects)$/'
173
+ set_value: "<state> ipv4 redirects"
174
+ default_value: false
132
175
 
133
176
  ipv6_acl_in:
134
- config_get_token_append: '/^ipv6 traffic-filter (\S+) in/'
135
- config_set_append: "%s ipv6 traffic-filter %s in"
177
+ ios_xr:
178
+ get_value: '/^ipv6 access-group (\S+) ingress/'
179
+ set_value: "<state> ipv6 access-group <acl> ingress"
180
+ nexus:
181
+ get_value: '/^ipv6 traffic-filter (\S+) in/'
182
+ set_value: "<state> ipv6 traffic-filter <acl> in"
136
183
  default_value: ""
137
184
 
138
185
  ipv6_acl_out:
139
- config_get_token_append: '/^ipv6 traffic-filter (\S+) out/'
140
- config_set_append: "%s ipv6 traffic-filter %s out"
186
+ ios_xr:
187
+ get_value: '/^ipv6 access-group (\S+) egress/'
188
+ set_value: "<state> ipv6 access-group <acl> egress"
189
+ nexus:
190
+ get_value: '/^ipv6 traffic-filter (\S+) out/'
191
+ set_value: "<state> ipv6 traffic-filter <acl> out"
141
192
  default_value: ""
142
- mtu:
193
+
194
+ mtu_loopback:
195
+ kind: boolean
196
+ default_only: ~
197
+
198
+ mtu_other_interfaces:
143
199
  kind: int
144
- config_get_token_append: '/^mtu (.*)$/'
145
- config_set_append: "%s mtu %s"
146
- default_value: 1500
200
+ get_value: '/^mtu (.*)$/'
201
+ set_value: "<state> mtu <mtu>"
202
+ nexus:
203
+ default_value: 1500
204
+ ios_xr:
205
+ default_value: 1514
147
206
 
148
207
  negotiate_auto_ethernet:
149
208
  kind: boolean
150
- cli_nexus:
151
- test_config_get_regex: [
152
- '/^\s+no negotiate auto/',
153
- '/^\s+negotiate auto/'
154
- ]
155
- /(N7|C3064)/:
156
- default_only: false
157
- else:
158
- config_get_token_append: '/^(no )?negotiate auto$/'
159
- config_set_append: "%s negotiate auto"
160
- default_value: true
209
+ _exclude: [ios_xr, C3064, N7k]
210
+ get_value: '/^(no )?negotiate auto$/'
211
+ set_value: "<state> negotiate auto"
212
+ default_value: true
161
213
 
162
214
  negotiate_auto_other_interfaces:
163
215
  kind: boolean
216
+ _exclude: [ios_xr]
164
217
  default_only: false
165
218
 
166
219
  negotiate_auto_portchannel:
167
220
  kind: boolean
168
- cli_nexus:
169
- test_config_get_regex: [
170
- '/^\s+no negotiate auto/',
171
- '/^\s+negotiate auto/'
172
- ]
173
- /N7/:
174
- default_only: false
175
- else:
176
- config_get_token_append: '/^(no )?negotiate auto$/'
177
- config_set_append: "%s negotiate auto"
178
- default_value: true
221
+ _exclude: [ios_xr, N7k]
222
+ get_value: '/^(no )?negotiate auto$/'
223
+ set_value: "<state> negotiate auto"
224
+ default_value: true
225
+
226
+ private_vlan_any:
227
+ multiple:
228
+ get_value: '/switchport private-vlan/'
229
+
230
+ private_vlan_mapping:
231
+ _exclude: [ios_xr, N8k]
232
+ multiple: true
233
+ get_value: '/^private-vlan mapping (.*)$/'
234
+ set_value: "<state> private-vlan mapping <vlans>"
235
+ default_value: []
179
236
 
180
237
  shutdown:
181
238
  kind: boolean
182
- config_get_token_append: '/^shutdown$/'
183
- config_set_append: "%s shutdown"
239
+ get_value: '/^shutdown$/'
240
+ set_value: "<state> shutdown"
184
241
 
185
242
  shutdown_ether_channel:
186
243
  default_value: false
@@ -204,136 +261,307 @@ shutdown_unknown:
204
261
  default_value: true
205
262
 
206
263
  shutdown_vlan:
207
- cli_nexus:
264
+ nexus:
208
265
  default_value: true
209
266
 
210
267
  speed:
211
- config_get_token_append: '/^speed (.*)$/'
212
- config_set_append: "speed %s"
213
- default_value: "auto"
268
+ _exclude: [ios_xr, C3132]
269
+ kind: string
270
+ get_value: '/^speed (.*)$/'
271
+ set_value: "speed <speed>"
272
+ C3064: &non_auto
273
+ default_value: '10000'
274
+ C3172: *non_auto
275
+ N5k: *non_auto
276
+ N6k: *non_auto
277
+ else:
278
+ default_value: 'auto'
279
+
280
+ stp_bpdufilter:
281
+ kind: string
282
+ get_value: '/^spanning-tree bpdufilter (.*)$/'
283
+ set_value: "<state> spanning-tree bpdufilter <filter>"
284
+ default_value: false
285
+
286
+ stp_bpduguard:
287
+ kind: string
288
+ get_value: '/^spanning-tree bpduguard (.*)$/'
289
+ set_value: "<state> spanning-tree bpduguard <guard>"
290
+ default_value: false
291
+
292
+ stp_cost:
293
+ kind: string
294
+ get_value: '/^spanning-tree cost (.*)$/'
295
+ set_value: "spanning-tree cost <cost>"
296
+ default_value: 'auto'
297
+
298
+ stp_guard:
299
+ kind: string
300
+ get_value: '/^spanning-tree guard (.*)$/'
301
+ set_value: "<state> spanning-tree guard <guard>"
302
+ default_value: false
303
+
304
+ stp_link_type:
305
+ kind: string
306
+ get_value: '/^spanning-tree link-type (.*)$/'
307
+ set_value: "spanning-tree link-type <type>"
308
+ default_value: 'auto'
309
+
310
+ stp_mst_cost:
311
+ multiple:
312
+ get_command: "show running interface"
313
+ get_value: '/^spanning-tree mst (.*) cost (.*)$/'
314
+ set_value: "<state> spanning-tree mst <range> cost <val>"
315
+ default_value: []
316
+
317
+ stp_mst_port_priority:
318
+ multiple:
319
+ get_command: "show running interface"
320
+ get_value: '/^spanning-tree mst (.*) port-priority (.*)$/'
321
+ set_value: "<state> spanning-tree mst <range> port-priority <val>"
322
+ default_value: []
323
+
324
+ stp_mst_range:
325
+ kind: string
326
+ default_only: "0-4094"
327
+
328
+ stp_port_priority:
329
+ kind: int
330
+ get_value: '/^spanning-tree port-priority (\d+)$/'
331
+ set_value: "spanning-tree port-priority <pp>"
332
+ default_value: 128
333
+
334
+ stp_port_type:
335
+ kind: string
336
+ get_command: "show running interface"
337
+ get_value: '/^spanning-tree port type (.*)$/'
338
+ set_value: "<state> spanning-tree port type <type>"
339
+ default_value: false
340
+
341
+ stp_vlan_cost:
342
+ multiple:
343
+ get_command: "show running interface"
344
+ get_value: '/^spanning-tree vlan (.*) cost (.*)$/'
345
+ set_value: "<state> spanning-tree vlan <range> cost <val>"
346
+ default_value: []
347
+
348
+ stp_vlan_port_priority:
349
+ multiple:
350
+ get_command: "show running interface"
351
+ get_value: '/^spanning-tree vlan (.*) port-priority (.*)$/'
352
+ set_value: "<state> spanning-tree vlan <range> port-priority <val>"
353
+ default_value: []
354
+
355
+ stp_vlan_range:
356
+ kind: string
357
+ default_only: "1-3967"
214
358
 
215
359
  svi_autostate:
216
- _exclude: [/N(5|6)/]
360
+ _exclude: [ios_xr, N5k, N6k]
217
361
  kind: boolean
218
- config_get_token_append: '/^(?:no )?autostate$/'
219
- config_set_append: "%s autostate"
362
+ get_value: '/^(?:no )?autostate$/'
363
+ set_value: "<state> autostate"
220
364
  default_value: true
221
- test_config_result:
222
- false: false
223
- true: true
224
365
 
225
366
  svi_management:
367
+ _exclude: [ios_xr]
226
368
  kind: boolean
227
- config_get_token_append: '/^management$/'
228
- config_set_append: "%s management"
369
+ get_value: '/^management$/'
370
+ set_value: "<state> management"
229
371
  default_value: false
230
372
 
231
373
  switchport:
374
+ _exclude: [ios_xr]
232
375
  kind: boolean
233
- config_get_token_append: '/^switchport$/'
234
- config_set_append: "%s switchport"
376
+ get_value: '/^switchport$/'
377
+ set_value: "<state> switchport"
235
378
  # default_value: n/a. This is derived from system_default_switchport
236
379
 
237
380
  switchport_autostate_exclude:
381
+ _exclude: [ios_xr]
238
382
  kind: boolean
239
- config_get_token_append: '/(^switchport autostate exclude)/'
240
- config_set_append: "%s switchport autostate exclude"
383
+ get_value: '/(^switchport autostate exclude)/'
384
+ set_value: "<state> switchport autostate exclude"
241
385
  default_value: false
242
386
 
243
387
  switchport_mode_dot1q_tunnel:
244
- test_config_result:
245
- false: RuntimeError
388
+ _exclude: [ios_xr]
389
+ default_only: ""
246
390
 
247
391
  switchport_mode_ethernet:
392
+ _exclude: [ios_xr]
248
393
  auto_default: false
249
- config_get_token_append: '/^(?:no )?switchport mode ?(.*)$/'
250
- config_set_append: "%s switchport mode %s"
394
+ get_value: '/^(?:no )?switchport mode ?(.*)$/'
395
+ set_value: "<state> switchport mode <mode>"
251
396
  default_value: "access"
252
397
 
253
398
  switchport_mode_other_interfaces:
399
+ _exclude: [ios_xr]
254
400
  default_only: ""
255
401
 
256
402
  switchport_mode_port_channel:
257
- config_get_token_append: '/^switchport mode (.*)$/'
258
- config_set_append: "%s switchport mode %s"
403
+ _exclude: [ios_xr]
404
+ get_value: '/^switchport mode (.*)$/'
405
+ set_value: "<state> switchport mode <mode>"
259
406
  default_value: ""
260
407
 
408
+ switchport_mode_private_vlan_host:
409
+ _exclude: [ios_xr, N8k]
410
+ get_value: '/^switchport mode private-vlan (.*)$/'
411
+ set_value: "<state> switchport mode private-vlan <mode>"
412
+ default_value: :disabled
413
+
414
+ switchport_mode_private_vlan_host_association:
415
+ _exclude: [ios_xr, N8k]
416
+ multiple: true
417
+ get_value: '/^switchport private-vlan host-association (.*)$/'
418
+ set_value: "<state> switchport private-vlan host-association <vlan_pr> <vlan_sec>"
419
+ default_value: []
420
+
421
+ switchport_mode_private_vlan_host_promiscous:
422
+ _exclude: [ios_xr, N8k]
423
+ multiple: true
424
+ get_value: '/^switchport private-vlan mapping (\d+.*)$/'
425
+ set_value: "<state> switchport private-vlan mapping <vlan_pr> <vlans>"
426
+ default_value: []
427
+
428
+
429
+ switchport_mode_private_vlan_trunk_promiscuous:
430
+ _exclude: [ios_xr, N3k, N8k]
431
+ kind: boolean
432
+ get_value: '/^switchport mode private-vlan trunk promiscuous$/'
433
+ set_value: "<state> switchport mode private-vlan trunk promiscuous"
434
+ default_value: false
435
+
436
+ switchport_mode_private_vlan_trunk_secondary:
437
+ _exclude: [ios_xr, N3k, N8k]
438
+ kind: boolean
439
+ get_value: '/^switchport mode private-vlan trunk secondary$/'
440
+ set_value: "<state> switchport mode private-vlan trunk secondary"
441
+ default_value: false
442
+
443
+ switchport_private_vlan_association_trunk:
444
+ _exclude: [ios_xr, N3k, N8k]
445
+ multiple: true
446
+ #get_value: '/^switchport private-vlan association trunk (.*) (.*)$/'
447
+ get_value: '/^switchport private-vlan association trunk (.*)$/'
448
+ set_value: "<state> switchport private-vlan association trunk <vlan_pr> <vlan>"
449
+ default_value: []
450
+
451
+ switchport_private_vlan_mapping_trunk:
452
+ _exclude: [ios_xr, N3k, N8k]
453
+ multiple: true
454
+ get_value: '/^switchport private-vlan mapping trunk (.*)$/'
455
+ set_value: "<state> switchport private-vlan mapping trunk <vlan_pr> <vlans>"
456
+ default_value: []
457
+
458
+ switchport_private_vlan_trunk_allowed_vlan:
459
+ _exclude: [ios_xr, N8k]
460
+ multiple: true
461
+ get_value: '/^switchport private-vlan trunk allowed vlan (.*)$/'
462
+ set_value: "<state> switchport private-vlan trunk allowed vlan <oper> <vlans>"
463
+ default_value: []
464
+
465
+ switchport_private_vlan_trunk_native_vlan:
466
+ _exclude: [ios_xr, N8k]
467
+ kind: int
468
+ get_value: '/^switchport private-vlan trunk native vlan (.*)$/'
469
+ set_value: "<state> switchport private-vlan trunk native vlan <vlan>"
470
+ default_value: 1
471
+
261
472
  switchport_trunk_allowed_vlan:
262
- config_get_token_append: '/^switchport trunk allowed vlan (.*)$/'
263
- config_set_append: "%s switchport trunk allowed vlan %s"
473
+ _exclude: [ios_xr]
474
+ get_value: '/^switchport trunk allowed vlan (.*)$/'
475
+ set_value: "<state> switchport trunk allowed vlan <vlan>"
264
476
  default_value: "1-4094"
265
477
 
266
478
  switchport_trunk_native_vlan:
479
+ _exclude: [ios_xr]
267
480
  kind: int
268
- config_get_token_append: '/^switchport trunk native vlan (.*)$/'
269
- config_set_append: "%s switchport trunk native vlan %s"
481
+ get_value: '/^switchport trunk native vlan (.*)$/'
482
+ set_value: "<state> switchport trunk native vlan <vlan>"
270
483
  default_value: 1
271
484
 
272
485
  system_default_svi_autostate:
273
- _exclude: [/N(5|6)/]
486
+ _exclude: [N5k, N6k]
274
487
  kind: boolean
275
- config_get: "show running all | include 'system default'"
276
- /N7K/:
277
- # When enabled: Property does not nvgen.
278
- # When disabled: Property nvgens as 'system default interface-vlan no autostate'
279
- config_get_token: ['/^system default interface-vlan no autostate$/']
280
- # default_value: n/a. This is a user-configurable system default.
281
- else:
282
- # When enabled: Property nvgens as 'system default interface-vlan autostate'
283
- # When disabled: Property nvgens as 'no system default interface-vlan autostate'
284
- config_get_token: ['/^system default interface-vlan autostate$/']
488
+ nexus:
489
+ get_command: "show running all | include 'system default'"
490
+ get_context: ~
285
491
  # default_value: n/a. This is a user-configurable system default.
492
+ N7k:
493
+ # When enabled: Property does not nvgen.
494
+ # When disabled: Property nvgens as 'system default interface-vlan no autostate'
495
+ get_value: '/^system default interface-vlan no autostate$/'
496
+ else:
497
+ # When enabled: Property nvgens as 'system default interface-vlan autostate'
498
+ # When disabled: Property nvgens as 'no system default interface-vlan autostate'
499
+ get_value: '/^system default interface-vlan autostate$/'
500
+ ios_xr:
501
+ default_only: false
286
502
 
287
503
  system_default_switchport:
288
- # Note: This is a simple boolean state but there is a bug on some
289
- # platforms that causes the cli to nvgen twice; this causes config_get to
290
- # raise an error when it encounters the multiple. Therefore we define it
291
- # as a multiple to avoid the raise.
292
- multiple:
293
- config_get: "show running all | include 'system default'"
294
- config_get_token: ['/^no system default switchport$/']
295
- default_value: true
504
+ nexus:
505
+ # Note: This is a simple boolean state but there is a bug on some
506
+ # platforms that causes the cli to nvgen twice; this causes config_get to
507
+ # raise an error when it encounters the multiple. Therefore we define it
508
+ # as a multiple to avoid the raise.
509
+ multiple:
510
+ get_command: "show running all | include 'system default'"
511
+ get_context: ~
512
+ get_value: '/^no system default switchport$/'
513
+ default_value: true
514
+ ios_xr:
515
+ default_only: false
296
516
 
297
517
  system_default_switchport_shutdown:
298
518
  kind: boolean
299
- config_get: "show running all | include 'system default'"
300
- config_get_token: ['/^system default switchport shutdown$/']
301
- # default_value: n/a. This is a user-configurable system default.
519
+ nexus:
520
+ get_command: "show running all | include 'system default'"
521
+ get_context: ~
522
+ get_value: '/^system default switchport shutdown$/'
523
+ # default_value: n/a. This is a user-configurable system default.
524
+ ios_xr:
525
+ default_only: true
302
526
 
303
527
  vlan_mapping:
304
- _exclude: [/N(3|5|6|9)/]
528
+ _exclude: [N3k, N5k, N6k, N8k, N9k]
305
529
  multiple:
306
- config_get_token_append: '/^switchport vlan mapping (\d+) (\d+)/'
307
- config_set_append: '%s switchport vlan mapping %s %s'
530
+ get_value: '/^switchport vlan mapping (\d+) (\d+)/'
531
+ set_value: '<state> switchport vlan mapping <original> <translated>'
308
532
  default_value: []
309
533
 
310
534
  vlan_mapping_enable:
311
- _exclude: [/N(3|5|6|9)/]
535
+ _exclude: [N3k, N5k, N6k, N8k, N9k]
312
536
  kind: boolean
313
- config_get_token_append: '/^(no )?switchport vlan mapping enable/'
314
- config_set_append: '%s switchport vlan mapping enable'
537
+ get_value: '/^(no )?switchport vlan mapping enable/'
538
+ set_value: '<state> switchport vlan mapping enable'
315
539
  default_value: true
316
540
 
317
541
  vpc_id:
318
542
  kind: int
319
- config_get_token_append: '/^vpc (\d+)$/'
320
- config_set_append: '%s vpc %s'
543
+ get_value: '/^vpc (\d+)$/'
544
+ set_value: '<state> vpc <id>'
321
545
  default_value: false
322
546
 
323
547
  vpc_peer_link:
324
548
  kind: boolean
325
- config_get_token_append: '/^vpc peer\-link$/'
326
- config_set_append: '%s vpc peer-link'
549
+ get_value: '/^vpc peer\-link$/'
550
+ set_value: '<state> vpc peer-link'
327
551
  default_value: false
328
552
 
329
553
  vrf:
330
554
  default_value: ""
331
- cli_nexus:
332
- config_get_token_append: '/^vrf member (.*)/'
333
- config_set_append: "%s vrf member %s"
555
+ nexus:
556
+ get_value: '/^vrf member (.*)/'
557
+ set_value: "<state> vrf member <vrf>"
558
+ ios_xr:
559
+ get_value: '/^vrf (.*)/'
560
+ set_value: "<state> vrf <vrf>"
334
561
 
335
562
  vtp:
563
+ _exclude: [ios_xr]
336
564
  kind: boolean
337
- config_get_token_append: '/^vtp *$/'
338
- config_set_append: "%s vtp"
565
+ get_value: '/^vtp *$/'
566
+ set_value: "<state> vtp"
339
567
  default_value: false