cisco_node_utils 1.3.0 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +66 -0
- data/Gemfile +1 -0
- data/README.md +44 -43
- data/bin/.rubocop.yml +18 -0
- data/bin/show_running_yang.rb +233 -0
- data/cisco_node_utils.gemspec +1 -1
- data/docs/README-maintainers.md +1 -0
- data/docs/README-utilities.md +14 -0
- data/lib/.rubocop.yml +1 -1
- data/lib/cisco_node_utils/aaa_authentication_login_service.rb +8 -3
- data/lib/cisco_node_utils/aaa_authorization_service.rb +6 -0
- data/lib/cisco_node_utils/bfd_global.rb +300 -0
- data/lib/cisco_node_utils/bgp.rb +6 -4
- data/lib/cisco_node_utils/bgp_af.rb +2 -0
- data/lib/cisco_node_utils/bgp_neighbor.rb +14 -0
- data/lib/cisco_node_utils/bgp_neighbor_af.rb +4 -1
- data/lib/cisco_node_utils/cisco_cmn_utils.rb +126 -0
- data/lib/cisco_node_utils/client/client.rb +6 -2
- data/lib/cisco_node_utils/client/grpc/client.rb +120 -36
- data/lib/cisco_node_utils/client/nxapi/client.rb +6 -2
- data/lib/cisco_node_utils/cmd_ref/DEPRECATED.yaml +118 -0
- data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +14 -0
- data/lib/cisco_node_utils/cmd_ref/bfd_global.yaml +117 -0
- data/lib/cisco_node_utils/cmd_ref/bgp.yaml +7 -7
- data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/dhcp_relay_global.yaml +125 -0
- data/lib/cisco_node_utils/cmd_ref/feature.yaml +10 -0
- data/lib/cisco_node_utils/cmd_ref/interface.yaml +141 -49
- data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +44 -0
- data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +6 -0
- data/lib/cisco_node_utils/cmd_ref/ospf.yaml +6 -0
- data/lib/cisco_node_utils/cmd_ref/ospf_area.yaml +91 -0
- data/lib/cisco_node_utils/cmd_ref/ospf_area_vlink.yaml +88 -0
- data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +0 -3
- data/lib/cisco_node_utils/cmd_ref/show_version.yaml +3 -3
- data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +39 -15
- data/lib/cisco_node_utils/cmd_ref/snmp_notification_receiver.yaml +43 -21
- data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +48 -19
- data/lib/cisco_node_utils/cmd_ref/snmp_user.yaml +0 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_global.yaml +30 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_server.yaml +18 -6
- data/lib/cisco_node_utils/cmd_ref/vdc.yaml +4 -0
- data/lib/cisco_node_utils/cmd_ref/virtual_service.yaml +1 -0
- data/lib/cisco_node_utils/cmd_ref/vlan.yaml +23 -10
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +8 -2
- data/lib/cisco_node_utils/cmd_ref/yang.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/yum.yaml +10 -1
- data/lib/cisco_node_utils/constants.rb +8 -1
- data/lib/cisco_node_utils/dhcp_relay_global.rb +302 -0
- data/lib/cisco_node_utils/exceptions.rb +29 -0
- data/lib/cisco_node_utils/feature.rb +28 -0
- data/lib/cisco_node_utils/interface.rb +493 -402
- data/lib/cisco_node_utils/interface_DEPRECATED.rb +513 -0
- data/lib/cisco_node_utils/interface_ospf.rb +126 -0
- data/lib/cisco_node_utils/interface_portchannel.rb +16 -0
- data/lib/cisco_node_utils/logger.rb +3 -0
- data/lib/cisco_node_utils/node.rb +29 -1
- data/lib/cisco_node_utils/overlay_global.rb +1 -12
- data/lib/cisco_node_utils/pim.rb +1 -0
- data/lib/cisco_node_utils/pim_group_list.rb +1 -0
- data/lib/cisco_node_utils/pim_rp_address.rb +1 -0
- data/lib/cisco_node_utils/platform.rb +9 -2
- data/lib/cisco_node_utils/router_ospf.rb +1 -1
- data/lib/cisco_node_utils/router_ospf_area.rb +416 -0
- data/lib/cisco_node_utils/router_ospf_area_vlink.rb +313 -0
- data/lib/cisco_node_utils/router_ospf_vrf.rb +17 -0
- data/lib/cisco_node_utils/snmp_notification_receiver.rb +27 -9
- data/lib/cisco_node_utils/snmpcommunity.rb +34 -8
- data/lib/cisco_node_utils/snmpserver.rb +4 -4
- data/lib/cisco_node_utils/snmpuser.rb +0 -0
- data/lib/cisco_node_utils/tacacs_global.rb +102 -0
- data/lib/cisco_node_utils/tacacs_server.rb +8 -7
- data/lib/cisco_node_utils/vdc.rb +25 -7
- data/lib/cisco_node_utils/version.rb +1 -1
- data/lib/cisco_node_utils/vlan.rb +30 -56
- data/lib/cisco_node_utils/vlan_DEPRECATED.rb +108 -0
- data/lib/cisco_node_utils/yang.rb +160 -0
- data/lib/cisco_node_utils/yum.rb +25 -32
- data/tests/.rubocop.yml +3 -0
- data/tests/ciscotest.rb +136 -19
- data/tests/cmd_config_invalid.yaml +1 -1
- data/tests/noop.rb +7 -0
- data/tests/tacacs_server.yaml.example +6 -0
- data/tests/test_aaa_authentication_login.rb +24 -1
- data/tests/test_aaa_authentication_login_service.rb +9 -16
- data/tests/test_aaa_authorization_service.rb +111 -84
- data/tests/test_bfd_global.rb +278 -0
- data/tests/test_bgp_neighbor.rb +20 -0
- data/tests/test_bridge_domain_vni.rb +2 -9
- data/tests/test_cmn_utils.rb +76 -0
- data/tests/test_dhcp_relay_global.rb +284 -0
- data/tests/test_dns_domain.rb +4 -4
- data/tests/test_domain_name.rb +2 -2
- data/tests/test_encapsulation.rb +2 -4
- data/tests/test_evpn_vni.rb +14 -7
- data/tests/test_fabricpath_global.rb +12 -13
- data/tests/test_feature.rb +35 -17
- data/tests/test_interface.rb +352 -127
- data/tests/test_interface_bdi.rb +2 -2
- data/tests/test_interface_channel_group.rb +1 -1
- data/tests/test_interface_ospf.rb +153 -23
- data/tests/test_interface_portchannel.rb +15 -6
- data/tests/test_interface_private_vlan.rb +200 -576
- data/tests/test_interface_svi.rb +5 -52
- data/tests/test_interface_switchport.rb +80 -240
- data/tests/test_itd_device_group.rb +2 -2
- data/tests/test_itd_device_group_node.rb +2 -2
- data/tests/test_itd_service.rb +1 -1
- data/tests/test_name_server.rb +3 -3
- data/tests/test_node_ext.rb +15 -17
- data/tests/test_ntp_config.rb +1 -1
- data/tests/test_ntp_server.rb +3 -3
- data/tests/test_nxapi.rb +1 -0
- data/tests/test_overlay_global.rb +15 -19
- data/tests/test_pim.rb +5 -5
- data/tests/test_pim_group_list.rb +1 -37
- data/tests/test_pim_rp_address.rb +1 -1
- data/tests/test_platform.rb +9 -11
- data/tests/test_portchannel_global.rb +43 -3
- data/tests/test_radius_server.rb +1 -1
- data/tests/test_radius_server_group.rb +1 -1
- data/tests/test_router_bgp.rb +17 -30
- data/tests/test_router_ospf_area.rb +433 -0
- data/tests/test_router_ospf_area_vlink.rb +298 -0
- data/tests/test_router_ospf_vrf.rb +17 -0
- data/tests/test_snmp_notification_receiver.rb +11 -11
- data/tests/test_snmpcommunity.rb +177 -69
- data/tests/test_snmpgroup.rb +7 -7
- data/tests/test_snmpserver.rb +164 -253
- data/tests/test_snmpuser.rb +73 -69
- data/tests/test_stp_global.rb +15 -15
- data/tests/test_syslog_settings.rb +1 -1
- data/tests/test_tacacs_global.rb +80 -0
- data/tests/test_tacacs_server.rb +129 -51
- data/tests/test_tacacs_server_group.rb +3 -29
- data/tests/test_tacacs_server_host.rb +24 -27
- data/tests/test_vlan.rb +57 -59
- data/tests/test_vlan_private.rb +271 -284
- data/tests/test_vpc.rb +10 -4
- data/tests/test_vrf.rb +2 -0
- data/tests/test_vrf_af.rb +2 -5
- data/tests/test_vtp.rb +5 -2
- data/tests/test_vxlan_vtep.rb +20 -44
- data/tests/test_vxlan_vtep_vni.rb +23 -16
- data/tests/test_yang.rb +369 -0
- data/tests/test_yum.rb +34 -42
- data/tests/yum_package.yaml +35 -0
- metadata +31 -4
- data/tests/test_vlan_mt_full.rb +0 -85
data/cisco_node_utils.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.description = <<-EOF
|
15
15
|
Utilities for management of Cisco network nodes.
|
16
16
|
Designed to work with Puppet and Chef.
|
17
|
-
Currently supports NX-OS
|
17
|
+
Currently supports NX-OS nodes.
|
18
18
|
EOF
|
19
19
|
spec.license = 'Apache-2.0'
|
20
20
|
spec.homepage = 'https://github.com/cisco/cisco-network-node-utils'
|
data/docs/README-maintainers.md
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
# Executable utilities included in this gem
|
2
|
+
|
3
|
+
## check_metric_limits.rb
|
4
|
+
|
5
|
+
This is a helper script for developers. If you're doing refactoring work to
|
6
|
+
reduce the code complexity metrics, you can run this script to report the
|
7
|
+
worst offenders for each metric and whether you've managed to improve any
|
8
|
+
metrics compared to the baseline. Run this script from the base
|
9
|
+
cisco-network-node-utils directory to report metrics of code in the
|
10
|
+
./lib and ./tests directories.
|
11
|
+
|
12
|
+
```bash
|
13
|
+
[cisco-network-node-utils]$ ruby bin/check_metric_limits.rb
|
14
|
+
```
|
data/lib/.rubocop.yml
CHANGED
@@ -57,9 +57,14 @@ module Cisco
|
|
57
57
|
|
58
58
|
if g_str.empty?
|
59
59
|
# cannot remove default local, so do nothing in this case
|
60
|
-
unless m == :local
|
61
|
-
|
62
|
-
|
60
|
+
unless m == :local
|
61
|
+
unless node.product_id[/N8/]
|
62
|
+
# TBD: These 'no' commands currently error on N8k
|
63
|
+
# no aaa authentication login console local
|
64
|
+
# no aaa authentication login console none
|
65
|
+
config_set('aaa_auth_login_service', 'method',
|
66
|
+
'no', @name, m_str)
|
67
|
+
end
|
63
68
|
end
|
64
69
|
else
|
65
70
|
config_set('aaa_auth_login_service', 'groups',
|
@@ -39,6 +39,10 @@ module Cisco
|
|
39
39
|
config_set('aaa_authorization_service', 'method', '', type_str, name)
|
40
40
|
end
|
41
41
|
|
42
|
+
def self.remove_local_auth
|
43
|
+
config_get('aaa_authorization_service', 'remove_local_auth')
|
44
|
+
end
|
45
|
+
|
42
46
|
def self.services
|
43
47
|
servs = {}
|
44
48
|
servs_arr = config_get('aaa_authorization_service', 'services')
|
@@ -66,6 +70,8 @@ module Cisco
|
|
66
70
|
'no', t_str, @name)
|
67
71
|
end
|
68
72
|
else
|
73
|
+
# Removal of auth method local is not supported on all platforms.
|
74
|
+
m_str = AaaAuthorizationService.remove_local_auth ? m_str : ''
|
69
75
|
config_set('aaa_authorization_service', 'groups',
|
70
76
|
'no', t_str, @name, g_str, m_str)
|
71
77
|
end
|
@@ -0,0 +1,300 @@
|
|
1
|
+
#
|
2
|
+
# NXAPI implementation of BFD Global class
|
3
|
+
#
|
4
|
+
# May 2016, Sai Chintalapudi
|
5
|
+
#
|
6
|
+
# Copyright (c) 2016 Cisco and/or its affiliates.
|
7
|
+
#
|
8
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
+
# you may not use this file except in compliance with the License.
|
10
|
+
# You may obtain a copy of the License at
|
11
|
+
#
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
#
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
+
# See the License for the specific language governing permissions and
|
18
|
+
# limitations under the License.
|
19
|
+
|
20
|
+
require_relative 'node_util'
|
21
|
+
|
22
|
+
module Cisco
|
23
|
+
# node_utils class for bfd_global
|
24
|
+
class BfdGlobal < NodeUtil
|
25
|
+
attr_reader :name
|
26
|
+
|
27
|
+
def initialize(instantiate=true)
|
28
|
+
set_args_keys_default
|
29
|
+
|
30
|
+
Feature.bfd_enable if instantiate
|
31
|
+
end
|
32
|
+
|
33
|
+
# Reset everything back to default
|
34
|
+
def destroy
|
35
|
+
return unless Feature.bfd_enabled?
|
36
|
+
[:interval,
|
37
|
+
:ipv4_interval,
|
38
|
+
:ipv6_interval,
|
39
|
+
:fabricpath_interval,
|
40
|
+
:echo_interface,
|
41
|
+
:echo_rx_interval,
|
42
|
+
:ipv4_echo_rx_interval,
|
43
|
+
:ipv6_echo_rx_interval,
|
44
|
+
:fabricpath_vlan,
|
45
|
+
:slow_timer,
|
46
|
+
:ipv4_slow_timer,
|
47
|
+
:ipv6_slow_timer,
|
48
|
+
:fabricpath_slow_timer,
|
49
|
+
:startup_timer,
|
50
|
+
].each do |prop|
|
51
|
+
send("#{prop}=", send("default_#{prop}")) if
|
52
|
+
send prop
|
53
|
+
end
|
54
|
+
set_args_keys_default
|
55
|
+
end
|
56
|
+
|
57
|
+
# Helper method to delete @set_args hash keys
|
58
|
+
def set_args_keys_default
|
59
|
+
keys = { state: '' }
|
60
|
+
@get_args = @set_args = keys
|
61
|
+
end
|
62
|
+
|
63
|
+
# rubocop:disable Style/AccessorMethodName
|
64
|
+
def set_args_keys(hash={})
|
65
|
+
set_args_keys_default
|
66
|
+
@set_args = @get_args.merge!(hash) unless hash.empty?
|
67
|
+
end
|
68
|
+
|
69
|
+
########################################################
|
70
|
+
# PROPERTIES #
|
71
|
+
########################################################
|
72
|
+
|
73
|
+
def echo_interface
|
74
|
+
config_get('bfd_global', 'echo_interface', @get_args)
|
75
|
+
end
|
76
|
+
|
77
|
+
def echo_interface=(val)
|
78
|
+
set_args_keys(intf: val ? val : echo_interface,
|
79
|
+
state: val ? '' : 'no')
|
80
|
+
config_set('bfd_global', 'echo_interface', @set_args) if
|
81
|
+
@set_args[:intf]
|
82
|
+
end
|
83
|
+
|
84
|
+
def default_echo_interface
|
85
|
+
config_get_default('bfd_global', 'echo_interface')
|
86
|
+
end
|
87
|
+
|
88
|
+
def echo_rx_interval
|
89
|
+
config_get('bfd_global', 'echo_rx_interval', @get_args)
|
90
|
+
end
|
91
|
+
|
92
|
+
def echo_rx_interval=(val)
|
93
|
+
set_args_keys(rxi: val,
|
94
|
+
state: val == default_echo_rx_interval ? 'no' : '')
|
95
|
+
config_set('bfd_global', 'echo_rx_interval', @set_args)
|
96
|
+
end
|
97
|
+
|
98
|
+
def default_echo_rx_interval
|
99
|
+
config_get_default('bfd_global', 'echo_rx_interval')
|
100
|
+
end
|
101
|
+
|
102
|
+
def ipv4_echo_rx_interval
|
103
|
+
config_get('bfd_global', 'ipv4_echo_rx_interval', @get_args)
|
104
|
+
end
|
105
|
+
|
106
|
+
def ipv4_echo_rx_interval=(val)
|
107
|
+
set_args_keys(rxi: val,
|
108
|
+
state: val == default_ipv4_echo_rx_interval ? 'no' : '')
|
109
|
+
config_set('bfd_global', 'ipv4_echo_rx_interval', @set_args)
|
110
|
+
end
|
111
|
+
|
112
|
+
def default_ipv4_echo_rx_interval
|
113
|
+
config_get_default('bfd_global', 'ipv4_echo_rx_interval')
|
114
|
+
end
|
115
|
+
|
116
|
+
def ipv6_echo_rx_interval
|
117
|
+
config_get('bfd_global', 'ipv6_echo_rx_interval', @get_args)
|
118
|
+
end
|
119
|
+
|
120
|
+
def ipv6_echo_rx_interval=(val)
|
121
|
+
set_args_keys(rxi: val,
|
122
|
+
state: val == default_ipv6_echo_rx_interval ? 'no' : '')
|
123
|
+
config_set('bfd_global', 'ipv6_echo_rx_interval', @set_args)
|
124
|
+
end
|
125
|
+
|
126
|
+
def default_ipv6_echo_rx_interval
|
127
|
+
config_get_default('bfd_global', 'ipv6_echo_rx_interval')
|
128
|
+
end
|
129
|
+
|
130
|
+
def slow_timer
|
131
|
+
config_get('bfd_global', 'slow_timer', @get_args)
|
132
|
+
end
|
133
|
+
|
134
|
+
def slow_timer=(val)
|
135
|
+
set_args_keys(timer: val,
|
136
|
+
state: val == default_slow_timer ? 'no' : '')
|
137
|
+
config_set('bfd_global', 'slow_timer', @set_args)
|
138
|
+
end
|
139
|
+
|
140
|
+
def default_slow_timer
|
141
|
+
config_get_default('bfd_global', 'slow_timer')
|
142
|
+
end
|
143
|
+
|
144
|
+
def ipv4_slow_timer
|
145
|
+
config_get('bfd_global', 'ipv4_slow_timer', @get_args)
|
146
|
+
end
|
147
|
+
|
148
|
+
def ipv4_slow_timer=(val)
|
149
|
+
set_args_keys(timer: val,
|
150
|
+
state: val == default_ipv4_slow_timer ? 'no' : '')
|
151
|
+
config_set('bfd_global', 'ipv4_slow_timer', @set_args)
|
152
|
+
end
|
153
|
+
|
154
|
+
def default_ipv4_slow_timer
|
155
|
+
config_get_default('bfd_global', 'ipv4_slow_timer')
|
156
|
+
end
|
157
|
+
|
158
|
+
def ipv6_slow_timer
|
159
|
+
config_get('bfd_global', 'ipv6_slow_timer', @get_args)
|
160
|
+
end
|
161
|
+
|
162
|
+
def ipv6_slow_timer=(val)
|
163
|
+
set_args_keys(timer: val,
|
164
|
+
state: val == default_ipv6_slow_timer ? 'no' : '')
|
165
|
+
config_set('bfd_global', 'ipv6_slow_timer', @set_args)
|
166
|
+
end
|
167
|
+
|
168
|
+
def default_ipv6_slow_timer
|
169
|
+
config_get_default('bfd_global', 'ipv6_slow_timer')
|
170
|
+
end
|
171
|
+
|
172
|
+
def fabricpath_slow_timer
|
173
|
+
config_get('bfd_global', 'fabricpath_slow_timer', @get_args)
|
174
|
+
end
|
175
|
+
|
176
|
+
def fabricpath_slow_timer=(val)
|
177
|
+
set_args_keys(timer: val,
|
178
|
+
state: val == default_fabricpath_slow_timer ? 'no' : '')
|
179
|
+
config_set('bfd_global', 'fabricpath_slow_timer', @set_args)
|
180
|
+
end
|
181
|
+
|
182
|
+
def default_fabricpath_slow_timer
|
183
|
+
config_get_default('bfd_global', 'fabricpath_slow_timer')
|
184
|
+
end
|
185
|
+
|
186
|
+
def startup_timer
|
187
|
+
config_get('bfd_global', 'startup_timer', @get_args)
|
188
|
+
end
|
189
|
+
|
190
|
+
def startup_timer=(val)
|
191
|
+
set_args_keys(timer: val,
|
192
|
+
state: val == default_startup_timer ? 'no' : '')
|
193
|
+
config_set('bfd_global', 'startup_timer', @set_args)
|
194
|
+
end
|
195
|
+
|
196
|
+
def default_startup_timer
|
197
|
+
config_get_default('bfd_global', 'startup_timer')
|
198
|
+
end
|
199
|
+
|
200
|
+
def fabricpath_vlan
|
201
|
+
config_get('bfd_global', 'fabricpath_vlan', @get_args)
|
202
|
+
end
|
203
|
+
|
204
|
+
def fabricpath_vlan=(val)
|
205
|
+
set_args_keys(vlan: val,
|
206
|
+
state: val == default_fabricpath_vlan ? 'no' : '')
|
207
|
+
config_set('bfd_global', 'fabricpath_vlan', @set_args)
|
208
|
+
end
|
209
|
+
|
210
|
+
def default_fabricpath_vlan
|
211
|
+
config_get_default('bfd_global', 'fabricpath_vlan')
|
212
|
+
end
|
213
|
+
|
214
|
+
def default_interval
|
215
|
+
config_get_default('bfd_global', 'interval')
|
216
|
+
end
|
217
|
+
|
218
|
+
def default_ipv4_interval
|
219
|
+
config_get_default('bfd_global', 'ipv4_interval')
|
220
|
+
end
|
221
|
+
|
222
|
+
def default_ipv6_interval
|
223
|
+
config_get_default('bfd_global', 'ipv6_interval')
|
224
|
+
end
|
225
|
+
|
226
|
+
def default_fabricpath_interval
|
227
|
+
config_get_default('bfd_global', 'fabricpath_interval')
|
228
|
+
end
|
229
|
+
|
230
|
+
# interval is an array of interval, min_rx and multiplier
|
231
|
+
# CLI: bfd interval 100 min_rx 100 multiplier 25
|
232
|
+
def interval
|
233
|
+
config_get('bfd_global', 'interval', @get_args)
|
234
|
+
end
|
235
|
+
|
236
|
+
# ipv4_interval is an array of ipv4_interval, ipv4_min_rx and
|
237
|
+
# ipv4_multiplier
|
238
|
+
# CLI: bfd ipv4 interval 100 min_rx 100 multiplier 25
|
239
|
+
def ipv4_interval
|
240
|
+
config_get('bfd_global', 'ipv4_interval', @get_args)
|
241
|
+
end
|
242
|
+
|
243
|
+
# ipv6_interval is an array of ipv6_interval, ipv6_min_rx and
|
244
|
+
# ipv6_multiplier
|
245
|
+
# CLI: bfd ipv6 interval 100 min_rx 100 multiplier 25
|
246
|
+
def ipv6_interval
|
247
|
+
config_get('bfd_global', 'ipv6_interval', @get_args)
|
248
|
+
end
|
249
|
+
|
250
|
+
# fabricpath_interval is an array of fabricpath_interval,
|
251
|
+
# fabricpath_min_rx and fabricpath_multiplier
|
252
|
+
# CLI: bfd fabricpath interval 100 min_rx 100 multiplier 25
|
253
|
+
def fabricpath_interval
|
254
|
+
config_get('bfd_global', 'fabricpath_interval', @get_args)
|
255
|
+
end
|
256
|
+
|
257
|
+
# interval is an array of interval, min_rx and multiplier
|
258
|
+
# ex: ['100', '100', '25']
|
259
|
+
# CLI: bfd interval 100 min_rx 100 multiplier 25
|
260
|
+
def interval=(arr)
|
261
|
+
interval, min_rx, multiplier = arr
|
262
|
+
set_args_keys(interval: interval, min_rx: min_rx, multiplier: multiplier,
|
263
|
+
state: arr == default_interval ? 'no' : '')
|
264
|
+
config_set('bfd_global', 'interval', @set_args)
|
265
|
+
end
|
266
|
+
|
267
|
+
# ipv4_interval is an array of ipv4_interval, ipv4_min_rx and
|
268
|
+
# ipv4_multiplier
|
269
|
+
# ex: ['100', '100', '25']
|
270
|
+
# CLI: bfd ipv4 interval 100 min_rx 100 multiplier 25
|
271
|
+
def ipv4_interval=(arr)
|
272
|
+
interval, min_rx, multiplier = arr
|
273
|
+
set_args_keys(interval: interval, min_rx: min_rx, multiplier: multiplier,
|
274
|
+
state: arr == default_ipv4_interval ? 'no' : '')
|
275
|
+
config_set('bfd_global', 'ipv4_interval', @set_args)
|
276
|
+
end
|
277
|
+
|
278
|
+
# ipv6_interval is an array of ipv6_interval, ipv6_min_rx and
|
279
|
+
# ipv6_multiplier
|
280
|
+
# ex: ['100', '100', '25']
|
281
|
+
# CLI: bfd ipv6 interval 100 min_rx 100 multiplier 25
|
282
|
+
def ipv6_interval=(arr)
|
283
|
+
interval, min_rx, multiplier = arr
|
284
|
+
set_args_keys(interval: interval, min_rx: min_rx, multiplier: multiplier,
|
285
|
+
state: arr == default_ipv6_interval ? 'no' : '')
|
286
|
+
config_set('bfd_global', 'ipv6_interval', @set_args)
|
287
|
+
end
|
288
|
+
|
289
|
+
# fabricpath_interval is an array of fabricpath_interval,
|
290
|
+
# fabricpath_min_rx and fabricpath_multiplier
|
291
|
+
# ex: ['100', '100', '25']
|
292
|
+
# CLI: bfd fabricpath interval 100 min_rx 100 multiplier 25
|
293
|
+
def fabricpath_interval=(arr)
|
294
|
+
interval, min_rx, multiplier = arr
|
295
|
+
set_args_keys(interval: interval, min_rx: min_rx, multiplier: multiplier,
|
296
|
+
state: arr == default_fabricpath_interval ? 'no' : '')
|
297
|
+
config_set('bfd_global', 'fabricpath_interval', @set_args)
|
298
|
+
end
|
299
|
+
end # class
|
300
|
+
end # module
|
data/lib/cisco_node_utils/bgp.rb
CHANGED
@@ -100,7 +100,7 @@ module Cisco
|
|
100
100
|
end
|
101
101
|
|
102
102
|
def wait_for_process_initialized
|
103
|
-
return unless node.product_id[/N(5|6)/]
|
103
|
+
return unless node.product_id[/N(5|6|8)/]
|
104
104
|
|
105
105
|
# Hack for slow-start platforms which will have setter failures if the
|
106
106
|
# bgp instance is still initializing. To see this problem in a sandbox
|
@@ -462,7 +462,7 @@ module Cisco
|
|
462
462
|
def event_history_events
|
463
463
|
match = config_get('bgp', 'event_history_events', @get_args)
|
464
464
|
if match.is_a?(Array)
|
465
|
-
return '
|
465
|
+
return 'size_disable' if match[0] == 'no '
|
466
466
|
return 'size_' + match[1] if match[1]
|
467
467
|
end
|
468
468
|
default_event_history_events
|
@@ -805,7 +805,8 @@ module Cisco
|
|
805
805
|
# N3k I2 images require 'nv overlay evpn' for rd and also require
|
806
806
|
# explicit values when removing the rd command. These restrictions are
|
807
807
|
# not not needed in I3 and newer images.
|
808
|
-
Feature.nv_overlay_evpn_enable if
|
808
|
+
Feature.nv_overlay_evpn_enable if
|
809
|
+
Utils.nexus_i2_image || node.product_id[/N7/]
|
809
810
|
|
810
811
|
if rd == default_route_distinguisher
|
811
812
|
return if route_distinguisher.empty?
|
@@ -867,7 +868,8 @@ module Cisco
|
|
867
868
|
|
868
869
|
# Supress Fib Pending (Getter/Setter/Default)
|
869
870
|
def suppress_fib_pending
|
870
|
-
config_get('bgp', 'suppress_fib_pending', @get_args)
|
871
|
+
val = config_get('bgp', 'suppress_fib_pending', @get_args)
|
872
|
+
val.nil? ? false : val
|
871
873
|
end
|
872
874
|
|
873
875
|
def suppress_fib_pending=(enable)
|
@@ -29,6 +29,8 @@ module Cisco
|
|
29
29
|
err_msg = '"af" argument must be an array of two string values ' \
|
30
30
|
'containing an afi + safi tuple'
|
31
31
|
fail ArgumentError, err_msg unless af.is_a?(Array) || af.length == 2
|
32
|
+
err_msg = '"vrf" argument must be "default" for l2vpn address-family'
|
33
|
+
fail ArgumentError, err_msg if vrf != 'default' && af[1][/evpn/]
|
32
34
|
@asn = RouterBgp.validate_asnum(asn)
|
33
35
|
@vrf = vrf
|
34
36
|
@afi, @safi = af
|
@@ -88,6 +88,20 @@ module Cisco
|
|
88
88
|
@set_args = @set_args.merge!(hash) unless hash.empty?
|
89
89
|
end
|
90
90
|
|
91
|
+
def bfd=(val)
|
92
|
+
set_args_keys(state: (val) ? '' : 'no')
|
93
|
+
Feature.bfd_enable
|
94
|
+
config_set('bgp_neighbor', 'bfd', @set_args)
|
95
|
+
end
|
96
|
+
|
97
|
+
def bfd
|
98
|
+
config_get('bgp_neighbor', 'bfd', @get_args)
|
99
|
+
end
|
100
|
+
|
101
|
+
def default_bfd
|
102
|
+
config_get_default('bgp_neighbor', 'bfd')
|
103
|
+
end
|
104
|
+
|
91
105
|
def description=(desc)
|
92
106
|
fail TypeError unless desc.is_a?(String)
|
93
107
|
desc.strip!
|