cisco_node_utils 1.3.0 → 1.4.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.
- 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!
|