cisco_node_utils 1.6.0 → 1.7.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/CHANGELOG.md +60 -1
- data/Gemfile +1 -1
- data/LICENSE +1 -1
- data/README.md +1 -1
- data/cisco_node_utils.gemspec +1 -1
- data/docs/README-develop-node-utils-APIs.md +2 -0
- data/docs/README-maintainers.md +45 -80
- data/lib/cisco_node_utils/ace.rb +24 -43
- data/lib/cisco_node_utils/bfd_global.rb +1 -0
- data/lib/cisco_node_utils/bgp_af_aggr_addr.rb +207 -0
- data/lib/cisco_node_utils/bgp_neighbor.rb +8 -5
- data/lib/cisco_node_utils/bgp_neighbor_af.rb +8 -6
- data/lib/cisco_node_utils/cisco_cmn_utils.rb +40 -0
- data/lib/cisco_node_utils/cmd_ref/bfd_global.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/bgp.yaml +8 -4
- data/lib/cisco_node_utils/cmd_ref/bgp_af_aa.yaml +38 -0
- data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +9 -4
- data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +8 -3
- data/lib/cisco_node_utils/cmd_ref/dhcp_relay_global.yaml +2 -1
- data/lib/cisco_node_utils/cmd_ref/feature.yaml +5 -0
- data/lib/cisco_node_utils/cmd_ref/interface.yaml +8 -0
- data/lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml +7 -3
- data/lib/cisco_node_utils/cmd_ref/inventory.yaml +3 -3
- data/lib/cisco_node_utils/cmd_ref/ntp_auth_key.yaml +10 -0
- data/lib/cisco_node_utils/cmd_ref/ntp_config.yaml +13 -0
- data/lib/cisco_node_utils/cmd_ref/ntp_server.yaml +10 -2
- data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +6 -1
- data/lib/cisco_node_utils/cmd_ref/route_map.yaml +8 -0
- data/lib/cisco_node_utils/cmd_ref/span_session.yaml +65 -0
- data/lib/cisco_node_utils/cmd_ref/stp_global.yaml +2 -1
- data/lib/cisco_node_utils/cmd_ref/vpc.yaml +22 -3
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +2 -1
- data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +6 -3
- data/lib/cisco_node_utils/cmd_ref/yum.yaml +48 -4
- data/lib/cisco_node_utils/command_reference.rb +5 -2
- data/lib/cisco_node_utils/feature.rb +14 -1
- data/lib/cisco_node_utils/interface.rb +13 -0
- data/lib/cisco_node_utils/interface_channel_group.rb +33 -25
- data/lib/cisco_node_utils/itd_device_group.rb +17 -37
- data/lib/cisco_node_utils/itd_service.rb +9 -32
- data/lib/cisco_node_utils/node.rb +12 -4
- data/lib/cisco_node_utils/ntp_auth_key.rb +67 -0
- data/lib/cisco_node_utils/ntp_config.rb +19 -1
- data/lib/cisco_node_utils/ntp_server.rb +28 -27
- data/lib/cisco_node_utils/route_map.rb +33 -51
- data/lib/cisco_node_utils/snmpuser.rb +2 -2
- data/lib/cisco_node_utils/span_session.rb +149 -0
- data/lib/cisco_node_utils/upgrade.rb +21 -17
- data/lib/cisco_node_utils/version.rb +2 -2
- data/lib/cisco_node_utils/vlan.rb +1 -1
- data/lib/cisco_node_utils/vpc.rb +40 -0
- data/lib/cisco_node_utils/yum.rb +136 -13
- data/spec/schema.yaml +2 -0
- data/tests/ciscotest.rb +36 -0
- data/tests/test_ace.rb +6 -0
- data/tests/test_bfd_global.rb +1 -7
- data/tests/test_bgp_af.rb +2 -2
- data/tests/test_bgp_af_aa.rb +108 -0
- data/tests/test_bgp_neighbor.rb +2 -1
- data/tests/test_bgp_neighbor_af.rb +6 -6
- data/tests/test_dhcp_relay_global.rb +1 -0
- data/tests/test_interface.rb +18 -2
- data/tests/test_interface_channel_group.rb +47 -0
- data/tests/test_interface_svi.rb +1 -1
- data/tests/test_ntp_auth_key.rb +77 -0
- data/tests/test_ntp_config.rb +51 -4
- data/tests/test_ntp_server.rb +69 -9
- data/tests/test_overlay_global.rb +1 -0
- data/tests/test_route_map.rb +13 -24
- data/tests/test_router_bgp.rb +14 -9
- data/tests/test_span_session.rb +155 -0
- data/tests/test_stp_global.rb +1 -0
- data/tests/test_upgrade.rb +2 -3
- data/tests/test_vlan.rb +24 -3
- data/tests/test_vlan_private.rb +1 -1
- data/tests/test_vpc.rb +42 -17
- data/tests/test_vxlan_vtep.rb +1 -0
- data/tests/test_vxlan_vtep_vni.rb +5 -1
- data/tests/test_yum.rb +7 -30
- data/tests/yum_package.yaml +20 -0
- metadata +13 -3
@@ -27,7 +27,7 @@ module Cisco
|
|
27
27
|
class RouterBgpNeighbor < NodeUtil
|
28
28
|
attr_reader :nbr, :vrf, :asn
|
29
29
|
|
30
|
-
def initialize(asn, vrf, nbr, instantiate=true)
|
30
|
+
def initialize(asn, vrf, nbr, ra=nil, instantiate=true)
|
31
31
|
fail TypeError unless nbr.is_a?(String)
|
32
32
|
# for IP/prefix format, such as "1.1.1.1/24" or "2000:123:38::34/64",
|
33
33
|
# we need to mask the address using prefix length, so that it becomes
|
@@ -35,7 +35,8 @@ module Cisco
|
|
35
35
|
@nbr = Utils.process_network_mask(nbr)
|
36
36
|
@asn = RouterBgp.validate_asnum(asn)
|
37
37
|
@vrf = vrf
|
38
|
-
@
|
38
|
+
@ra = ra
|
39
|
+
@get_args = @set_args = { asnum: @asn, nbr: @nbr, ra: @ra }
|
39
40
|
@get_args[:vrf] = @set_args[:vrf] = vrf if vrf != 'default'
|
40
41
|
|
41
42
|
create if instantiate
|
@@ -52,9 +53,9 @@ module Cisco
|
|
52
53
|
next if neighbor_list.nil?
|
53
54
|
|
54
55
|
hash[asn][vrf_id] = {}
|
55
|
-
neighbor_list.each do |nbr|
|
56
|
+
neighbor_list.each do |nbr, ra|
|
56
57
|
hash[asn][vrf_id][nbr] = RouterBgpNeighbor.new(asn, vrf_id,
|
57
|
-
nbr, false)
|
58
|
+
nbr, ra, false)
|
58
59
|
end
|
59
60
|
end
|
60
61
|
end
|
@@ -306,7 +307,9 @@ module Cisco
|
|
306
307
|
end
|
307
308
|
|
308
309
|
def remote_as
|
309
|
-
config_get('bgp_neighbor', 'remote_as', @get_args).to_s
|
310
|
+
tra = config_get('bgp_neighbor', 'remote_as', @get_args).to_s
|
311
|
+
tra = @ra if tra == default_remote_as && !@ra.nil?
|
312
|
+
tra
|
310
313
|
end
|
311
314
|
|
312
315
|
def default_remote_as
|
@@ -25,8 +25,8 @@ require_relative 'bgp'
|
|
25
25
|
module Cisco
|
26
26
|
# RouterBgpNeighborAF - node utility class for BGP per-neighbor, per-AF config
|
27
27
|
class RouterBgpNeighborAF < NodeUtil
|
28
|
-
def initialize(asn, vrf, nbr, af, instantiate=true)
|
29
|
-
validate_args(asn, vrf, nbr, af)
|
28
|
+
def initialize(asn, vrf, nbr, af, ra=nil, instantiate=true)
|
29
|
+
validate_args(asn, vrf, nbr, af, ra)
|
30
30
|
create if instantiate
|
31
31
|
end
|
32
32
|
|
@@ -42,15 +42,16 @@ module Cisco
|
|
42
42
|
|
43
43
|
nbrs = config_get('bgp_neighbor', 'all_neighbors', get_args)
|
44
44
|
next if nbrs.nil?
|
45
|
-
nbrs.each do |nbr|
|
45
|
+
nbrs.each do |nbr, ra|
|
46
46
|
af_hash[asn][vrf][nbr] = {}
|
47
47
|
get_args[:nbr] = nbr
|
48
|
+
get_args[:ra] = ra
|
48
49
|
afs = config_get('bgp_neighbor_af', 'all_afs', get_args)
|
49
50
|
|
50
51
|
next if afs.nil?
|
51
52
|
afs.each do |af|
|
52
53
|
af_hash[asn][vrf][nbr][af] =
|
53
|
-
RouterBgpNeighborAF.new(asn, vrf, nbr, af, false)
|
54
|
+
RouterBgpNeighborAF.new(asn, vrf, nbr, af, ra, false)
|
54
55
|
end
|
55
56
|
end
|
56
57
|
end
|
@@ -62,7 +63,7 @@ module Cisco
|
|
62
63
|
return {}
|
63
64
|
end
|
64
65
|
|
65
|
-
def validate_args(asn, vrf, nbr, af)
|
66
|
+
def validate_args(asn, vrf, nbr, af, ra)
|
66
67
|
fail ArgumentError unless
|
67
68
|
vrf.is_a?(String) && (vrf.length > 0)
|
68
69
|
fail ArgumentError unless
|
@@ -81,12 +82,13 @@ module Cisco
|
|
81
82
|
@asn = RouterBgp.validate_asnum(asn)
|
82
83
|
@vrf = vrf
|
83
84
|
@nbr = nbr
|
85
|
+
@ra = ra
|
84
86
|
@afi, @safi = af
|
85
87
|
set_args_keys_default
|
86
88
|
end
|
87
89
|
|
88
90
|
def set_args_keys_default
|
89
|
-
keys = { asnum: @asn, nbr: @nbr, afi: @afi, safi: @safi }
|
91
|
+
keys = { asnum: @asn, nbr: @nbr, ra: @ra, afi: @afi, safi: @safi }
|
90
92
|
keys[:vrf] = @vrf unless @vrf == 'default'
|
91
93
|
@get_args = @set_args = keys
|
92
94
|
end
|
@@ -367,5 +367,45 @@ module Cisco
|
|
367
367
|
value.start_with?('"') && value.end_with?('"')
|
368
368
|
value
|
369
369
|
end # add_quotes
|
370
|
+
|
371
|
+
# This method is used in config_get for CLIs which
|
372
|
+
# have multiple properties in the same output
|
373
|
+
# Given a match_method which defines regex pattern and the
|
374
|
+
# match criteria, this method, extracts the value of
|
375
|
+
# a property with or without a prefix.
|
376
|
+
# For ex. if the regex pattern is something like:
|
377
|
+
# (?<action>\S+)?
|
378
|
+
# the property to extract is action and prefix is nil
|
379
|
+
# for (?<src_port>range \S+)
|
380
|
+
# the property to extract is src_port and prefix is range
|
381
|
+
def self.extract_value(match_method, prop, prefix=nil)
|
382
|
+
prefix = prop if prefix.nil?
|
383
|
+
mm = match_method
|
384
|
+
|
385
|
+
return nil if mm.nil?
|
386
|
+
|
387
|
+
return nil unless mm.names.include?(prop)
|
388
|
+
|
389
|
+
# extract and return value that follows prefix + <space>
|
390
|
+
regexp = Regexp.new("#{Regexp.escape(prefix)} (?<extracted>.*)")
|
391
|
+
value_match = regexp.match(mm[prop])
|
392
|
+
return nil if value_match.nil?
|
393
|
+
value_match[:extracted]
|
394
|
+
end
|
395
|
+
|
396
|
+
# This method is used in config_set for CLIs which
|
397
|
+
# can set multiple properties using the same CLI.
|
398
|
+
# This method attaches prefix to the given property
|
399
|
+
# when the prefix is different from the property name
|
400
|
+
# else it attaches property name itself. It also
|
401
|
+
# appends the value to be set.
|
402
|
+
# For ex. if the set_value is <precedence> <time_range>
|
403
|
+
# the prop for precedence could be 'precedence', and
|
404
|
+
# for time_range, the prop and prefix could be 'time_range'
|
405
|
+
# and 'time-range'
|
406
|
+
def self.attach_prefix(val, prop, prefix=nil)
|
407
|
+
prefix = prop.to_s if prefix.nil?
|
408
|
+
val.to_s.empty? ? val : "#{prefix} #{val}"
|
409
|
+
end
|
370
410
|
end # class Utils
|
371
411
|
end # module Cisco
|
@@ -43,7 +43,7 @@ fabricpath_vlan:
|
|
43
43
|
default_value: 1
|
44
44
|
|
45
45
|
interval:
|
46
|
-
|
46
|
+
os_version: 'N9k-F:7.0.3.F2.1; N9k:7.0.3.I6.1'
|
47
47
|
get_value: '/^bfd interval (\d+) min_rx (\d+) multiplier (\d+)$/'
|
48
48
|
set_value: '<state> bfd interval <interval> min_rx <min_rx> multiplier <multiplier>'
|
49
49
|
N3k:
|
@@ -125,13 +125,15 @@ disable_policy_batching:
|
|
125
125
|
default_value: false
|
126
126
|
|
127
127
|
disable_policy_batching_ipv4:
|
128
|
-
_exclude: [ios_xr, N5k, N6k
|
128
|
+
_exclude: [ios_xr, N5k, N6k]
|
129
|
+
os_version: 'N7k:8.1.1'
|
129
130
|
get_value: '/^disable-policy-batching ipv4 prefix-list (\S+)$/'
|
130
131
|
set_value: '<state> disable-policy-batching ipv4 prefix-list <prefix_list>'
|
131
132
|
default_value: ""
|
132
133
|
|
133
134
|
disable_policy_batching_ipv6:
|
134
|
-
_exclude: [ios_xr, N5k, N6k
|
135
|
+
_exclude: [ios_xr, N5k, N6k]
|
136
|
+
os_version: 'N7k:8.1.1'
|
135
137
|
get_value: '/^disable-policy-batching ipv6 prefix-list (\S+)$/'
|
136
138
|
set_value: '<state> disable-policy-batching ipv6 prefix-list <prefix_list>'
|
137
139
|
default_value: ""
|
@@ -275,7 +277,8 @@ maxas_limit:
|
|
275
277
|
|
276
278
|
neighbor_down_fib_accelerate:
|
277
279
|
# Note: Does not exist in IOS XR
|
278
|
-
_exclude: [ios_xr, N5k, N6k
|
280
|
+
_exclude: [ios_xr, N5k, N6k]
|
281
|
+
os_version: 'N7k:8.1.1'
|
279
282
|
kind: boolean
|
280
283
|
get_value: 'neighbor-down fib-accelerate'
|
281
284
|
set_value: '<state> neighbor-down fib-accelerate'
|
@@ -297,7 +300,8 @@ process_initialized:
|
|
297
300
|
get_value: '/^BGP routing table information/'
|
298
301
|
|
299
302
|
reconnect_interval:
|
300
|
-
_exclude: [ios_xr, N5k, N6k
|
303
|
+
_exclude: [ios_xr, N5k, N6k]
|
304
|
+
os_version: 'N7k:8.1.1'
|
301
305
|
kind: int
|
302
306
|
get_value: 'reconnect-interval (\d+)'
|
303
307
|
set_value: '<state> reconnect-interval <seconds>'
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# bgp_af_aa.yaml
|
2
|
+
---
|
3
|
+
_exclude: [ios_xr]
|
4
|
+
|
5
|
+
_template:
|
6
|
+
context:
|
7
|
+
- "router bgp <asnum>"
|
8
|
+
- '(?)vrf <vrf>'
|
9
|
+
- 'address-family <afi> <safi>'
|
10
|
+
get_command: 'show running bgp all'
|
11
|
+
|
12
|
+
advertise_map:
|
13
|
+
kind: string
|
14
|
+
default_value: ''
|
15
|
+
|
16
|
+
aggr_addr:
|
17
|
+
get_value: '/^aggregate-address <address> (.*)$/'
|
18
|
+
set_value: "<state> aggregate-address <address> <as_set> <summ> <advertise> <suppress> <attribute>"
|
19
|
+
|
20
|
+
all_aa:
|
21
|
+
multiple: true
|
22
|
+
get_value: '/^aggregate-address (\S+)/'
|
23
|
+
|
24
|
+
as_set:
|
25
|
+
kind: boolean
|
26
|
+
default_value: false
|
27
|
+
|
28
|
+
attribute_map:
|
29
|
+
kind: string
|
30
|
+
default_value: ''
|
31
|
+
|
32
|
+
summary_only:
|
33
|
+
kind: boolean
|
34
|
+
default_value: false
|
35
|
+
|
36
|
+
suppress_map:
|
37
|
+
kind: string
|
38
|
+
default_value: ''
|
@@ -5,7 +5,11 @@ _template:
|
|
5
5
|
get_command: "show running router bgp"
|
6
6
|
nexus:
|
7
7
|
get_command: "show running bgp all"
|
8
|
-
|
8
|
+
get_context:
|
9
|
+
- "router bgp <asnum>"
|
10
|
+
- "(?)vrf <vrf>"
|
11
|
+
- "neighbor <nbr>(?: remote-as <ra>)?"
|
12
|
+
set_context:
|
9
13
|
- "router bgp <asnum>"
|
10
14
|
- "(?)vrf <vrf>"
|
11
15
|
- "neighbor <nbr>"
|
@@ -15,10 +19,10 @@ af:
|
|
15
19
|
|
16
20
|
all_neighbors:
|
17
21
|
multiple: true
|
18
|
-
|
22
|
+
get_context:
|
19
23
|
- "router bgp <asnum>"
|
20
24
|
- "(?)vrf <vrf>"
|
21
|
-
get_value: '/^neighbor (\S+)
|
25
|
+
get_value: '/^neighbor (\S+)(?:\s+remote-as (\d+))?$/'
|
22
26
|
|
23
27
|
bfd:
|
24
28
|
_exclude: [ios_xr]
|
@@ -71,7 +75,8 @@ local_as:
|
|
71
75
|
default_value: 0
|
72
76
|
|
73
77
|
log_neighbor_changes:
|
74
|
-
_exclude: [ios_xr, N5k, N6k
|
78
|
+
_exclude: [ios_xr, N5k, N6k]
|
79
|
+
os_version: 'N7k:8.1.1'
|
75
80
|
multiple: true # not actually, but we get an array of matches
|
76
81
|
auto_default: false
|
77
82
|
get_value: '/^log-neighbor-changes\s+??(\S+)?\s+??$/'
|
@@ -5,7 +5,12 @@ _template:
|
|
5
5
|
get_command: 'show running bgp all'
|
6
6
|
ios_xr:
|
7
7
|
get_command: 'show run router bgp'
|
8
|
-
|
8
|
+
get_context:
|
9
|
+
- 'router bgp <asnum>'
|
10
|
+
- '(?)vrf <vrf>'
|
11
|
+
- 'neighbor <nbr>(?: remote-as <ra>)?'
|
12
|
+
- 'address-family <afi> <safi>'
|
13
|
+
set_context:
|
9
14
|
- 'router bgp <asnum>'
|
10
15
|
- '(?)vrf <vrf>'
|
11
16
|
- 'neighbor <nbr>'
|
@@ -40,10 +45,10 @@ advertise_map_non_exist:
|
|
40
45
|
|
41
46
|
all_afs:
|
42
47
|
multiple: true
|
43
|
-
|
48
|
+
get_context:
|
44
49
|
- 'router bgp <asnum>'
|
45
50
|
- '(?)vrf <vrf>'
|
46
|
-
- 'neighbor <nbr>'
|
51
|
+
- 'neighbor <nbr>(?: remote-as <ra>)?'
|
47
52
|
get_value: '/^address-family (\S+) (\S+)$/'
|
48
53
|
|
49
54
|
allowas_in:
|
@@ -76,7 +76,8 @@ ipv4_sub_option_circuit_id_custom:
|
|
76
76
|
default_value: false
|
77
77
|
|
78
78
|
ipv4_sub_option_circuit_id_string:
|
79
|
-
_exclude: [N5k, N6k, N7k, N9k-F
|
79
|
+
_exclude: [N5k, N6k, N7k, N9k-F]
|
80
|
+
os_version: 'N9k:7.0.3.I6.1'
|
80
81
|
get_value: '/^ip dhcp relay sub-option circuit-id format-type string format (.*)$/'
|
81
82
|
set_value: "<state> ip dhcp relay sub-option circuit-id format-type string <format> <word>"
|
82
83
|
default_value: false
|
@@ -360,6 +360,14 @@ pim_bfd:
|
|
360
360
|
set_value: "<state> ip pim bfd-instance"
|
361
361
|
default_value: false
|
362
362
|
|
363
|
+
purge_config:
|
364
|
+
_exclude: [ios_xr]
|
365
|
+
multiple:
|
366
|
+
set_context: ~
|
367
|
+
set_value: "default interface <name>"
|
368
|
+
get_command: "show running interface"
|
369
|
+
get_value: '/(.*)/'
|
370
|
+
|
363
371
|
pvlan_any:
|
364
372
|
multiple:
|
365
373
|
get_value: '/switchport private-vlan/'
|
@@ -13,15 +13,19 @@ all_interfaces:
|
|
13
13
|
get_value: '/^interface (Ethernet.*)/i'
|
14
14
|
|
15
15
|
channel_group:
|
16
|
-
kind: int
|
17
16
|
default_value: false
|
18
17
|
nexus:
|
19
|
-
get_value: '/^channel-group (\d+)
|
20
|
-
set_value: '<state> channel-group <group> <force>'
|
18
|
+
get_value: '/^channel-group (\d+)(?:\s+mode\s+(\S+))?$/'
|
19
|
+
set_value: '<state> channel-group <group> <force> <mode> <val>'
|
21
20
|
ios_xr:
|
21
|
+
kind: int
|
22
22
|
get_value: '/^bundle id (\d+).*$/'
|
23
23
|
set_value: '<state> bundle id <group>'
|
24
24
|
|
25
|
+
channel_group_mode:
|
26
|
+
_exclude: [ios_xr]
|
27
|
+
default_value: false
|
28
|
+
|
25
29
|
description:
|
26
30
|
kind: string
|
27
31
|
get_value: '/^description (.*)/'
|
@@ -21,16 +21,16 @@ productid:
|
|
21
21
|
ios_xr:
|
22
22
|
get_value: '/"Rack 0".*\n.*PID: ([^ ,]+)/'
|
23
23
|
nexus:
|
24
|
-
get_value: ["name Chassis", "productid"]
|
24
|
+
get_value: ["name \"Chassis\"", "productid"]
|
25
25
|
|
26
26
|
serialnum:
|
27
27
|
ios_xr:
|
28
28
|
get_value: '/"Rack 0".*\n.*SN: ([^ ,]+)/'
|
29
29
|
nexus:
|
30
|
-
get_value: ["name Chassis", "serialnum"]
|
30
|
+
get_value: ["name \"Chassis\"", "serialnum"]
|
31
31
|
|
32
32
|
versionid:
|
33
33
|
ios_xr:
|
34
34
|
get_value: '/"Rack 0".*\n.*VID: ([^ ,]+)/'
|
35
35
|
nexus:
|
36
|
-
get_value: ["name Chassis", "vendorid"]
|
36
|
+
get_value: ["name \"Chassis\"", "vendorid"]
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# ntp_auth_key
|
2
|
+
---
|
3
|
+
key:
|
4
|
+
multiple: true
|
5
|
+
default_value: []
|
6
|
+
nexus:
|
7
|
+
get_command: "show running-config all | include 'ntp authentication-key'"
|
8
|
+
# Returns <key>, <algorithm>, <password>, <mode>
|
9
|
+
get_value: '/^ntp authentication-key (\d+) (\w+) (\S+) (\d)/'
|
10
|
+
set_value: '<state> ntp authentication-key <key> <algorithm> <password> <mode>'
|
@@ -3,6 +3,13 @@
|
|
3
3
|
_template:
|
4
4
|
get_command: "show running-config ntp"
|
5
5
|
|
6
|
+
authenticate:
|
7
|
+
kind: boolean
|
8
|
+
default_value: false
|
9
|
+
nexus:
|
10
|
+
get_value: '/^ntp authenticate$/'
|
11
|
+
set_value: "<state> ntp authenticate"
|
12
|
+
|
6
13
|
source_interface:
|
7
14
|
default_value: ~
|
8
15
|
nexus:
|
@@ -12,3 +19,9 @@ source_interface:
|
|
12
19
|
context: ["ntp"]
|
13
20
|
get_value: '/source\s+(.*)$/'
|
14
21
|
set_value: '<state> source <source_interface>'
|
22
|
+
|
23
|
+
trusted_key:
|
24
|
+
multiple:
|
25
|
+
nexus:
|
26
|
+
get_value: '/^ntp trusted-key\s+(\d+)$/'
|
27
|
+
set_value: "<state> ntp trusted-key <key>"
|
@@ -5,6 +5,13 @@ _template:
|
|
5
5
|
context: ["ntp"]
|
6
6
|
get_command: "show running-config ntp"
|
7
7
|
|
8
|
+
key:
|
9
|
+
multiple: true
|
10
|
+
default_value: []
|
11
|
+
nexus:
|
12
|
+
get_command: "show running-config all | include 'ntp server(.*)(key)'"
|
13
|
+
get_value: '/ntp server (\S+)/'
|
14
|
+
|
8
15
|
prefer:
|
9
16
|
multiple: true
|
10
17
|
default_value: []
|
@@ -19,8 +26,9 @@ server:
|
|
19
26
|
default_value: []
|
20
27
|
nexus:
|
21
28
|
get_command: "show running-config all | include 'ntp server'"
|
22
|
-
|
23
|
-
|
29
|
+
# Returns <ip>, <prefer>, <vrf>, <key>, <minpoll>, <maxpoll>
|
30
|
+
get_value: '/^(?:ntp server )([^\s]+) (prefer )?(?:(?:use-vrf )([^\s]+))?(?:(?: key )(\d+))?(?:(?: minpoll )(\d+))?(?:(?: maxpoll )(\d+))?/'
|
31
|
+
set_value: '<state> ntp server <ip> <prefer> <vrf> <key> <minpoll> <maxpoll>'
|
24
32
|
ios_xr:
|
25
33
|
get_value: '/server (?:ipv6 )?(\S+)/'
|
26
34
|
set_value: '<state> server <ip> <prefer>'
|
@@ -1,8 +1,9 @@
|
|
1
1
|
# overlay_global
|
2
2
|
---
|
3
|
-
_exclude: [
|
3
|
+
_exclude: [ios_xr]
|
4
4
|
|
5
5
|
anycast_gateway_mac:
|
6
|
+
_exclude: [N3k]
|
6
7
|
kind: string
|
7
8
|
get_command: "show running all | inc 'fabric forwarding'"
|
8
9
|
get_value: '/^fabric forwarding anycast-gateway-mac (\S+)$/'
|
@@ -10,17 +11,21 @@ anycast_gateway_mac:
|
|
10
11
|
default_value: ""
|
11
12
|
|
12
13
|
dup_host_ip_addr_detection:
|
14
|
+
_exclude: [N3k]
|
13
15
|
get_command: "show running all | inc 'fabric forwarding'"
|
14
16
|
get_value: '/^fabric forwarding dup-host-ip-addr-detection (\d+) (\d+)$/'
|
15
17
|
set_value: "<state> fabric forwarding dup-host-ip-addr-detection <host_moves> <timeout>"
|
16
18
|
|
17
19
|
dup_host_ip_addr_detection_host_moves:
|
20
|
+
_exclude: [N3k]
|
18
21
|
default_value: 5
|
19
22
|
|
20
23
|
dup_host_ip_addr_detection_timeout:
|
24
|
+
_exclude: [N3k]
|
21
25
|
default_value: 180
|
22
26
|
|
23
27
|
dup_host_mac_detection:
|
28
|
+
os_version: 'N3k:7.0.3.I6.1'
|
24
29
|
get_command: 'show running | i l2rib'
|
25
30
|
get_value: '/^l2rib dup-host-mac-detection (\d+) (\d+)$/'
|
26
31
|
set_value: "l2rib dup-host-mac-detection <host_moves> <timeout>"
|