cisco_node_utils 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/.rubocop.yml +81 -1
  4. data/.travis.yml +9 -0
  5. data/CHANGELOG.md +72 -6
  6. data/CONTRIBUTING.md +32 -7
  7. data/README.md +70 -7
  8. data/Rakefile +17 -0
  9. data/bin/check_metric_limits.rb +109 -0
  10. data/bin/git/hooks/commit-msg/enforce_style +81 -0
  11. data/bin/git/hooks/hook_lib +108 -0
  12. data/bin/git/hooks/hooks-wrapper +38 -0
  13. data/bin/git/hooks/post-flow-hotfix-start/update-version +24 -0
  14. data/bin/git/hooks/post-flow-release-finish/update-version +29 -0
  15. data/bin/git/hooks/post-flow-release-start/update-version +19 -0
  16. data/bin/git/hooks/post-merge/update-hooks +6 -0
  17. data/bin/git/hooks/post-rewrite/update-hooks +6 -0
  18. data/bin/git/hooks/pre-commit/rubocop +20 -0
  19. data/bin/git/hooks/pre-commit/validate-diffs +31 -0
  20. data/bin/git/hooks/pre-push/check-changelog +24 -0
  21. data/bin/git/hooks/pre-push/rubocop +7 -0
  22. data/bin/git/update-hooks +65 -0
  23. data/cisco_node_utils.gemspec +9 -3
  24. data/docs/README-develop-best-practices.md +404 -0
  25. data/docs/README-develop-node-utils-APIs.md +215 -365
  26. data/docs/README-maintainers.md +33 -3
  27. data/docs/template-router.rb +89 -91
  28. data/docs/template-test_router.rb +52 -55
  29. data/lib/.rubocop.yml +18 -0
  30. data/lib/cisco_node_utils.rb +2 -19
  31. data/lib/cisco_node_utils/README_YAML.md +1 -9
  32. data/lib/cisco_node_utils/bgp.rb +664 -0
  33. data/lib/cisco_node_utils/bgp_af.rb +530 -0
  34. data/lib/cisco_node_utils/bgp_neighbor.rb +425 -0
  35. data/lib/cisco_node_utils/bgp_neighbor_af.rb +709 -0
  36. data/lib/cisco_node_utils/cisco_cmn_utils.rb +59 -25
  37. data/lib/cisco_node_utils/command_reference.rb +72 -74
  38. data/lib/cisco_node_utils/command_reference_common.yaml +174 -9
  39. data/lib/cisco_node_utils/command_reference_common_bgp.yaml +535 -0
  40. data/lib/cisco_node_utils/command_reference_n7k.yaml +4 -0
  41. data/lib/cisco_node_utils/command_reference_n9k.yaml +0 -9
  42. data/lib/cisco_node_utils/configparser_lib.rb +152 -147
  43. data/lib/cisco_node_utils/dns_domain.rb +79 -0
  44. data/lib/cisco_node_utils/domain_name.rb +71 -0
  45. data/lib/cisco_node_utils/interface.rb +167 -161
  46. data/lib/cisco_node_utils/interface_ospf.rb +78 -81
  47. data/lib/cisco_node_utils/name_server.rb +64 -0
  48. data/lib/cisco_node_utils/node.rb +154 -198
  49. data/lib/cisco_node_utils/node_util.rb +61 -0
  50. data/lib/cisco_node_utils/ntp_config.rb +65 -0
  51. data/lib/cisco_node_utils/ntp_server.rb +76 -0
  52. data/lib/cisco_node_utils/platform.rb +174 -165
  53. data/lib/cisco_node_utils/radius_global.rb +146 -0
  54. data/lib/cisco_node_utils/radius_server.rb +295 -0
  55. data/lib/cisco_node_utils/router_ospf.rb +59 -63
  56. data/lib/cisco_node_utils/router_ospf_vrf.rb +226 -210
  57. data/lib/cisco_node_utils/snmpcommunity.rb +52 -58
  58. data/lib/cisco_node_utils/snmpgroup.rb +22 -23
  59. data/lib/cisco_node_utils/snmpserver.rb +99 -103
  60. data/lib/cisco_node_utils/snmpuser.rb +294 -274
  61. data/lib/cisco_node_utils/syslog_server.rb +92 -0
  62. data/lib/cisco_node_utils/syslog_settings.rb +69 -0
  63. data/lib/cisco_node_utils/tacacs_server.rb +137 -133
  64. data/lib/cisco_node_utils/tacacs_server_host.rb +84 -87
  65. data/lib/cisco_node_utils/version.rb +2 -1
  66. data/lib/cisco_node_utils/vlan.rb +28 -31
  67. data/lib/cisco_node_utils/vrf.rb +80 -0
  68. data/lib/cisco_node_utils/vtp.rb +100 -97
  69. data/lib/cisco_node_utils/yum.rb +15 -17
  70. data/tests/.rubocop.yml +15 -0
  71. data/tests/basetest.rb +81 -36
  72. data/tests/ciscotest.rb +38 -78
  73. data/{lib/cisco_node_utils → tests}/platform_info.rb +12 -8
  74. data/{lib/cisco_node_utils → tests}/platform_info.yaml +1 -1
  75. data/tests/test_bgp_af.rb +920 -0
  76. data/tests/test_bgp_neighbor.rb +403 -0
  77. data/tests/test_bgp_neighbor_af.rb +589 -0
  78. data/tests/test_command_config.rb +65 -62
  79. data/tests/test_command_reference.rb +31 -45
  80. data/tests/test_dns_domain.rb +113 -0
  81. data/tests/test_domain_name.rb +86 -0
  82. data/tests/test_interface.rb +424 -548
  83. data/tests/test_interface_ospf.rb +248 -432
  84. data/tests/test_interface_svi.rb +56 -79
  85. data/tests/test_interface_switchport.rb +196 -272
  86. data/tests/test_name_server.rb +85 -0
  87. data/tests/test_node.rb +7 -6
  88. data/tests/test_node_ext.rb +133 -186
  89. data/tests/test_ntp_config.rb +49 -0
  90. data/tests/test_ntp_server.rb +74 -0
  91. data/tests/test_platform.rb +58 -37
  92. data/tests/test_radius_global.rb +78 -0
  93. data/tests/test_radius_server.rb +185 -0
  94. data/tests/test_router_bgp.rb +838 -0
  95. data/tests/test_router_ospf.rb +49 -80
  96. data/tests/test_router_ospf_vrf.rb +274 -392
  97. data/tests/test_snmpcommunity.rb +128 -172
  98. data/tests/test_snmpgroup.rb +12 -14
  99. data/tests/test_snmpserver.rb +160 -189
  100. data/tests/test_snmpuser.rb +568 -717
  101. data/tests/test_syslog_server.rb +88 -0
  102. data/tests/test_syslog_settings.rb +54 -0
  103. data/tests/test_tacacs_server.rb +113 -148
  104. data/tests/test_tacacs_server_host.rb +108 -161
  105. data/tests/test_vlan.rb +63 -79
  106. data/tests/test_vrf.rb +92 -0
  107. data/tests/test_vtp.rb +108 -126
  108. data/tests/test_yum.rb +47 -41
  109. metadata +92 -56
  110. data/.rubocop_todo.yml +0 -293
  111. data/docs/.rubocop.yml +0 -13
  112. data/docs/template-feature.rb +0 -45
  113. data/docs/template-test_feature.rb +0 -51
  114. data/tests/test_all_cisco.rb +0 -46
@@ -98,11 +98,36 @@ aaa_server_group:
98
98
  vrf:
99
99
  default_value: "default"
100
100
 
101
- domain_name:
101
+ dnsclient:
102
+ domain_list:
103
+ config_get: "show running-config all"
104
+ config_get_token: '/^ip domain-list (\S+)$/'
105
+ config_set: '<state> ip domain-list <name>'
106
+ default_value: ''
107
+
108
+ domain_list_vrf:
109
+ config_get: "show running-config all"
110
+ config_get_token: ['/vrf context <vrf>/', '/ip domain-list (\S+)/']
111
+ config_set: ['vrf context <vrf>', '<state> ip domain-list <name>']
112
+ default_value: ''
113
+
102
114
  domain_name:
103
- # NOTE: This does not account for vrf ip domain-name
104
- config_get: "show running-config"
105
- config_get_token: '/^ip domain-name (.*)/'
115
+ config_get: 'show running-config all'
116
+ config_get_token: '/^ip domain-name (\S+)$/'
117
+ config_set: '<state> ip domain-name <name>'
118
+ default_value: ''
119
+
120
+ domain_name_vrf:
121
+ config_get: 'show running-config all'
122
+ config_get_token: ['/vrf context <vrf>/', '/ip domain-name (\S+)/']
123
+ config_set: ['vrf context <vrf>', '<state> ip domain-name <name>']
124
+ default_value: ''
125
+
126
+ name_server:
127
+ config_get: "show running-config all | include 'ip name-server' | exclude 'use-vrf'"
128
+ config_get_token: '/^ip name-server ([\s\d\.:]+)$/'
129
+ config_set: '<state> ip name-server <ip>'
130
+ default_value: ''
106
131
 
107
132
  fex:
108
133
  feature:
@@ -211,7 +236,7 @@ interface:
211
236
  config_get: "show running interface all"
212
237
  config_get_token: ['/^interface %s$/i', '/^mtu (.*)$/']
213
238
  config_set: ["interface %s", "%s mtu %s"]
214
- default_value: ""
239
+ default_value: 1500
215
240
 
216
241
  negotiate_auto_ethernet:
217
242
  config_get: "show running interface all"
@@ -233,7 +258,7 @@ interface:
233
258
  '/^negotiate auto$/'
234
259
  ]
235
260
  config_set: ["interface %s", "%s negotiate auto"]
236
- default_value: false
261
+ default_value: true
237
262
  test_config_get_regex: [
238
263
  !ruby/regexp '/^\s+no negotiate auto/',
239
264
  !ruby/regexp '/^\s+negotiate auto/'
@@ -452,6 +477,25 @@ inventory:
452
477
  config_get: "show inventory"
453
478
  config_get_token: ["TABLE_inv", "ROW_inv", 0, "vendorid"]
454
479
 
480
+ ntp_config:
481
+ source_interface:
482
+ config_get: "show running-config ntp"
483
+ config_get_token: '/^ntp source-interface\s+(.*)$/'
484
+ config_set: '<state> ntp source-interface <source_interface>'
485
+ default_value: ''
486
+
487
+ ntp_server:
488
+ server:
489
+ config_get: "show running-config all | include 'ntp server'"
490
+ config_get_token: '/ntp server ((?:[0-9]{1,3}\.){3}[0-9]{1,3})/'
491
+ config_set: '<state> ntp server <ip> <prefer>'
492
+ default_value: ''
493
+
494
+ prefer:
495
+ config_get: "show running-config all | include 'ntp server(.*)(prefer)'"
496
+ config_get_token: '/ntp server ((?:[0-9]{1,3}\.){3}[0-9]{1,3})/'
497
+ default_value: ''
498
+
455
499
  memory:
456
500
  total:
457
501
  config_get: 'show system resources'
@@ -535,6 +579,82 @@ ospf:
535
579
  config_get_token: ['/^router ospf <name>$/i', '/^vrf\s+(\S+)$/']
536
580
  config_set: ["router ospf <name>", "<state> vrf <vrf>", "end"]
537
581
 
582
+ radius_server:
583
+ hosts:
584
+ config_get: "show running-config radius"
585
+ config_get_token: '/^radius-server host ((?:[0-9]{1,3}\.){3}[0-9]{1,3})/'
586
+ config_set: '<state> radius-server host <ip>'
587
+ default_value: ''
588
+
589
+ auth-port:
590
+ config_get: "show running-config radius all"
591
+ config_get_token: '/^radius-server host %s.* auth-port (\d+).*$/'
592
+ config_set: '<state> radius-server host <ip> auth-port <port>'
593
+ default_value: 1812
594
+
595
+ acct-port:
596
+ config_get: "show running-config radius all"
597
+ config_get_token: '/^radius-server host %s.* acct-port (\d+).*$/'
598
+ config_set: '<state> radius-server host <ip> acct-port <port>'
599
+ default_value: 1813
600
+
601
+ timeout:
602
+ config_get: "show running-config radius all"
603
+ config_get_token: '/^radius-server host %s.* timeout (\d+).*$/'
604
+ config_set: '<state> radius-server host <ip> timeout <timeout>'
605
+ default_value: null
606
+
607
+ retransmit:
608
+ config_get: "show running-config radius all"
609
+ config_get_token: '/^radius-server host %s.* retransmit (\d+).*$/'
610
+ config_set: '<state> radius-server host <ip> retransmit <count>'
611
+ default_value: null
612
+
613
+ accounting:
614
+ config_get: "show running-config radius"
615
+ config_get_token: '/^radius-server host %s.* (accounting) .*$/'
616
+ config_set: '<state> radius-server host <ip> accounting'
617
+ default_value: true
618
+
619
+ authentication:
620
+ config_get: "show running-config radius"
621
+ config_get_token: '/^radius-server host %s.* (authentication) .*$/'
622
+ config_set: '<state> radius-server host <ip> authentication'
623
+ default_value: true
624
+
625
+ key_format:
626
+ config_get: "show running-config radius all"
627
+ config_get_token: '/^radius-server host %s.* key (\d).*$/'
628
+ default_value: null
629
+
630
+ key:
631
+ config_get: "show running-config radius all"
632
+ config_get_token: '/^radius-server host %s.* key \d+\s+(\S+)/'
633
+ config_set: '<state> radius-server host <ip> key <key>'
634
+ default_value: null
635
+
636
+ radius_global:
637
+ timeout:
638
+ config_get: "show running-config radius all"
639
+ config_get_token: '/^radius-server timeout (\d+).*/'
640
+ config_set: '<state> radius-server timeout <timeout>'
641
+ default_value: '5'
642
+
643
+ retransmit:
644
+ config_get: "show running-config radius all"
645
+ config_get_token: '/^radius-server retransmit (\d+).*/'
646
+ config_set: '<state> radius-server retransmit <count>'
647
+ default_value: '1'
648
+
649
+ key_format:
650
+ config_get: "show running-config radius all"
651
+ config_get_token: '/^radius-server key (\d).*/'
652
+
653
+ key:
654
+ config_get: "show running-config radius all"
655
+ config_get_token: '/^radius-server key \d+\s+(\S+)/'
656
+ config_set: '<state> radius-server key <key>'
657
+
538
658
  show_system:
539
659
  uptime:
540
660
  config_get: 'show system uptime'
@@ -594,9 +714,9 @@ show_version:
594
714
 
595
715
  system_image:
596
716
  config_get: "sh version"
597
- config_get_token: "isan_file_name"
717
+ config_get_token: "kick_file_name"
598
718
  test_config_get: "sh version | no-more"
599
- test_config_get_regex: !ruby/regexp '/.*system image file is: (.*)$.*/'
719
+ test_config_get_regex: !ruby/regexp '/.*NXOS image file is: (.*)$.*/'
600
720
 
601
721
  uptime:
602
722
  config_get: 'show version'
@@ -656,7 +776,7 @@ snmp_server:
656
776
  config_get: "show run snmp"
657
777
  config_get_token: '/snmp-server globalEnforcePriv/'
658
778
  config_set: "%s snmp-server globalEnforcePriv"
659
- default_value: true
779
+ default_value: false
660
780
 
661
781
  location:
662
782
  config_get: "show snmp"
@@ -726,6 +846,30 @@ snmp_user:
726
846
  config_get_token: ["TABLE_snmp_users", "ROW_snmp_users"]
727
847
  config_set: "%s snmp-server user %s %s %s %s %s %s"
728
848
 
849
+ syslog_settings:
850
+ timestamp:
851
+ config_get: "show running-config all | include '^logging timestamp'"
852
+ config_get_token: '/^logging timestamp (.*)$/'
853
+ config_set: '<state> logging timestamp <units>'
854
+ default_value: 'seconds'
855
+
856
+ syslog_server:
857
+ server:
858
+ config_get: "show running-config all | include '^logging server'"
859
+ config_get_token: '/^logging server ((?:[0-9]{1,3}\.){3}[0-9]{1,3}).*/'
860
+ config_set: '<state> logging server <ip> <level> <vrf>'
861
+ default_value: ''
862
+
863
+ level:
864
+ config_get: "show running-config all | include '^logging server'"
865
+ config_get_token: '/^logging server %s (\d).*/'
866
+ default_value: ''
867
+
868
+ vrf:
869
+ config_get: "show running-config all | include '^logging server(.*)(use-vrf)'"
870
+ config_get_token: '/^logging server %s.* use-vrf (.*)$/'
871
+ default_value: ''
872
+
729
873
  system:
730
874
  resources:
731
875
  config_get: "show system resources"
@@ -843,6 +987,27 @@ vlan:
843
987
  config_set: ["vlan %d", "%s shutdown", "end"]
844
988
  default_value: false
845
989
 
990
+ vrf:
991
+ all_vrfs:
992
+ config_get: "show running | section 'vrf context'"
993
+ config_get_token: '/^vrf context (.*)/'
994
+
995
+ create:
996
+ config_set: "vrf context <vrf>"
997
+
998
+ description:
999
+ config_get: "show running | section 'vrf context'"
1000
+ config_get_token: ['/^vrf context <vrf>$/i', '/^description (.*)/']
1001
+ config_set: ["vrf context <vrf>", "<state> description <desc>"]
1002
+
1003
+ destroy:
1004
+ config_set: "no vrf context <vrf>"
1005
+
1006
+ shutdown:
1007
+ config_get: "show running | section 'vrf context'"
1008
+ config_get_token: ['/^vrf context <vrf>$/i', '/^shutdown$/']
1009
+ config_set: ["vrf context <vrf>", "<state> shutdown"]
1010
+
846
1011
  vtp:
847
1012
  domain:
848
1013
  config_get: "show vtp status"
@@ -0,0 +1,535 @@
1
+ # Command Reference Common BGP
2
+ #
3
+ # For documentation please see:
4
+ # - README_YAML.md
5
+ #
6
+ ---
7
+ bgp:
8
+ _template:
9
+ config_get: "show running bgp all"
10
+ config_get_token: '/^router bgp <asnum>$/'
11
+ config_get_token_append:
12
+ - '/^vrf <vrf>$/'
13
+ config_set: "router bgp <asnum>"
14
+ config_set_append:
15
+ - "vrf <vrf>"
16
+
17
+ address_family:
18
+ config_set_append: '<state> address-family <afi> <safi>'
19
+
20
+ bestpath_always_compare_med:
21
+ config_get_token_append: '/^bestpath always-compare-med$/'
22
+ config_set_append: '<state> bestpath always-compare-med'
23
+ default_value: false
24
+
25
+ bestpath_aspath_multipath_relax:
26
+ config_get_token_append: '/^bestpath as-path multipath-relax$/'
27
+ config_set_append: '<state> bestpath as-path multipath-relax'
28
+ default_value: false
29
+
30
+ bestpath_compare_routerid:
31
+ config_get_token_append: '/^bestpath compare-routerid$/'
32
+ config_set_append: '<state> bestpath compare-routerid'
33
+ default_value: false
34
+
35
+ bestpath_cost_community_ignore:
36
+ config_get_token_append: '/^bestpath cost-community ignore$/'
37
+ config_set_append: '<state> bestpath cost-community ignore'
38
+ default_value: false
39
+
40
+ bestpath_med_confed:
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
+ config_get_token_append: '/^bestpath med missing-as-worst$/'
47
+ config_set_append: '<state> bestpath med missing-as-worst'
48
+ default_value: false
49
+
50
+ bestpath_med_non_deterministic:
51
+ config_get_token_append: '/^bestpath med non-deterministic$/'
52
+ config_set_append: '<state> bestpath med non-deterministic'
53
+ default_value: false
54
+
55
+ cluster_id:
56
+ config_get_token_append: '/^cluster-id (\S+)$/'
57
+ config_set_append: '<state> cluster-id <id>'
58
+ default_value: ""
59
+
60
+ confederation_id:
61
+ config_get_token_append: '/^confederation identifier (\d+|\d+.\d+)$/'
62
+ config_set_append: '<state> confederation identifier <id>'
63
+ default_value: ""
64
+
65
+ confederation_peers:
66
+ config_get_token_append: '/^confederation peers (.*)$/'
67
+ config_set_append: '<state> confederation peers <peer_list>'
68
+ default_value: ""
69
+
70
+ create_destroy_neighbor:
71
+ config_set_append: '<state> neighbor <nbr>'
72
+
73
+ enforce_first_as:
74
+ config_get_token_append: '/^enforce-first-as$/'
75
+ config_set_append: '<state> enforce-first-as'
76
+ default_value: true
77
+
78
+ feature:
79
+ config_get: "show running bgp"
80
+ config_get_token: '/^feature bgp$/'
81
+ config_set: "<state> feature bgp"
82
+
83
+ graceful_restart:
84
+ config_get_token_append: '/^graceful-restart$/'
85
+ config_set_append: '<state> graceful-restart'
86
+ default_value: true
87
+
88
+ graceful_restart_timers_restart:
89
+ config_get_token_append: '/^graceful-restart restart-time (\d+)$/'
90
+ config_set_append: '<state> graceful-restart restart-time <seconds>'
91
+ default_value: 120
92
+
93
+ graceful_restart_timers_stalepath_time:
94
+ config_get_token_append: '/^graceful-restart stalepath-time (\d+)$/'
95
+ config_set_append: '<state> graceful-restart stalepath-time <seconds>'
96
+ default_value: 300
97
+
98
+ graceful_restart_helper:
99
+ config_get_token_append: '/^graceful-restart-helper$/'
100
+ config_set_append: '<state> graceful-restart-helper'
101
+ default_value: false
102
+
103
+ log_neighbor_changes:
104
+ config_get_token_append: '/^log-neighbor-changes$/'
105
+ config_set_append: '<state> log-neighbor-changes'
106
+ default_value: false
107
+
108
+ maxas_limit:
109
+ config_get_token_append: '/^maxas-limit (\d+)$/'
110
+ config_set_append: '<state> maxas-limit <limit>'
111
+ default_value: false
112
+
113
+ neighbor_fib_down_accelerate:
114
+ config_get_token_append: '/^neighbor-down fib-accelerate$/'
115
+ config_set_append: '<state> neighbor-down fib-accelerate'
116
+ default_value: false
117
+
118
+ reconnect_interval:
119
+ config_get_token_append: '/^reconnect-interval (\d+)$/'
120
+ config_set_append: '<state> reconnect-interval <seconds>'
121
+ default_value: 60
122
+
123
+ router:
124
+ config_get: "show running bgp"
125
+ config_get_token: '/^router bgp (\d+)$/'
126
+ config_set: "<state> router bgp <asnum>"
127
+
128
+ router_id:
129
+ config_get_token_append: '/^router-id (\S+)$/'
130
+ config_set_append: '<state> router-id <id>'
131
+ default_value: ""
132
+
133
+ shutdown:
134
+ # Shutdown only applies to global bgp
135
+ config_get: "show running bgp"
136
+ config_get_token: ['/^router bgp %s$/i', '/^shutdown$/']
137
+ config_set: ["router bgp <asnum>", "<state> shutdown"]
138
+ default_value: false
139
+
140
+ suppress_fib_pending:
141
+ config_get_token_append: '/^suppress-fib-pending$/'
142
+ config_set_append: '<state> suppress-fib-pending'
143
+ default_value: false
144
+
145
+ timer_bgp_keepalive_hold:
146
+ config_get_token_append: '/^timers bgp (\d+) (\d+)$/'
147
+ config_set_append: '<state> timers bgp <keepalive> <hold>'
148
+
149
+ timer_bgp_keepalive:
150
+ default_value: 60
151
+
152
+ timer_bgp_hold:
153
+ default_value: 180
154
+
155
+ timer_bestpath_limit:
156
+ config_get_token_append: '/^timers bestpath-limit (\d+)(?: always)?$/'
157
+ config_set_append: '<state> timers bestpath-limit <seconds>'
158
+ default_value: 300
159
+
160
+ timer_bestpath_limit_always:
161
+ config_get_token_append: '/^timers bestpath-limit \d+ always$/'
162
+ config_set_append: '<state> timers bestpath-limit <seconds> always'
163
+ default_value: false
164
+
165
+ vrf:
166
+ config_get_token_append: '/^vrf\s+(\S+)$/'
167
+ config_set: ["router bgp <asnum>", "<state> vrf <vrf>", "end"]
168
+
169
+ bgp_af:
170
+ _template:
171
+ config_get: 'show running bgp all'
172
+ config_get_token: '/^router bgp <asnum>$/'
173
+ config_get_token_append:
174
+ - '/^vrf <vrf>$/'
175
+ - '/^address-family <afi> <safi>$/'
176
+ config_set: "router bgp <asnum>"
177
+ config_set_append:
178
+ - 'vrf <vrf>'
179
+ - 'address-family <afi> <safi>'
180
+
181
+ all_afs:
182
+ config_get_token_append: '/^address-family (\S+) (\S+)$/'
183
+
184
+ additional_paths_send:
185
+ config_get_token_append: '/^additional-paths send$/'
186
+ config_set_append: '<state> additional-paths send'
187
+ default_value: false
188
+
189
+ additional_paths_receive:
190
+ config_get_token_append: '/^additional-paths receive$/'
191
+ config_set_append: '<state> additional-paths receive'
192
+ default_value: false
193
+
194
+ additional_paths_install:
195
+ config_get_token_append: '/^additional-paths install backup$/'
196
+ config_set_append: '<state> additional-paths install backup'
197
+ default_value: false
198
+
199
+ additional_paths_selection:
200
+ config_get_token_append: '/^additional-paths selection route-map (.*)$/'
201
+ config_set_append: '<state> additional-paths selection route-map <route_map>'
202
+ default_value: ""
203
+
204
+ client_to_client:
205
+ config_get_token_append: '/^client-to-client reflection$/'
206
+ config_set_append: '<state> client-to-client reflection'
207
+ default_value: true
208
+
209
+ dampen_igp_metric:
210
+ config_get_token_append: '/^dampen-igp-metric (\d+)$/'
211
+ config_set_append: '<state> dampen-igp-metric <num>'
212
+ default_value: 600
213
+
214
+ dampening:
215
+ config_get_token_append: '/^dampening(?: (?:(\d+) (\d+) (\d+) (\d+)|route-map (.*)))?$/'
216
+ config_set_append: '<state> dampening <route_map> <decay> <reuse> <suppress> <suppress_max>'
217
+ default_value: ""
218
+
219
+ dampening_state:
220
+ default_value: true
221
+
222
+ dampening_max_suppress_time:
223
+ default_value: 45
224
+
225
+ dampening_half_time:
226
+ default_value: 15
227
+
228
+ dampening_reuse_time:
229
+ default_value: 750
230
+
231
+ dampening_routemap:
232
+ default_value: ""
233
+
234
+ dampening_suppress_time:
235
+ default_value: 2000
236
+
237
+ default_information:
238
+ config_get_token_append: '/^default-information originate$/'
239
+ config_set_append: '<state> default-information originate'
240
+ default_value: false
241
+
242
+ maximum_paths:
243
+ config_get_token_append: '/^maximum-paths (\d+)$/'
244
+ config_set_append: '<state> maximum-paths <num>'
245
+ default_value: 1
246
+
247
+ maximum_paths_ibgp:
248
+ config_get_token_append: '/^maximum-paths ibgp (\d+)$/'
249
+ config_set_append: '<state> maximum-paths ibgp <num>'
250
+ default_value: 1
251
+
252
+ next_hop_route_map:
253
+ config_get_token_append: '/^nexthop route-map (.*)$/'
254
+ config_set_append: '<state> nexthop route-map <route_map>'
255
+ default_value: ""
256
+
257
+ network:
258
+ config_get_token_append: '/^network (\S+) ?(?:route-map )?(\S+)?$/'
259
+ config_set_append: '<state> network <network> <route_map>'
260
+ default_value: []
261
+
262
+ redistribute:
263
+ config_get_token_append: '/^redistribute (\S+ ?\S+?) ?(?:route-map (\S+))?$/'
264
+ config_set_append: '<state> redistribute <protocol>'
265
+ default_value: []
266
+
267
+ redistribute_policy:
268
+ # route-map/policy is optional on some platforms, required on others
269
+ config_set_append: '<state> redistribute <protocol> route-map <policy>'
270
+
271
+ bgp_neighbor:
272
+ _template:
273
+ config_get: "show running bgp all"
274
+ config_get_token: '/^router bgp <asnum>$/'
275
+ config_get_token_append:
276
+ - '/^vrf <vrf>$/'
277
+ - '/^neighbor <nbr>$/'
278
+ config_set: "router bgp <asnum>"
279
+ config_set_append:
280
+ - "vrf <vrf>"
281
+ - "neighbor <nbr>"
282
+
283
+ af:
284
+ config_set_append: '<state> address-family <afi> <safi>'
285
+
286
+ all_neighbors:
287
+ config_get_token_append: '/^neighbor (\S+)$/'
288
+
289
+ description:
290
+ config_get_token_append: '/^description (.*)/'
291
+ config_set_append: '<state> description <desc>'
292
+ default_value: ""
293
+
294
+ connected_check:
295
+ config_get_token_append: '/^disable-connected-check$/'
296
+ config_set_append: '<state> disable-connected-check'
297
+ default_value: true
298
+
299
+ capability_negotiation:
300
+ config_get_token_append: '/^dont-capability-negotiate$/'
301
+ config_set_append: '<state> dont-capability-negotiate'
302
+ default_value: true
303
+
304
+ dynamic_capability:
305
+ config_get_token_append: '/^dynamic-capability$/'
306
+ config_set_append: '<state> dynamic-capability'
307
+ default_value: true
308
+
309
+ ebgp_multihop:
310
+ config_get_token_append: '/^ebgp-multihop (\d+)$/'
311
+ config_set_append: '<state> ebgp-multihop <ttl>'
312
+ default_value: false
313
+
314
+ local_as:
315
+ config_get_token_append: '/^local-as (\d*?.?\d+?)$/'
316
+ config_set_append: '<state> local-as <local_as>'
317
+ default_value: 0
318
+
319
+ log_neighbor_changes:
320
+ config_get_token_append: '/^log-neighbor-changes\s+??(\S+)?\s+??$/'
321
+ config_set_append: '<state> log-neighbor-changes <disable>'
322
+ default_value: "inherit"
323
+
324
+ low_memory_exempt:
325
+ config_get_token_append: '/^low-memory exempt$/'
326
+ config_set_append: '<state> low-memory exempt'
327
+ default_value: false
328
+
329
+ maximum_peers:
330
+ config_get_token_append: '/^maximum-peers (\d+)$/'
331
+ config_set_append: '<state> maximum-peers <num>'
332
+ default_value: 0
333
+
334
+ password:
335
+ config_get_token_append: '/^password \d+ (\S+)$/'
336
+ config_set_append: '<state> password <type> <passwd>'
337
+ default_value: ""
338
+
339
+ password_type:
340
+ config_get_token_append: '/^password (\d+)/'
341
+ default_value: 0
342
+
343
+ remote_as:
344
+ config_get_token_append: '/^remote-as (\d*?.?\d+?)$/'
345
+ config_set_append: '<state> remote-as <remote_as>'
346
+ default_value: 0
347
+
348
+ remove_private_as:
349
+ config_get_token_append: '/^remove-private-as\s+??(\S+)?\s+??$/'
350
+ config_set_append: '<state> remove-private-as <option>'
351
+ default_value: "disable"
352
+
353
+ shutdown:
354
+ config_get_token_append: '/^shutdown$/'
355
+ config_set_append: '<state> shutdown'
356
+ default_value: false
357
+
358
+ suppress_4_byte_as:
359
+ config_get_token_append: '/^capability suppress 4-byte-as$/'
360
+ config_set_append: '<state> capability suppress 4-byte-as'
361
+ default_value: false
362
+
363
+ timers_keepalive_hold:
364
+ config_get_token_append: '/^timers (\d+) (\d+)$/'
365
+ config_set_append: '<state> timers <keepalive> <hold>'
366
+
367
+ timers_keepalive:
368
+ default_value: 60
369
+
370
+ timers_holdtime:
371
+ default_value: 180
372
+
373
+ transport_passive_only:
374
+ config_get_token_append: '/^transport connection-mode passive$/'
375
+ config_set_append: '<state> transport connection-mode passive'
376
+ default_value: false
377
+
378
+ update_source:
379
+ config_get_token_append: '/^update-source (\S+)$/'
380
+ config_set_append: '<state> update-source <interface>'
381
+ default_value: ""
382
+
383
+ bgp_neighbor_af:
384
+ _template:
385
+ config_get: 'show running bgp all'
386
+ config_get_token: '/^router bgp <asnum>$/'
387
+ config_get_token_append:
388
+ - '/^vrf <vrf>$/'
389
+ - '/^neighbor <nbr>$/'
390
+ - '/^address-family <afi> <safi>$/'
391
+ config_set: 'router bgp <asnum>'
392
+ config_set_append:
393
+ - 'vrf <vrf>'
394
+ - 'neighbor <nbr>'
395
+ - 'address-family <afi> <safi>'
396
+
397
+ all_afs:
398
+ config_get_token_append: '/^address-family (\S+) (\S+)$/'
399
+
400
+ advertise_map_exist:
401
+ config_get_token_append: '/^advertise-map (\S+) exist-map (\S+)$/'
402
+ config_set_append: '<state> advertise-map <map1> exist-map <map2>'
403
+ default_value: ''
404
+
405
+ advertise_map_non_exist:
406
+ config_get_token_append: '/^advertise-map (\S+) non-exist-map (\S+)$/'
407
+ config_set_append: '<state> advertise-map <map1> non-exist-map <map2>'
408
+ default_value: ''
409
+
410
+ allowas_in:
411
+ config_get_token_append: '/^allowas-in(?: \d+)?/'
412
+ config_set_append: '<state> allowas-in <max>'
413
+ default_value: false
414
+
415
+ allowas_in_max:
416
+ default_value: 3
417
+
418
+ as_override:
419
+ config_get_token_append: '/^as-override$/'
420
+ config_set_append: '<state> as-override'
421
+ default_value: false
422
+
423
+ additional_paths_receive:
424
+ config_get_token_append: '/^capability additional-paths receive(?: disable)?/'
425
+ config_set_append: '<state> capability additional-paths receive <disable>'
426
+ default_value: 'inherit'
427
+
428
+ additional_paths_send:
429
+ config_get_token_append: '/^capability additional-paths send(?: disable)?/'
430
+ config_set_append: '<state> capability additional-paths send <disable>'
431
+ default_value: 'inherit'
432
+
433
+ default_originate:
434
+ config_get_token_append: '/^default-originate(?: route-map .*)?/'
435
+ config_set_append: '<state> default-originate <map>'
436
+ default_value: false
437
+
438
+ default_originate_route_map:
439
+ default_value: ~
440
+
441
+ disable_peer_as_check:
442
+ config_get_token_append: '/^disable-peer-as-check$/'
443
+ config_set_append: '<state> disable-peer-as-check'
444
+ default_value: false
445
+
446
+ filter_list_in:
447
+ config_get_token_append: '/^filter-list (\S+) in$/'
448
+ config_set_append: '<state> filter-list <str> in'
449
+ default_value: ''
450
+
451
+ filter_list_out:
452
+ config_get_token_append: '/^filter-list (\S+) out$/'
453
+ config_set_append: '<state> filter-list <str> out'
454
+ default_value: ''
455
+
456
+ max_prefix:
457
+ config_get_token_append: '/^maximum-prefix .*$/'
458
+ config_set_append: '<state> maximum-prefix <limit> <threshold> <opt>'
459
+
460
+ max_prefix_limit:
461
+ default_value: ~
462
+
463
+ max_prefix_interval:
464
+ default_value: ~
465
+
466
+ max_prefix_threshold:
467
+ default_value: ~
468
+
469
+ max_prefix_warning:
470
+ default_value: ~
471
+
472
+ next_hop_self:
473
+ config_get_token_append: '/^next-hop-self$/'
474
+ config_set_append: '<state> next-hop-self'
475
+ default_value: false
476
+
477
+ next_hop_third_party:
478
+ config_get_token_append: '/^next-hop-third-party$/'
479
+ config_set_append: '<state> next-hop-third-party'
480
+ default_value: true
481
+
482
+ prefix_list_in:
483
+ config_get_token_append: '/^prefix-list (\S+) in$/'
484
+ config_set_append: '<state> prefix-list <str> in'
485
+ default_value: ''
486
+
487
+ prefix_list_out:
488
+ config_get_token_append: '/^prefix-list (\S+) out$/'
489
+ config_set_append: '<state> prefix-list <str> out'
490
+ default_value: ''
491
+
492
+ route_map_in:
493
+ config_get_token_append: '/^route-map (\S+) in$/'
494
+ config_set_append: '<state> route-map <str> in'
495
+ default_value: ''
496
+
497
+ route_map_out:
498
+ config_get_token_append: '/^route-map (\S+) out$/'
499
+ config_set_append: '<state> route-map <str> out'
500
+ default_value: ''
501
+
502
+ route_reflector_client:
503
+ config_get_token_append: '/^route-reflector-client$/'
504
+ config_set_append: '<state> route-reflector-client'
505
+ default_value: false
506
+
507
+ send_community:
508
+ config_get_token_append: '/^send-community(?: .*)?/'
509
+ config_set_append: '<state> send-community <attr>'
510
+ default_value: 'none'
511
+
512
+ soft_reconfiguration_in:
513
+ config_get_token_append: '/^soft-reconfiguration inbound(?: always)?/'
514
+ config_set_append: '<state> soft-reconfiguration inbound <always>'
515
+ default_value: 'inherit'
516
+
517
+ soo:
518
+ config_get_token_append: '/^soo (.*)$/'
519
+ config_set_append: '<state> soo <str>'
520
+ default_value: ''
521
+
522
+ suppress_inactive:
523
+ config_get_token_append: '/^suppress-inactive$/'
524
+ config_set_append: '<state> suppress-inactive'
525
+ default_value: false
526
+
527
+ unsuppress_map:
528
+ config_get_token_append: '/^unsuppress-map (.*)$/'
529
+ config_set_append: '<state> unsuppress-map <str>'
530
+ default_value: ''
531
+
532
+ weight:
533
+ config_get_token_append: '/^weight (\d+)$/'
534
+ config_set_append: '<state> weight <int>'
535
+ default_value: false