rbeapi 0.1.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.
- data/.gitignore +35 -0
- data/Gemfile +25 -0
- data/Guardfile +15 -0
- data/LICENSE +28 -0
- data/README.md +218 -0
- data/Rakefile +12 -0
- data/lib/rbeapi.rb +32 -0
- data/lib/rbeapi/api.rb +135 -0
- data/lib/rbeapi/api/aaa.rb +410 -0
- data/lib/rbeapi/api/dns.rb +198 -0
- data/lib/rbeapi/api/interfaces.rb +1193 -0
- data/lib/rbeapi/api/ipinterfaces.rb +328 -0
- data/lib/rbeapi/api/logging.rb +157 -0
- data/lib/rbeapi/api/mlag.rb +519 -0
- data/lib/rbeapi/api/ntp.rb +201 -0
- data/lib/rbeapi/api/ospf.rb +214 -0
- data/lib/rbeapi/api/prefixlists.rb +98 -0
- data/lib/rbeapi/api/radius.rb +317 -0
- data/lib/rbeapi/api/radius.rb.old +399 -0
- data/lib/rbeapi/api/routemaps.rb +100 -0
- data/lib/rbeapi/api/snmp.rb +427 -0
- data/lib/rbeapi/api/staticroutes.rb +88 -0
- data/lib/rbeapi/api/stp.rb +381 -0
- data/lib/rbeapi/api/switchports.rb +272 -0
- data/lib/rbeapi/api/system.rb +87 -0
- data/lib/rbeapi/api/tacacs.rb +236 -0
- data/lib/rbeapi/api/varp.rb +181 -0
- data/lib/rbeapi/api/vlans.rb +338 -0
- data/lib/rbeapi/client.rb +454 -0
- data/lib/rbeapi/eapilib.rb +334 -0
- data/lib/rbeapi/netdev/snmp.rb +370 -0
- data/lib/rbeapi/utils.rb +70 -0
- data/lib/rbeapi/version.rb +37 -0
- data/rbeapi.gemspec +32 -0
- data/spec/fixtures/dut.conf +5 -0
- data/spec/spec_helper.rb +22 -0
- data/spec/support/fixtures.rb +114 -0
- data/spec/support/shared_examples_for_api_modules.rb +124 -0
- data/spec/system/api_ospf_interfaces_spec.rb +58 -0
- data/spec/system/api_ospf_spec.rb +111 -0
- data/spec/system/api_varp_interfaces_spec.rb +60 -0
- data/spec/system/api_varp_spec.rb +44 -0
- data/spec/system/rbeapi/api/dns_spec.rb +77 -0
- data/spec/system/rbeapi/api/interfaces_base_spec.rb +94 -0
- data/spec/system/rbeapi/api/interfaces_ethernet_spec.rb +135 -0
- data/spec/system/rbeapi/api/interfaces_portchannel_spec.rb +188 -0
- data/spec/system/rbeapi/api/interfaces_vxlan_spec.rb +115 -0
- data/spec/system/rbeapi/api/ipinterfaces_spec.rb +97 -0
- data/spec/system/rbeapi/api/logging_spec.rb +65 -0
- data/spec/system/rbeapi/api/mlag_interfaces_spec.rb +80 -0
- data/spec/system/rbeapi/api/mlag_spec.rb +94 -0
- data/spec/system/rbeapi/api/ntp_spec.rb +76 -0
- data/spec/system/rbeapi/api/snmp_spec.rb +68 -0
- data/spec/system/rbeapi/api/stp_instances_spec.rb +61 -0
- data/spec/system/rbeapi/api/stp_interfaces_spec.rb +71 -0
- data/spec/system/rbeapi/api/stp_spec.rb +57 -0
- data/spec/system/rbeapi/api/switchports_spec.rb +135 -0
- data/spec/system/rbeapi/api/system_spec.rb +38 -0
- data/spec/system/rbeapi/api/vlans_spec.rb +121 -0
- metadata +274 -0
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'rbeapi/client'
|
4
|
+
require 'rbeapi/api/mlag'
|
5
|
+
|
6
|
+
describe Rbeapi::Api::MlagInterfaces do
|
7
|
+
subject { described_class.new(node) }
|
8
|
+
|
9
|
+
let(:node) do
|
10
|
+
Rbeapi::Client.config.read(fixture_file('dut.conf'))
|
11
|
+
Rbeapi::Client.connect_to('dut')
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#get' do
|
15
|
+
|
16
|
+
let(:entity) do
|
17
|
+
{ mlag_id: '1' }
|
18
|
+
end
|
19
|
+
|
20
|
+
before { node.config(['interface Port-Channel1', 'mlag 1']) }
|
21
|
+
|
22
|
+
it 'returns the mlag interface resource' do
|
23
|
+
expect(subject.get('Port-Channel1')).to eq(entity)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '#getall' do
|
28
|
+
before { node.config(['interface Port-Channel1', 'mlag 1']) }
|
29
|
+
|
30
|
+
it 'returns the interface collection' do
|
31
|
+
expect(subject.getall).to include('Port-Channel1')
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'returns a hash collection' do
|
35
|
+
expect(subject.getall).to be_a_kind_of(Hash)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#create' do
|
40
|
+
before { node.config(['interface Port-Channel1', 'no mlag']) }
|
41
|
+
|
42
|
+
it 'creates a new mlag interface resource' do
|
43
|
+
expect(subject.get('Port-Channel1')).to be_nil
|
44
|
+
expect(subject.create('Port-Channel1', '1')).to be_truthy
|
45
|
+
expect(subject.get('Port-Channel1')).not_to be_nil
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe '#delete' do
|
50
|
+
before { node.config(['interface Port-Channel1', 'mlag 1']) }
|
51
|
+
|
52
|
+
it 'deletes a switchport resource' do
|
53
|
+
expect(subject.get('Port-Channel1')).not_to be_nil
|
54
|
+
expect(subject.delete('Port-Channel1')).to be_truthy
|
55
|
+
expect(subject.get('Port-Channel1')).to be_nil
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe '#default' do
|
60
|
+
before { node.config(['interface Port-Channel1', 'mlag 1']) }
|
61
|
+
|
62
|
+
it 'sets Port-Channel1 to default' do
|
63
|
+
expect(subject.get('Port-Channel1')).not_to be_nil
|
64
|
+
expect(subject.default('Port-Channel1')).to be_truthy
|
65
|
+
expect(subject.get('Port-Channel1')).to be_nil
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe '#set_mlag_id' do
|
70
|
+
before { node.config(['interface Port-Channel1', 'no mlag']) }
|
71
|
+
|
72
|
+
it 'sets Port-Channel1 to default' do
|
73
|
+
expect(subject.get('Port-Channel1')).to be_nil
|
74
|
+
expect(subject.set_mlag_id('Port-Channel1', value: '1')).to be_truthy
|
75
|
+
expect(subject.get('Port-Channel1')[:mlag_id]).to eq('1')
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'rbeapi/client'
|
4
|
+
require 'rbeapi/api/mlag'
|
5
|
+
|
6
|
+
describe Rbeapi::Api::Mlag do
|
7
|
+
subject { described_class.new(node) }
|
8
|
+
|
9
|
+
let(:node) do
|
10
|
+
Rbeapi::Client.config.read(fixture_file('dut.conf'))
|
11
|
+
Rbeapi::Client.connect_to('dut')
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#get' do
|
15
|
+
|
16
|
+
let(:keys) do
|
17
|
+
[ :domain_id, :local_interface, :peer_address, :peer_link, :shutdown,
|
18
|
+
:interfaces ]
|
19
|
+
end
|
20
|
+
|
21
|
+
before { node.config('default mlag configuration') }
|
22
|
+
|
23
|
+
it 'contains all required keys' do
|
24
|
+
keys.each do |key|
|
25
|
+
expect(subject.get).to include(key)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#set_domain_id' do
|
31
|
+
before { node.config('default mlag configuration') }
|
32
|
+
|
33
|
+
it 'configures the mlag domain-id value' do
|
34
|
+
expect(subject.get[:domain_id]).to be_empty
|
35
|
+
expect(subject.set_domain_id(value: 'foo')).to be_truthy
|
36
|
+
expect(subject.get[:domain_id]).to eq('foo')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#set_local_interface' do
|
41
|
+
before { node.config(['default mlag configuration', 'interface vlan4094']) }
|
42
|
+
|
43
|
+
it 'configures the mlag local interface value' do
|
44
|
+
expect(subject.get[:local_interface]).to be_empty
|
45
|
+
expect(subject.set_local_interface(value: 'Vlan4094')).to be_truthy
|
46
|
+
expect(subject.get[:local_interface]).to eq('Vlan4094')
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#set_peer_link' do
|
51
|
+
before { node.config(['default mlag configuration',
|
52
|
+
'default interface Ethernet1']) }
|
53
|
+
|
54
|
+
it 'configures the mlag peer link value' do
|
55
|
+
expect(subject.get[:peer_link]).to be_empty
|
56
|
+
expect(subject.set_peer_link(value: 'Ethernet1')).to be_truthy
|
57
|
+
expect(subject.get[:peer_link]).to eq('Ethernet1')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '#set_peer_address' do
|
62
|
+
before { node.config(['default mlag configuration',
|
63
|
+
'default interface Ethernet1']) }
|
64
|
+
|
65
|
+
it 'configures the mlag peer address value' do
|
66
|
+
expect(subject.get[:peer_address]).to be_empty
|
67
|
+
expect(subject.set_peer_address(value: '1.1.1.1')).to be_truthy
|
68
|
+
expect(subject.get[:peer_address]).to eq('1.1.1.1')
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe '#set_shutdown' do
|
73
|
+
it 'configures mlag to be enabled' do
|
74
|
+
node.config(['mlag configuration', 'shutdown'])
|
75
|
+
expect(subject.get[:shutdown]).to be_truthy
|
76
|
+
expect(subject.set_shutdown(value: false)).to be_truthy
|
77
|
+
expect(subject.get[:shutdown]).to be_falsy
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'configures mlag to be disabled' do
|
81
|
+
node.config(['mlag configuration', 'no shutdown'])
|
82
|
+
expect(subject.get[:shutdown]).to be_falsy
|
83
|
+
expect(subject.set_shutdown(value: true)).to be_truthy
|
84
|
+
expect(subject.get[:shutdown]).to be_truthy
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe '#interfaces' do
|
89
|
+
it 'is a kind of MlagInterfaces' do
|
90
|
+
expect(subject.interfaces).to be_a_kind_of(Rbeapi::Api::MlagInterfaces)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'rbeapi/client'
|
4
|
+
require 'rbeapi/api/ntp'
|
5
|
+
|
6
|
+
describe Rbeapi::Api::Ntp do
|
7
|
+
subject { described_class.new(node) }
|
8
|
+
|
9
|
+
let(:node) do
|
10
|
+
Rbeapi::Client.config.read(fixture_file('dut.conf'))
|
11
|
+
Rbeapi::Client.connect_to('dut')
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#get' do
|
15
|
+
let(:resource) { subject.get }
|
16
|
+
|
17
|
+
it 'contains the source_interface key' do
|
18
|
+
expect(resource).to include(:source_interface)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'contains the servers key' do
|
22
|
+
expect(resource).to include(:servers)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'returns servers as an Hash' do
|
26
|
+
expect(resource[:servers]).to be_a_kind_of(Hash)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#set_source_interface' do
|
31
|
+
before { node.config('no ntp source') }
|
32
|
+
|
33
|
+
it 'sets the ntp source interface value' do
|
34
|
+
expect(subject.get[:source_interface]).to be_empty
|
35
|
+
expect(subject.set_source_interface(value: 'Loopback0')).to be_truthy
|
36
|
+
expect(subject.get[:source_interface]).to eq('Loopback0')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#add_server' do
|
41
|
+
before { node.config('no ntp server foo') }
|
42
|
+
|
43
|
+
it 'adds the host to the list of servers' do
|
44
|
+
expect(subject.get[:servers]).not_to include('foo')
|
45
|
+
expect(subject.add_server('foo')).to be_truthy
|
46
|
+
expect(subject.get[:servers]).to include('foo')
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#remove_server' do
|
51
|
+
before { node.config('ntp server foo') }
|
52
|
+
|
53
|
+
it 'adds the server to the list of ntp servers' do
|
54
|
+
expect(subject.get[:servers]).to include('foo')
|
55
|
+
expect(subject.remove_server('foo')).to be_truthy
|
56
|
+
expect(subject.get[:servers]).not_to include('foo')
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe '#set_prefer' do
|
61
|
+
it 'configures the ntp server with the prefer keyword' do
|
62
|
+
node.config('no ntp server foo')
|
63
|
+
expect(subject.get[:servers]).not_to include('foo')
|
64
|
+
expect(subject.set_prefer('foo', true)).to be_truthy
|
65
|
+
expect(subject.get[:servers]).to include('foo')
|
66
|
+
expect(subject.get[:servers]['foo'][:prefer]).to be_truthy
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'unconfigures the prefer value' do
|
70
|
+
node.config('ntp server foo prefer')
|
71
|
+
expect(subject.get[:servers]['foo'][:prefer]).to be_truthy
|
72
|
+
expect(subject.set_prefer('foo', false)).to be_truthy
|
73
|
+
expect(subject.get[:servers]['foo'][:prefer]).to be_falsy
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'rbeapi/client'
|
4
|
+
require 'rbeapi/api/snmp'
|
5
|
+
|
6
|
+
describe Rbeapi::Api::Snmp do
|
7
|
+
subject { described_class.new(node) }
|
8
|
+
|
9
|
+
let(:node) do
|
10
|
+
Rbeapi::Client.config.read(fixture_file('dut.conf'))
|
11
|
+
Rbeapi::Client.connect_to('dut')
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#get' do
|
15
|
+
|
16
|
+
let(:keys) do
|
17
|
+
[:location, :contact, :chassis_id, :source_interface]
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'has the required key in the resource hash' do
|
21
|
+
keys.each do |key|
|
22
|
+
expect(subject.get).to include(key)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '#set_location' do
|
28
|
+
before { node.config(['no snmp-server location']) }
|
29
|
+
|
30
|
+
it 'configures the snmp location value' do
|
31
|
+
expect(subject.get[:location]).to be_empty
|
32
|
+
expect(subject.set_location(value: 'foo')).to be_truthy
|
33
|
+
expect(subject.get[:location]).to eq('foo')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#set_contact' do
|
38
|
+
before { node.config('no snmp-server contact') }
|
39
|
+
|
40
|
+
it 'configures the snmp contact value' do
|
41
|
+
expect(subject.get[:contact]).to be_empty
|
42
|
+
expect(subject.set_contact(value: 'foo')).to be_truthy
|
43
|
+
expect(subject.get[:contact]).to eq('foo')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#set_chassis_id' do
|
48
|
+
before { node.config('no snmp-server chassis-id') }
|
49
|
+
|
50
|
+
it 'configures the snmp chassis-id value' do
|
51
|
+
expect(subject.get[:chassis_id]).to be_empty
|
52
|
+
expect(subject.set_chassis_id(value: 'foo')).to be_truthy
|
53
|
+
expect(subject.get[:chassis_id]).to eq('foo')
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '#set_source_interface' do
|
58
|
+
before { node.config('no snmp-server source-interface') }
|
59
|
+
|
60
|
+
it 'configures the snmp source-interface value' do
|
61
|
+
expect(subject.get[:source_interface]).to be_empty
|
62
|
+
expect(subject.set_source_interface(value: 'Loopback0')).to be_truthy
|
63
|
+
expect(subject.get[:source_interface]).to eq('Loopback0')
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'rbeapi/client'
|
4
|
+
require 'rbeapi/api/stp'
|
5
|
+
|
6
|
+
describe Rbeapi::Api::StpInstances do
|
7
|
+
subject { described_class.new(node) }
|
8
|
+
|
9
|
+
let(:node) do
|
10
|
+
Rbeapi::Client.config.read(fixture_file('dut.conf'))
|
11
|
+
Rbeapi::Client.connect_to('dut')
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#get' do
|
15
|
+
before { node.config(['spanning-tree mode mstp',
|
16
|
+
'spanning-tree mst configuration',
|
17
|
+
'instance 1 vlans 1', 'exit']) }
|
18
|
+
|
19
|
+
it 'returns the stp instance resource as a hash' do
|
20
|
+
expect(subject.get('1')).to be_a_kind_of(Hash)
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'returns the instance priority' do
|
24
|
+
expect(subject.get('1')).to include(:priority)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#getall' do
|
29
|
+
before { node.config(['no spanning-tree mode mstp',
|
30
|
+
'spanning-tree mode mstp']) }
|
31
|
+
|
32
|
+
it 'returns a kind of hash' do
|
33
|
+
expect(subject.getall).to be_a_kind_of(Hash)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#delete' do
|
38
|
+
before { node.config(['spanning-tree mode mstp',
|
39
|
+
'spanning-tree mst configuration',
|
40
|
+
'instance 1 vlans 1', 'exit']) }
|
41
|
+
|
42
|
+
it 'deletes the mst instance' do
|
43
|
+
expect(subject.get('1')).not_to be_nil
|
44
|
+
expect(subject.delete('1')).to be_truthy
|
45
|
+
expect(subject.get('1')).to be_nil
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe '#set_priority' do
|
50
|
+
before { node.config(['spanning-tree mode mstp',
|
51
|
+
'default spanning-tree mst configuration',
|
52
|
+
'spanning-tree mst configuration',
|
53
|
+
'instance 1 vlans 1', 'exit']) }
|
54
|
+
|
55
|
+
it 'set the instance priority' do
|
56
|
+
expect(subject.get('1')[:priority]).to eq('32768')
|
57
|
+
expect(subject.set_priority('1', value: '4096')).to be_truthy
|
58
|
+
expect(subject.get('1')[:priority]).to eq('4096')
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'rbeapi/client'
|
4
|
+
require 'rbeapi/api/stp'
|
5
|
+
|
6
|
+
describe Rbeapi::Api::StpInterfaces do
|
7
|
+
subject { described_class.new(node) }
|
8
|
+
|
9
|
+
let(:node) do
|
10
|
+
Rbeapi::Client.config.read(fixture_file('dut.conf'))
|
11
|
+
Rbeapi::Client.connect_to('dut')
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#get' do
|
15
|
+
|
16
|
+
let(:entity) do
|
17
|
+
{ portfast: false, bpduguard: false }
|
18
|
+
end
|
19
|
+
|
20
|
+
before { node.config('default interface Ethernet1') }
|
21
|
+
|
22
|
+
it 'returns the stp interface resource' do
|
23
|
+
expect(subject.get('Ethernet1')).to eq(entity)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe '#getall' do
|
28
|
+
|
29
|
+
before { node.config('default interface Ethernet1') }
|
30
|
+
|
31
|
+
it 'includes interface ethernet1' do
|
32
|
+
expect(subject.getall).to include('Ethernet1')
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'returns a kind of hash' do
|
36
|
+
expect(subject.get('Ethernet1')).to be_a_kind_of(Hash)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#set_portfast' do
|
41
|
+
it 'sets the portfast value to true' do
|
42
|
+
node.config(['interface Ethernet1', 'no spanning-tree portfast'])
|
43
|
+
expect(subject.get('Ethernet1')[:portfast]).to be_falsy
|
44
|
+
expect(subject.set_portfast('Ethernet1', value: true)).to be_truthy
|
45
|
+
expect(subject.get('Ethernet1')[:portfast]).to be_truthy
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'sets the portfast value to false' do
|
49
|
+
node.config(['interface Ethernet1', 'spanning-tree portfast'])
|
50
|
+
expect(subject.get('Ethernet1')[:portfast]).to be_truthy
|
51
|
+
expect(subject.set_portfast('Ethernet1', value: false)).to be_truthy
|
52
|
+
expect(subject.get('Ethernet1')[:portfast]).to be_falsy
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe '#set_bpduguard' do
|
57
|
+
it 'sets the bpduguard value to true' do
|
58
|
+
node.config(['interface Ethernet1', 'no spanning-tree bpduguard'])
|
59
|
+
expect(subject.get('Ethernet1')[:bpduguard]).to be_falsy
|
60
|
+
expect(subject.set_bpduguard('Ethernet1', value: true)).to be_truthy
|
61
|
+
expect(subject.get('Ethernet1')[:bpduguard]).to be_truthy
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'sets the bpduguard value to false' do
|
65
|
+
node.config(['interface Ethernet1', 'spanning-tree bpduguard enable'])
|
66
|
+
expect(subject.get('Ethernet1')[:bpduguard]).to be_truthy
|
67
|
+
expect(subject.set_bpduguard('Ethernet1', value: false)).to be_truthy
|
68
|
+
expect(subject.get('Ethernet1')[:bpduguard]).to be_falsy
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|