cisco_node_utils 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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