rbeapi 1.0 → 1.1
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 +7 -0
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +25 -2
- data/Gemfile +13 -7
- data/Rakefile +8 -7
- data/lib/rbeapi/api/alias.rb +160 -0
- data/lib/rbeapi/api/bgp.rb +9 -9
- data/lib/rbeapi/api/dns.rb +3 -1
- data/lib/rbeapi/api/interfaces.rb +194 -32
- data/lib/rbeapi/api/ipinterfaces.rb +5 -3
- data/lib/rbeapi/api/managementdefaults.rb +119 -0
- data/lib/rbeapi/api/mlag.rb +6 -6
- data/lib/rbeapi/api/ntp.rb +1 -1
- data/lib/rbeapi/api/ospf.rb +171 -12
- data/lib/rbeapi/api/prefixlists.rb +19 -9
- data/lib/rbeapi/api/radius.rb +5 -5
- data/lib/rbeapi/api/routemaps.rb +12 -12
- data/lib/rbeapi/api/snmp.rb +6 -4
- data/lib/rbeapi/api/stp.rb +24 -24
- data/lib/rbeapi/api/switchports.rb +15 -9
- data/lib/rbeapi/api/tacacs.rb +1 -1
- data/lib/rbeapi/api/users.rb +4 -4
- data/lib/rbeapi/api/varp.rb +7 -3
- data/lib/rbeapi/api/vlans.rb +2 -2
- data/lib/rbeapi/api/vrrp.rb +61 -61
- data/lib/rbeapi/client.rb +9 -6
- data/lib/rbeapi/eapilib.rb +3 -3
- data/lib/rbeapi/netdev/snmp.rb +8 -6
- data/lib/rbeapi/switchconfig.rb +9 -10
- data/lib/rbeapi/version.rb +1 -1
- data/spec/support/fixtures.rb +4 -4
- data/spec/support/matchers/switch_config_sections.rb +2 -2
- data/spec/system/rbeapi/api/acl_spec.rb +2 -4
- data/spec/system/rbeapi/api/alias_spec.rb +168 -0
- data/spec/system/rbeapi/api/bgp_spec.rb +1 -2
- data/spec/system/rbeapi/api/interfaces_base_spec.rb +7 -8
- data/spec/system/rbeapi/api/interfaces_ethernet_spec.rb +36 -3
- data/spec/system/rbeapi/api/interfaces_portchannel_spec.rb +35 -3
- data/spec/system/rbeapi/api/interfaces_vlan_spec.rb +90 -0
- data/spec/system/rbeapi/api/interfaces_vxlan_spec.rb +3 -4
- data/spec/system/rbeapi/api/managementdefaults_spec.rb +31 -0
- data/spec/system/rbeapi/api/ospf_interfaces_spec.rb +36 -11
- data/spec/system/rbeapi/api/ospf_spec.rb +240 -17
- data/spec/system/rbeapi/api/prefixlists_spec.rb +105 -89
- data/spec/system/rbeapi/api/routemaps_spec.rb +15 -10
- data/spec/system/rbeapi/api/users_spec.rb +4 -5
- data/spec/system/rbeapi/api/vrrp_spec.rb +2 -5
- data/spec/system/rbeapi/client_spec.rb +1 -2
- data/spec/unit/rbeapi/api/acl/default_spec.rb +1 -2
- data/spec/unit/rbeapi/api/alias/default_spec.rb +119 -0
- data/spec/unit/rbeapi/api/alias/fixture_alias.text +3 -0
- data/spec/unit/rbeapi/api/bgp/bgp_neighbors_spec.rb +1 -2
- data/spec/unit/rbeapi/api/bgp/bgp_spec.rb +1 -2
- data/spec/unit/rbeapi/api/interfaces/base_spec.rb +1 -1
- data/spec/unit/rbeapi/api/interfaces/ethernet_spec.rb +35 -1
- data/spec/unit/rbeapi/api/interfaces/fixture_interfaces.text +68 -0
- data/spec/unit/rbeapi/api/interfaces/portchannel_spec.rb +41 -4
- data/spec/unit/rbeapi/api/interfaces/vlan_spec.rb +72 -0
- data/spec/unit/rbeapi/api/interfaces/vxlan_spec.rb +2 -2
- data/spec/unit/rbeapi/api/managementdefaults/default_spec.rb +50 -0
- data/spec/unit/rbeapi/api/managementdefaults/fixture_managementdefaults.yaml +1 -0
- data/spec/unit/rbeapi/api/prefixlists/default_spec.rb +98 -80
- data/spec/unit/rbeapi/api/prefixlists/fixture_prefixlists.text +9 -4
- data/spec/unit/rbeapi/api/users/default_spec.rb +2 -4
- data/spec/unit/rbeapi/api/vrrp/default_spec.rb +2 -5
- data/spec/unit/rbeapi/client_spec.rb +21 -14
- data/spec/unit/rbeapi/switchconfig_spec.rb +10 -3
- metadata +49 -59
@@ -23,7 +23,7 @@ describe Rbeapi::Api::BaseInterface do
|
|
23
23
|
let(:resource) { subject.get('Loopback0') }
|
24
24
|
|
25
25
|
let(:keys) do
|
26
|
-
[:type, :shutdown, :load_interval, :description, :name]
|
26
|
+
[:type, :shutdown, :load_interval, :description, :encapsulation, :name]
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'returns an ethernet resource as a hash' do
|
@@ -24,7 +24,8 @@ describe Rbeapi::Api::EthernetInterface do
|
|
24
24
|
|
25
25
|
let(:keys) do
|
26
26
|
[:type, :speed, :sflow, :flowcontrol_send, :flowcontrol_receive,
|
27
|
-
:shutdown, :description, :name, :load_interval,
|
27
|
+
:shutdown, :description, :encapsulation, :name, :load_interval,
|
28
|
+
:lacp_priority]
|
28
29
|
end
|
29
30
|
|
30
31
|
it 'returns an ethernet resource as a hash' do
|
@@ -86,4 +87,37 @@ describe Rbeapi::Api::EthernetInterface do
|
|
86
87
|
default: true)).to be_truthy
|
87
88
|
end
|
88
89
|
end
|
90
|
+
|
91
|
+
describe '#set_encapsulation' do
|
92
|
+
it 'sets the interface encapsulation' do
|
93
|
+
expect(node).to receive(:config).with(['interface Ethernet1.1',
|
94
|
+
'encapsulation dot1q vlan 10'])
|
95
|
+
expect(subject.set_encapsulation('Ethernet1.1', value: '10'))
|
96
|
+
.to be_truthy
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'negates the interface encapsulation' do
|
100
|
+
expect(node).to receive(:config).with(['interface Ethernet1.1',
|
101
|
+
'no encapsulation dot1q vlan'])
|
102
|
+
expect(subject.set_encapsulation('Ethernet1.1',
|
103
|
+
enable: false)).to be_truthy
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'defaults the interface encapsulation' do
|
107
|
+
expect(node).to receive(:config)
|
108
|
+
.with(['interface Ethernet1.1',
|
109
|
+
'default encapsulation dot1q vlan'])
|
110
|
+
expect(subject.set_encapsulation('Ethernet1.1',
|
111
|
+
default: true)).to be_truthy
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'default is preferred over enable' do
|
115
|
+
expect(node).to receive(:config)
|
116
|
+
.with(['interface Ethernet1.1',
|
117
|
+
'default encapsulation dot1q vlan'])
|
118
|
+
expect(subject.set_encapsulation('Ethernet1.1',
|
119
|
+
enable: false,
|
120
|
+
default: true)).to be_truthy
|
121
|
+
end
|
122
|
+
end
|
89
123
|
end
|
@@ -217,3 +217,71 @@ interface Port-Channel1
|
|
217
217
|
mlag 1
|
218
218
|
spanning-tree portfast
|
219
219
|
!
|
220
|
+
interface Vlan1
|
221
|
+
no description
|
222
|
+
no shutdown
|
223
|
+
default load-interval
|
224
|
+
mtu 1500
|
225
|
+
logging event link-status use-global
|
226
|
+
autostate
|
227
|
+
snmp trap link-status
|
228
|
+
no ip proxy-arp
|
229
|
+
no ip local-proxy-arp
|
230
|
+
no ip address
|
231
|
+
no ip verify unicast
|
232
|
+
default arp timeout 14400
|
233
|
+
default ipv6 nd cache expire 14400
|
234
|
+
bfd interval 300 min_rx 300 multiplier 3
|
235
|
+
no bfd echo
|
236
|
+
default ip dhcp smart-relay
|
237
|
+
no ip helper-address
|
238
|
+
no ipv6 dhcp relay destination
|
239
|
+
ip dhcp relay information option circuit-id Vlan1
|
240
|
+
no ip igmp
|
241
|
+
ip igmp version 3
|
242
|
+
ip igmp last-member-query-count 2
|
243
|
+
ip igmp last-member-query-interval 10
|
244
|
+
ip igmp query-max-response-time 100
|
245
|
+
ip igmp query-interval 125
|
246
|
+
ip igmp startup-query-count 2
|
247
|
+
ip igmp startup-query-interval 310
|
248
|
+
ip igmp router-alert optional connected
|
249
|
+
no ip igmp host-proxy
|
250
|
+
no ipv6 enable
|
251
|
+
no ipv6 address
|
252
|
+
no ipv6 verify unicast
|
253
|
+
no ipv6 nd ra suppress
|
254
|
+
ipv6 nd ra interval msec 200000
|
255
|
+
ipv6 nd ra lifetime 1800
|
256
|
+
no ipv6 nd ra mtu suppress
|
257
|
+
no ipv6 nd managed-config-flag
|
258
|
+
no ipv6 nd other-config-flag
|
259
|
+
ipv6 nd reachable-time 0
|
260
|
+
ipv6 nd router-preference medium
|
261
|
+
ipv6 nd ra dns-servers lifetime 300
|
262
|
+
ipv6 nd ra dns-suffixes lifetime 300
|
263
|
+
ipv6 nd ra hop-limit 64
|
264
|
+
no ip multicast static
|
265
|
+
ip mfib fastdrop
|
266
|
+
default ntp serve
|
267
|
+
default ip ospf bfd
|
268
|
+
ip ospf cost 10
|
269
|
+
ip ospf dead-interval 40
|
270
|
+
ip ospf hello-interval 10
|
271
|
+
ip ospf priority 1
|
272
|
+
ip ospf retransmit-interval 5
|
273
|
+
no ip ospf shutdown
|
274
|
+
ip ospf transmit-delay 1
|
275
|
+
no ip ospf authentication
|
276
|
+
no ip ospf mtu-ignore
|
277
|
+
no ip pim sparse-mode
|
278
|
+
no ip pim bidirectional
|
279
|
+
no ip pim border-router
|
280
|
+
ip pim query-interval 30
|
281
|
+
ip pim query-count 3.5
|
282
|
+
ip pim join-prune-interval 60
|
283
|
+
ip pim dr-priority 1
|
284
|
+
no ip pim neighbor-filter
|
285
|
+
default ip pim bfd-instance
|
286
|
+
no ip pim bsr-border
|
287
|
+
!
|
@@ -31,8 +31,8 @@ describe Rbeapi::Api::PortchannelInterface do
|
|
31
31
|
let(:resource) { subject.get('Port-Channel1') }
|
32
32
|
|
33
33
|
let(:keys) do
|
34
|
-
[:type, :shutdown, :load_interval, :description, :
|
35
|
-
:lacp_mode, :minimum_links, :lacp_timeout, :lacp_fallback]
|
34
|
+
[:type, :shutdown, :load_interval, :description, :encapsulation, :name,
|
35
|
+
:members, :lacp_mode, :minimum_links, :lacp_timeout, :lacp_fallback]
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'returns an ethernet resource as a hash' do
|
@@ -111,6 +111,40 @@ describe Rbeapi::Api::PortchannelInterface do
|
|
111
111
|
end
|
112
112
|
end
|
113
113
|
|
114
|
+
describe '#set_encapsulation' do
|
115
|
+
it 'sets the interface encapsulation' do
|
116
|
+
expect(node).to receive(:config)
|
117
|
+
.with(['interface Port-Channel1.1', 'encapsulation dot1q vlan 10'])
|
118
|
+
|
119
|
+
expect(subject.set_encapsulation('Port-Channel1.1', value: '10'))
|
120
|
+
.to be_truthy
|
121
|
+
end
|
122
|
+
|
123
|
+
it 'negates the interface encapsulation' do
|
124
|
+
expect(node).to receive(:config)
|
125
|
+
.with(['interface Port-Channel1.1', 'no encapsulation dot1q vlan'])
|
126
|
+
|
127
|
+
expect(subject.set_encapsulation('Port-Channel1.1',
|
128
|
+
enable: false)).to be_truthy
|
129
|
+
end
|
130
|
+
|
131
|
+
it 'defaults the interface encapsulation' do
|
132
|
+
expect(node).to receive(:config)
|
133
|
+
.with(['interface Port-Channel1.1', 'default encapsulation dot1q vlan'])
|
134
|
+
|
135
|
+
expect(subject.set_encapsulation('Port-Channel1.1', default: true))
|
136
|
+
.to be_truthy
|
137
|
+
end
|
138
|
+
|
139
|
+
it 'default is preferred over enable' do
|
140
|
+
expect(node).to receive(:config)
|
141
|
+
.with(['interface Port-Channel1.1', 'default encapsulation dot1q vlan'])
|
142
|
+
|
143
|
+
opts = { enable: false, default: true }
|
144
|
+
expect(subject.set_encapsulation('Port-Channel1.1', opts)).to be_truthy
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
114
148
|
describe '#set_shutdown' do
|
115
149
|
it 'enables the interface' do
|
116
150
|
expect(node).to receive(:config)
|
@@ -144,8 +178,11 @@ describe Rbeapi::Api::PortchannelInterface do
|
|
144
178
|
|
145
179
|
describe '#set_members' do
|
146
180
|
it 'raises an ArgumentError if members is not an array' do
|
147
|
-
expect
|
148
|
-
|
181
|
+
expect do
|
182
|
+
subject.set_members('Port-Channel1',
|
183
|
+
'Ethernet3')
|
184
|
+
end
|
185
|
+
.to raise_error(ArgumentError)
|
149
186
|
end
|
150
187
|
end
|
151
188
|
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'rbeapi/api/interfaces'
|
4
|
+
|
5
|
+
include FixtureHelpers
|
6
|
+
|
7
|
+
describe Rbeapi::Api::VlanInterface do
|
8
|
+
subject { described_class.new(node) }
|
9
|
+
|
10
|
+
let(:node) { double('node') }
|
11
|
+
|
12
|
+
def interfaces
|
13
|
+
interfaces = Fixtures[:interfaces]
|
14
|
+
return interfaces if interfaces
|
15
|
+
fixture('interfaces', format: :text, dir: File.dirname(__FILE__))
|
16
|
+
end
|
17
|
+
|
18
|
+
before :each do
|
19
|
+
allow(subject.node).to receive(:running_config).and_return(interfaces)
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#get' do
|
23
|
+
let(:resource) { subject.get('Vlan1') }
|
24
|
+
|
25
|
+
let(:keys) do
|
26
|
+
[:type, :shutdown, :load_interval, :description, :name, :autostate,
|
27
|
+
:encapsulation]
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'returns the resource as a hash' do
|
31
|
+
expect(resource).to be_a_kind_of(Hash)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'returns an interface type of vlan' do
|
35
|
+
expect(resource[:type]).to eq('vlan')
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'has all keys' do
|
39
|
+
expect(resource.keys).to match_array(keys)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '#create' do
|
44
|
+
it 'creates the interface in the config' do
|
45
|
+
expect(node).to receive(:config).with('interface Vlan1')
|
46
|
+
expect(subject.create('Vlan1')).to be_truthy
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#delete' do
|
51
|
+
it 'deletes the interface in the config' do
|
52
|
+
expect(node).to receive(:config).with('no interface Vlan1')
|
53
|
+
expect(subject.delete('Vlan1')).to be_truthy
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '#default' do
|
58
|
+
it 'defaults the interface config' do
|
59
|
+
expect(node).to receive(:config).with('default interface Vlan1')
|
60
|
+
expect(subject.default('Vlan1')).to be_truthy
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe '#set_autostate' do
|
65
|
+
it 'sets the autostate' do
|
66
|
+
commands = ['interface Vlan1', 'autostate']
|
67
|
+
opts = { value: :true }
|
68
|
+
expect(node).to receive(:config).with(commands)
|
69
|
+
expect(subject.set_autostate('Vlan1', opts)).to be_truthy
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -23,8 +23,8 @@ describe Rbeapi::Api::VxlanInterface do
|
|
23
23
|
let(:resource) { subject.get('Vxlan1') }
|
24
24
|
|
25
25
|
let(:keys) do
|
26
|
-
[:type, :shutdown, :load_interval, :description, :
|
27
|
-
:multicast_group, :udp_port, :flood_list, :vlans]
|
26
|
+
[:type, :shutdown, :load_interval, :description, :encapsulation, :name,
|
27
|
+
:source_interface, :multicast_group, :udp_port, :flood_list, :vlans]
|
28
28
|
end
|
29
29
|
|
30
30
|
it 'returns the resource as a hash' do
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'rbeapi/api/managementdefaults'
|
4
|
+
|
5
|
+
include FixtureHelpers
|
6
|
+
|
7
|
+
describe Rbeapi::Api::Managementdefaults do
|
8
|
+
subject { described_class.new(node) }
|
9
|
+
|
10
|
+
let(:node) { double('node') }
|
11
|
+
|
12
|
+
def managementdefaults
|
13
|
+
managementdefaults = Fixtures[:managementdefaults]
|
14
|
+
return managementdefaults if managementdefaults
|
15
|
+
fixture('managementdefaults', format: :text, dir: File.dirname(__FILE__))
|
16
|
+
end
|
17
|
+
|
18
|
+
before :each do
|
19
|
+
allow(subject.node).to receive(:running_config)
|
20
|
+
.and_return(managementdefaults)
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#get' do
|
24
|
+
let(:keys) { [:secret_hash] }
|
25
|
+
|
26
|
+
it 'returns the management defaults resource hash with all keys' do
|
27
|
+
expect(subject.get.keys).to match_array(keys)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#set_secret_hash' do
|
32
|
+
it 'sets the secret_hash to sha512' do
|
33
|
+
expect(node).to receive(:config).with(['management defaults',
|
34
|
+
'secret hash sha512'])
|
35
|
+
expect(subject.set_secret_hash(value: 'sha512')).to be_truthy
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'sets the secret_hash to md5' do
|
39
|
+
expect(node).to receive(:config).with(['management defaults',
|
40
|
+
'secret hash md5'])
|
41
|
+
expect(subject.set_secret_hash(value: 'md5')).to be_truthy
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'defaults the secret_hash' do
|
45
|
+
expect(node).to receive(:config).with(['management defaults',
|
46
|
+
'secret hash '])
|
47
|
+
expect(subject.set_secret_hash(default: true)).to be_truthy
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
sha512
|
@@ -51,43 +51,49 @@ describe Rbeapi::Api::Prefixlists do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
describe '#get' do
|
54
|
-
let(:
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
{
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
54
|
+
let(:keys) { %w(seq action prefix) }
|
55
|
+
|
56
|
+
[
|
57
|
+
{ title: 'single-line',
|
58
|
+
prefix_list: 'test5',
|
59
|
+
rules: [{ 'seq' => '10',
|
60
|
+
'action' => 'permit',
|
61
|
+
'prefix' => '10.50.1.0/24' },
|
62
|
+
{ 'seq' => '20',
|
63
|
+
'action' => 'permit',
|
64
|
+
'prefix' => '10.50.2.0/24' }] },
|
65
|
+
{ title: 'multi-line',
|
66
|
+
prefix_list: 'test1',
|
67
|
+
rules: [{ 'seq' => '10',
|
68
|
+
'action' => 'permit',
|
69
|
+
'prefix' => '10.10.1.0/24' },
|
70
|
+
{ 'seq' => '20',
|
71
|
+
'action' => 'permit',
|
72
|
+
'prefix' => '10.20.1.0/24 le 30' },
|
73
|
+
{ 'seq' => '30',
|
74
|
+
'action' => 'permit',
|
75
|
+
'prefix' => '10.30.1.0/24 ge 26 le 30' }] }
|
76
|
+
].each do |context|
|
77
|
+
context "when prefix list is #{context[:title]}" do
|
78
|
+
let(:resource) { subject.get(context[:prefix_list]) }
|
79
|
+
|
80
|
+
it 'returns the correct rules' do
|
81
|
+
expect(resource).to eq(context[:rules])
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'returns an array of rules' do
|
85
|
+
expect(resource).to be_a_kind_of(Array)
|
86
|
+
end
|
87
|
+
|
88
|
+
it "has #{context[:rules].size} rules" do
|
89
|
+
expect(resource.size).to eq(context[:rules].size)
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'has all keys' do
|
93
|
+
resource.each do |rule|
|
94
|
+
expect(rule.keys).to match_array(keys)
|
95
|
+
end
|
96
|
+
end
|
91
97
|
end
|
92
98
|
end
|
93
99
|
|
@@ -101,37 +107,40 @@ describe Rbeapi::Api::Prefixlists do
|
|
101
107
|
let(:resource) { subject.getall }
|
102
108
|
|
103
109
|
let(:plists) do
|
104
|
-
{
|
105
|
-
|
106
|
-
{
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
},
|
116
|
-
{
|
117
|
-
"seq" => "30",
|
118
|
-
"action" => "permit",
|
119
|
-
"prefix" => "3.4.5.0/24 ge 26 le 30"
|
120
|
-
}
|
110
|
+
{
|
111
|
+
'test1' => [
|
112
|
+
{ 'seq' => '10',
|
113
|
+
'action' => 'permit',
|
114
|
+
'prefix' => '10.10.1.0/24' },
|
115
|
+
{ 'seq' => '20',
|
116
|
+
'action' => 'permit',
|
117
|
+
'prefix' => '10.20.1.0/24 le 30' },
|
118
|
+
{ 'seq' => '30',
|
119
|
+
'action' => 'permit',
|
120
|
+
'prefix' => '10.30.1.0/24 ge 26 le 30' }
|
121
121
|
],
|
122
|
-
|
123
|
-
{
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
"seq" => "20",
|
130
|
-
"action" => "permit",
|
131
|
-
"prefix" => "10.12.0.0/16 le 24"
|
132
|
-
}
|
122
|
+
'test2' => [
|
123
|
+
{ 'seq' => '10',
|
124
|
+
'action' => 'permit',
|
125
|
+
'prefix' => '10.11.0.0/16' },
|
126
|
+
{ 'seq' => '20',
|
127
|
+
'action' => 'permit',
|
128
|
+
'prefix' => '10.12.0.0/16 le 24' }
|
133
129
|
],
|
134
|
-
|
130
|
+
'test3' => [],
|
131
|
+
'test4' => [
|
132
|
+
{ 'seq' => '10',
|
133
|
+
'action' => 'permit',
|
134
|
+
'prefix' => '10.14.0.0/16 le 20' }
|
135
|
+
],
|
136
|
+
'test5' => [
|
137
|
+
{ 'seq' => '10',
|
138
|
+
'action' => 'permit',
|
139
|
+
'prefix' => '10.50.1.0/24' },
|
140
|
+
{ 'seq' => '20',
|
141
|
+
'action' => 'permit',
|
142
|
+
'prefix' => '10.50.2.0/24' }
|
143
|
+
]
|
135
144
|
}
|
136
145
|
end
|
137
146
|
|
@@ -143,8 +152,8 @@ describe Rbeapi::Api::Prefixlists do
|
|
143
152
|
expect(resource).to be_a_kind_of(Hash)
|
144
153
|
end
|
145
154
|
|
146
|
-
it 'has
|
147
|
-
expect(resource.size).to eq(
|
155
|
+
it 'has five prefix lists' do
|
156
|
+
expect(resource.size).to eq(5)
|
148
157
|
end
|
149
158
|
end
|
150
159
|
|
@@ -162,28 +171,38 @@ describe Rbeapi::Api::Prefixlists do
|
|
162
171
|
|
163
172
|
describe '#add_rule' do
|
164
173
|
it 'adds rule to existing prefix list' do
|
165
|
-
expect(node).to receive(:config)
|
166
|
-
|
174
|
+
expect(node).to receive(:config)
|
175
|
+
.with('ip prefix-list test1 seq 25 permit 10.25.1.0/24')
|
176
|
+
expect(subject.add_rule('test1', 'permit', '10.25.1.0/24', '25'))
|
177
|
+
.to be_truthy
|
167
178
|
end
|
168
179
|
|
169
180
|
it 'adds rule to existing prefix list w/o seq' do
|
170
|
-
expect(node).to receive(:config)
|
171
|
-
|
181
|
+
expect(node).to receive(:config)
|
182
|
+
.with('ip prefix-list test1 permit 10.25.2.0/24')
|
183
|
+
expect(subject.add_rule('test1', 'permit', '10.25.2.0/24'))
|
184
|
+
.to be_truthy
|
172
185
|
end
|
173
186
|
|
174
187
|
it 'adds rule to non-existing prefix list' do
|
175
|
-
expect(node).to receive(:config)
|
176
|
-
|
188
|
+
expect(node).to receive(:config)
|
189
|
+
.with('ip prefix-list plist2 seq 10 permit 10.25.3.128/25')
|
190
|
+
expect(subject.add_rule('plist2', 'permit', '10.25.3.128/25', '10'))
|
191
|
+
.to be_truthy
|
177
192
|
end
|
178
193
|
|
179
194
|
it 'adds rule to non-existing prefix list w/o seq' do
|
180
|
-
expect(node).to receive(:config)
|
181
|
-
|
195
|
+
expect(node).to receive(:config)
|
196
|
+
.with('ip prefix-list plist2 deny 10.25.10.0/25')
|
197
|
+
expect(subject.add_rule('plist2', 'deny', '10.25.10.0/25'))
|
198
|
+
.to be_truthy
|
182
199
|
end
|
183
200
|
|
184
201
|
it 'overwrites existing rule' do
|
185
|
-
expect(node).to receive(:config)
|
186
|
-
|
202
|
+
expect(node).to receive(:config)
|
203
|
+
.with('ip prefix-list test1 seq 20 permit 10.25.20.0/24 le 28')
|
204
|
+
expect(subject.add_rule('test1', 'permit', '10.25.20.0/24 le 28', '20'))
|
205
|
+
.to be_truthy
|
187
206
|
end
|
188
207
|
end
|
189
208
|
|
@@ -198,5 +217,4 @@ describe Rbeapi::Api::Prefixlists do
|
|
198
217
|
expect(subject.delete('test2', '10'))
|
199
218
|
end
|
200
219
|
end
|
201
|
-
|
202
|
-
end
|
220
|
+
end
|