cisco_node_utils 2.0.2 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +37 -0
- data/lib/cisco_node_utils/bfd_global.rb +4 -0
- data/lib/cisco_node_utils/cisco_cmn_utils.rb +25 -0
- data/lib/cisco_node_utils/cmd_ref/interface.yaml +18 -18
- data/lib/cisco_node_utils/cmd_ref/interface_channel_group.yaml +4 -1
- data/lib/cisco_node_utils/cmd_ref/interface_evpn_multisite.yaml +1 -1
- data/lib/cisco_node_utils/cmd_ref/interface_ospf.yaml +17 -15
- data/lib/cisco_node_utils/interface.rb +117 -118
- data/lib/cisco_node_utils/interface_channel_group.rb +17 -8
- data/lib/cisco_node_utils/interface_evpn_multisite.rb +15 -6
- data/lib/cisco_node_utils/interface_ospf.rb +126 -102
- data/lib/cisco_node_utils/itd_service.rb +8 -0
- data/lib/cisco_node_utils/node.rb +0 -1
- data/lib/cisco_node_utils/platform.rb +16 -32
- data/lib/cisco_node_utils/version.rb +1 -1
- data/lib/cisco_node_utils/vlan.rb +1 -2
- data/lib/cisco_node_utils/vxlan_vtep.rb +1 -1
- data/tests/test_interface.rb +74 -13
- data/tests/test_interface_bdi.rb +2 -2
- data/tests/test_interface_channel_group.rb +24 -17
- data/tests/test_interface_evpn_multisite.rb +35 -0
- data/tests/test_interface_ospf.rb +71 -3
- data/tests/test_itd_service.rb +16 -4
- data/tests/test_node_ext.rb +4 -1
- data/tests/test_portchannel_global.rb +3 -0
- data/tests/test_router_ospf_vrf.rb +2 -34
- data/tests/test_stp_global.rb +4 -0
- metadata +3 -6
- data/lib/cisco_node_utils/cmd_ref/DEPRECATED.yaml +0 -118
- data/lib/cisco_node_utils/interface_DEPRECATED.rb +0 -518
- data/lib/cisco_node_utils/vlan_DEPRECATED.rb +0 -108
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 25ab64767af23a6f2d3b6ae7e18df87fee6b1021
|
4
|
+
data.tar.gz: '0997f3d16c79fe25c8f9195cf8a16ba2a73d581e'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fecc5acce031898494571f1051cfde121631eabe8e4645fce634018a9192efd9a4cad0ab53618660c054ec79e2896c88021606ae69f48256ac96015a8727e3f8
|
7
|
+
data.tar.gz: bb4178e4b416a3f7ad3439db4e65801158e06463a75a271590f27b2faca2d279365d6e1f9594790fd452d81ede0cbfd84c4558e766593e0b163356a46e0d5907
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,42 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
## [v2.1.0]
|
5
|
+
|
6
|
+
### Added
|
7
|
+
|
8
|
+
### Changed
|
9
|
+
|
10
|
+
### Removed
|
11
|
+
- Removal of deprecated `interface` `private-vlan` properties.
|
12
|
+
|
13
|
+
| Deprecated/Removed Name | New Name |
|
14
|
+
|:---|:---|
|
15
|
+
| `private_vlan_mapping` | `pvlan_mapping`
|
16
|
+
| `switchport_mode_private_vlan_host` | `switchport_pvlan_host`, `switchport_pvlan_promiscuous`,
|
17
|
+
| `switchport_mode_private_vlan_host_association` | `switchport_pvlan_host_association`
|
18
|
+
| `switchport_mode_private_vlan_host_promiscous` | `switchport_pvlan_mapping`
|
19
|
+
| `switchport_mode_private_vlan_trunk_promiscuous`| `switchport_pvlan_trunk_promiscuous`
|
20
|
+
| `switchport_mode_private_vlan_trunk_secondary` | `switchport_pvlan_trunk_secondary`
|
21
|
+
| `switchport_private_vlan_association_trunk` | `switchport_pvlan_trunk_association`
|
22
|
+
| `switchport_private_vlan_mapping_trunk` | `switchport_pvlan_mapping_trunk`
|
23
|
+
| `switchport_private_vlan_trunk_allowed_vlan` | `switchport_pvlan_trunk_allowed_vlan`
|
24
|
+
| `switchport_private_vlan_trunk_native_vlan` | `switchport_pvlan_trunk_native_vlan`
|
25
|
+
|
26
|
+
- Removal of deprecated `vlan` `private-vlan` properties.
|
27
|
+
|
28
|
+
| Deprecated/Removed Name | New Name |
|
29
|
+
|:---|:---|
|
30
|
+
| `private_vlan_association` | `pvlan_association`
|
31
|
+
| `private_vlan_type` | `pvlan_type`
|
32
|
+
|
33
|
+
- Removed interface attribute:
|
34
|
+
* `purge_config`
|
35
|
+
|
36
|
+
### Issues Addressed
|
37
|
+
|
38
|
+
- [Very slow execution when managing interfaces #496](https://github.com/cisco/cisco-network-puppet-module/issues/496)
|
39
|
+
|
4
40
|
## [v2.0.2]
|
5
41
|
|
6
42
|
### Issues Addressed
|
@@ -621,6 +657,7 @@ Cisco::Environment.add_env('default', env)
|
|
621
657
|
[git-flow]: https://github.com/petervanderdoes/gitflow-avh
|
622
658
|
[SimpleCov]: https://github.com/colszowka/simplecov
|
623
659
|
|
660
|
+
[v2.1.0]: https://github.com/cisco/cisco-network-node-utils/compare/v2.0.2...v2.1.0
|
624
661
|
[v2.0.2]: https://github.com/cisco/cisco-network-node-utils/compare/v2.0.1...v2.0.2
|
625
662
|
[v2.0.1]: https://github.com/cisco/cisco-network-node-utils/compare/v2.0.0...v2.0.1
|
626
663
|
[v2.0.0]: https://github.com/cisco/cisco-network-node-utils/compare/v1.10.0...v2.0.0
|
@@ -146,6 +146,8 @@ module Cisco
|
|
146
146
|
end
|
147
147
|
|
148
148
|
def ipv4_slow_timer=(val)
|
149
|
+
# Only set the value if it's not already configured and default
|
150
|
+
return if val == default_ipv4_slow_timer && val == ipv4_slow_timer
|
149
151
|
set_args_keys(timer: val,
|
150
152
|
state: val == default_ipv4_slow_timer ? 'no' : '')
|
151
153
|
config_set('bfd_global', 'ipv4_slow_timer', @set_args)
|
@@ -160,6 +162,8 @@ module Cisco
|
|
160
162
|
end
|
161
163
|
|
162
164
|
def ipv6_slow_timer=(val)
|
165
|
+
# Only set the value if it's not already configured and default
|
166
|
+
return if val == default_ipv6_slow_timer && val == ipv6_slow_timer
|
163
167
|
set_args_keys(timer: val,
|
164
168
|
state: val == default_ipv6_slow_timer ? 'no' : '')
|
165
169
|
config_set('bfd_global', 'ipv6_slow_timer', @set_args)
|
@@ -415,5 +415,30 @@ module Cisco
|
|
415
415
|
prefix = prop.to_s if prefix.nil?
|
416
416
|
val.to_s.empty? ? val : "#{prefix} #{val}"
|
417
417
|
end
|
418
|
+
|
419
|
+
# Helper utility to normalize the interface name pattern to be filtered.
|
420
|
+
# This is only a problem on N7k which has to use a section filter
|
421
|
+
# due to a show run int bug (no 'all' keyword for some interfaces).
|
422
|
+
def self.normalize_intf_pattern(show_name)
|
423
|
+
return '' if show_name.nil? || show_name.empty?
|
424
|
+
require_relative 'platform'
|
425
|
+
return show_name unless Platform.hardware_type[/Nexus7/]
|
426
|
+
return show_name if show_name[-1] == '$' # already normalized
|
427
|
+
pat = show_name.downcase + '$'
|
428
|
+
case pat
|
429
|
+
when /ethernet/
|
430
|
+
pat.sub!(/ethernet/, 'Ethernet')
|
431
|
+
when /loopback/
|
432
|
+
pat.sub!(/loopback/, 'loopback')
|
433
|
+
when /port-channel/
|
434
|
+
pat.sub!(/port-channel/, 'port-channel')
|
435
|
+
when /vlan/
|
436
|
+
pat.sub!(/vlan/, 'Vlan')
|
437
|
+
else
|
438
|
+
# wildcard the first char of the name
|
439
|
+
pat.sub!(/./, '.')
|
440
|
+
end
|
441
|
+
pat
|
442
|
+
end
|
418
443
|
end # class Utils
|
419
444
|
end # module Cisco
|
@@ -3,9 +3,11 @@
|
|
3
3
|
_template:
|
4
4
|
context: ["interface <name>"]
|
5
5
|
ios_xr:
|
6
|
-
get_command: "show running interface"
|
6
|
+
get_command: "show running interface <name>"
|
7
7
|
nexus:
|
8
|
-
get_command: "show running interface all"
|
8
|
+
get_command: "show running interface <show_name> all"
|
9
|
+
N7k:
|
10
|
+
get_command: "show running interface all | section '^interface <show_name>'"
|
9
11
|
|
10
12
|
access_vlan:
|
11
13
|
_exclude: [ios_xr]
|
@@ -14,13 +16,20 @@ access_vlan:
|
|
14
16
|
set_value: "switchport access vlan <vlan>"
|
15
17
|
default_value: 1
|
16
18
|
|
19
|
+
all_count:
|
20
|
+
get_context: ~
|
21
|
+
get_command: "show running interface | incl ^interface | count"
|
22
|
+
get_value: '/\d+/'
|
23
|
+
|
17
24
|
all_interfaces:
|
18
25
|
multiple:
|
19
26
|
ios_xr:
|
20
27
|
get_command: 'show running all-interfaces'
|
21
28
|
get_value: '/^interface (.*)/'
|
22
29
|
nexus:
|
23
|
-
get_command: "show running-config interface | section '^interface'"
|
30
|
+
get_command: "show running-config interface <show_name> | section '^interface'"
|
31
|
+
N7k:
|
32
|
+
get_command: "show running interface all | section '^interface <show_name>'"
|
24
33
|
get_value: '/(.*)/'
|
25
34
|
get_context: ~
|
26
35
|
|
@@ -35,7 +44,7 @@ capabilities:
|
|
35
44
|
_exclude: [ios_xr]
|
36
45
|
multiple:
|
37
46
|
get_context: ["<name>"]
|
38
|
-
get_command: "show interface capabilities"
|
47
|
+
get_command: "show interface <name> capabilities"
|
39
48
|
get_value: '/(.*)/'
|
40
49
|
default_value: [] # :raw default
|
41
50
|
|
@@ -377,15 +386,6 @@ pim_bfd:
|
|
377
386
|
set_value: "<state> ip pim bfd-instance"
|
378
387
|
default_value: false
|
379
388
|
|
380
|
-
purge_config:
|
381
|
-
_exclude: [ios_xr]
|
382
|
-
multiple:
|
383
|
-
set_context: ~
|
384
|
-
set_value: "default interface <name>"
|
385
|
-
get_command: "show running interface"
|
386
|
-
get_value: '/(.*)/'
|
387
|
-
default_value: ~
|
388
|
-
|
389
389
|
pvlan_any:
|
390
390
|
multiple:
|
391
391
|
get_value: '/switchport private-vlan/'
|
@@ -498,14 +498,14 @@ stp_link_type:
|
|
498
498
|
|
499
499
|
stp_mst_cost:
|
500
500
|
multiple:
|
501
|
-
get_command: "show running interface"
|
501
|
+
get_command: "show running interface <name>"
|
502
502
|
get_value: '/^spanning-tree mst (.*) cost (.*)$/'
|
503
503
|
set_value: "<state> spanning-tree mst <range> cost <val>"
|
504
504
|
default_value: []
|
505
505
|
|
506
506
|
stp_mst_port_priority:
|
507
507
|
multiple:
|
508
|
-
get_command: "show running interface"
|
508
|
+
get_command: "show running interface <name>"
|
509
509
|
get_value: '/^spanning-tree mst (.*) port-priority (.*)$/'
|
510
510
|
set_value: "<state> spanning-tree mst <range> port-priority <val>"
|
511
511
|
default_value: []
|
@@ -522,21 +522,21 @@ stp_port_priority:
|
|
522
522
|
|
523
523
|
stp_port_type:
|
524
524
|
kind: string
|
525
|
-
get_command: "show running interface"
|
525
|
+
get_command: "show running interface <name>"
|
526
526
|
get_value: '/^spanning-tree port type (.*)$/'
|
527
527
|
set_value: "<state> spanning-tree port type <type>"
|
528
528
|
default_value: ~
|
529
529
|
|
530
530
|
stp_vlan_cost:
|
531
531
|
multiple:
|
532
|
-
get_command: "show running interface"
|
532
|
+
get_command: "show running interface <name>"
|
533
533
|
get_value: '/^spanning-tree vlan (.*) cost (.*)$/'
|
534
534
|
set_value: "<state> spanning-tree vlan <range> cost <val>"
|
535
535
|
default_value: []
|
536
536
|
|
537
537
|
stp_vlan_port_priority:
|
538
538
|
multiple:
|
539
|
-
get_command: "show running interface"
|
539
|
+
get_command: "show running interface <name>"
|
540
540
|
get_value: '/^spanning-tree vlan (.*) port-priority (.*)$/'
|
541
541
|
set_value: "<state> spanning-tree vlan <range> port-priority <val>"
|
542
542
|
default_value: []
|
@@ -5,7 +5,10 @@ _template:
|
|
5
5
|
ios_xr:
|
6
6
|
get_command: "show running interface"
|
7
7
|
nexus:
|
8
|
-
get_command: "show running interface all"
|
8
|
+
get_command: "show running interface <show_name> all"
|
9
|
+
N7k:
|
10
|
+
get_command: "show running interface all | section '^interface <show_name>'"
|
11
|
+
|
9
12
|
|
10
13
|
all_interfaces:
|
11
14
|
multiple:
|
@@ -3,8 +3,10 @@
|
|
3
3
|
_exclude: [ios_xr]
|
4
4
|
|
5
5
|
_template:
|
6
|
-
|
7
|
-
|
6
|
+
context: ['interface <name>']
|
7
|
+
get_command: 'show running interface <show_name> all'
|
8
|
+
N7k:
|
9
|
+
get_command: "show running interface all | section '^interface <show_name>'"
|
8
10
|
|
9
11
|
all_interfaces:
|
10
12
|
multiple:
|
@@ -13,7 +15,7 @@ all_interfaces:
|
|
13
15
|
|
14
16
|
area:
|
15
17
|
get_value: '/^\s*ip router ospf (\S+) area (\S+)/'
|
16
|
-
set_value:
|
18
|
+
set_value: '<state> ip router ospf <ospf_name> area <area>'
|
17
19
|
|
18
20
|
bfd:
|
19
21
|
# the config can be 'ip ospf bfd' or
|
@@ -22,31 +24,31 @@ bfd:
|
|
22
24
|
# match to get the whole config for checking
|
23
25
|
# the mode
|
24
26
|
get_value: '/^\s*ip ospf bfd *(?:\S*)$/'
|
25
|
-
set_value: '
|
27
|
+
set_value: '<state> ip ospf bfd <disable>'
|
26
28
|
default_value: ~
|
27
29
|
|
28
30
|
cost:
|
29
31
|
kind: int
|
30
32
|
get_value: '/^\s*ip ospf cost (\d+)/'
|
31
|
-
set_value:
|
33
|
+
set_value: '<state> ip ospf cost <cost>'
|
32
34
|
default_value: 0
|
33
35
|
|
34
36
|
dead_interval:
|
35
37
|
kind: int
|
36
38
|
get_value: '/^\s*ip ospf dead-interval (\d+)/'
|
37
|
-
set_value:
|
39
|
+
set_value: '<state> ip ospf dead-interval <interval>'
|
38
40
|
default_value: 40
|
39
41
|
|
40
42
|
hello_interval:
|
41
43
|
kind: int
|
42
44
|
get_value: '/^\s*ip ospf hello-interval (\d+)/'
|
43
|
-
set_value:
|
45
|
+
set_value: '<state> ip ospf hello-interval <interval>'
|
44
46
|
default_value: 10
|
45
47
|
|
46
48
|
message_digest:
|
47
49
|
kind: boolean
|
48
50
|
get_value: '/^\s*ip ospf authentication message-digest/'
|
49
|
-
set_value:
|
51
|
+
set_value: '<state> ip ospf authentication message-digest'
|
50
52
|
default_value: false
|
51
53
|
|
52
54
|
message_digest_alg_type:
|
@@ -63,7 +65,7 @@ message_digest_key_id:
|
|
63
65
|
default_value: 0
|
64
66
|
|
65
67
|
message_digest_key_set:
|
66
|
-
set_value:
|
68
|
+
set_value: '<state> ip ospf message-digest-key <keyid> <algtype> <enctype> <password>'
|
67
69
|
|
68
70
|
message_digest_password:
|
69
71
|
default_value: ~
|
@@ -72,12 +74,12 @@ message_digest_password:
|
|
72
74
|
mtu_ignore:
|
73
75
|
kind: boolean
|
74
76
|
get_value: '/^\s*ip ospf mtu-ignore/'
|
75
|
-
set_value:
|
77
|
+
set_value: '<state> ip ospf mtu-ignore'
|
76
78
|
default_value: false
|
77
79
|
|
78
80
|
network_type:
|
79
81
|
get_value: '/^\s*ip ospf network (\S+)$/'
|
80
|
-
set_value:
|
82
|
+
set_value: '<state> ip ospf network <network_type>'
|
81
83
|
|
82
84
|
network_type_default:
|
83
85
|
default_value: 'broadcast'
|
@@ -88,23 +90,23 @@ network_type_loopback_default:
|
|
88
90
|
passive_interface:
|
89
91
|
kind: boolean
|
90
92
|
get_value: '/^\s*ip ospf passive-interface/'
|
91
|
-
set_value:
|
93
|
+
set_value: '<state> ip ospf passive-interface'
|
92
94
|
default_value: false
|
93
95
|
|
94
96
|
priority:
|
95
97
|
kind: int
|
96
98
|
get_value: '/^\s*ip ospf priority (\d+)/'
|
97
|
-
set_value:
|
99
|
+
set_value: '<state> ip ospf priority <priority>'
|
98
100
|
default_value: 1
|
99
101
|
|
100
102
|
shutdown:
|
101
103
|
kind: boolean
|
102
104
|
get_value: '/^\s*ip ospf shutdown/'
|
103
|
-
set_value:
|
105
|
+
set_value: '<state> ip ospf shutdown'
|
104
106
|
default_value: false
|
105
107
|
|
106
108
|
transmit_delay:
|
107
109
|
kind: int
|
108
110
|
get_value: '/^\s*ip ospf transmit-delay (\d+)/'
|
109
|
-
set_value:
|
111
|
+
set_value: '<state> ip ospf transmit-delay <delay>'
|
110
112
|
default_value: 1
|
@@ -18,7 +18,6 @@ require_relative 'cisco_cmn_utils'
|
|
18
18
|
require_relative 'node_util'
|
19
19
|
require_relative 'vrf'
|
20
20
|
require_relative 'overlay_global'
|
21
|
-
require_relative 'interface_DEPRECATED'
|
22
21
|
|
23
22
|
# Cisco provider module
|
24
23
|
module Cisco
|
@@ -31,16 +30,8 @@ module Cisco
|
|
31
30
|
fabricpath: 'fabricpath',
|
32
31
|
}
|
33
32
|
|
34
|
-
# REMOVE THIS HASH WITH RELEASE 2.0.0
|
35
|
-
IF_DEPRECATED = {
|
36
|
-
host: 'host',
|
37
|
-
promiscuous: 'promiscuous',
|
38
|
-
secondary: 'secondary',
|
39
|
-
}
|
40
|
-
IF_SWITCHPORT_MODE.merge!(IF_DEPRECATED)
|
41
|
-
|
42
33
|
# Interface - node utility class for general interface config management
|
43
|
-
class Interface <
|
34
|
+
class Interface < NodeUtil
|
44
35
|
# Regexp to match various Ethernet interface variants:
|
45
36
|
# Ethernet
|
46
37
|
# GigabitEthernet
|
@@ -51,12 +42,18 @@ module Cisco
|
|
51
42
|
# Regexp to match various link bundle interface variants
|
52
43
|
PORTCHANNEL = Regexp.new('(port-channel|Bundle-Ether)', Regexp::IGNORECASE)
|
53
44
|
|
54
|
-
attr_reader :name, :state_default
|
45
|
+
attr_reader :name, :state_default, :show_name
|
55
46
|
|
56
|
-
def initialize(name, instantiate=true, default_state=false)
|
47
|
+
def initialize(name, instantiate=true, default_state=false, show_name=nil)
|
57
48
|
fail TypeError unless name.is_a?(String)
|
58
49
|
fail ArgumentError unless name.length > 0
|
50
|
+
|
51
|
+
# @name is used for context: keys only
|
52
|
+
# @show_name is used for get_command: keys; allows callers to limit
|
53
|
+
# show command to a single interface
|
59
54
|
@name = name.downcase
|
55
|
+
@show_name = show_name.nil? ? '' : Utils.normalize_intf_pattern(show_name)
|
56
|
+
@get_args = { name: @name, show_name: @show_name }
|
60
57
|
@smr = config_get('interface', 'stp_mst_range')
|
61
58
|
@svr = config_get('interface', 'stp_vlan_range')
|
62
59
|
@match_found = false
|
@@ -74,28 +71,43 @@ module Cisco
|
|
74
71
|
"interface #{name}"
|
75
72
|
end
|
76
73
|
|
77
|
-
def self.
|
74
|
+
def self.interface_count
|
75
|
+
config_get('interface', 'all_count').to_i
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.interfaces(opt=nil, show_name=nil)
|
78
79
|
hash = {}
|
79
|
-
|
80
|
+
show_name = Utils.normalize_intf_pattern(show_name)
|
81
|
+
begin
|
82
|
+
intf_list = config_get('interface', 'all_interfaces',
|
83
|
+
show_name: show_name)
|
84
|
+
rescue CliError => e
|
85
|
+
raise unless show_name
|
86
|
+
# ignore logical interfaces that do not exist
|
87
|
+
debug 'Interface.interfaces ignoring CliError => ' + e.to_s
|
88
|
+
end
|
80
89
|
return hash if intf_list.nil?
|
81
90
|
|
82
|
-
# Massage intf_list data into an array that is easy
|
83
|
-
# to
|
91
|
+
# Massage intf_list data into an array that is easy to work with.
|
92
|
+
# Use a MARKER to hide pesky 'interface' substrings
|
84
93
|
intf_list.collect! { |x| x.strip || x }
|
85
94
|
intf_list.delete('')
|
95
|
+
intf_list.collect! { |x| (x.sub('interface', '~!MARKER!~') unless x[/^interface /]) || x } # rubocop:disable Metrics/LineLength
|
86
96
|
intf_list = intf_list.join(' ').split('interface')
|
87
97
|
intf_list.delete('')
|
98
|
+
# Restore 'interface' substrings
|
99
|
+
intf_list.collect! { |x| x.sub('~!MARKER!~', 'interface') }
|
88
100
|
|
89
101
|
intf_list.each do |id|
|
90
102
|
int_data = id.strip.split(' ')
|
91
103
|
next if int_data[0].nil?
|
92
104
|
id = int_data[0].downcase
|
93
|
-
next if opt && filter(opt, id)
|
105
|
+
next if opt && filter(opt, id, show_name)
|
94
106
|
# If there are any additional options associated
|
95
107
|
# with this interface then it's in a non-default
|
96
108
|
# state.
|
97
109
|
default_state = int_data.size > 1 ? false : true
|
98
|
-
hash[id] = Interface.new(id, false, default_state)
|
110
|
+
hash[id] = Interface.new(id, false, default_state, show_name)
|
99
111
|
end
|
100
112
|
hash
|
101
113
|
end
|
@@ -103,11 +115,13 @@ module Cisco
|
|
103
115
|
# General-purpose filter for Interface.interfaces().
|
104
116
|
# filter: This may be overloaded in the future to allow a hash of filters.
|
105
117
|
# id: The interface name
|
118
|
+
# show_name: needed for get_command: <show_name>
|
106
119
|
# Return: true if the interface should be filtered out, false to keep it.
|
107
|
-
def self.filter(filter, id)
|
120
|
+
def self.filter(filter, id, show_name)
|
108
121
|
case filter
|
109
122
|
when :pvlan_any
|
110
|
-
return false if config_get('interface', 'pvlan_any',
|
123
|
+
return false if config_get('interface', 'pvlan_any',
|
124
|
+
name: id, show_name: show_name)
|
111
125
|
|
112
126
|
else
|
113
127
|
# Just a basic pattern filter (:ethernet, :loopback, etc)
|
@@ -132,7 +146,12 @@ module Cisco
|
|
132
146
|
# {"Model"=>"N7K-M132XP-12L", "Type"=>"10Gbase-SR", "Speed"=>"10,100,1000"}
|
133
147
|
#
|
134
148
|
def self.capabilities(intf, mode=:hash)
|
135
|
-
array =
|
149
|
+
array = []
|
150
|
+
begin
|
151
|
+
array = config_get('interface', 'capabilities', name: intf)
|
152
|
+
rescue CliError => e
|
153
|
+
raise unless e.clierror[/(Invalid command|Cmd exec error)/]
|
154
|
+
end
|
136
155
|
return array if mode == :raw
|
137
156
|
hash = {}
|
138
157
|
if array
|
@@ -169,7 +188,7 @@ module Cisco
|
|
169
188
|
end
|
170
189
|
|
171
190
|
def default?
|
172
|
-
state = config_get('interface', 'default',
|
191
|
+
state = config_get('interface', 'default', @get_args)
|
173
192
|
state.nil? ? true : false
|
174
193
|
end
|
175
194
|
|
@@ -193,7 +212,7 @@ module Cisco
|
|
193
212
|
|
194
213
|
def access_vlan
|
195
214
|
return nil if switchport_mode == :disabled
|
196
|
-
config_get('interface', 'access_vlan',
|
215
|
+
config_get('interface', 'access_vlan', @get_args)
|
197
216
|
end
|
198
217
|
|
199
218
|
def access_vlan=(vlan)
|
@@ -207,7 +226,7 @@ module Cisco
|
|
207
226
|
def bfd_echo
|
208
227
|
return nil unless Feature.bfd_enabled?
|
209
228
|
return nil if @name[/loop/i]
|
210
|
-
config_get('interface', 'bfd_echo',
|
229
|
+
config_get('interface', 'bfd_echo', @get_args)
|
211
230
|
end
|
212
231
|
|
213
232
|
def bfd_echo=(val)
|
@@ -227,7 +246,7 @@ module Cisco
|
|
227
246
|
end
|
228
247
|
|
229
248
|
def description
|
230
|
-
config_get('interface', 'description',
|
249
|
+
config_get('interface', 'description', @get_args)
|
231
250
|
end
|
232
251
|
|
233
252
|
def description=(desc)
|
@@ -246,7 +265,7 @@ module Cisco
|
|
246
265
|
end
|
247
266
|
|
248
267
|
def encapsulation_dot1q
|
249
|
-
config_get('interface', 'encapsulation_dot1q',
|
268
|
+
config_get('interface', 'encapsulation_dot1q', @get_args)
|
250
269
|
end
|
251
270
|
|
252
271
|
def encapsulation_dot1q=(val)
|
@@ -272,7 +291,7 @@ module Cisco
|
|
272
291
|
end
|
273
292
|
|
274
293
|
def fabric_forwarding_anycast_gateway
|
275
|
-
config_get('interface', 'fabric_forwarding_anycast_gateway',
|
294
|
+
config_get('interface', 'fabric_forwarding_anycast_gateway', @get_args)
|
276
295
|
end
|
277
296
|
|
278
297
|
def fabric_forwarding_anycast_gateway=(state)
|
@@ -298,7 +317,7 @@ module Cisco
|
|
298
317
|
end
|
299
318
|
|
300
319
|
def hsrp_bfd
|
301
|
-
config_get('interface', 'hsrp_bfd',
|
320
|
+
config_get('interface', 'hsrp_bfd', @get_args)
|
302
321
|
end
|
303
322
|
|
304
323
|
def hsrp_bfd=(val)
|
@@ -318,7 +337,7 @@ module Cisco
|
|
318
337
|
# hsrp delay minimum and reload are in the same CLI
|
319
338
|
# hsrp delay minimum 0 reload 0
|
320
339
|
def hsrp_delay
|
321
|
-
match = config_get('interface', 'hsrp_delay',
|
340
|
+
match = config_get('interface', 'hsrp_delay', @get_args)
|
322
341
|
match.nil? ? default_hsrp_delay : match.collect(&:to_i)
|
323
342
|
end
|
324
343
|
|
@@ -363,7 +382,7 @@ module Cisco
|
|
363
382
|
end
|
364
383
|
|
365
384
|
def hsrp_mac_refresh
|
366
|
-
config_get('interface', 'hsrp_mac_refresh',
|
385
|
+
config_get('interface', 'hsrp_mac_refresh', @get_args)
|
367
386
|
end
|
368
387
|
|
369
388
|
def hsrp_mac_refresh=(val)
|
@@ -379,7 +398,7 @@ module Cisco
|
|
379
398
|
end
|
380
399
|
|
381
400
|
def hsrp_use_bia
|
382
|
-
match = config_get('interface', 'hsrp_use_bia',
|
401
|
+
match = config_get('interface', 'hsrp_use_bia', @get_args)
|
383
402
|
return default_hsrp_use_bia unless match
|
384
403
|
match.include?('scope') ? :use_bia_intf : :use_bia
|
385
404
|
end
|
@@ -418,7 +437,7 @@ module Cisco
|
|
418
437
|
|
419
438
|
def hsrp_version
|
420
439
|
return nil if switchport_mode != :disabled || @name[/loop/i]
|
421
|
-
config_get('interface', 'hsrp_version',
|
440
|
+
config_get('interface', 'hsrp_version', @get_args)
|
422
441
|
end
|
423
442
|
|
424
443
|
def hsrp_version=(val)
|
@@ -431,7 +450,7 @@ module Cisco
|
|
431
450
|
end
|
432
451
|
|
433
452
|
def ipv4_acl_in
|
434
|
-
config_get('interface', 'ipv4_acl_in',
|
453
|
+
config_get('interface', 'ipv4_acl_in', @get_args)
|
435
454
|
end
|
436
455
|
|
437
456
|
def ipv4_acl_in=(val)
|
@@ -452,7 +471,7 @@ module Cisco
|
|
452
471
|
end
|
453
472
|
|
454
473
|
def ipv4_acl_out
|
455
|
-
config_get('interface', 'ipv4_acl_out',
|
474
|
+
config_get('interface', 'ipv4_acl_out', @get_args)
|
456
475
|
end
|
457
476
|
|
458
477
|
def ipv4_acl_out=(val)
|
@@ -494,7 +513,7 @@ module Cisco
|
|
494
513
|
end
|
495
514
|
|
496
515
|
def ipv4_addr_mask
|
497
|
-
val = config_get('interface', 'ipv4_addr_mask',
|
516
|
+
val = config_get('interface', 'ipv4_addr_mask', @get_args)
|
498
517
|
if val && platform == :ios_xr
|
499
518
|
# IOS XR reports address as <address> <bitmask> [secondary] but we
|
500
519
|
# want <address>/<length> [secondary]
|
@@ -569,7 +588,7 @@ module Cisco
|
|
569
588
|
end
|
570
589
|
|
571
590
|
def ipv4_arp_timeout
|
572
|
-
config_get('interface', ipv4_arp_timeout_lookup_string,
|
591
|
+
config_get('interface', ipv4_arp_timeout_lookup_string, @get_args)
|
573
592
|
end
|
574
593
|
|
575
594
|
def ipv4_arp_timeout=(timeout)
|
@@ -585,7 +604,7 @@ module Cisco
|
|
585
604
|
end
|
586
605
|
|
587
606
|
def ipv4_dhcp_relay_addr
|
588
|
-
config_get('interface', 'ipv4_dhcp_relay_addr',
|
607
|
+
config_get('interface', 'ipv4_dhcp_relay_addr', @get_args)
|
589
608
|
end
|
590
609
|
|
591
610
|
def ipv4_dhcp_relay_addr=(list)
|
@@ -610,7 +629,7 @@ module Cisco
|
|
610
629
|
|
611
630
|
def ipv4_dhcp_relay_info_trust
|
612
631
|
return nil if @name[/loop/i] || switchport_mode != :disabled
|
613
|
-
config_get('interface', 'ipv4_dhcp_relay_info_trust',
|
632
|
+
config_get('interface', 'ipv4_dhcp_relay_info_trust', @get_args)
|
614
633
|
end
|
615
634
|
|
616
635
|
def ipv4_dhcp_relay_info_trust=(state)
|
@@ -625,7 +644,7 @@ module Cisco
|
|
625
644
|
end
|
626
645
|
|
627
646
|
def ipv4_dhcp_relay_src_addr_hsrp
|
628
|
-
config_get('interface', 'ipv4_dhcp_relay_src_addr_hsrp',
|
647
|
+
config_get('interface', 'ipv4_dhcp_relay_src_addr_hsrp', @get_args)
|
629
648
|
end
|
630
649
|
|
631
650
|
def ipv4_dhcp_relay_src_addr_hsrp=(state)
|
@@ -640,7 +659,7 @@ module Cisco
|
|
640
659
|
end
|
641
660
|
|
642
661
|
def ipv4_dhcp_relay_src_intf
|
643
|
-
intf = config_get('interface', 'ipv4_dhcp_relay_src_intf',
|
662
|
+
intf = config_get('interface', 'ipv4_dhcp_relay_src_intf', @get_args)
|
644
663
|
# Normalize by downcasing and removing white space
|
645
664
|
intf = intf.downcase.delete(' ') if intf
|
646
665
|
intf
|
@@ -661,7 +680,7 @@ module Cisco
|
|
661
680
|
|
662
681
|
def ipv4_dhcp_relay_subnet_broadcast
|
663
682
|
return nil if @name[/loop/i] || switchport_mode != :disabled
|
664
|
-
config_get('interface', 'ipv4_dhcp_relay_subnet_broadcast',
|
683
|
+
config_get('interface', 'ipv4_dhcp_relay_subnet_broadcast', @get_args)
|
665
684
|
end
|
666
685
|
|
667
686
|
def ipv4_dhcp_relay_subnet_broadcast=(state)
|
@@ -677,7 +696,7 @@ module Cisco
|
|
677
696
|
|
678
697
|
def ipv4_dhcp_smart_relay
|
679
698
|
return nil if @name[/loop/i] || switchport_mode != :disabled
|
680
|
-
config_get('interface', 'ipv4_dhcp_smart_relay',
|
699
|
+
config_get('interface', 'ipv4_dhcp_smart_relay', @get_args)
|
681
700
|
end
|
682
701
|
|
683
702
|
def ipv4_dhcp_smart_relay=(state)
|
@@ -692,7 +711,7 @@ module Cisco
|
|
692
711
|
end
|
693
712
|
|
694
713
|
def ipv4_forwarding
|
695
|
-
config_get('interface', 'ipv4_forwarding',
|
714
|
+
config_get('interface', 'ipv4_forwarding', @get_args)
|
696
715
|
end
|
697
716
|
|
698
717
|
def ipv4_forwarding=(state)
|
@@ -707,7 +726,7 @@ module Cisco
|
|
707
726
|
|
708
727
|
def ipv4_pim_sparse_mode
|
709
728
|
return nil unless switchport_mode == :disabled
|
710
|
-
config_get('interface', 'ipv4_pim_sparse_mode',
|
729
|
+
config_get('interface', 'ipv4_pim_sparse_mode', @get_args)
|
711
730
|
end
|
712
731
|
|
713
732
|
def ipv4_pim_sparse_mode=(state)
|
@@ -723,7 +742,7 @@ module Cisco
|
|
723
742
|
|
724
743
|
def ipv4_proxy_arp
|
725
744
|
return nil if @name[/loop/i] || switchport_mode != :disabled
|
726
|
-
config_get('interface', 'ipv4_proxy_arp',
|
745
|
+
config_get('interface', 'ipv4_proxy_arp', @get_args)
|
727
746
|
end
|
728
747
|
|
729
748
|
def ipv4_proxy_arp=(proxy_arp)
|
@@ -747,7 +766,7 @@ module Cisco
|
|
747
766
|
|
748
767
|
def ipv4_redirects
|
749
768
|
return nil unless switchport_mode == :disabled
|
750
|
-
config_get('interface', ipv4_redirects_lookup_string,
|
769
|
+
config_get('interface', ipv4_redirects_lookup_string, @get_args)
|
751
770
|
end
|
752
771
|
|
753
772
|
def ipv4_redirects=(redirects)
|
@@ -762,7 +781,7 @@ module Cisco
|
|
762
781
|
end
|
763
782
|
|
764
783
|
def ipv6_acl_in
|
765
|
-
config_get('interface', 'ipv6_acl_in',
|
784
|
+
config_get('interface', 'ipv6_acl_in', @get_args)
|
766
785
|
end
|
767
786
|
|
768
787
|
def ipv6_acl_in=(val)
|
@@ -782,7 +801,7 @@ module Cisco
|
|
782
801
|
end
|
783
802
|
|
784
803
|
def ipv6_acl_out
|
785
|
-
config_get('interface', 'ipv6_acl_out',
|
804
|
+
config_get('interface', 'ipv6_acl_out', @get_args)
|
786
805
|
end
|
787
806
|
|
788
807
|
def ipv6_acl_out=(val)
|
@@ -802,7 +821,7 @@ module Cisco
|
|
802
821
|
end
|
803
822
|
|
804
823
|
def ipv6_dhcp_relay_addr
|
805
|
-
config_get('interface', 'ipv6_dhcp_relay_addr',
|
824
|
+
config_get('interface', 'ipv6_dhcp_relay_addr', @get_args)
|
806
825
|
end
|
807
826
|
|
808
827
|
def ipv6_dhcp_relay_addr=(list)
|
@@ -826,7 +845,7 @@ module Cisco
|
|
826
845
|
end
|
827
846
|
|
828
847
|
def ipv6_dhcp_relay_src_intf
|
829
|
-
intf = config_get('interface', 'ipv6_dhcp_relay_src_intf',
|
848
|
+
intf = config_get('interface', 'ipv6_dhcp_relay_src_intf', @get_args)
|
830
849
|
# Normalize by downcasing and removing white space
|
831
850
|
intf = intf.downcase.delete(' ') if intf
|
832
851
|
intf
|
@@ -847,7 +866,7 @@ module Cisco
|
|
847
866
|
|
848
867
|
def ipv6_redirects
|
849
868
|
return nil if @name[/loop/i] || switchport_mode != :disabled
|
850
|
-
config_get('interface', 'ipv6_redirects',
|
869
|
+
config_get('interface', 'ipv6_redirects', @get_args)
|
851
870
|
end
|
852
871
|
|
853
872
|
def ipv6_redirects=(redirects)
|
@@ -872,7 +891,7 @@ module Cisco
|
|
872
891
|
|
873
892
|
def load_interval_counter_1_delay
|
874
893
|
return nil if @name[/loop/] || @name[/ethernet.*\S+\.\d+$/]
|
875
|
-
config_get('interface', 'load_interval_counter_1_delay',
|
894
|
+
config_get('interface', 'load_interval_counter_1_delay', @get_args)
|
876
895
|
end
|
877
896
|
|
878
897
|
def load_interval_counter_1_delay=(val)
|
@@ -894,7 +913,7 @@ module Cisco
|
|
894
913
|
|
895
914
|
def load_interval_counter_2_delay
|
896
915
|
return nil if @name[/loop/] || @name[/ethernet.*\S+\.\d+$/]
|
897
|
-
config_get('interface', 'load_interval_counter_2_delay',
|
916
|
+
config_get('interface', 'load_interval_counter_2_delay', @get_args)
|
898
917
|
end
|
899
918
|
|
900
919
|
def load_interval_counter_2_delay=(val)
|
@@ -910,7 +929,7 @@ module Cisco
|
|
910
929
|
|
911
930
|
def load_interval_counter_3_delay
|
912
931
|
return nil if @name[/loop/] || @name[/ethernet.*\S+\.\d+$/]
|
913
|
-
config_get('interface', 'load_interval_counter_3_delay',
|
932
|
+
config_get('interface', 'load_interval_counter_3_delay', @get_args)
|
914
933
|
end
|
915
934
|
|
916
935
|
def load_interval_counter_3_delay=(val)
|
@@ -936,7 +955,7 @@ module Cisco
|
|
936
955
|
end
|
937
956
|
|
938
957
|
def mtu
|
939
|
-
config_get('interface', mtu_lookup_string,
|
958
|
+
config_get('interface', mtu_lookup_string, @get_args)
|
940
959
|
end
|
941
960
|
|
942
961
|
def mtu=(val)
|
@@ -952,7 +971,7 @@ module Cisco
|
|
952
971
|
|
953
972
|
def speed
|
954
973
|
return nil if @name[/loop|vlan/i]
|
955
|
-
config_get('interface', 'speed',
|
974
|
+
config_get('interface', 'speed', @get_args)
|
956
975
|
end
|
957
976
|
|
958
977
|
def speed=(val)
|
@@ -965,7 +984,7 @@ module Cisco
|
|
965
984
|
|
966
985
|
def duplex
|
967
986
|
return nil if @name[/loop|vlan/i]
|
968
|
-
config_get('interface', 'duplex',
|
987
|
+
config_get('interface', 'duplex', @get_args)
|
969
988
|
end
|
970
989
|
|
971
990
|
def duplex=(val)
|
@@ -989,7 +1008,7 @@ module Cisco
|
|
989
1008
|
|
990
1009
|
def negotiate_auto
|
991
1010
|
return nil if @name[/loop|vlan/]
|
992
|
-
config_get('interface', negotiate_auto_lookup_string,
|
1011
|
+
config_get('interface', negotiate_auto_lookup_string, @get_args)
|
993
1012
|
end
|
994
1013
|
|
995
1014
|
def negotiate_auto=(negotiate_auto)
|
@@ -1003,7 +1022,7 @@ module Cisco
|
|
1003
1022
|
end
|
1004
1023
|
|
1005
1024
|
def shutdown
|
1006
|
-
config_get('interface', 'shutdown',
|
1025
|
+
config_get('interface', 'shutdown', @get_args)
|
1007
1026
|
end
|
1008
1027
|
|
1009
1028
|
def shutdown=(state)
|
@@ -1045,7 +1064,7 @@ module Cisco
|
|
1045
1064
|
end
|
1046
1065
|
|
1047
1066
|
def pim_bfd
|
1048
|
-
config_get('interface', 'pim_bfd',
|
1067
|
+
config_get('interface', 'pim_bfd', @get_args)
|
1049
1068
|
end
|
1050
1069
|
|
1051
1070
|
def pim_bfd=(val)
|
@@ -1064,7 +1083,7 @@ module Cisco
|
|
1064
1083
|
|
1065
1084
|
def storm_control_broadcast
|
1066
1085
|
return nil if @name[/loop|vlan/i]
|
1067
|
-
config_get('interface', 'storm_control_broadcast',
|
1086
|
+
config_get('interface', 'storm_control_broadcast', @get_args)
|
1068
1087
|
end
|
1069
1088
|
|
1070
1089
|
def storm_control_broadcast=(val)
|
@@ -1081,7 +1100,7 @@ module Cisco
|
|
1081
1100
|
|
1082
1101
|
def storm_control_multicast
|
1083
1102
|
return nil if @name[/loop|vlan/i]
|
1084
|
-
config_get('interface', 'storm_control_multicast',
|
1103
|
+
config_get('interface', 'storm_control_multicast', @get_args)
|
1085
1104
|
end
|
1086
1105
|
|
1087
1106
|
def storm_control_multicast=(val)
|
@@ -1098,7 +1117,7 @@ module Cisco
|
|
1098
1117
|
|
1099
1118
|
def storm_control_unicast
|
1100
1119
|
return nil if @name[/loop|vlan/i]
|
1101
|
-
config_get('interface', 'storm_control_unicast',
|
1120
|
+
config_get('interface', 'storm_control_unicast', @get_args)
|
1102
1121
|
end
|
1103
1122
|
|
1104
1123
|
def storm_control_unicast=(val)
|
@@ -1114,7 +1133,7 @@ module Cisco
|
|
1114
1133
|
end
|
1115
1134
|
|
1116
1135
|
def stp_bpdufilter
|
1117
|
-
config_get('interface', 'stp_bpdufilter',
|
1136
|
+
config_get('interface', 'stp_bpdufilter', @get_args)
|
1118
1137
|
end
|
1119
1138
|
|
1120
1139
|
def stp_bpdufilter=(val)
|
@@ -1134,7 +1153,7 @@ module Cisco
|
|
1134
1153
|
end
|
1135
1154
|
|
1136
1155
|
def stp_bpduguard
|
1137
|
-
config_get('interface', 'stp_bpduguard',
|
1156
|
+
config_get('interface', 'stp_bpduguard', @get_args)
|
1138
1157
|
end
|
1139
1158
|
|
1140
1159
|
def stp_bpduguard=(val)
|
@@ -1154,7 +1173,7 @@ module Cisco
|
|
1154
1173
|
|
1155
1174
|
def stp_cost
|
1156
1175
|
return nil if switchport_mode == :disabled
|
1157
|
-
cost = config_get('interface', 'stp_cost',
|
1176
|
+
cost = config_get('interface', 'stp_cost', @get_args)
|
1158
1177
|
cost == 'auto' ? cost : cost.to_i
|
1159
1178
|
end
|
1160
1179
|
|
@@ -1168,7 +1187,7 @@ module Cisco
|
|
1168
1187
|
end
|
1169
1188
|
|
1170
1189
|
def stp_guard
|
1171
|
-
config_get('interface', 'stp_guard',
|
1190
|
+
config_get('interface', 'stp_guard', @get_args)
|
1172
1191
|
end
|
1173
1192
|
|
1174
1193
|
def stp_guard=(val)
|
@@ -1189,7 +1208,7 @@ module Cisco
|
|
1189
1208
|
|
1190
1209
|
def stp_link_type
|
1191
1210
|
return nil if switchport_mode == :disabled
|
1192
|
-
config_get('interface', 'stp_link_type',
|
1211
|
+
config_get('interface', 'stp_link_type', @get_args)
|
1193
1212
|
end
|
1194
1213
|
|
1195
1214
|
def stp_link_type=(val)
|
@@ -1203,7 +1222,7 @@ module Cisco
|
|
1203
1222
|
|
1204
1223
|
def stp_port_priority
|
1205
1224
|
return nil if switchport_mode == :disabled
|
1206
|
-
config_get('interface', 'stp_port_priority',
|
1225
|
+
config_get('interface', 'stp_port_priority', @get_args)
|
1207
1226
|
end
|
1208
1227
|
|
1209
1228
|
def stp_port_priority=(val)
|
@@ -1222,7 +1241,7 @@ module Cisco
|
|
1222
1241
|
# array: [['0,2-4,6,8-12', '1000'], ['4000-4020', '2568']]
|
1223
1242
|
#
|
1224
1243
|
def stp_mst_cost
|
1225
|
-
config_get('interface', 'stp_mst_cost',
|
1244
|
+
config_get('interface', 'stp_mst_cost', @get_args)
|
1226
1245
|
end
|
1227
1246
|
|
1228
1247
|
def stp_mst_cost=(list)
|
@@ -1244,7 +1263,7 @@ module Cisco
|
|
1244
1263
|
# array: [['0,2-4,6,8-12', '64'], ['4000-4020', '160']]
|
1245
1264
|
#
|
1246
1265
|
def stp_mst_port_priority
|
1247
|
-
config_get('interface', 'stp_mst_port_priority',
|
1266
|
+
config_get('interface', 'stp_mst_port_priority', @get_args)
|
1248
1267
|
end
|
1249
1268
|
|
1250
1269
|
def stp_mst_port_priority=(list)
|
@@ -1260,7 +1279,7 @@ module Cisco
|
|
1260
1279
|
end
|
1261
1280
|
|
1262
1281
|
def stp_port_type
|
1263
|
-
config_get('interface', 'stp_port_type',
|
1282
|
+
config_get('interface', 'stp_port_type', @get_args)
|
1264
1283
|
end
|
1265
1284
|
|
1266
1285
|
def stp_port_type=(val)
|
@@ -1286,7 +1305,7 @@ module Cisco
|
|
1286
1305
|
# array: [['1-4,6,8-12', '1000'], ['3000-3960', '2568']]
|
1287
1306
|
#
|
1288
1307
|
def stp_vlan_cost
|
1289
|
-
config_get('interface', 'stp_vlan_cost',
|
1308
|
+
config_get('interface', 'stp_vlan_cost', @get_args)
|
1290
1309
|
end
|
1291
1310
|
|
1292
1311
|
def stp_vlan_cost=(list)
|
@@ -1308,7 +1327,7 @@ module Cisco
|
|
1308
1327
|
# array: [['1-4,6,8-12', '64'], ['3000-3960', '160']]
|
1309
1328
|
#
|
1310
1329
|
def stp_vlan_port_priority
|
1311
|
-
config_get('interface', 'stp_vlan_port_priority',
|
1330
|
+
config_get('interface', 'stp_vlan_port_priority', @get_args)
|
1312
1331
|
end
|
1313
1332
|
|
1314
1333
|
def stp_vlan_port_priority=(list)
|
@@ -1325,7 +1344,7 @@ module Cisco
|
|
1325
1344
|
|
1326
1345
|
def switchport
|
1327
1346
|
# This is "switchport", not "switchport mode"
|
1328
|
-
config_get('interface', 'switchport',
|
1347
|
+
config_get('interface', 'switchport', @get_args)
|
1329
1348
|
end
|
1330
1349
|
|
1331
1350
|
def switchport_enable(val=true)
|
@@ -1335,8 +1354,7 @@ module Cisco
|
|
1335
1354
|
# switchport_autostate_exclude is exclusive to switchport interfaces
|
1336
1355
|
def switchport_autostate_exclude
|
1337
1356
|
return nil if switchport_mode == :disabled
|
1338
|
-
config_get('interface',
|
1339
|
-
'switchport_autostate_exclude', name: @name)
|
1357
|
+
config_get('interface', 'switchport_autostate_exclude', @get_args)
|
1340
1358
|
end
|
1341
1359
|
|
1342
1360
|
def switchport_autostate_exclude=(val)
|
@@ -1367,7 +1385,7 @@ module Cisco
|
|
1367
1385
|
|
1368
1386
|
def switchport_mode
|
1369
1387
|
return nil if platform == :ios_xr
|
1370
|
-
mode = config_get('interface', switchport_mode_lookup_string,
|
1388
|
+
mode = config_get('interface', switchport_mode_lookup_string, @get_args)
|
1371
1389
|
|
1372
1390
|
return mode.nil? ? :disabled : IF_SWITCHPORT_MODE.key(mode)
|
1373
1391
|
|
@@ -1427,7 +1445,7 @@ module Cisco
|
|
1427
1445
|
def switchport_trunk_allowed_vlan
|
1428
1446
|
return nil if switchport_mode == :disabled
|
1429
1447
|
vlans = config_get('interface', 'switchport_trunk_allowed_vlan',
|
1430
|
-
|
1448
|
+
@get_args)
|
1431
1449
|
vlans = vlans.join(',') if vlans.is_a?(Array)
|
1432
1450
|
vlans = Utils.normalize_range_array(vlans, :string) unless vlans == 'none'
|
1433
1451
|
vlans
|
@@ -1449,7 +1467,7 @@ module Cisco
|
|
1449
1467
|
|
1450
1468
|
def switchport_trunk_native_vlan
|
1451
1469
|
return nil if switchport_mode == :disabled
|
1452
|
-
config_get('interface', 'switchport_trunk_native_vlan',
|
1470
|
+
config_get('interface', 'switchport_trunk_native_vlan', @get_args)
|
1453
1471
|
end
|
1454
1472
|
|
1455
1473
|
def switchport_trunk_native_vlan=(val)
|
@@ -1486,7 +1504,7 @@ module Cisco
|
|
1486
1504
|
# <state> switchport mode private-vlan host
|
1487
1505
|
def switchport_pvlan_host
|
1488
1506
|
return nil if switchport_mode == :disabled
|
1489
|
-
config_get('interface', 'switchport_pvlan_host',
|
1507
|
+
config_get('interface', 'switchport_pvlan_host', @get_args)
|
1490
1508
|
end
|
1491
1509
|
|
1492
1510
|
def switchport_pvlan_host=(state)
|
@@ -1503,7 +1521,7 @@ module Cisco
|
|
1503
1521
|
# <state> switchport mode private-vlan promiscuous
|
1504
1522
|
def switchport_pvlan_promiscuous
|
1505
1523
|
return nil if switchport_mode == :disabled
|
1506
|
-
config_get('interface', 'switchport_pvlan_promiscuous',
|
1524
|
+
config_get('interface', 'switchport_pvlan_promiscuous', @get_args)
|
1507
1525
|
end
|
1508
1526
|
|
1509
1527
|
def switchport_pvlan_promiscuous=(state)
|
@@ -1520,7 +1538,7 @@ module Cisco
|
|
1520
1538
|
# <state> switchport private-vlan host-association <pri> <sec>
|
1521
1539
|
# Note this is NOT a multiple, unlike trunk association.
|
1522
1540
|
def switchport_pvlan_host_association
|
1523
|
-
config_get('interface', 'switchport_pvlan_host_association',
|
1541
|
+
config_get('interface', 'switchport_pvlan_host_association', @get_args)
|
1524
1542
|
end
|
1525
1543
|
|
1526
1544
|
# Input: An array of primary and secondary vlans: ['44', '244']
|
@@ -1541,7 +1559,7 @@ module Cisco
|
|
1541
1559
|
# --------------------------
|
1542
1560
|
# <state> switchport private-vlan mapping <primary> <vlan>
|
1543
1561
|
def switchport_pvlan_mapping
|
1544
|
-
config_get('interface', 'switchport_pvlan_mapping',
|
1562
|
+
config_get('interface', 'switchport_pvlan_mapping', @get_args)
|
1545
1563
|
end
|
1546
1564
|
|
1547
1565
|
# Input: An array of primary vlan and range of vlans: ['44', '3-4,6']
|
@@ -1605,7 +1623,7 @@ module Cisco
|
|
1605
1623
|
# --------------------------
|
1606
1624
|
# <state> switchport private-vlan mapping trunk <primary> <vlan>
|
1607
1625
|
def switchport_pvlan_mapping_trunk
|
1608
|
-
config_get('interface', 'switchport_pvlan_mapping_trunk',
|
1626
|
+
config_get('interface', 'switchport_pvlan_mapping_trunk', @get_args)
|
1609
1627
|
end
|
1610
1628
|
|
1611
1629
|
# Input: A nested array of primary vlan and range of vlans:
|
@@ -1656,7 +1674,7 @@ module Cisco
|
|
1656
1674
|
# <state> switchport private-vlan association trunk <pri> <sec>
|
1657
1675
|
# Supports multiple.
|
1658
1676
|
def switchport_pvlan_trunk_association
|
1659
|
-
config_get('interface', 'switchport_pvlan_trunk_association',
|
1677
|
+
config_get('interface', 'switchport_pvlan_trunk_association', @get_args)
|
1660
1678
|
end
|
1661
1679
|
|
1662
1680
|
# Input: A nested array of primary and secondary vlans:
|
@@ -1696,7 +1714,7 @@ module Cisco
|
|
1696
1714
|
# <state> switchport mode private-vlan trunk promiscuous
|
1697
1715
|
def switchport_pvlan_trunk_promiscuous
|
1698
1716
|
return nil if switchport_mode == :disabled
|
1699
|
-
config_get('interface', 'switchport_pvlan_trunk_promiscuous',
|
1717
|
+
config_get('interface', 'switchport_pvlan_trunk_promiscuous', @get_args)
|
1700
1718
|
end
|
1701
1719
|
|
1702
1720
|
def switchport_pvlan_trunk_promiscuous=(state)
|
@@ -1713,7 +1731,7 @@ module Cisco
|
|
1713
1731
|
# <state> switchport mode private-vlan trunk secondary
|
1714
1732
|
def switchport_pvlan_trunk_secondary
|
1715
1733
|
return nil if switchport_mode == :disabled
|
1716
|
-
config_get('interface', 'switchport_pvlan_trunk_secondary',
|
1734
|
+
config_get('interface', 'switchport_pvlan_trunk_secondary', @get_args)
|
1717
1735
|
end
|
1718
1736
|
|
1719
1737
|
def switchport_pvlan_trunk_secondary=(state)
|
@@ -1733,7 +1751,7 @@ module Cisco
|
|
1733
1751
|
def switchport_pvlan_trunk_allowed_vlan
|
1734
1752
|
return nil if switchport_mode == :disabled
|
1735
1753
|
vlans = config_get('interface', 'switchport_pvlan_trunk_allowed_vlan',
|
1736
|
-
|
1754
|
+
@get_args)
|
1737
1755
|
vlans = vlans.join(',') if vlans.is_a?(Array)
|
1738
1756
|
vlans = Utils.normalize_range_array(vlans, :string) unless vlans == 'none'
|
1739
1757
|
vlans
|
@@ -1757,7 +1775,7 @@ module Cisco
|
|
1757
1775
|
# <state> switchport trunk native vlan <vlan>
|
1758
1776
|
def switchport_pvlan_trunk_native_vlan
|
1759
1777
|
return nil if switchport_mode == :disabled
|
1760
|
-
config_get('interface', 'switchport_pvlan_trunk_native_vlan',
|
1778
|
+
config_get('interface', 'switchport_pvlan_trunk_native_vlan', @get_args)
|
1761
1779
|
end
|
1762
1780
|
|
1763
1781
|
def switchport_pvlan_trunk_native_vlan=(vlan)
|
@@ -1775,7 +1793,7 @@ module Cisco
|
|
1775
1793
|
# <state> private-vlan mapping <range> # ex. range = ['2-4,9']
|
1776
1794
|
# Always returns an array.
|
1777
1795
|
def pvlan_mapping
|
1778
|
-
range = config_get('interface', 'pvlan_mapping',
|
1796
|
+
range = config_get('interface', 'pvlan_mapping', @get_args)
|
1779
1797
|
return default_pvlan_mapping if range.nil?
|
1780
1798
|
range.empty? ? range : [range.delete(' ')]
|
1781
1799
|
end
|
@@ -1828,7 +1846,7 @@ module Cisco
|
|
1828
1846
|
end
|
1829
1847
|
|
1830
1848
|
def vlan_mapping
|
1831
|
-
match = config_get('interface', 'vlan_mapping',
|
1849
|
+
match = config_get('interface', 'vlan_mapping', @get_args)
|
1832
1850
|
match.each(&:compact!) unless match.nil?
|
1833
1851
|
match
|
1834
1852
|
end
|
@@ -1860,7 +1878,7 @@ module Cisco
|
|
1860
1878
|
end
|
1861
1879
|
|
1862
1880
|
def vlan_mapping_enable
|
1863
|
-
config_get('interface', 'vlan_mapping_enable',
|
1881
|
+
config_get('interface', 'vlan_mapping_enable', @get_args)
|
1864
1882
|
end
|
1865
1883
|
|
1866
1884
|
def vlan_mapping_enable=(state)
|
@@ -1911,7 +1929,7 @@ module Cisco
|
|
1911
1929
|
|
1912
1930
|
def switchport_vtp
|
1913
1931
|
return nil unless switchport_vtp_mode_capable?
|
1914
|
-
config_get('interface', 'vtp',
|
1932
|
+
config_get('interface', 'vtp', @get_args)
|
1915
1933
|
end
|
1916
1934
|
|
1917
1935
|
def switchport_vtp=(vtp_set)
|
@@ -1931,7 +1949,7 @@ module Cisco
|
|
1931
1949
|
# svi_autostate is exclusive to svi interfaces
|
1932
1950
|
def svi_autostate
|
1933
1951
|
return nil unless @name[/^vlan/i]
|
1934
|
-
config_get('interface', 'svi_autostate',
|
1952
|
+
config_get('interface', 'svi_autostate', @get_args)
|
1935
1953
|
end
|
1936
1954
|
|
1937
1955
|
def svi_autostate=(val)
|
@@ -1959,7 +1977,7 @@ module Cisco
|
|
1959
1977
|
# svi_management is exclusive to svi interfaces
|
1960
1978
|
def svi_management
|
1961
1979
|
return nil unless @name[/^vlan/i]
|
1962
|
-
config_get('interface', 'svi_management',
|
1980
|
+
config_get('interface', 'svi_management', @get_args)
|
1963
1981
|
end
|
1964
1982
|
|
1965
1983
|
def svi_management=(val)
|
@@ -2002,7 +2020,7 @@ module Cisco
|
|
2002
2020
|
end
|
2003
2021
|
|
2004
2022
|
def vpc_id
|
2005
|
-
config_get('interface', 'vpc_id',
|
2023
|
+
config_get('interface', 'vpc_id', @get_args)
|
2006
2024
|
end
|
2007
2025
|
|
2008
2026
|
def vpc_id=(num)
|
@@ -2021,7 +2039,7 @@ module Cisco
|
|
2021
2039
|
|
2022
2040
|
def vpc_peer_link
|
2023
2041
|
return nil unless @name[/port-channel/i] && switchport_mode != :disabled
|
2024
|
-
config_get('interface', 'vpc_peer_link',
|
2042
|
+
config_get('interface', 'vpc_peer_link', @get_args)
|
2025
2043
|
end
|
2026
2044
|
|
2027
2045
|
def vpc_peer_link=(state)
|
@@ -2035,7 +2053,7 @@ module Cisco
|
|
2035
2053
|
end
|
2036
2054
|
|
2037
2055
|
def vrf
|
2038
|
-
config_get('interface', 'vrf',
|
2056
|
+
config_get('interface', 'vrf', @get_args)
|
2039
2057
|
end
|
2040
2058
|
|
2041
2059
|
def vrf=(v)
|
@@ -2078,24 +2096,5 @@ module Cisco
|
|
2078
2096
|
end
|
2079
2097
|
end
|
2080
2098
|
end
|
2081
|
-
|
2082
|
-
def purge_config=(val)
|
2083
|
-
return unless val
|
2084
|
-
fail ArgumentError,
|
2085
|
-
'purge_config is only supported on Ethernet interfaces' unless
|
2086
|
-
@name[/ethernet/]
|
2087
|
-
config_set('interface', 'purge_config', name: @name) if val
|
2088
|
-
end
|
2089
|
-
|
2090
|
-
def purge_config
|
2091
|
-
# This getter is only supported on ethernet interfaces
|
2092
|
-
return nil unless @name[/ethernet/]
|
2093
|
-
state = config_get('interface', 'purge_config', name: @name)
|
2094
|
-
state.nil? ? true : default_purge_config
|
2095
|
-
end
|
2096
|
-
|
2097
|
-
def default_purge_config
|
2098
|
-
config_get_default('interface', 'purge_config')
|
2099
|
-
end
|
2100
2099
|
end # Class
|
2101
2100
|
end # Module
|