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,22 @@
1
+ # aaa_auth_login_service
2
+ ---
3
+ groups:
4
+ config_get: "show aaa authentication"
5
+ config_get_token: ["TABLE_AuthenMethods", "ROW_AuthenMethods"]
6
+ # this set is only used when there are groups to configure
7
+ config_set: "%s aaa authentication login %s group %s %s"
8
+ default_value: []
9
+ multiple:
10
+
11
+ method:
12
+ auto_default: false
13
+ config_get: "show aaa authentication"
14
+ config_get_token: '/^\s*%s:.*(local|none)\s*$/'
15
+ # this set is only used when there are no groups to configure
16
+ config_set: "%s aaa authentication login %s %s"
17
+ default_value: :local
18
+
19
+ services:
20
+ config_get: "show run aaa all"
21
+ config_get_token: '/^aaa authentication login (\S+) (?:none|group|local)/'
22
+ multiple:
@@ -0,0 +1,31 @@
1
+ # aaa_authentication_login
2
+ ---
3
+ ascii_authentication:
4
+ config_get: "show run aaa all"
5
+ config_get_token: '/^aaa authentication login ascii-authentication/'
6
+ config_set: "%s aaa authentication login ascii-authentication"
7
+ default_value: false
8
+
9
+ chap:
10
+ config_get: "show run aaa all"
11
+ config_get_token: '/^aaa authentication login chap enable/'
12
+ config_set: "%s aaa authentication login chap enable"
13
+ default_value: false
14
+
15
+ error_display:
16
+ config_get: "show run aaa all"
17
+ config_get_token: '/^aaa authentication login error-enable/'
18
+ config_set: "%s aaa authentication login error-enable"
19
+ default_value: false
20
+
21
+ mschap:
22
+ config_get: "show run aaa all"
23
+ config_get_token: '/^aaa authentication login mschap enable/'
24
+ config_set: "%s aaa authentication login mschap enable"
25
+ default_value: false
26
+
27
+ mschapv2:
28
+ config_get: "show run aaa all"
29
+ config_get_token: '/^aaa authentication login mschapv2 enable/'
30
+ config_set: "%s aaa authentication login mschapv2 enable"
31
+ default_value: false
@@ -0,0 +1,22 @@
1
+ # aaa_authorization_service
2
+ ---
3
+ groups:
4
+ config_get: "show aaa authorization all"
5
+ config_get_token: ["TABLE_cmd_methods", "ROW_cmd_methods"]
6
+ # this set is only used when there are groups to configure
7
+ config_set: "%s aaa authorization %s %s group %s %s"
8
+ default_value: []
9
+ multiple:
10
+
11
+ method:
12
+ auto_default: false
13
+ config_get: "show aaa authorization all"
14
+ config_get_token: '/^\s+%s authorization for %s:.*(local) ?$/'
15
+ # this set is only used when there are no groups to configure
16
+ config_set: "%s aaa authorization %s %s local"
17
+ default_value: :local
18
+
19
+ services:
20
+ config_get: "show run aaa all"
21
+ config_get_token: '/^aaa authorization (\S+) (\S+) .*(?:local)? ?$/'
22
+ multiple:
@@ -0,0 +1,43 @@
1
+ # Command Reference Common ACL
2
+ #
3
+ # For documentation please see:
4
+ # - README_YAML.md
5
+ #
6
+ ---
7
+ _template:
8
+ config_get: 'show run aclmgr'
9
+ config_get_token: '/^<afi> access-list <acl_name>$/'
10
+ config_set: '<afi> access-list <acl_name>'
11
+
12
+ ace:
13
+ config_get_token_append: '/^<seqno> .+$/'
14
+ config_set_append: '<state> <seqno> <action> <proto> <src_addr> <src_port> <dst_addr> <dst_port>'
15
+
16
+ ace_destroy:
17
+ config_set_append: 'no <seqno>'
18
+
19
+ ace_remark:
20
+ config_set_append: '<state> <seqno> remark <remark>'
21
+
22
+ acl:
23
+ config_get_token: '/^<afi> access-list (\S+)$/'
24
+ config_set: '<state> <afi> access-list <acl_name>'
25
+
26
+ all_aces:
27
+ multiple:
28
+ config_get_token_append: '/^(\d+) .+$/'
29
+
30
+ all_acls:
31
+ multiple:
32
+ config_get_token: '/^<afi> access-list (\S+)$/'
33
+
34
+ fragments:
35
+ config_get_token_append: '/fragments (\S+)$/'
36
+ config_set_append: '<state> fragments <action>'
37
+ default_value: ~
38
+
39
+ stats_per_entry:
40
+ kind: boolean
41
+ config_get_token_append: '/statistics per-entry$/'
42
+ config_set_append: '<state> statistics per-entry'
43
+ default_value: false
@@ -0,0 +1,242 @@
1
+ # bgp.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
+ config_set: "router bgp <asnum>"
9
+ config_set_append:
10
+ - "vrf <vrf>"
11
+
12
+ address_family:
13
+ config_set_append: '<state> address-family <afi> <safi>'
14
+
15
+ bestpath_always_compare_med:
16
+ kind: boolean
17
+ config_get_token_append: '/^bestpath always-compare-med$/'
18
+ config_set_append: '<state> bestpath always-compare-med'
19
+ default_value: false
20
+
21
+ bestpath_aspath_multipath_relax:
22
+ kind: boolean
23
+ config_get_token_append: '/^bestpath as-path multipath-relax$/'
24
+ config_set_append: '<state> bestpath as-path multipath-relax'
25
+ default_value: false
26
+
27
+ bestpath_compare_routerid:
28
+ kind: boolean
29
+ config_get_token_append: '/^bestpath compare-routerid$/'
30
+ config_set_append: '<state> bestpath compare-routerid'
31
+ default_value: false
32
+
33
+ bestpath_cost_community_ignore:
34
+ kind: boolean
35
+ config_get_token_append: '/^bestpath cost-community ignore$/'
36
+ config_set_append: '<state> bestpath cost-community ignore'
37
+ default_value: false
38
+
39
+ bestpath_med_confed:
40
+ kind: boolean
41
+ config_get_token_append: '/^bestpath med confed$/'
42
+ config_set_append: '<state> bestpath med confed'
43
+ default_value: false
44
+
45
+ bestpath_med_missing_as_worst:
46
+ kind: boolean
47
+ config_get_token_append: '/^bestpath med missing-as-worst$/'
48
+ config_set_append: '<state> bestpath med missing-as-worst'
49
+ default_value: false
50
+
51
+ bestpath_med_non_deterministic:
52
+ kind: boolean
53
+ config_get_token_append: '/^bestpath med non-deterministic$/'
54
+ config_set_append: '<state> bestpath med non-deterministic'
55
+ default_value: false
56
+
57
+ cluster_id:
58
+ config_get_token_append: '/^cluster-id (\S+)$/'
59
+ config_set_append: '<state> cluster-id <id>'
60
+ default_value: ""
61
+
62
+ confederation_id:
63
+ config_get_token_append: '/^confederation identifier (\d+|\d+.\d+)$/'
64
+ config_set_append: '<state> confederation identifier <id>'
65
+ default_value: ""
66
+
67
+ confederation_peers:
68
+ config_get_token_append: '/^confederation peers (.*)$/'
69
+ config_set_append: '<state> confederation peers <peer_list>'
70
+ default_value: ""
71
+
72
+ create_destroy_neighbor:
73
+ config_set_append: '<state> neighbor <nbr>'
74
+
75
+ disable_policy_batching:
76
+ config_get_token_append: '/^disable-policy-batching$/'
77
+ config_set_append: '<state> disable-policy-batching'
78
+ default_value: false
79
+
80
+ disable_policy_batching_ipv4:
81
+ _exclude: [/N(5|6|7)/]
82
+ config_get_token_append: '/^disable-policy-batching ipv4 prefix-list (\S+)$/'
83
+ config_set_append: '<state> disable-policy-batching ipv4 prefix-list <prefix_list>'
84
+ default_value: ""
85
+
86
+ disable_policy_batching_ipv6:
87
+ _exclude: [/N(5|6|7)/]
88
+ config_get_token_append: '/^disable-policy-batching ipv6 prefix-list (\S+)$/'
89
+ config_set_append: '<state> disable-policy-batching ipv6 prefix-list <prefix_list>'
90
+ default_value: ""
91
+
92
+ enforce_first_as:
93
+ kind: boolean
94
+ config_get_token_append: '/^(no )?enforce-first-as$/'
95
+ config_set_append: '<state> enforce-first-as'
96
+ default_value: true
97
+
98
+ event_history_cli:
99
+ config_get_token_append: '/^(no )?event-history cli(?: size (\S+))?$/'
100
+ config_set_append: '<state> event-history cli <size>'
101
+ default_value: 'size_small'
102
+
103
+ event_history_detail:
104
+ config_get_token_append: '/^(no )?event-history detail(?: size (\S+))?$/'
105
+ config_set_append: '<state> event-history detail <size>'
106
+ auto_default: false
107
+ default_value: 'size_disable'
108
+
109
+ event_history_events:
110
+ config_get_token_append: '/^(no )?event-history events(?: size (\S+))?$/'
111
+ config_set_append: '<state> event-history events <size>'
112
+ default_value: 'size_small'
113
+
114
+ event_history_periodic:
115
+ config_get_token_append: '/^(no )?event-history periodic(?: size (\S+))?$/'
116
+ config_set_append: '<state> event-history periodic <size>'
117
+ default_value: 'size_small'
118
+
119
+ fast_external_fallover:
120
+ kind: boolean
121
+ config_get_token_append: '/^(no )?fast-external-fallover$/'
122
+ config_set_append: '<state> fast-external-fallover'
123
+ default_value: true
124
+
125
+ flush_routes:
126
+ kind: boolean
127
+ config_get_token_append: '/^flush-routes$/'
128
+ config_set_append: '<state> flush-routes'
129
+ default_value: false
130
+
131
+ graceful_restart:
132
+ kind: boolean
133
+ config_get_token_append: '/^(no )?graceful-restart$/'
134
+ config_set_append: '<state> graceful-restart'
135
+ default_value: true
136
+
137
+ graceful_restart_helper:
138
+ kind: boolean
139
+ config_get_token_append: '/^graceful-restart-helper$/'
140
+ config_set_append: '<state> graceful-restart-helper'
141
+ default_value: false
142
+
143
+ graceful_restart_timers_restart:
144
+ kind: int
145
+ config_get_token_append: '/^graceful-restart restart-time (\d+)$/'
146
+ config_set_append: '<state> graceful-restart restart-time <seconds>'
147
+ default_value: 120
148
+
149
+ graceful_restart_timers_stalepath_time:
150
+ kind: int
151
+ config_get_token_append: '/^graceful-restart stalepath-time (\d+)$/'
152
+ config_set_append: '<state> graceful-restart stalepath-time <seconds>'
153
+ default_value: 300
154
+
155
+ isolate:
156
+ kind: boolean
157
+ config_get_token_append: '/^isolate$/'
158
+ config_set_append: '<state> isolate'
159
+ default_value: false
160
+
161
+ log_neighbor_changes:
162
+ kind: boolean
163
+ config_get_token_append: '/^log-neighbor-changes$/'
164
+ config_set_append: '<state> log-neighbor-changes'
165
+ default_value: false
166
+
167
+ maxas_limit:
168
+ kind: int
169
+ config_get_token_append: '/^maxas-limit (\d+)$/'
170
+ config_set_append: '<state> maxas-limit <limit>'
171
+ default_value: false
172
+
173
+ neighbor_down_fib_accelerate:
174
+ _exclude: [/N(5|6|7)/]
175
+ kind: boolean
176
+ config_get_token_append: '/^neighbor-down fib-accelerate$/'
177
+ config_set_append: '<state> neighbor-down fib-accelerate'
178
+ default_value: false
179
+
180
+ reconnect_interval:
181
+ _exclude: [/N(5|6|7)/]
182
+ kind: int
183
+ config_get_token_append: '/^reconnect-interval (\d+)$/'
184
+ config_set_append: '<state> reconnect-interval <seconds>'
185
+ default_value: 60
186
+
187
+ route_distinguisher:
188
+ # This property is also supported by vrf.yaml
189
+ config_get_token: ['/^vrf context <vrf>$/i', '/^rd (\S+)$/']
190
+ config_set: ["vrf context <vrf>", "<state> rd <rd>"]
191
+ default_value: ""
192
+
193
+ router:
194
+ config_get: "show running bgp"
195
+ config_get_token: '/^router bgp ([\d.]+)$/'
196
+ config_set: "<state> router bgp <asnum>"
197
+
198
+ router_id:
199
+ config_get_token_append: '/^router-id (\S+)$/'
200
+ config_set_append: '<state> router-id <id>'
201
+ default_value: ""
202
+
203
+ shutdown:
204
+ # Shutdown only applies to global bgp
205
+ kind: boolean
206
+ config_get: "show running bgp"
207
+ config_get_token: ['/^router bgp %s$/i', '/^shutdown$/']
208
+ config_set: ["router bgp <asnum>", "<state> shutdown"]
209
+ default_value: false
210
+
211
+ suppress_fib_pending:
212
+ kind: boolean
213
+ config_get_token_append: '/^suppress-fib-pending$/'
214
+ config_set_append: '<state> suppress-fib-pending'
215
+ default_value: false
216
+
217
+ timer_bestpath_limit:
218
+ kind: int
219
+ config_get_token_append: '/^timers bestpath-limit (\d+)(?: always)?$/'
220
+ config_set_append: '<state> timers bestpath-limit <seconds>'
221
+ default_value: 300
222
+
223
+ timer_bestpath_limit_always:
224
+ kind: boolean
225
+ config_get_token_append: '/^timers bestpath-limit \d+ always$/'
226
+ config_set_append: '<state> timers bestpath-limit <seconds> always'
227
+ default_value: false
228
+
229
+ timer_bgp_hold:
230
+ default_value: 180
231
+
232
+ timer_bgp_keepalive:
233
+ default_value: 60
234
+
235
+ timer_bgp_keepalive_hold:
236
+ config_get_token_append: '/^timers bgp (\d+) (\d+)$/'
237
+ config_set_append: '<state> timers bgp <keepalive> <hold>'
238
+
239
+ vrf:
240
+ multiple: true
241
+ config_get_token_append: '/^vrf\s+(\S+)$/'
242
+ config_set: ["router bgp <asnum>", "<state> vrf <vrf>", "end"]
@@ -0,0 +1,164 @@
1
+ # bgp_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
+ - '/^address-family <afi> <safi>$/'
9
+ config_set: "router bgp <asnum>"
10
+ config_set_append:
11
+ - 'vrf <vrf>'
12
+ - 'address-family <afi> <safi>'
13
+
14
+ additional_paths_install:
15
+ kind: boolean
16
+ config_get_token_append: '/^additional-paths install backup$/'
17
+ config_set_append: '<state> additional-paths install backup'
18
+ default_value: false
19
+
20
+ additional_paths_receive:
21
+ kind: boolean
22
+ config_get_token_append: '/^additional-paths receive$/'
23
+ config_set_append: '<state> additional-paths receive'
24
+ default_value: false
25
+
26
+ additional_paths_selection:
27
+ kind: string
28
+ config_get_token_append: '/^additional-paths selection route-map (.*)$/'
29
+ config_set_append: '<state> additional-paths selection route-map <route_map>'
30
+ default_value: ""
31
+
32
+ additional_paths_send:
33
+ kind: boolean
34
+ config_get_token_append: '/^additional-paths send$/'
35
+ config_set_append: '<state> additional-paths send'
36
+ default_value: false
37
+
38
+ advertise_l2vpn_evpn:
39
+ _exclude: [/N(3|6)/]
40
+ kind: boolean
41
+ config_get_token_append: '/^advertise l2vpn evpn$/'
42
+ config_set_append: '<state> advertise l2vpn evpn'
43
+ default_value: false
44
+
45
+ all_afs:
46
+ multiple: true
47
+ config_get_token_append: '/^address-family (\S+) (\S+)$/'
48
+
49
+ client_to_client:
50
+ kind: boolean
51
+ config_get_token_append: '/^(no )?client-to-client reflection$/'
52
+ config_set_append: '<state> client-to-client reflection'
53
+ default_value: true
54
+
55
+ dampen_igp_metric:
56
+ config_get_token_append: '/^(no )?dampen-igp-metric *(\d+)?$/'
57
+ config_set_append: '<state> dampen-igp-metric <num>'
58
+ default_value: 600
59
+
60
+ dampening:
61
+ auto_default: false
62
+ config_get_token_append: '/^dampening(?: (?:(\d+) (\d+) (\d+) (\d+)|route-map (.*)))?$/'
63
+ config_set_append: '<state> dampening <route_map> <decay> <reuse> <suppress> <suppress_max>'
64
+ default_value: ""
65
+
66
+ dampening_half_time:
67
+ default_value: 15
68
+
69
+ dampening_max_suppress_time:
70
+ default_value: 45
71
+
72
+ dampening_reuse_time:
73
+ default_value: 750
74
+
75
+ dampening_routemap:
76
+ default_value: ""
77
+
78
+ dampening_state:
79
+ default_value: true
80
+
81
+ dampening_suppress_time:
82
+ default_value: 2000
83
+
84
+ default_information:
85
+ kind: boolean
86
+ config_get_token_append: '/^default-information originate$/'
87
+ config_set_append: '<state> default-information originate'
88
+ default_value: false
89
+
90
+ default_metric:
91
+ kind: int
92
+ config_get_token_append: '/^default-metric (\d+)$/'
93
+ config_set_append: '<state> default-metric <num>'
94
+ default_value: false
95
+
96
+ distance:
97
+ config_get_token_append: '/^distance (\d+) (\d+) (\d+)$/'
98
+ config_set_append: '<state> distance <ebgp> <ibgp> <local>'
99
+
100
+ distance_ebgp:
101
+ default_value: 20
102
+
103
+ distance_ibgp:
104
+ default_value: 200
105
+
106
+ distance_local:
107
+ default_value: 220
108
+
109
+ inject_map:
110
+ multiple: true
111
+ config_get_token_append: '/^inject-map (\S+) exist-map (\S+) *(copy-attributes)?$/'
112
+ config_set_append: '<state> inject-map <inject> exist-map <exist> <copy>'
113
+ default_value: []
114
+
115
+ maximum_paths:
116
+ kind: int
117
+ config_get_token_append: '/^maximum-paths (\d+)$/'
118
+ config_set_append: '<state> maximum-paths <num>'
119
+ default_value: 1
120
+
121
+ maximum_paths_ibgp:
122
+ kind: int
123
+ config_get_token_append: '/^maximum-paths ibgp (\d+)$/'
124
+ config_set_append: '<state> maximum-paths ibgp <num>'
125
+ default_value: 1
126
+
127
+ network:
128
+ multiple: true
129
+ config_get_token_append: '/^network (\S+) ?(?:route-map )?(\S+)?$/'
130
+ config_set_append: '<state> network <network> <route_map>'
131
+ default_value: []
132
+
133
+ next_hop_route_map:
134
+ config_get_token_append: '/^nexthop route-map (.*)$/'
135
+ config_set_append: '<state> nexthop route-map <route_map>'
136
+ default_value: ""
137
+
138
+ redistribute:
139
+ multiple: true
140
+ config_get_token_append: '/^redistribute (\S+ ?\S+?) ?(?:route-map (\S+))?$/'
141
+ config_set_append: '<state> redistribute <protocol>'
142
+ default_value: []
143
+
144
+ redistribute_policy:
145
+ # route-map/policy is optional on some platforms, required on others
146
+ config_set_append: '<state> redistribute <protocol> route-map <policy>'
147
+
148
+ suppress_inactive:
149
+ kind: boolean
150
+ config_get_token_append: '/^suppress-inactive$/'
151
+ config_set_append: '<state> suppress-inactive'
152
+ default_value: false
153
+
154
+ table_map:
155
+ kind: string
156
+ config_get_token_append: '/^table-map (\S+)(?: filter)?$/'
157
+ config_set_append: '<state> table-map <map>'
158
+ default_value: ""
159
+
160
+ table_map_filter:
161
+ kind: boolean
162
+ config_get_token_append: '/^table-map \S+ filter$/'
163
+ config_set_append: '<state> table-map <map> filter'
164
+ default_value: false