cisco_node_utils 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (202) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/CHANGELOG.md +126 -1
  4. data/README.md +19 -12
  5. data/Rakefile +1 -0
  6. data/bin/git/hooks/commit-msg/enforce_style +8 -0
  7. data/cisco_node_utils.gemspec +4 -3
  8. data/docs/README-develop-best-practices.md +127 -109
  9. data/docs/README-develop-node-utils-APIs.md +47 -39
  10. data/docs/template-router.rb +3 -7
  11. data/lib/.rubocop.yml +4 -4
  12. data/lib/cisco_node_utils.rb +1 -1
  13. data/lib/cisco_node_utils/aaa_authentication_login.rb +96 -0
  14. data/lib/cisco_node_utils/aaa_authentication_login_service.rb +133 -0
  15. data/lib/cisco_node_utils/aaa_authorization_service.rb +150 -0
  16. data/lib/cisco_node_utils/ace.rb +196 -0
  17. data/lib/cisco_node_utils/acl.rb +100 -0
  18. data/lib/cisco_node_utils/bgp.rb +301 -163
  19. data/lib/cisco_node_utils/bgp_af.rb +187 -19
  20. data/lib/cisco_node_utils/bgp_neighbor.rb +18 -33
  21. data/lib/cisco_node_utils/bgp_neighbor_af.rb +25 -48
  22. data/lib/cisco_node_utils/cisco_cmn_utils.rb +23 -4
  23. data/lib/cisco_node_utils/cmd_ref/README_YAML.md +593 -0
  24. data/lib/cisco_node_utils/cmd_ref/aaa_auth_login_service.yaml +22 -0
  25. data/lib/cisco_node_utils/cmd_ref/aaa_authentication_login.yaml +31 -0
  26. data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +22 -0
  27. data/lib/cisco_node_utils/cmd_ref/acl.yaml +43 -0
  28. data/lib/cisco_node_utils/cmd_ref/bgp.yaml +242 -0
  29. data/lib/cisco_node_utils/cmd_ref/bgp_af.yaml +164 -0
  30. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +131 -0
  31. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +179 -0
  32. data/lib/cisco_node_utils/cmd_ref/dnsclient.yaml +34 -0
  33. data/lib/cisco_node_utils/cmd_ref/evpn_vni.yaml +42 -0
  34. data/lib/cisco_node_utils/cmd_ref/fabricpath.yaml +172 -0
  35. data/lib/cisco_node_utils/cmd_ref/fabricpath_topology.yaml +35 -0
  36. data/lib/cisco_node_utils/cmd_ref/feature.yaml +42 -0
  37. data/lib/cisco_node_utils/cmd_ref/fex.yaml +9 -0
  38. data/lib/cisco_node_utils/cmd_ref/images.yaml +7 -0
  39. data/lib/cisco_node_utils/cmd_ref/interface.yaml +339 -0
  40. data/lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml +28 -0
  41. data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +61 -0
  42. data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +54 -0
  43. data/lib/cisco_node_utils/cmd_ref/interface_service_vni.yaml +32 -0
  44. data/lib/cisco_node_utils/cmd_ref/inventory.yaml +45 -0
  45. data/lib/cisco_node_utils/cmd_ref/memory.yaml +13 -0
  46. data/lib/cisco_node_utils/cmd_ref/ntp_config.yaml +7 -0
  47. data/lib/cisco_node_utils/cmd_ref/ntp_server.yaml +14 -0
  48. data/lib/cisco_node_utils/cmd_ref/ospf.yaml +74 -0
  49. data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +33 -0
  50. data/lib/cisco_node_utils/cmd_ref/pim.yaml +40 -0
  51. data/lib/cisco_node_utils/cmd_ref/portchannel_global.yaml +69 -0
  52. data/lib/cisco_node_utils/cmd_ref/radius_global.yaml +25 -0
  53. data/lib/cisco_node_utils/cmd_ref/radius_server.yaml +64 -0
  54. data/lib/cisco_node_utils/cmd_ref/radius_server_group.yaml +14 -0
  55. data/lib/cisco_node_utils/cmd_ref/show_system.yaml +5 -0
  56. data/lib/cisco_node_utils/cmd_ref/show_version.yaml +72 -0
  57. data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +23 -0
  58. data/lib/cisco_node_utils/cmd_ref/snmp_group.yaml +7 -0
  59. data/lib/cisco_node_utils/cmd_ref/snmp_notification_receiver.yaml +50 -0
  60. data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +51 -0
  61. data/lib/cisco_node_utils/cmd_ref/snmp_user.yaml +55 -0
  62. data/lib/cisco_node_utils/cmd_ref/snmpnotification.yaml +11 -0
  63. data/lib/cisco_node_utils/cmd_ref/syslog_server.yaml +18 -0
  64. data/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml +7 -0
  65. data/lib/cisco_node_utils/cmd_ref/system.yaml +6 -0
  66. data/lib/cisco_node_utils/cmd_ref/tacacs_server.yaml +49 -0
  67. data/lib/cisco_node_utils/cmd_ref/tacacs_server_group.yaml +33 -0
  68. data/lib/cisco_node_utils/cmd_ref/tacacs_server_host.yaml +35 -0
  69. data/lib/cisco_node_utils/cmd_ref/vdc.yaml +38 -0
  70. data/lib/cisco_node_utils/cmd_ref/virtual_service.yaml +6 -0
  71. data/lib/cisco_node_utils/cmd_ref/vlan.yaml +56 -0
  72. data/lib/cisco_node_utils/cmd_ref/vni.yaml +76 -0
  73. data/lib/cisco_node_utils/cmd_ref/vpc.yaml +197 -0
  74. data/lib/cisco_node_utils/cmd_ref/vrf.yaml +88 -0
  75. data/lib/cisco_node_utils/cmd_ref/vtp.yaml +38 -0
  76. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +60 -0
  77. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +39 -0
  78. data/lib/cisco_node_utils/cmd_ref/yum.yaml +13 -0
  79. data/lib/cisco_node_utils/command_reference.rb +359 -187
  80. data/lib/cisco_node_utils/configparser_lib.rb +1 -1
  81. data/lib/cisco_node_utils/dns_domain.rb +19 -5
  82. data/lib/cisco_node_utils/domain_name.rb +4 -8
  83. data/lib/cisco_node_utils/evpn_vni.rb +157 -0
  84. data/lib/cisco_node_utils/fabricpath_global.rb +388 -0
  85. data/lib/cisco_node_utils/fabricpath_topology.rb +150 -0
  86. data/lib/cisco_node_utils/feature.rb +111 -0
  87. data/lib/cisco_node_utils/interface.rb +390 -97
  88. data/lib/cisco_node_utils/interface_channel_group.rb +124 -0
  89. data/lib/cisco_node_utils/interface_ospf.rb +11 -34
  90. data/lib/cisco_node_utils/interface_portchannel.rb +157 -0
  91. data/lib/cisco_node_utils/interface_service_vni.rb +132 -0
  92. data/lib/cisco_node_utils/name_server.rb +1 -1
  93. data/lib/cisco_node_utils/node.rb +55 -249
  94. data/lib/cisco_node_utils/node_util.rb +5 -1
  95. data/lib/cisco_node_utils/ntp_config.rb +2 -2
  96. data/lib/cisco_node_utils/ntp_server.rb +14 -5
  97. data/lib/cisco_node_utils/overlay_global.rb +153 -0
  98. data/lib/cisco_node_utils/pim.rb +124 -0
  99. data/lib/cisco_node_utils/pim_group_list.rb +108 -0
  100. data/lib/cisco_node_utils/pim_rp_address.rb +102 -0
  101. data/lib/cisco_node_utils/platform.rb +8 -9
  102. data/lib/cisco_node_utils/portchannel_global.rb +277 -0
  103. data/lib/cisco_node_utils/radius_global.rb +9 -19
  104. data/lib/cisco_node_utils/radius_server.rb +31 -41
  105. data/lib/cisco_node_utils/radius_server_group.rb +117 -0
  106. data/lib/cisco_node_utils/router_ospf.rb +1 -1
  107. data/lib/cisco_node_utils/router_ospf_vrf.rb +14 -19
  108. data/lib/cisco_node_utils/snmp_notification_receiver.rb +158 -0
  109. data/lib/cisco_node_utils/snmpcommunity.rb +3 -5
  110. data/lib/cisco_node_utils/snmpgroup.rb +1 -1
  111. data/lib/cisco_node_utils/snmpnotification.rb +57 -0
  112. data/lib/cisco_node_utils/snmpserver.rb +8 -17
  113. data/lib/cisco_node_utils/snmpuser.rb +67 -28
  114. data/lib/cisco_node_utils/syslog_server.rb +3 -9
  115. data/lib/cisco_node_utils/syslog_settings.rb +2 -10
  116. data/lib/cisco_node_utils/tacacs_server.rb +9 -14
  117. data/lib/cisco_node_utils/tacacs_server_group.rb +145 -0
  118. data/lib/cisco_node_utils/tacacs_server_host.rb +5 -9
  119. data/lib/cisco_node_utils/vdc.rb +88 -0
  120. data/lib/cisco_node_utils/version.rb +5 -2
  121. data/lib/cisco_node_utils/vlan.rb +71 -8
  122. data/lib/cisco_node_utils/vni.rb +227 -0
  123. data/lib/cisco_node_utils/vpc.rb +377 -0
  124. data/lib/cisco_node_utils/vrf.rb +60 -9
  125. data/lib/cisco_node_utils/vrf_af.rb +191 -0
  126. data/lib/cisco_node_utils/vtp.rb +8 -6
  127. data/lib/cisco_node_utils/vxlan_vtep.rb +151 -0
  128. data/lib/cisco_node_utils/vxlan_vtep_vni.rb +234 -0
  129. data/lib/cisco_node_utils/yum.rb +1 -1
  130. data/tests/.rubocop.yml +1 -1
  131. data/tests/basetest.rb +16 -7
  132. data/tests/ciscotest.rb +55 -13
  133. data/tests/cmd_config.yaml +2 -2
  134. data/tests/platform_info.rb +3 -2
  135. data/tests/test_aaa_authentication_login.rb +219 -0
  136. data/tests/test_aaa_authentication_login_service.rb +759 -0
  137. data/tests/test_aaa_authorization_service.rb +1041 -0
  138. data/tests/test_ace.rb +160 -0
  139. data/tests/test_acl.rb +176 -0
  140. data/tests/test_bgp_af.rb +269 -13
  141. data/tests/test_bgp_neighbor.rb +38 -40
  142. data/tests/test_bgp_neighbor_af.rb +92 -32
  143. data/tests/test_command_config.rb +5 -5
  144. data/tests/test_command_reference.rb +284 -101
  145. data/tests/test_dns_domain.rb +1 -1
  146. data/tests/test_domain_name.rb +1 -1
  147. data/tests/test_evpn_vni.rb +106 -0
  148. data/tests/test_fabricpath_global.rb +243 -0
  149. data/tests/test_fabricpath_topology.rb +98 -0
  150. data/tests/test_interface.rb +292 -74
  151. data/tests/test_interface_channel_group.rb +74 -0
  152. data/tests/test_interface_ospf.rb +9 -4
  153. data/tests/test_interface_portchannel.rb +105 -0
  154. data/tests/test_interface_service_vni.rb +232 -0
  155. data/tests/test_interface_svi.rb +77 -62
  156. data/tests/test_interface_switchport.rb +17 -5
  157. data/tests/test_name_server.rb +1 -1
  158. data/tests/test_node.rb +1 -1
  159. data/tests/test_node_ext.rb +10 -20
  160. data/tests/test_ntp_config.rb +1 -1
  161. data/tests/test_ntp_server.rb +18 -6
  162. data/tests/test_overlay_global.rb +102 -0
  163. data/tests/test_pim.rb +177 -0
  164. data/tests/test_pim_group_list.rb +181 -0
  165. data/tests/test_pim_rp_address.rb +153 -0
  166. data/tests/test_platform.rb +3 -3
  167. data/tests/test_portchannel_global.rb +202 -0
  168. data/tests/test_radius_global.rb +1 -1
  169. data/tests/test_radius_server.rb +92 -57
  170. data/tests/test_radius_server_group.rb +149 -0
  171. data/tests/test_router_bgp.rb +283 -112
  172. data/tests/test_router_ospf.rb +2 -2
  173. data/tests/test_router_ospf_vrf.rb +4 -4
  174. data/tests/test_snmp_notification_receiver.rb +167 -0
  175. data/tests/test_snmpcommunity.rb +1 -1
  176. data/tests/test_snmpgroup.rb +1 -1
  177. data/tests/test_snmpnotification.rb +72 -0
  178. data/tests/test_snmpserver.rb +29 -105
  179. data/tests/test_snmpuser.rb +32 -30
  180. data/tests/test_syslog_server.rb +36 -10
  181. data/tests/test_syslog_settings.rb +1 -1
  182. data/tests/test_tacacs_server.rb +1 -1
  183. data/tests/test_tacacs_server_group.rb +405 -0
  184. data/tests/test_tacacs_server_host.rb +1 -1
  185. data/tests/test_vdc.rb +78 -0
  186. data/tests/test_vlan.rb +74 -19
  187. data/tests/test_vlan_mt_full.rb +95 -0
  188. data/tests/test_vni.rb +106 -0
  189. data/tests/test_vpc.rb +361 -0
  190. data/tests/test_vrf.rb +172 -29
  191. data/tests/test_vtp.rb +1 -1
  192. data/tests/test_vxlan_vtep.rb +214 -0
  193. data/tests/test_vxlan_vtep_vni.rb +201 -0
  194. data/tests/test_yum.rb +1 -1
  195. metadata +120 -11
  196. data/lib/cisco_node_utils/README_YAML.md +0 -325
  197. data/lib/cisco_node_utils/command_reference_common.yaml +0 -1051
  198. data/lib/cisco_node_utils/command_reference_common_bgp.yaml +0 -535
  199. data/lib/cisco_node_utils/command_reference_n3064.yaml +0 -13
  200. data/lib/cisco_node_utils/command_reference_n7k.yaml +0 -52
  201. data/lib/cisco_node_utils/command_reference_n9k.yaml +0 -26
  202. data/tests/platform_info.yaml +0 -10
@@ -0,0 +1,131 @@
1
+ # bgp_neighbor.yaml
2
+ ---
3
+ _template:
4
+ config_get: "show running bgp all"
5
+ config_get_token: '/^router bgp <asnum>$/'
6
+ config_get_token_append:
7
+ - '/^vrf <vrf>$/'
8
+ - '/^neighbor <nbr>$/'
9
+ config_set: "router bgp <asnum>"
10
+ config_set_append:
11
+ - "vrf <vrf>"
12
+ - "neighbor <nbr>"
13
+
14
+ af:
15
+ config_set_append: '<state> address-family <afi> <safi>'
16
+
17
+ all_neighbors:
18
+ multiple: true
19
+ config_get_token_append: '/^neighbor (\S+)$/'
20
+
21
+ capability_negotiation:
22
+ auto_default: false
23
+ kind: boolean
24
+ config_get_token_append: '/^dont-capability-negotiate$/'
25
+ config_set_append: '<state> dont-capability-negotiate'
26
+ default_value: true
27
+
28
+ connected_check:
29
+ auto_default: false
30
+ kind: boolean
31
+ config_get_token_append: '/^disable-connected-check$/'
32
+ config_set_append: '<state> disable-connected-check'
33
+ default_value: true
34
+
35
+ description:
36
+ kind: string
37
+ config_get_token_append: '/^description (.*)/'
38
+ config_set_append: '<state> description <desc>'
39
+ default_value: ""
40
+
41
+ dynamic_capability:
42
+ kind: boolean
43
+ config_get_token_append: '/^(no )?dynamic-capability$/'
44
+ config_set_append: '<state> dynamic-capability'
45
+ default_value: true
46
+
47
+ ebgp_multihop:
48
+ auto_default: false
49
+ config_get_token_append: '/^ebgp-multihop (\d+)$/'
50
+ config_set_append: '<state> ebgp-multihop <ttl>'
51
+ default_value: false
52
+
53
+ local_as:
54
+ config_get_token_append: '/^local-as (\d*?.?\d+?)$/'
55
+ config_set_append: '<state> local-as <local_as>'
56
+ default_value: 0
57
+
58
+ log_neighbor_changes:
59
+ _exclude: [/N(5|6|7)/]
60
+ multiple: true # not actually, but we get an array of matches
61
+ auto_default: false
62
+ config_get_token_append: '/^log-neighbor-changes\s+??(\S+)?\s+??$/'
63
+ config_set_append: '<state> log-neighbor-changes <disable>'
64
+ default_value: "inherit"
65
+
66
+ low_memory_exempt:
67
+ kind: boolean
68
+ config_get_token_append: '/^low-memory exempt$/'
69
+ config_set_append: '<state> low-memory exempt'
70
+ default_value: false
71
+
72
+ maximum_peers:
73
+ kind: int
74
+ config_get_token_append: '/^maximum-peers (\d+)$/'
75
+ config_set_append: '<state> maximum-peers <num>'
76
+ default_value: 0
77
+
78
+ password:
79
+ config_get_token_append: '/^password \d+ (\S+)$/'
80
+ config_set_append: '<state> password <type> <passwd>'
81
+ default_value: ""
82
+
83
+ password_type:
84
+ kind: int
85
+ config_get_token_append: '/^password (\d+)/'
86
+ default_value: 0
87
+
88
+ remote_as:
89
+ config_get_token_append: '/^remote-as (\d*?.?\d+?)$/'
90
+ config_set_append: '<state> remote-as <remote_as>'
91
+ default_value: 0
92
+
93
+ remove_private_as:
94
+ multiple: true # not actually, but we get an array of matches
95
+ auto_default: false
96
+ config_get_token_append: '/^remove-private-as\s+??(\S+)?\s+??$/'
97
+ config_set_append: '<state> remove-private-as <option>'
98
+ default_value: "disable"
99
+
100
+ shutdown:
101
+ kind: boolean
102
+ config_get_token_append: '/^shutdown$/'
103
+ config_set_append: '<state> shutdown'
104
+ default_value: false
105
+
106
+ suppress_4_byte_as:
107
+ kind: boolean
108
+ config_get_token_append: '/^capability suppress 4-byte-as$/'
109
+ config_set_append: '<state> capability suppress 4-byte-as'
110
+ default_value: false
111
+
112
+ timers_holdtime:
113
+ default_value: 180
114
+
115
+ timers_keepalive:
116
+ default_value: 60
117
+
118
+ timers_keepalive_hold:
119
+ config_get_token_append: '/^timers (\d+) (\d+)$/'
120
+ config_set_append: '<state> timers <keepalive> <hold>'
121
+
122
+ transport_passive_only:
123
+ kind: boolean
124
+ config_get_token_append: '/^transport connection-mode passive$/'
125
+ config_set_append: '<state> transport connection-mode passive'
126
+ default_value: false
127
+
128
+ update_source:
129
+ config_get_token_append: '/^update-source (\S+)$/'
130
+ config_set_append: '<state> update-source <interface>'
131
+ default_value: ""
@@ -0,0 +1,179 @@
1
+ # bgp_neighbor_af.yaml
2
+ ---
3
+ _template:
4
+ config_get: 'show running bgp all'
5
+ config_get_token: '/^router bgp <asnum>$/'
6
+ config_get_token_append:
7
+ - '/^vrf <vrf>$/'
8
+ - '/^neighbor <nbr>$/'
9
+ - '/^address-family <afi> <safi>$/'
10
+ config_set: 'router bgp <asnum>'
11
+ config_set_append:
12
+ - 'vrf <vrf>'
13
+ - 'neighbor <nbr>'
14
+ - 'address-family <afi> <safi>'
15
+
16
+ additional_paths_receive:
17
+ auto_default: false
18
+ config_get_token_append: '/^capability additional-paths receive(?: disable)?/'
19
+ config_set_append: '<state> capability additional-paths receive <disable>'
20
+ default_value: 'inherit'
21
+
22
+ additional_paths_send:
23
+ auto_default: false
24
+ config_get_token_append: '/^capability additional-paths send(?: disable)?/'
25
+ config_set_append: '<state> capability additional-paths send <disable>'
26
+ default_value: 'inherit'
27
+
28
+ advertise_map_exist:
29
+ config_get_token_append: '/^advertise-map (\S+) exist-map (\S+)$/'
30
+ config_set_append: '<state> advertise-map <map1> exist-map <map2>'
31
+ default_value: ''
32
+
33
+ advertise_map_non_exist:
34
+ config_get_token_append: '/^advertise-map (\S+) non-exist-map (\S+)$/'
35
+ config_set_append: '<state> advertise-map <map1> non-exist-map <map2>'
36
+ default_value: ''
37
+
38
+ all_afs:
39
+ multiple: true
40
+ config_get_token_append: '/^address-family (\S+) (\S+)$/'
41
+
42
+ allowas_in:
43
+ auto_default: false
44
+ config_get_token_append: '/^allowas-in(?: \d+)?/'
45
+ config_set_append: '<state> allowas-in <max>'
46
+ default_value: false
47
+
48
+ allowas_in_max:
49
+ default_value: 3
50
+
51
+ as_override:
52
+ kind: boolean
53
+ config_get_token_append: '/^as-override$/'
54
+ config_set_append: '<state> as-override'
55
+ default_value: false
56
+
57
+ default_originate:
58
+ config_get_token_append: '/^default-originate(?: route-map .*)?/'
59
+ config_set_append: '<state> default-originate <map>'
60
+ default_value: false
61
+
62
+ default_originate_route_map:
63
+ default_value: ~
64
+
65
+ disable_peer_as_check:
66
+ kind: boolean
67
+ config_get_token_append: '/^disable-peer-as-check$/'
68
+ config_set_append: '<state> disable-peer-as-check'
69
+ default_value: false
70
+
71
+ filter_list_in:
72
+ kind: string
73
+ config_get_token_append: '/^filter-list (\S+) in$/'
74
+ config_set_append: '<state> filter-list <str> in'
75
+ default_value: ''
76
+
77
+ filter_list_out:
78
+ kind: string
79
+ config_get_token_append: '/^filter-list (\S+) out$/'
80
+ config_set_append: '<state> filter-list <str> out'
81
+ default_value: ''
82
+
83
+ max_prefix:
84
+ config_get_token_append: '/^maximum-prefix .*$/'
85
+ config_set_append: '<state> maximum-prefix <limit> <threshold> <opt>'
86
+
87
+ max_prefix_interval:
88
+ default_value: ~
89
+
90
+ max_prefix_limit:
91
+ default_value: ~
92
+
93
+ max_prefix_threshold:
94
+ default_value: ~
95
+
96
+ max_prefix_warning:
97
+ default_value: ~
98
+
99
+ next_hop_self:
100
+ kind: boolean
101
+ config_get_token_append: '/^next-hop-self$/'
102
+ config_set_append: '<state> next-hop-self'
103
+ default_value: false
104
+
105
+ next_hop_third_party:
106
+ kind: boolean
107
+ config_get_token_append: '/^(no ?)next-hop-third-party$/'
108
+ config_set_append: '<state> next-hop-third-party'
109
+ default_value: true
110
+
111
+ prefix_list_in:
112
+ kind: string
113
+ config_get_token_append: '/^prefix-list (\S+) in$/'
114
+ config_set_append: '<state> prefix-list <str> in'
115
+ default_value: ''
116
+
117
+ prefix_list_out:
118
+ kind: string
119
+ config_get_token_append: '/^prefix-list (\S+) out$/'
120
+ config_set_append: '<state> prefix-list <str> out'
121
+ default_value: ''
122
+
123
+ route_map_in:
124
+ kind: string
125
+ config_get_token_append: '/^route-map (\S+) in$/'
126
+ config_set_append: '<state> route-map <str> in'
127
+ default_value: ''
128
+
129
+ route_map_out:
130
+ kind: string
131
+ config_get_token_append: '/^route-map (\S+) out$/'
132
+ config_set_append: '<state> route-map <str> out'
133
+ default_value: ''
134
+
135
+ route_reflector_client:
136
+ kind: boolean
137
+ config_get_token_append: '/^route-reflector-client$/'
138
+ config_set_append: '<state> route-reflector-client'
139
+ default_value: false
140
+
141
+ send_community:
142
+ auto_default: false
143
+ config_get_token_append: '/^send-community(?: .*)?/'
144
+ config_set_append: '<state> send-community <attr>'
145
+ default_value: 'none'
146
+
147
+ soft_reconfiguration_in:
148
+ auto_default: false
149
+ default_value: 'inherit'
150
+ /(N3K|N9K)/:
151
+ config_get_token_append: '/^soft-reconfiguration inbound(?: always)?/'
152
+ config_set_append: '<state> soft-reconfiguration inbound <always>'
153
+ else:
154
+ config_get_token_append: '/^soft-reconfiguration inbound/'
155
+ config_set_append: '<state> soft-reconfiguration inbound'
156
+
157
+ soo:
158
+ kind: string
159
+ config_get_token_append: '/^soo (.*)$/'
160
+ config_set_append: '<state> soo <str>'
161
+ default_value: ''
162
+
163
+ suppress_inactive:
164
+ kind: boolean
165
+ config_get_token_append: '/^suppress-inactive$/'
166
+ config_set_append: '<state> suppress-inactive'
167
+ default_value: false
168
+
169
+ unsuppress_map:
170
+ kind: string
171
+ config_get_token_append: '/^unsuppress-map (.*)$/'
172
+ config_set_append: '<state> unsuppress-map <str>'
173
+ default_value: ''
174
+
175
+ weight:
176
+ kind: int
177
+ config_get_token_append: '/^weight (\d+)$/'
178
+ config_set_append: '<state> weight <int>'
179
+ default_value: false
@@ -0,0 +1,34 @@
1
+ # dnsclient
2
+ ---
3
+ _template:
4
+ config_get: "show running-config all"
5
+
6
+ domain_list:
7
+ multiple: true
8
+ config_get_token: '/^ip domain-list (\S+)$/'
9
+ config_set: '<state> ip domain-list <name>'
10
+ default_value: []
11
+
12
+ domain_list_vrf:
13
+ multiple: true
14
+ config_get_token: ['/vrf context <vrf>/', '/ip domain-list (\S+)/']
15
+ config_set: ['vrf context <vrf>', '<state> ip domain-list <name>']
16
+ default_value: []
17
+
18
+ domain_name:
19
+ cli_nexus:
20
+ config_set: '<state> ip domain-name <name>'
21
+ config_get_token: '/^ip domain-name (\S+)$/'
22
+ default_value: ''
23
+
24
+ domain_name_vrf:
25
+ config_get_token: ['/vrf context <vrf>/', '/ip domain-name (\S+)/']
26
+ config_set: ['vrf context <vrf>', '<state> ip domain-name <name>']
27
+ default_value: ''
28
+
29
+ name_server:
30
+ multiple: true
31
+ default_value: []
32
+ config_get: "show running-config all | include 'ip name-server' | exclude 'use-vrf'"
33
+ config_get_token: '/^ip name-server ([\s\d\.:]+)$/'
34
+ config_set: '<state> ip name-server <ip>'
@@ -0,0 +1,42 @@
1
+ # evpn_vni.yaml
2
+ ---
3
+ _template:
4
+ config_get: "show running bgp all"
5
+ config_get_token: '/^evpn$/'
6
+ config_get_token_append:
7
+ - '/^vni <vni> l2$/'
8
+ config_set: 'evpn'
9
+ config_set_append:
10
+ - "vni <vni> l2"
11
+
12
+ evpn:
13
+ config_get_token: "/^evpn$/"
14
+ config_set: "<state> evpn"
15
+
16
+ route_distinguisher:
17
+ config_get_token_append: '/^rd (\S+)$/'
18
+ config_set_append: "<state> rd <rd>"
19
+ default_value: ""
20
+
21
+ route_target_both:
22
+ config_get_token_append: '/^route-target both (\S+)$/'
23
+ config_set_append: "<state> route-target both <community>"
24
+ multiple: true
25
+ default_value: []
26
+
27
+ route_target_export:
28
+ config_get_token_append: '/^route-target export (\S+)$/'
29
+ config_set_append: "<state> route-target export <community>"
30
+ multiple: true
31
+ default_value: []
32
+
33
+ route_target_import:
34
+ config_get_token_append: '/^route-target import (\S+)$/'
35
+ config_set_append: "<state> route-target import <community>"
36
+ multiple: true
37
+ default_value: []
38
+
39
+ vni:
40
+ multiple: true
41
+ config_get_token_append: '/^vni\s+(\S+)\s+l2$/'
42
+ config_set: ["evpn", "<state> vni <vni> l2", "end"]
@@ -0,0 +1,172 @@
1
+ # fabricpath
2
+ ---
3
+ # Fabricpath feature is not available on N3K and N9K
4
+ _exclude: [/N3/, /N9K/]
5
+
6
+ aggregate_multicast_routes:
7
+ _exclude: [/N5K/, /N6K/]
8
+ kind: boolean
9
+ config_get: "show run fabricpath all"
10
+ config_get_token: '/^fabricpath multicast aggregate\-routes\s*$/'
11
+ config_set: "<state> fabricpath multicast aggregate-routes"
12
+ default_value: false
13
+
14
+ allocate_delay:
15
+ kind: int
16
+ config_get: "show run fabricpath all"
17
+ config_get_token: '/^fabricpath timers allocate\-delay (\d+)/'
18
+ config_set: "<state> fabricpath timers allocate-delay <delay>"
19
+ default_value: 10
20
+
21
+ auto_switch_id:
22
+ kind: int
23
+ config_get: "show fabricpath switch-id"
24
+ config_get_token: '/^\*\s+(\d+).*No\s*$/'
25
+
26
+ feature:
27
+ config_get: "show feature-set"
28
+ config_get_token: '/^fabricpath[\s]+[\d]+[\s]+(\S+)/'
29
+ config_set: "<state> feature-set fabricpath"
30
+ default_value: disabled
31
+
32
+ feature_install:
33
+ config_set: "<state> install feature-set fabricpath"
34
+
35
+ graceful_merge:
36
+ auto_default: false
37
+ kind: boolean
38
+ config_get: "show run fabricpath all"
39
+ config_get_token: '/^fabricpath graceful\-merge disable\s*$/'
40
+ config_set: "<state> fabricpath graceful-merge disable"
41
+ default_value: true
42
+
43
+ linkup_delay:
44
+ kind: int
45
+ config_get: "show run fabricpath all"
46
+ config_get_token: '/^fabricpath timers linkup-delay (\d+)\s*$/'
47
+ config_set: "<state> fabricpath timers linkup-delay <delay>"
48
+ default_value: 10
49
+
50
+ linkup_delay_always:
51
+ _exclude: [/N5K/, /N6K/]
52
+ kind: boolean
53
+ config_get: "show run fabricpath all"
54
+ config_get_token: '/^fabricpath timers linkup-delay always\s*$/'
55
+ config_set: "<state> fabricpath timers linkup-delay always"
56
+ default_value: false
57
+
58
+ linkup_delay_enable:
59
+ _exclude: [/N5K/, /N6K/]
60
+ auto_default: false
61
+ kind: boolean
62
+ config_get: "show run fabricpath all"
63
+ config_get_token: '/^fabricpath linkup-delay\s*$/'
64
+ config_set: "<state> fabricpath linkup-delay"
65
+ default_value: true
66
+
67
+ loadbalance_algorithm:
68
+ kind: string
69
+ config_get: "show run fabricpath all"
70
+ config_get_token: '/^fabricpath load-balance (\S+)\s*$/'
71
+ config_set: "<state> fabricpath load-balance <algo>"
72
+ /N5K/:
73
+ default_value: "source-destination"
74
+ else:
75
+ default_value: "symmetric"
76
+
77
+ loadbalance_multicast_has_vlan:
78
+ _exclude: [/N5K/, /N6K/]
79
+ kind: boolean
80
+ auto_default: false
81
+ config_get: "show fabricpath load-balance | begin Ftag"
82
+ config_get_token: '/^Use VLAN: TRUE\s*$/'
83
+ default_value: true
84
+
85
+ loadbalance_multicast_reset:
86
+ _exclude: [/N5K/, /N6K/]
87
+ config_set: "no fabricpath load-balance multicast"
88
+
89
+ loadbalance_multicast_rotate:
90
+ _exclude: [/N5K/, /N6K/]
91
+ kind: int
92
+ config_get: "show fabricpath load-balance | begin Ftag"
93
+ config_get_token: '/^Rotate amount: (\d+)/'
94
+ default_value: 1
95
+
96
+ loadbalance_multicast_set:
97
+ _exclude: [/N5K/, /N6K/]
98
+ config_set: 'fabricpath load-balance multicast <rotate_amt> <inc_vlan>'
99
+
100
+ loadbalance_unicast_has_vlan:
101
+ kind: boolean
102
+ auto_default: false
103
+ config_get: "show fabricpath load-balance | begin ECMP next 4"
104
+ config_get_token: '/^Use VLAN: TRUE\s*$/'
105
+ config_set: "<state> fabricpath load-balance unicast include-vlan"
106
+ default_value: true
107
+
108
+ loadbalance_unicast_layer:
109
+ kind: string
110
+ config_get: "show fabricpath load-balance | begin ECMP next 4"
111
+ config_get_token: '/^L3\/L4 Preference: (\S+)/'
112
+ config_set: "<state> fabricpath load-balance unicast <pref>"
113
+ default_value: "mixed"
114
+
115
+ loadbalance_unicast_reset:
116
+ config_set: "no fabricpath load-balance unicast"
117
+
118
+ loadbalance_unicast_rotate:
119
+ _exclude: [/N5K/, /N6K/]
120
+ kind: int
121
+ config_get: "show fabricpath load-balance | begin ECMP next 4"
122
+ config_get_token: '/^Rotate amount: (\d+)/'
123
+ default_value: 1
124
+
125
+ loadbalance_unicast_set:
126
+ config_set: 'fabricpath load-balance unicast <pref> <rotate_amt> <inc_vlan>'
127
+
128
+ loadbalance_unicast_support:
129
+ kind: string
130
+ /N5K/:
131
+ default_only: "split"
132
+ /N6K/:
133
+ default_only: "split"
134
+ else:
135
+ default_only: "combined"
136
+
137
+ mode:
138
+ kind: string
139
+ config_get: "show run fabricpath all"
140
+ config_get_token: '/^fabricpath mode (\S+)/'
141
+ config_set: "<state> fabricpath mode transit"
142
+ default_value: "normal"
143
+
144
+ switch_id:
145
+ kind: int
146
+ config_get: "show run fabricpath all"
147
+ config_get_token: '/^fabricpath switch-id (\d+)\s*$/'
148
+ config_set: "fabricpath switch-id <swid>"
149
+
150
+ transition_delay:
151
+ kind: int
152
+ config_get: "show run fabricpath all"
153
+ config_get_token: '/^fabricpath timers transition\-delay (\d+)\s*$/'
154
+ config_set: "<state> fabricpath timers transition-delay <delay>"
155
+ default_value: 10
156
+
157
+ ttl_multicast:
158
+ _exclude: [/N5K/, /N6K/]
159
+ kind: int
160
+ config_get: "show run fabricpath all"
161
+ config_get_token: '/^fabricpath ttl multicast (\d+)\s*$/'
162
+ config_set: "<state> fabricpath ttl multicast <ttl>"
163
+ default_value: 32
164
+
165
+ ttl_unicast:
166
+ _exclude: [/N5K/, /N6K/]
167
+ kind: int
168
+ config_get: "show run fabricpath all"
169
+ config_get_token: '/^fabricpath ttl unicast (\d+)\s*$/'
170
+ config_set: "<state> fabricpath ttl unicast <ttl>"
171
+ default_value: 32
172
+