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.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +60 -1
  3. data/Gemfile +1 -1
  4. data/LICENSE +1 -1
  5. data/README.md +1 -1
  6. data/cisco_node_utils.gemspec +1 -1
  7. data/docs/README-develop-node-utils-APIs.md +2 -0
  8. data/docs/README-maintainers.md +45 -80
  9. data/lib/cisco_node_utils/ace.rb +24 -43
  10. data/lib/cisco_node_utils/bfd_global.rb +1 -0
  11. data/lib/cisco_node_utils/bgp_af_aggr_addr.rb +207 -0
  12. data/lib/cisco_node_utils/bgp_neighbor.rb +8 -5
  13. data/lib/cisco_node_utils/bgp_neighbor_af.rb +8 -6
  14. data/lib/cisco_node_utils/cisco_cmn_utils.rb +40 -0
  15. data/lib/cisco_node_utils/cmd_ref/bfd_global.yaml +1 -1
  16. data/lib/cisco_node_utils/cmd_ref/bgp.yaml +8 -4
  17. data/lib/cisco_node_utils/cmd_ref/bgp_af_aa.yaml +38 -0
  18. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor.yaml +9 -4
  19. data/lib/cisco_node_utils/cmd_ref/bgp_neighbor_af.yaml +8 -3
  20. data/lib/cisco_node_utils/cmd_ref/dhcp_relay_global.yaml +2 -1
  21. data/lib/cisco_node_utils/cmd_ref/feature.yaml +5 -0
  22. data/lib/cisco_node_utils/cmd_ref/interface.yaml +8 -0
  23. data/lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml +7 -3
  24. data/lib/cisco_node_utils/cmd_ref/inventory.yaml +3 -3
  25. data/lib/cisco_node_utils/cmd_ref/ntp_auth_key.yaml +10 -0
  26. data/lib/cisco_node_utils/cmd_ref/ntp_config.yaml +13 -0
  27. data/lib/cisco_node_utils/cmd_ref/ntp_server.yaml +10 -2
  28. data/lib/cisco_node_utils/cmd_ref/overlay_global.yaml +6 -1
  29. data/lib/cisco_node_utils/cmd_ref/route_map.yaml +8 -0
  30. data/lib/cisco_node_utils/cmd_ref/span_session.yaml +65 -0
  31. data/lib/cisco_node_utils/cmd_ref/stp_global.yaml +2 -1
  32. data/lib/cisco_node_utils/cmd_ref/vpc.yaml +22 -3
  33. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep.yaml +2 -1
  34. data/lib/cisco_node_utils/cmd_ref/vxlan_vtep_vni.yaml +6 -3
  35. data/lib/cisco_node_utils/cmd_ref/yum.yaml +48 -4
  36. data/lib/cisco_node_utils/command_reference.rb +5 -2
  37. data/lib/cisco_node_utils/feature.rb +14 -1
  38. data/lib/cisco_node_utils/interface.rb +13 -0
  39. data/lib/cisco_node_utils/interface_channel_group.rb +33 -25
  40. data/lib/cisco_node_utils/itd_device_group.rb +17 -37
  41. data/lib/cisco_node_utils/itd_service.rb +9 -32
  42. data/lib/cisco_node_utils/node.rb +12 -4
  43. data/lib/cisco_node_utils/ntp_auth_key.rb +67 -0
  44. data/lib/cisco_node_utils/ntp_config.rb +19 -1
  45. data/lib/cisco_node_utils/ntp_server.rb +28 -27
  46. data/lib/cisco_node_utils/route_map.rb +33 -51
  47. data/lib/cisco_node_utils/snmpuser.rb +2 -2
  48. data/lib/cisco_node_utils/span_session.rb +149 -0
  49. data/lib/cisco_node_utils/upgrade.rb +21 -17
  50. data/lib/cisco_node_utils/version.rb +2 -2
  51. data/lib/cisco_node_utils/vlan.rb +1 -1
  52. data/lib/cisco_node_utils/vpc.rb +40 -0
  53. data/lib/cisco_node_utils/yum.rb +136 -13
  54. data/spec/schema.yaml +2 -0
  55. data/tests/ciscotest.rb +36 -0
  56. data/tests/test_ace.rb +6 -0
  57. data/tests/test_bfd_global.rb +1 -7
  58. data/tests/test_bgp_af.rb +2 -2
  59. data/tests/test_bgp_af_aa.rb +108 -0
  60. data/tests/test_bgp_neighbor.rb +2 -1
  61. data/tests/test_bgp_neighbor_af.rb +6 -6
  62. data/tests/test_dhcp_relay_global.rb +1 -0
  63. data/tests/test_interface.rb +18 -2
  64. data/tests/test_interface_channel_group.rb +47 -0
  65. data/tests/test_interface_svi.rb +1 -1
  66. data/tests/test_ntp_auth_key.rb +77 -0
  67. data/tests/test_ntp_config.rb +51 -4
  68. data/tests/test_ntp_server.rb +69 -9
  69. data/tests/test_overlay_global.rb +1 -0
  70. data/tests/test_route_map.rb +13 -24
  71. data/tests/test_router_bgp.rb +14 -9
  72. data/tests/test_span_session.rb +155 -0
  73. data/tests/test_stp_global.rb +1 -0
  74. data/tests/test_upgrade.rb +2 -3
  75. data/tests/test_vlan.rb +24 -3
  76. data/tests/test_vlan_private.rb +1 -1
  77. data/tests/test_vpc.rb +42 -17
  78. data/tests/test_vxlan_vtep.rb +1 -0
  79. data/tests/test_vxlan_vtep_vni.rb +5 -1
  80. data/tests/test_yum.rb +7 -30
  81. data/tests/yum_package.yaml +20 -0
  82. 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
- @get_args = @set_args = { asnum: @asn, nbr: @nbr }
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
- _exclude: [N9k-F, N9k] # TBD: bug on n9k-f, n9k this is not working now
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, N7k]
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, N7k]
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, N7k]
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, N7k]
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
- context:
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
- context:
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, N7k]
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
- context:
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
- context:
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, N9k]
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
@@ -47,6 +47,11 @@ itd:
47
47
  get_value: '/^feature itd$/'
48
48
  set_value: "feature itd"
49
49
 
50
+ lacp:
51
+ kind: boolean
52
+ get_value: '/^feature lacp$/'
53
+ set_value: "feature lacp"
54
+
50
55
  nv_overlay:
51
56
  # N3k - native vxlan support in a future release
52
57
  _exclude: [N3k]
@@ -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
- get_value: '/ntp server (\S+)/'
23
- set_value: '<state> ntp server <ip> <prefer>'
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: [N3k, ios_xr]
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>"