cisco_node_utils 1.1.0 → 1.2.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 +2 -1
- data/CHANGELOG.md +126 -1
- data/README.md +19 -12
- data/Rakefile +1 -0
- data/bin/git/hooks/commit-msg/enforce_style +8 -0
- data/cisco_node_utils.gemspec +4 -3
- data/docs/README-develop-best-practices.md +127 -109
- data/docs/README-develop-node-utils-APIs.md +47 -39
- data/docs/template-router.rb +3 -7
- data/lib/.rubocop.yml +4 -4
- data/lib/cisco_node_utils.rb +1 -1
- data/lib/cisco_node_utils/aaa_authentication_login.rb +96 -0
- data/lib/cisco_node_utils/aaa_authentication_login_service.rb +133 -0
- data/lib/cisco_node_utils/aaa_authorization_service.rb +150 -0
- data/lib/cisco_node_utils/ace.rb +196 -0
- data/lib/cisco_node_utils/acl.rb +100 -0
- data/lib/cisco_node_utils/bgp.rb +301 -163
- data/lib/cisco_node_utils/bgp_af.rb +187 -19
- data/lib/cisco_node_utils/bgp_neighbor.rb +18 -33
- data/lib/cisco_node_utils/bgp_neighbor_af.rb +25 -48
- data/lib/cisco_node_utils/cisco_cmn_utils.rb +23 -4
- data/lib/cisco_node_utils/cmd_ref/README_YAML.md +593 -0
- data/lib/cisco_node_utils/cmd_ref/aaa_auth_login_service.yaml +22 -0
- data/lib/cisco_node_utils/cmd_ref/aaa_authentication_login.yaml +31 -0
- data/lib/cisco_node_utils/cmd_ref/aaa_authorization_service.yaml +22 -0
- data/lib/cisco_node_utils/cmd_ref/acl.yaml +43 -0
- data/lib/cisco_node_utils/cmd_ref/bgp.yaml +242 -0
- data/lib/cisco_node_utils/cmd_ref/bgp_af.yaml +164 -0
- data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +131 -0
- data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +179 -0
- data/lib/cisco_node_utils/cmd_ref/dnsclient.yaml +34 -0
- data/lib/cisco_node_utils/cmd_ref/evpn_vni.yaml +42 -0
- data/lib/cisco_node_utils/cmd_ref/fabricpath.yaml +172 -0
- data/lib/cisco_node_utils/cmd_ref/fabricpath_topology.yaml +35 -0
- data/lib/cisco_node_utils/cmd_ref/feature.yaml +42 -0
- data/lib/cisco_node_utils/cmd_ref/fex.yaml +9 -0
- data/lib/cisco_node_utils/cmd_ref/images.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/interface.yaml +339 -0
- data/lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml +28 -0
- data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +61 -0
- data/lib/cisco_node_utils/cmd_ref/interface_portchannel.yaml +54 -0
- data/lib/cisco_node_utils/cmd_ref/interface_service_vni.yaml +32 -0
- data/lib/cisco_node_utils/cmd_ref/inventory.yaml +45 -0
- data/lib/cisco_node_utils/cmd_ref/memory.yaml +13 -0
- data/lib/cisco_node_utils/cmd_ref/ntp_config.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/ntp_server.yaml +14 -0
- data/lib/cisco_node_utils/cmd_ref/ospf.yaml +74 -0
- data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +33 -0
- data/lib/cisco_node_utils/cmd_ref/pim.yaml +40 -0
- data/lib/cisco_node_utils/cmd_ref/portchannel_global.yaml +69 -0
- data/lib/cisco_node_utils/cmd_ref/radius_global.yaml +25 -0
- data/lib/cisco_node_utils/cmd_ref/radius_server.yaml +64 -0
- data/lib/cisco_node_utils/cmd_ref/radius_server_group.yaml +14 -0
- data/lib/cisco_node_utils/cmd_ref/show_system.yaml +5 -0
- data/lib/cisco_node_utils/cmd_ref/show_version.yaml +72 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_community.yaml +23 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_group.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_notification_receiver.yaml +50 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_server.yaml +51 -0
- data/lib/cisco_node_utils/cmd_ref/snmp_user.yaml +55 -0
- data/lib/cisco_node_utils/cmd_ref/snmpnotification.yaml +11 -0
- data/lib/cisco_node_utils/cmd_ref/syslog_server.yaml +18 -0
- data/lib/cisco_node_utils/cmd_ref/syslog_settings.yaml +7 -0
- data/lib/cisco_node_utils/cmd_ref/system.yaml +6 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_server.yaml +49 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_server_group.yaml +33 -0
- data/lib/cisco_node_utils/cmd_ref/tacacs_server_host.yaml +35 -0
- data/lib/cisco_node_utils/cmd_ref/vdc.yaml +38 -0
- data/lib/cisco_node_utils/cmd_ref/virtual_service.yaml +6 -0
- data/lib/cisco_node_utils/cmd_ref/vlan.yaml +56 -0
- data/lib/cisco_node_utils/cmd_ref/vni.yaml +76 -0
- data/lib/cisco_node_utils/cmd_ref/vpc.yaml +197 -0
- data/lib/cisco_node_utils/cmd_ref/vrf.yaml +88 -0
- data/lib/cisco_node_utils/cmd_ref/vtp.yaml +38 -0
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +60 -0
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +39 -0
- data/lib/cisco_node_utils/cmd_ref/yum.yaml +13 -0
- data/lib/cisco_node_utils/command_reference.rb +359 -187
- data/lib/cisco_node_utils/configparser_lib.rb +1 -1
- data/lib/cisco_node_utils/dns_domain.rb +19 -5
- data/lib/cisco_node_utils/domain_name.rb +4 -8
- data/lib/cisco_node_utils/evpn_vni.rb +157 -0
- data/lib/cisco_node_utils/fabricpath_global.rb +388 -0
- data/lib/cisco_node_utils/fabricpath_topology.rb +150 -0
- data/lib/cisco_node_utils/feature.rb +111 -0
- data/lib/cisco_node_utils/interface.rb +390 -97
- data/lib/cisco_node_utils/interface_channel_group.rb +124 -0
- data/lib/cisco_node_utils/interface_ospf.rb +11 -34
- data/lib/cisco_node_utils/interface_portchannel.rb +157 -0
- data/lib/cisco_node_utils/interface_service_vni.rb +132 -0
- data/lib/cisco_node_utils/name_server.rb +1 -1
- data/lib/cisco_node_utils/node.rb +55 -249
- data/lib/cisco_node_utils/node_util.rb +5 -1
- data/lib/cisco_node_utils/ntp_config.rb +2 -2
- data/lib/cisco_node_utils/ntp_server.rb +14 -5
- data/lib/cisco_node_utils/overlay_global.rb +153 -0
- data/lib/cisco_node_utils/pim.rb +124 -0
- data/lib/cisco_node_utils/pim_group_list.rb +108 -0
- data/lib/cisco_node_utils/pim_rp_address.rb +102 -0
- data/lib/cisco_node_utils/platform.rb +8 -9
- data/lib/cisco_node_utils/portchannel_global.rb +277 -0
- data/lib/cisco_node_utils/radius_global.rb +9 -19
- data/lib/cisco_node_utils/radius_server.rb +31 -41
- data/lib/cisco_node_utils/radius_server_group.rb +117 -0
- data/lib/cisco_node_utils/router_ospf.rb +1 -1
- data/lib/cisco_node_utils/router_ospf_vrf.rb +14 -19
- data/lib/cisco_node_utils/snmp_notification_receiver.rb +158 -0
- data/lib/cisco_node_utils/snmpcommunity.rb +3 -5
- data/lib/cisco_node_utils/snmpgroup.rb +1 -1
- data/lib/cisco_node_utils/snmpnotification.rb +57 -0
- data/lib/cisco_node_utils/snmpserver.rb +8 -17
- data/lib/cisco_node_utils/snmpuser.rb +67 -28
- data/lib/cisco_node_utils/syslog_server.rb +3 -9
- data/lib/cisco_node_utils/syslog_settings.rb +2 -10
- data/lib/cisco_node_utils/tacacs_server.rb +9 -14
- data/lib/cisco_node_utils/tacacs_server_group.rb +145 -0
- data/lib/cisco_node_utils/tacacs_server_host.rb +5 -9
- data/lib/cisco_node_utils/vdc.rb +88 -0
- data/lib/cisco_node_utils/version.rb +5 -2
- data/lib/cisco_node_utils/vlan.rb +71 -8
- data/lib/cisco_node_utils/vni.rb +227 -0
- data/lib/cisco_node_utils/vpc.rb +377 -0
- data/lib/cisco_node_utils/vrf.rb +60 -9
- data/lib/cisco_node_utils/vrf_af.rb +191 -0
- data/lib/cisco_node_utils/vtp.rb +8 -6
- data/lib/cisco_node_utils/vxlan_vtep.rb +151 -0
- data/lib/cisco_node_utils/vxlan_vtep_vni.rb +234 -0
- data/lib/cisco_node_utils/yum.rb +1 -1
- data/tests/.rubocop.yml +1 -1
- data/tests/basetest.rb +16 -7
- data/tests/ciscotest.rb +55 -13
- data/tests/cmd_config.yaml +2 -2
- data/tests/platform_info.rb +3 -2
- data/tests/test_aaa_authentication_login.rb +219 -0
- data/tests/test_aaa_authentication_login_service.rb +759 -0
- data/tests/test_aaa_authorization_service.rb +1041 -0
- data/tests/test_ace.rb +160 -0
- data/tests/test_acl.rb +176 -0
- data/tests/test_bgp_af.rb +269 -13
- data/tests/test_bgp_neighbor.rb +38 -40
- data/tests/test_bgp_neighbor_af.rb +92 -32
- data/tests/test_command_config.rb +5 -5
- data/tests/test_command_reference.rb +284 -101
- data/tests/test_dns_domain.rb +1 -1
- data/tests/test_domain_name.rb +1 -1
- data/tests/test_evpn_vni.rb +106 -0
- data/tests/test_fabricpath_global.rb +243 -0
- data/tests/test_fabricpath_topology.rb +98 -0
- data/tests/test_interface.rb +292 -74
- data/tests/test_interface_channel_group.rb +74 -0
- data/tests/test_interface_ospf.rb +9 -4
- data/tests/test_interface_portchannel.rb +105 -0
- data/tests/test_interface_service_vni.rb +232 -0
- data/tests/test_interface_svi.rb +77 -62
- data/tests/test_interface_switchport.rb +17 -5
- data/tests/test_name_server.rb +1 -1
- data/tests/test_node.rb +1 -1
- data/tests/test_node_ext.rb +10 -20
- data/tests/test_ntp_config.rb +1 -1
- data/tests/test_ntp_server.rb +18 -6
- data/tests/test_overlay_global.rb +102 -0
- data/tests/test_pim.rb +177 -0
- data/tests/test_pim_group_list.rb +181 -0
- data/tests/test_pim_rp_address.rb +153 -0
- data/tests/test_platform.rb +3 -3
- data/tests/test_portchannel_global.rb +202 -0
- data/tests/test_radius_global.rb +1 -1
- data/tests/test_radius_server.rb +92 -57
- data/tests/test_radius_server_group.rb +149 -0
- data/tests/test_router_bgp.rb +283 -112
- data/tests/test_router_ospf.rb +2 -2
- data/tests/test_router_ospf_vrf.rb +4 -4
- data/tests/test_snmp_notification_receiver.rb +167 -0
- data/tests/test_snmpcommunity.rb +1 -1
- data/tests/test_snmpgroup.rb +1 -1
- data/tests/test_snmpnotification.rb +72 -0
- data/tests/test_snmpserver.rb +29 -105
- data/tests/test_snmpuser.rb +32 -30
- data/tests/test_syslog_server.rb +36 -10
- data/tests/test_syslog_settings.rb +1 -1
- data/tests/test_tacacs_server.rb +1 -1
- data/tests/test_tacacs_server_group.rb +405 -0
- data/tests/test_tacacs_server_host.rb +1 -1
- data/tests/test_vdc.rb +78 -0
- data/tests/test_vlan.rb +74 -19
- data/tests/test_vlan_mt_full.rb +95 -0
- data/tests/test_vni.rb +106 -0
- data/tests/test_vpc.rb +361 -0
- data/tests/test_vrf.rb +172 -29
- data/tests/test_vtp.rb +1 -1
- data/tests/test_vxlan_vtep.rb +214 -0
- data/tests/test_vxlan_vtep_vni.rb +201 -0
- data/tests/test_yum.rb +1 -1
- metadata +120 -11
- data/lib/cisco_node_utils/README_YAML.md +0 -325
- data/lib/cisco_node_utils/command_reference_common.yaml +0 -1051
- data/lib/cisco_node_utils/command_reference_common_bgp.yaml +0 -535
- data/lib/cisco_node_utils/command_reference_n3064.yaml +0 -13
- data/lib/cisco_node_utils/command_reference_n7k.yaml +0 -52
- data/lib/cisco_node_utils/command_reference_n9k.yaml +0 -26
- data/tests/platform_info.yaml +0 -10
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
# August 2015, Richard Wellum
|
|
3
3
|
#
|
|
4
|
-
# Copyright (c) 2015 Cisco and/or its affiliates.
|
|
4
|
+
# Copyright (c) 2015-2016 Cisco and/or its affiliates.
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
7
|
# you may not use this file except in compliance with the License.
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
require_relative 'cisco_cmn_utils'
|
|
19
19
|
require_relative 'node_util'
|
|
20
|
+
require_relative 'feature'
|
|
20
21
|
require_relative 'bgp'
|
|
21
22
|
|
|
22
23
|
module Cisco
|
|
@@ -27,7 +28,7 @@ module Cisco
|
|
|
27
28
|
err_msg = '"af" argument must be an array of two string values ' \
|
|
28
29
|
'containing an afi + safi tuple'
|
|
29
30
|
fail ArgumentError, err_msg unless af.is_a?(Array) || af.length == 2
|
|
30
|
-
@asn = RouterBgp.
|
|
31
|
+
@asn = RouterBgp.validate_asnum(asn)
|
|
31
32
|
@vrf = vrf
|
|
32
33
|
@afi, @safi = af
|
|
33
34
|
set_args_keys_default
|
|
@@ -40,7 +41,7 @@ module Cisco
|
|
|
40
41
|
af_hash[asn] = {}
|
|
41
42
|
vrfs.keys.each do |vrf_name|
|
|
42
43
|
get_args = { asnum: asn }
|
|
43
|
-
get_args[:vrf] = vrf_name unless
|
|
44
|
+
get_args[:vrf] = vrf_name unless vrf_name == 'default'
|
|
44
45
|
# Call yaml and search for address-family statements
|
|
45
46
|
af_list = config_get('bgp_af', 'all_afs', get_args)
|
|
46
47
|
|
|
@@ -57,6 +58,7 @@ module Cisco
|
|
|
57
58
|
end
|
|
58
59
|
|
|
59
60
|
def create
|
|
61
|
+
Feature.bgp_enable
|
|
60
62
|
set_args_keys(state: '')
|
|
61
63
|
config_set('bgp', 'address_family', @set_args)
|
|
62
64
|
end
|
|
@@ -124,9 +126,7 @@ module Cisco
|
|
|
124
126
|
# Next Hop route map (Getter/Setter/Default)
|
|
125
127
|
#
|
|
126
128
|
def next_hop_route_map
|
|
127
|
-
|
|
128
|
-
return '' if route_map.nil?
|
|
129
|
-
route_map.shift.strip
|
|
129
|
+
config_get('bgp_af', 'next_hop_route_map', @get_args)
|
|
130
130
|
end
|
|
131
131
|
|
|
132
132
|
def next_hop_route_map=(route_map)
|
|
@@ -202,9 +202,7 @@ module Cisco
|
|
|
202
202
|
|
|
203
203
|
# additional_paths_selection
|
|
204
204
|
def additional_paths_selection
|
|
205
|
-
|
|
206
|
-
return '' if route_map.nil?
|
|
207
|
-
route_map.shift.strip
|
|
205
|
+
config_get('bgp_af', 'additional_paths_selection', @get_args)
|
|
208
206
|
end
|
|
209
207
|
|
|
210
208
|
def additional_paths_selection=(route_map)
|
|
@@ -226,14 +224,33 @@ module Cisco
|
|
|
226
224
|
config_get_default('bgp_af', 'additional_paths_selection')
|
|
227
225
|
end
|
|
228
226
|
|
|
227
|
+
# advertise_l2vpn_evpn
|
|
228
|
+
def advertise_l2vpn_evpn
|
|
229
|
+
config_get('bgp_af', 'advertise_l2vpn_evpn', @get_args)
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
def advertise_l2vpn_evpn=(state)
|
|
233
|
+
Feature.nv_overlay_evpn_enable
|
|
234
|
+
set_args_keys(state: (state ? '' : 'no'))
|
|
235
|
+
config_set('bgp_af', 'advertise_l2vpn_evpn', @set_args)
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
def default_advertise_l2vpn_evpn
|
|
239
|
+
config_get_default('bgp_af', 'advertise_l2vpn_evpn')
|
|
240
|
+
end
|
|
241
|
+
|
|
229
242
|
#
|
|
230
243
|
# dampen_igp_metric (Getter/Setter/Default)
|
|
231
244
|
#
|
|
232
245
|
|
|
233
246
|
# dampen_igp_metric
|
|
234
247
|
def dampen_igp_metric
|
|
235
|
-
|
|
236
|
-
|
|
248
|
+
match = config_get('bgp_af', 'dampen_igp_metric', @get_args)
|
|
249
|
+
if match.is_a?(Array)
|
|
250
|
+
return nil if match[0] == 'no '
|
|
251
|
+
return match[1].to_i if match[1]
|
|
252
|
+
end
|
|
253
|
+
default_dampen_igp_metric
|
|
237
254
|
end
|
|
238
255
|
|
|
239
256
|
def dampen_igp_metric=(val)
|
|
@@ -422,14 +439,112 @@ module Cisco
|
|
|
422
439
|
config_get_default('bgp_af', 'dampening_suppress_time')
|
|
423
440
|
end
|
|
424
441
|
|
|
442
|
+
#
|
|
443
|
+
# Distance (Getter/Setter/Default)
|
|
444
|
+
#
|
|
445
|
+
def distance_set(ebgp, ibgp, local)
|
|
446
|
+
set_args_keys(state: '', ebgp: ebgp, ibgp: ibgp, local: local)
|
|
447
|
+
config_set('bgp_af', 'distance', @set_args)
|
|
448
|
+
end
|
|
449
|
+
|
|
450
|
+
def distance_ebgp
|
|
451
|
+
ebgp, _ibgp, _local = distance
|
|
452
|
+
return default_distance_ebgp if ebgp.nil?
|
|
453
|
+
ebgp.to_i
|
|
454
|
+
end
|
|
455
|
+
|
|
456
|
+
def distance_ibgp
|
|
457
|
+
_ebgp, ibgp, _local = distance
|
|
458
|
+
return default_distance_ibgp if ibgp.nil?
|
|
459
|
+
ibgp.to_i
|
|
460
|
+
end
|
|
461
|
+
|
|
462
|
+
def distance_local
|
|
463
|
+
_ebgp, _ibgp, local = distance
|
|
464
|
+
return default_distance_local if local.nil?
|
|
465
|
+
local.to_i
|
|
466
|
+
end
|
|
467
|
+
|
|
468
|
+
def distance
|
|
469
|
+
match = config_get('bgp_af', 'distance', @get_args)
|
|
470
|
+
match.nil? ? default_distance : match
|
|
471
|
+
end
|
|
472
|
+
|
|
473
|
+
def default_distance_ebgp
|
|
474
|
+
config_get_default('bgp_af', 'distance_ebgp')
|
|
475
|
+
end
|
|
476
|
+
|
|
477
|
+
def default_distance_ibgp
|
|
478
|
+
config_get_default('bgp_af', 'distance_ibgp')
|
|
479
|
+
end
|
|
480
|
+
|
|
481
|
+
def default_distance_local
|
|
482
|
+
config_get_default('bgp_af', 'distance_local')
|
|
483
|
+
end
|
|
484
|
+
|
|
485
|
+
def default_distance
|
|
486
|
+
["#{default_distance_ebgp}", "#{default_distance_ibgp}",
|
|
487
|
+
"#{default_distance_local}"]
|
|
488
|
+
end
|
|
489
|
+
|
|
490
|
+
#
|
|
491
|
+
# default_metric (Getter/Setter/Default)
|
|
492
|
+
#
|
|
493
|
+
|
|
494
|
+
# default_metric
|
|
495
|
+
def default_metric
|
|
496
|
+
config_get('bgp_af', 'default_metric', @get_args)
|
|
497
|
+
end
|
|
498
|
+
|
|
499
|
+
def default_metric=(val)
|
|
500
|
+
# To remove the default_metric you can not use 'no default_metric'
|
|
501
|
+
# dummy metric to work around this
|
|
502
|
+
dummy_metric = 1
|
|
503
|
+
set_args_keys(state: (val == default_default_metric) ? 'no' : '',
|
|
504
|
+
num: (val == default_default_metric) ? dummy_metric : val)
|
|
505
|
+
config_set('bgp_af', 'default_metric', @set_args)
|
|
506
|
+
end
|
|
507
|
+
|
|
508
|
+
def default_default_metric
|
|
509
|
+
config_get_default('bgp_af', 'default_metric')
|
|
510
|
+
end
|
|
511
|
+
|
|
512
|
+
#
|
|
513
|
+
# inject_map (Getter/Setter/Default)
|
|
514
|
+
#
|
|
515
|
+
|
|
516
|
+
def inject_map
|
|
517
|
+
cmds = config_get('bgp_af', 'inject_map', @get_args).each(&:compact!)
|
|
518
|
+
cmds.sort
|
|
519
|
+
end
|
|
520
|
+
|
|
521
|
+
def inject_map=(should_list)
|
|
522
|
+
delta_hash = Utils.delta_add_remove(should_list, inject_map)
|
|
523
|
+
return if delta_hash.values.flatten.empty?
|
|
524
|
+
[:add, :remove].each do |action|
|
|
525
|
+
CiscoLogger.debug("inject_map delta #{@get_args}\n #{action}: " \
|
|
526
|
+
"#{delta_hash[action]}")
|
|
527
|
+
delta_hash[action].each do |inject, exist, copy|
|
|
528
|
+
# inject & exist are mandatory, copy is optional
|
|
529
|
+
state = (action == :add) ? '' : 'no'
|
|
530
|
+
copy = 'copy-attributes' unless copy.nil?
|
|
531
|
+
set_args_keys(state: state, inject: inject, exist: exist, copy: copy)
|
|
532
|
+
config_set('bgp_af', 'inject_map', @set_args)
|
|
533
|
+
end
|
|
534
|
+
end
|
|
535
|
+
end
|
|
536
|
+
|
|
537
|
+
def default_inject_map
|
|
538
|
+
config_get_default('bgp_af', 'inject_map')
|
|
539
|
+
end
|
|
540
|
+
|
|
425
541
|
#
|
|
426
542
|
# maximum_paths (Getter/Setter/Default)
|
|
427
543
|
#
|
|
428
544
|
|
|
429
545
|
# maximum_paths
|
|
430
546
|
def maximum_paths
|
|
431
|
-
|
|
432
|
-
result.nil? ? default_maximum_paths : result.first.to_i
|
|
547
|
+
config_get('bgp_af', 'maximum_paths', @get_args)
|
|
433
548
|
end
|
|
434
549
|
|
|
435
550
|
def maximum_paths=(val)
|
|
@@ -448,8 +563,7 @@ module Cisco
|
|
|
448
563
|
|
|
449
564
|
# maximum_paths_ibgp
|
|
450
565
|
def maximum_paths_ibgp
|
|
451
|
-
|
|
452
|
-
result.nil? ? default_maximum_paths_ibgp : result.first.to_i
|
|
566
|
+
config_get('bgp_af', 'maximum_paths_ibgp', @get_args)
|
|
453
567
|
end
|
|
454
568
|
|
|
455
569
|
def maximum_paths_ibgp=(val)
|
|
@@ -468,8 +582,7 @@ module Cisco
|
|
|
468
582
|
|
|
469
583
|
# Build an array of all network commands currently on the device
|
|
470
584
|
def networks
|
|
471
|
-
|
|
472
|
-
cmds.nil? ? default_networks : cmds.each(&:compact!)
|
|
585
|
+
config_get('bgp_af', 'network', @get_args).each(&:compact!)
|
|
473
586
|
end
|
|
474
587
|
|
|
475
588
|
# networks setter.
|
|
@@ -500,8 +613,7 @@ module Cisco
|
|
|
500
613
|
|
|
501
614
|
# Build an array of all redistribute commands currently on the device
|
|
502
615
|
def redistribute
|
|
503
|
-
|
|
504
|
-
cmds.nil? ? default_redistribute : cmds.each(&:compact!)
|
|
616
|
+
config_get('bgp_af', 'redistribute', @get_args).each(&:compact!)
|
|
505
617
|
end
|
|
506
618
|
|
|
507
619
|
# redistribute setter.
|
|
@@ -526,5 +638,61 @@ module Cisco
|
|
|
526
638
|
def default_redistribute
|
|
527
639
|
config_get_default('bgp_af', 'redistribute')
|
|
528
640
|
end
|
|
641
|
+
|
|
642
|
+
#
|
|
643
|
+
# Suppress Inactive (Getter/Setter/Default)
|
|
644
|
+
#
|
|
645
|
+
def suppress_inactive
|
|
646
|
+
config_get('bgp_af', 'suppress_inactive', @get_args)
|
|
647
|
+
end
|
|
648
|
+
|
|
649
|
+
def suppress_inactive=(state)
|
|
650
|
+
set_args_keys(state: state ? '' : 'no')
|
|
651
|
+
config_set('bgp_af', 'suppress_inactive', @set_args)
|
|
652
|
+
end
|
|
653
|
+
|
|
654
|
+
def default_suppress_inactive
|
|
655
|
+
config_get_default('bgp_af', 'suppress_inactive')
|
|
656
|
+
end
|
|
657
|
+
|
|
658
|
+
#
|
|
659
|
+
# Table Map (Getter/Setter/Default)
|
|
660
|
+
#
|
|
661
|
+
|
|
662
|
+
def table_map
|
|
663
|
+
config_get('bgp_af', 'table_map', @get_args)
|
|
664
|
+
end
|
|
665
|
+
|
|
666
|
+
def table_map_filter
|
|
667
|
+
config_get('bgp_af', 'table_map_filter', @get_args)
|
|
668
|
+
end
|
|
669
|
+
|
|
670
|
+
def table_map_set(map, filter=false)
|
|
671
|
+
# To remove table map we can not use 'no table-map'
|
|
672
|
+
# Dummy-map specified to work around this
|
|
673
|
+
if filter
|
|
674
|
+
attr = 'table_map_filter'
|
|
675
|
+
else
|
|
676
|
+
attr = 'table_map'
|
|
677
|
+
end
|
|
678
|
+
dummy_map = 'dummy'
|
|
679
|
+
if map == default_table_map
|
|
680
|
+
@set_args[:state] = 'no'
|
|
681
|
+
@set_args[:map] = dummy_map
|
|
682
|
+
else
|
|
683
|
+
@set_args[:state] = ''
|
|
684
|
+
@set_args[:map] = map
|
|
685
|
+
end
|
|
686
|
+
config_set('bgp_af', attr, @set_args)
|
|
687
|
+
set_args_keys_default
|
|
688
|
+
end
|
|
689
|
+
|
|
690
|
+
def default_table_map
|
|
691
|
+
config_get_default('bgp_af', 'table_map')
|
|
692
|
+
end
|
|
693
|
+
|
|
694
|
+
def default_table_map_filter
|
|
695
|
+
config_get_default('bgp_af', 'table_map_filter')
|
|
696
|
+
end
|
|
529
697
|
end
|
|
530
698
|
end
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#
|
|
3
3
|
# August 2015, Jie Yang
|
|
4
4
|
#
|
|
5
|
-
# Copyright (c) 2015 Cisco and/or its affiliates.
|
|
5
|
+
# Copyright (c) 2015-2016 Cisco and/or its affiliates.
|
|
6
6
|
#
|
|
7
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
8
|
# you may not use this file except in compliance with the License.
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
require 'ipaddr'
|
|
20
20
|
require_relative 'cisco_cmn_utils'
|
|
21
21
|
require_relative 'node_util'
|
|
22
|
+
require_relative 'feature'
|
|
22
23
|
require_relative 'bgp'
|
|
23
24
|
|
|
24
25
|
module Cisco
|
|
@@ -32,7 +33,7 @@ module Cisco
|
|
|
32
33
|
# we need to mask the address using prefix length, so that it becomes
|
|
33
34
|
# something like "1.1.1.0/24" or "2000:123:38::/64"
|
|
34
35
|
@nbr = Utils.process_network_mask(nbr)
|
|
35
|
-
@asn = asn
|
|
36
|
+
@asn = RouterBgp.validate_asnum(asn)
|
|
36
37
|
@vrf = vrf
|
|
37
38
|
@get_args = @set_args = { asnum: @asn, nbr: @nbr }
|
|
38
39
|
@get_args[:vrf] = @set_args[:vrf] = vrf if vrf != 'default'
|
|
@@ -66,6 +67,7 @@ module Cisco
|
|
|
66
67
|
end
|
|
67
68
|
|
|
68
69
|
def create
|
|
70
|
+
Feature.bgp_enable
|
|
69
71
|
set_args_keys(state: '')
|
|
70
72
|
config_set('bgp', 'create_destroy_neighbor', @set_args)
|
|
71
73
|
end
|
|
@@ -95,9 +97,7 @@ module Cisco
|
|
|
95
97
|
end
|
|
96
98
|
|
|
97
99
|
def description
|
|
98
|
-
|
|
99
|
-
return '' if desc.nil?
|
|
100
|
-
desc.shift.strip
|
|
100
|
+
config_get('bgp_neighbor', 'description', @get_args)
|
|
101
101
|
end
|
|
102
102
|
|
|
103
103
|
def default_description
|
|
@@ -158,7 +158,7 @@ module Cisco
|
|
|
158
158
|
|
|
159
159
|
def ebgp_multihop
|
|
160
160
|
result = config_get('bgp_neighbor', 'ebgp_multihop', @get_args)
|
|
161
|
-
result.nil? ? default_ebgp_multihop : result.
|
|
161
|
+
result.nil? ? default_ebgp_multihop : result.to_i
|
|
162
162
|
end
|
|
163
163
|
|
|
164
164
|
def default_ebgp_multihop
|
|
@@ -166,8 +166,7 @@ module Cisco
|
|
|
166
166
|
end
|
|
167
167
|
|
|
168
168
|
def local_as=(val)
|
|
169
|
-
|
|
170
|
-
if asnum == default_local_as
|
|
169
|
+
if val == default_local_as
|
|
171
170
|
set_args_keys(state: 'no', local_as: '')
|
|
172
171
|
else
|
|
173
172
|
set_args_keys(state: '', local_as: val)
|
|
@@ -176,14 +175,11 @@ module Cisco
|
|
|
176
175
|
end
|
|
177
176
|
|
|
178
177
|
def local_as
|
|
179
|
-
|
|
180
|
-
return default_local_as if result.nil?
|
|
181
|
-
return result.first.to_i unless /\d+\.\d+$/.match(result.first)
|
|
182
|
-
result.first
|
|
178
|
+
config_get('bgp_neighbor', 'local_as', @get_args).to_s
|
|
183
179
|
end
|
|
184
180
|
|
|
185
181
|
def default_local_as
|
|
186
|
-
config_get_default('bgp_neighbor', 'local_as')
|
|
182
|
+
config_get_default('bgp_neighbor', 'local_as').to_s
|
|
187
183
|
end
|
|
188
184
|
|
|
189
185
|
def log_neighbor_changes=(val)
|
|
@@ -206,7 +202,7 @@ module Cisco
|
|
|
206
202
|
|
|
207
203
|
def default_log_neighbor_changes
|
|
208
204
|
result = config_get_default('bgp_neighbor', 'log_neighbor_changes')
|
|
209
|
-
result.to_sym
|
|
205
|
+
result.to_sym unless result.nil?
|
|
210
206
|
end
|
|
211
207
|
|
|
212
208
|
def low_memory_exempt=(val)
|
|
@@ -230,8 +226,7 @@ module Cisco
|
|
|
230
226
|
end
|
|
231
227
|
|
|
232
228
|
def maximum_peers
|
|
233
|
-
|
|
234
|
-
result.nil? ? default_maximum_peers : result.first.to_i
|
|
229
|
+
config_get('bgp_neighbor', 'maximum_peers', @get_args)
|
|
235
230
|
end
|
|
236
231
|
|
|
237
232
|
def default_maximum_peers
|
|
@@ -255,8 +250,7 @@ module Cisco
|
|
|
255
250
|
end
|
|
256
251
|
|
|
257
252
|
def password
|
|
258
|
-
|
|
259
|
-
result.nil? ? '' : result.first.to_s
|
|
253
|
+
config_get('bgp_neighbor', 'password', @get_args)
|
|
260
254
|
end
|
|
261
255
|
|
|
262
256
|
def default_password
|
|
@@ -265,11 +259,7 @@ module Cisco
|
|
|
265
259
|
|
|
266
260
|
def password_type
|
|
267
261
|
result = config_get('bgp_neighbor', 'password_type', @get_args)
|
|
268
|
-
|
|
269
|
-
default_password_type
|
|
270
|
-
else
|
|
271
|
-
Encryption.cli_to_symbol(result.first.to_i)
|
|
272
|
-
end
|
|
262
|
+
Encryption.cli_to_symbol(result.to_i)
|
|
273
263
|
end
|
|
274
264
|
|
|
275
265
|
def default_password_type
|
|
@@ -278,8 +268,7 @@ module Cisco
|
|
|
278
268
|
end
|
|
279
269
|
|
|
280
270
|
def remote_as=(val)
|
|
281
|
-
|
|
282
|
-
if asnum == default_remote_as
|
|
271
|
+
if val == default_remote_as
|
|
283
272
|
set_args_keys(state: 'no', remote_as: '')
|
|
284
273
|
else
|
|
285
274
|
set_args_keys(state: '', remote_as: val)
|
|
@@ -288,14 +277,11 @@ module Cisco
|
|
|
288
277
|
end
|
|
289
278
|
|
|
290
279
|
def remote_as
|
|
291
|
-
|
|
292
|
-
return default_remote_as if result.nil?
|
|
293
|
-
return result.first.to_i unless /\d+\.\d+$/.match(result.first)
|
|
294
|
-
result.first
|
|
280
|
+
config_get('bgp_neighbor', 'remote_as', @get_args).to_s
|
|
295
281
|
end
|
|
296
282
|
|
|
297
283
|
def default_remote_as
|
|
298
|
-
config_get_default('bgp_neighbor', 'remote_as')
|
|
284
|
+
config_get_default('bgp_neighbor', 'remote_as').to_s
|
|
299
285
|
end
|
|
300
286
|
|
|
301
287
|
def remove_private_as=(val)
|
|
@@ -362,7 +348,7 @@ module Cisco
|
|
|
362
348
|
|
|
363
349
|
def timers_keepalive_hold
|
|
364
350
|
match = config_get('bgp_neighbor', 'timers_keepalive_hold', @get_args)
|
|
365
|
-
match.nil? ? default_timers_keepalive_hold : match
|
|
351
|
+
match.nil? ? default_timers_keepalive_hold : match
|
|
366
352
|
end
|
|
367
353
|
|
|
368
354
|
def timers_keepalive
|
|
@@ -414,8 +400,7 @@ module Cisco
|
|
|
414
400
|
|
|
415
401
|
def update_source
|
|
416
402
|
result = config_get('bgp_neighbor', 'update_source', @get_args)
|
|
417
|
-
|
|
418
|
-
result.first.downcase.strip
|
|
403
|
+
result.downcase.strip
|
|
419
404
|
end
|
|
420
405
|
|
|
421
406
|
def default_update_source
|