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.
Files changed (60) hide show
  1. data/.gitignore +35 -0
  2. data/Gemfile +25 -0
  3. data/Guardfile +15 -0
  4. data/LICENSE +28 -0
  5. data/README.md +218 -0
  6. data/Rakefile +12 -0
  7. data/lib/rbeapi.rb +32 -0
  8. data/lib/rbeapi/api.rb +135 -0
  9. data/lib/rbeapi/api/aaa.rb +410 -0
  10. data/lib/rbeapi/api/dns.rb +198 -0
  11. data/lib/rbeapi/api/interfaces.rb +1193 -0
  12. data/lib/rbeapi/api/ipinterfaces.rb +328 -0
  13. data/lib/rbeapi/api/logging.rb +157 -0
  14. data/lib/rbeapi/api/mlag.rb +519 -0
  15. data/lib/rbeapi/api/ntp.rb +201 -0
  16. data/lib/rbeapi/api/ospf.rb +214 -0
  17. data/lib/rbeapi/api/prefixlists.rb +98 -0
  18. data/lib/rbeapi/api/radius.rb +317 -0
  19. data/lib/rbeapi/api/radius.rb.old +399 -0
  20. data/lib/rbeapi/api/routemaps.rb +100 -0
  21. data/lib/rbeapi/api/snmp.rb +427 -0
  22. data/lib/rbeapi/api/staticroutes.rb +88 -0
  23. data/lib/rbeapi/api/stp.rb +381 -0
  24. data/lib/rbeapi/api/switchports.rb +272 -0
  25. data/lib/rbeapi/api/system.rb +87 -0
  26. data/lib/rbeapi/api/tacacs.rb +236 -0
  27. data/lib/rbeapi/api/varp.rb +181 -0
  28. data/lib/rbeapi/api/vlans.rb +338 -0
  29. data/lib/rbeapi/client.rb +454 -0
  30. data/lib/rbeapi/eapilib.rb +334 -0
  31. data/lib/rbeapi/netdev/snmp.rb +370 -0
  32. data/lib/rbeapi/utils.rb +70 -0
  33. data/lib/rbeapi/version.rb +37 -0
  34. data/rbeapi.gemspec +32 -0
  35. data/spec/fixtures/dut.conf +5 -0
  36. data/spec/spec_helper.rb +22 -0
  37. data/spec/support/fixtures.rb +114 -0
  38. data/spec/support/shared_examples_for_api_modules.rb +124 -0
  39. data/spec/system/api_ospf_interfaces_spec.rb +58 -0
  40. data/spec/system/api_ospf_spec.rb +111 -0
  41. data/spec/system/api_varp_interfaces_spec.rb +60 -0
  42. data/spec/system/api_varp_spec.rb +44 -0
  43. data/spec/system/rbeapi/api/dns_spec.rb +77 -0
  44. data/spec/system/rbeapi/api/interfaces_base_spec.rb +94 -0
  45. data/spec/system/rbeapi/api/interfaces_ethernet_spec.rb +135 -0
  46. data/spec/system/rbeapi/api/interfaces_portchannel_spec.rb +188 -0
  47. data/spec/system/rbeapi/api/interfaces_vxlan_spec.rb +115 -0
  48. data/spec/system/rbeapi/api/ipinterfaces_spec.rb +97 -0
  49. data/spec/system/rbeapi/api/logging_spec.rb +65 -0
  50. data/spec/system/rbeapi/api/mlag_interfaces_spec.rb +80 -0
  51. data/spec/system/rbeapi/api/mlag_spec.rb +94 -0
  52. data/spec/system/rbeapi/api/ntp_spec.rb +76 -0
  53. data/spec/system/rbeapi/api/snmp_spec.rb +68 -0
  54. data/spec/system/rbeapi/api/stp_instances_spec.rb +61 -0
  55. data/spec/system/rbeapi/api/stp_interfaces_spec.rb +71 -0
  56. data/spec/system/rbeapi/api/stp_spec.rb +57 -0
  57. data/spec/system/rbeapi/api/switchports_spec.rb +135 -0
  58. data/spec/system/rbeapi/api/system_spec.rb +38 -0
  59. data/spec/system/rbeapi/api/vlans_spec.rb +121 -0
  60. metadata +274 -0
@@ -0,0 +1,111 @@
1
+ require 'spec_helper'
2
+
3
+ require 'rbeapi/client'
4
+ require 'rbeapi/api/ospf'
5
+
6
+ describe Rbeapi::Api::Ospf do
7
+ subject { described_class.new(node) }
8
+
9
+ let(:config) { Rbeapi::Client::Config.new(filename: get_fixture('dut.conf')) }
10
+ let(:node) { Rbeapi::Client.connect_to('veos02') }
11
+
12
+ describe '#get' do
13
+
14
+ before { node.config(['no router ospf 1', 'router ospf 1']) }
15
+
16
+ let(:entity) do
17
+ { 'router_id' => '', 'areas' => {}, 'redistribute' => {} }
18
+ end
19
+
20
+ it 'returns an ospf resource instance' do
21
+ expect(subject.get('1')).to eq(entity)
22
+ end
23
+ end
24
+
25
+ describe '#getall' do
26
+
27
+ before { node.config(['no router ospf 1', 'router ospf 1']) }
28
+
29
+ let(:collection) { subject.getall }
30
+
31
+ it 'includes ospf process id 1' do
32
+ expect(collection).to include('1')
33
+ end
34
+
35
+ it ' includes interfaces' do
36
+ expect(collection).to include('interfaces')
37
+ end
38
+
39
+ it 'is a kind of hash' do
40
+ expect(collection).to be_a_kind_of(Hash)
41
+ end
42
+
43
+ end
44
+
45
+ describe '#interfaces' do
46
+ it 'is a kind of StpInterfaces' do
47
+ expect(subject.interfaces).to be_a_kind_of(Rbeapi::Api::OspfInterfaces)
48
+ end
49
+ end
50
+
51
+ describe '#set_router_id' do
52
+ before { node.config(['no router ospf 1', 'router ospf 1']) }
53
+
54
+ it 'configures the ospf router id to 1.1.1.1' do
55
+ expect(subject.get('1')['router_id']).to be_empty
56
+ expect(subject.set_router_id('1', value: '1.1.1.1')).to be_truthy
57
+ expect(subject.get('1')['router_id']).to eq('1.1.1.1')
58
+ end
59
+ end
60
+
61
+ describe '#create' do
62
+ before { node.config('no router ospf 1') }
63
+
64
+ it 'configures router ospf with process id 1' do
65
+ expect(subject.get('1')).to be_nil
66
+ expect(subject.create('1')).to be_truthy
67
+ expect(subject.get('1')).not_to be_nil
68
+ end
69
+ end
70
+
71
+ describe '#delete' do
72
+ before { node.config('router ospf 1') }
73
+
74
+ it 'configures router ospf with process id 1' do
75
+ expect(subject.get('1')).not_to be_nil
76
+ expect(subject.delete('1')).to be_truthy
77
+ expect(subject.get('1')).to be_nil
78
+ end
79
+ end
80
+
81
+ describe '#add_network' do
82
+ before { node.config('router ospf 1') }
83
+
84
+ it 'adds the network with area to the ospf process' do
85
+ expect(subject.get('1')['areas']).to be_empty
86
+ expect(subject.add_network('1', '192.168.10.0/24', '0.0.0.0')).to be_truthy
87
+ expect(subject.get('1')['areas']['0.0.0.0']).to include('192.168.10.0/24')
88
+ end
89
+ end
90
+
91
+ describe '#remove_network' do
92
+ before { node.config(['router ospf 1', 'network 192.168.10.10/24 area 0.0.0.0']) }
93
+
94
+ it 'removes the network with area to the ospf process' do
95
+ expect(subject.get('1')['areas']['0.0.0.0']).to include('192.168.10.0/24')
96
+ expect(subject.remove_network('1', '192.168.10.0/24', '0.0.0.0')).to be_truthy
97
+ expect(subject.get('1')['areas']).to be_empty
98
+ end
99
+ end
100
+
101
+ describe '#set_redistribute' do
102
+ before { node.config(['no router ospf 1', 'router ospf 1']) }
103
+
104
+ it 'configures redistribution of static routes' do
105
+ expect(subject.get('1')['redistribute']).not_to include('static')
106
+ expect(subject.set_redistribute('1', 'static')).to be_truthy
107
+ expect(subject.get('1')['redistribute']).to include('static')
108
+ end
109
+ end
110
+
111
+ end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ require 'rbeapi/client'
4
+ require 'rbeapi/api/varp'
5
+
6
+ describe Rbeapi::Api::VarpInterfaces do
7
+ subject { described_class.new(node) }
8
+
9
+ let(:config) { Rbeapi::Client::Config.new(filename: get_fixture('dut.conf')) }
10
+ let(:node) { Rbeapi::Client.connect_to('veos02') }
11
+
12
+ describe '#get' do
13
+ before { node.config(['ip virtual-router mac-address aabb.ccdd.eeff',
14
+ 'interface vlan 100', 'ip address 99.99.99.99/24',
15
+ 'ip virtual-router address 99.99.99.98']) }
16
+
17
+ it 'returns an instance for vlan 100' do
18
+ expect(subject.get('Vlan100')).not_to be_nil
19
+ end
20
+
21
+ it 'does not return an instance for vlan 101' do
22
+ expect(subject.get('Vlan101')).to be_nil
23
+ end
24
+ end
25
+
26
+ describe '#getall' do
27
+ before { node.config(['ip virtual-router mac-address aabb.ccdd.eeff',
28
+ 'interface vlan 100', 'ip address 99.99.99.99/24',
29
+ 'ip virtual-router address 99.99.99.98']) }
30
+
31
+ it 'returns a collection that includes vlan 100' do
32
+ expect(subject.getall).to include('Vlan100')
33
+ end
34
+
35
+ it 'returns a collection as a Hash' do
36
+ expect(subject.getall).to be_a_kind_of(Hash)
37
+ end
38
+ end
39
+
40
+ describe '#set_addresses' do
41
+ before { node.config(['ip virtual-router mac-address aabb.ccdd.eeff',
42
+ 'no interface vlan 100', 'interface vlan 100',
43
+ 'ip address 99.99.99.99/24']) }
44
+
45
+ it 'adds new address to the list of addresses' do
46
+ expect(subject.get('Vlan100')['addresses']).not_to include('99.99.99.98')
47
+ expect(subject.set_addresses('Vlan100', value: ['99.99.99.98'])).to be_truthy
48
+ expect(subject.get('Vlan100')['addresses']).to include('99.99.99.98')
49
+ end
50
+
51
+ it 'removes address to the list of addresses' do
52
+ node.config(['interface vlan 100', 'ip address 99.99.99.99/24',
53
+ 'ip virtual-router address 99.99.99.98'])
54
+ expect(subject.get('Vlan100')['addresses']).to include('99.99.99.98')
55
+ expect(subject.set_addresses('Vlan100', value: ['99.99.99.97'])).to be_truthy
56
+ expect(subject.get('Vlan100')['addresses']).not_to include('99.99.99.98')
57
+ end
58
+
59
+ end
60
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ require 'rbeapi/client'
4
+ require 'rbeapi/api/varp'
5
+
6
+ describe Rbeapi::Api::Varp do
7
+ subject { described_class.new(node) }
8
+
9
+ let(:config) { Rbeapi::Client::Config.new(filename: get_fixture('dut.conf')) }
10
+ let(:node) { Rbeapi::Client.connect_to('veos02') }
11
+
12
+ describe '#get' do
13
+
14
+ it 'returns a varp resource instance' do
15
+ expect(subject.get).to be_a_kind_of(Hash)
16
+ end
17
+
18
+ it 'has a key for mac_address' do
19
+ expect(subject.get).to include('mac_address')
20
+ end
21
+
22
+ it 'has a key for interfaces' do
23
+ expect(subject.get).to include('interfaces')
24
+ end
25
+ end
26
+
27
+ describe '#interfaces' do
28
+ it 'is a kind of VarpInterfaces' do
29
+ expect(subject.interfaces).to be_a_kind_of(Rbeapi::Api::VarpInterfaces)
30
+ end
31
+ end
32
+
33
+ describe '#set_router_id' do
34
+ before { node.config('no ip virtual-router mac-address') }
35
+
36
+ it 'configures the ip varp mac-address' do
37
+ expect(subject.get['mac_address']).to be_empty
38
+ expect(subject.set_mac_address(value: 'aa:bb:cc:dd:ee:ff')).to be_truthy
39
+ expect(subject.get['mac_address']).to eq('aa:bb:cc:dd:ee:ff')
40
+ end
41
+
42
+ end
43
+
44
+ end
@@ -0,0 +1,77 @@
1
+ require 'spec_helper'
2
+
3
+ require 'rbeapi/client'
4
+ require 'rbeapi/api/dns'
5
+
6
+ describe Rbeapi::Api::Dns 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
+ [:domain_name, :domain_list, :name_servers].each do |key|
16
+ it 'returns the dns resource with key' do
17
+ expect(subject.get).to include(key)
18
+ end
19
+ end
20
+ end
21
+
22
+ describe '#set_domain_name' do
23
+ before { node.config(['no ip domain-name']) }
24
+
25
+ it 'configure the ip domain-name value' do
26
+ expect(subject.get[:domain_name]).to be_empty
27
+ expect(subject.set_domain_name(value: 'arista.com')).to be_truthy
28
+ expect(subject.get[:domain_name]).to eq('arista.com')
29
+ end
30
+ end
31
+
32
+ describe '#add_name_server' do
33
+ before do
34
+ begin
35
+ node.config('no ip name-server 1.2.3.4')
36
+ rescue Rbeapi::Eapilib::CommandError
37
+ next
38
+ end
39
+ end
40
+
41
+ it 'adds the name-server to the list' do
42
+ expect(subject.get[:name_servers]).not_to include('1.2.3.4')
43
+ expect(subject.add_name_server('1.2.3.4')).to be_truthy
44
+ expect(subject.get[:name_servers]).to include('1.2.3.4')
45
+ end
46
+ end
47
+
48
+ describe '#remove_name_server' do
49
+ before { node.config(['ip name-server 1.2.3.4']) }
50
+
51
+ it 'removes the name-server from the list' do
52
+ expect(subject.get[:name_servers]).to include('1.2.3.4')
53
+ expect(subject.remove_name_server('1.2.3.4')).to be_truthy
54
+ expect(subject.get[:name_servers]).not_to include('1.2.3.4')
55
+ end
56
+ end
57
+
58
+ describe '#add_domain_list' do
59
+ before { node.config(['no ip domain-list arista.net']) }
60
+
61
+ it 'adds the domain to the list' do
62
+ expect(subject.get[:domain_list]).not_to include('arista.net')
63
+ expect(subject.add_domain_list('arista.net')).to be_truthy
64
+ expect(subject.get[:domain_list]).to include('arista.net')
65
+ end
66
+ end
67
+
68
+ describe '#remove_name_server' do
69
+ before { node.config(['ip domain-list arista.net']) }
70
+
71
+ it 'adds the name-server to the list' do
72
+ expect(subject.get[:domain_list]).to include('arista.net')
73
+ expect(subject.remove_domain_list('arista.net')).to be_truthy
74
+ expect(subject.get[:domain_list]).not_to include('arista.net')
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,94 @@
1
+ require 'spec_helper'
2
+
3
+ require 'rbeapi/client'
4
+ require 'rbeapi/api/interfaces'
5
+
6
+ describe Rbeapi::Api::Interfaces 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
+ { name: 'Loopback0', type: 'generic', description: '', shutdown: false }
18
+ end
19
+
20
+ before { node.config(['no interface Loopback0', 'interface Loopback0']) }
21
+
22
+ it 'returns the interface resource' do
23
+ expect(subject.get('Loopback0')).to eq(entity)
24
+ end
25
+ end
26
+
27
+ describe '#getall' do
28
+ before { node.config(['no interface Loopback0', 'interface Loopback0']) }
29
+
30
+ it 'returns the interface collection' do
31
+ expect(subject.getall).to include('Loopback0')
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('no interface Loopback0') }
41
+
42
+ it 'creates a new interface resource' do
43
+ expect(subject.get('Loopback0')).to be_nil
44
+ expect(subject.create('Loopback0')).to be_truthy
45
+ expect(subject.get('Loopback0')).not_to be_nil
46
+ end
47
+ end
48
+
49
+ describe '#delete' do
50
+ before { node.config(['interface Loopback0']) }
51
+
52
+ it 'deletes a switchport resource' do
53
+ expect(subject.get('Loopback0')).not_to be_nil
54
+ expect(subject.delete('Loopback0')).to be_truthy
55
+ expect(subject.get('Loopback0')).to be_nil
56
+ end
57
+ end
58
+
59
+ describe '#default' do
60
+ before { node.config(['interface Loopback0', 'shutdown']) }
61
+
62
+ it 'sets Loopback0 to default' do
63
+ expect(subject.get('Loopback0')[:shutdown]).to be_truthy
64
+ expect(subject.default('Loopback0')).to be_truthy
65
+ expect(subject.get('Loopback0')[:shutdown]).to be_falsy
66
+ end
67
+ end
68
+
69
+ describe '#set_description' do
70
+ it 'sets the description value on the interface' do
71
+ node.config(['interface Loopback0', 'no description'])
72
+ expect(subject.get('Loopback0')[:description]).to be_empty
73
+ expect(subject.set_description('Loopback0', value: 'foo bar')).to be_truthy
74
+ expect(subject.get('Loopback0')[:description]).to eq('foo bar')
75
+ end
76
+ end
77
+
78
+ describe '#set_shutdown' do
79
+ it 'sets the shutdown value to true' do
80
+ node.config(['interface Loopback0', 'no shutdown'])
81
+ expect(subject.get('Loopback0')[:shutdown]).to be_falsy
82
+ expect(subject.set_shutdown('Loopback0', value: true)).to be_truthy
83
+ expect(subject.get('Loopback0')[:shutdown]).to be_truthy
84
+ end
85
+
86
+ it 'sets the shutdown value to false' do
87
+ node.config(['interface Loopback0', 'shutdown'])
88
+ expect(subject.get('Loopback0')[:shutdown]).to be_truthy
89
+ expect(subject.set_shutdown('Loopback0', value: false)).to be_truthy
90
+ expect(subject.get('Loopback0')[:shutdown]).to be_falsy
91
+ end
92
+ end
93
+ end
94
+
@@ -0,0 +1,135 @@
1
+ require 'spec_helper'
2
+
3
+ require 'rbeapi/client'
4
+ require 'rbeapi/api/interfaces'
5
+
6
+ describe Rbeapi::Api::Interfaces 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
+ { name: 'Ethernet1', type: 'ethernet', description: '', shutdown: false,
18
+ sflow: true, flowcontrol_send: 'off', flowcontrol_receive: 'off' }
19
+ end
20
+
21
+ before { node.config(['default interface Ethernet1']) }
22
+
23
+ it 'returns the interface resource' do
24
+ expect(subject.get('Ethernet1')).to eq(entity)
25
+ end
26
+ end
27
+
28
+ describe '#getall' do
29
+ before { node.config(['default interface Ethernet1']) }
30
+
31
+ it 'returns the interface collection' do
32
+ expect(subject.getall).to include('Ethernet1')
33
+ end
34
+
35
+ it 'returns a hash collection' do
36
+ expect(subject.getall).to be_a_kind_of(Hash)
37
+ end
38
+ end
39
+
40
+ describe '#create' do
41
+ it 'raises an error on create' do
42
+ expect { subject.create('Ethernet1') }.to raise_error(NotImplementedError)
43
+ end
44
+ end
45
+
46
+ describe '#delete' do
47
+ it 'raises an error on create' do
48
+ expect { subject.create('Ethernet1') }.to raise_error(NotImplementedError)
49
+ end
50
+ end
51
+
52
+ describe '#default' do
53
+ before { node.config(['interface Ethernet1', :shutdown]) }
54
+
55
+ it 'sets Ethernet1 to default' do
56
+ expect(subject.get('Ethernet1')[:shutdown]).to be_truthy
57
+ expect(subject.default('Ethernet1')).to be_truthy
58
+ expect(subject.get('Ethernet1')[:shutdown]).to be_falsy
59
+ end
60
+ end
61
+
62
+ describe '#set_description' do
63
+ it 'sets the description value on the interface' do
64
+ node.config(['interface Ethernet1', 'no description'])
65
+ expect(subject.get('Ethernet1')[:description]).to be_empty
66
+ expect(subject.set_description('Ethernet1', value: 'foo bar')).to be_truthy
67
+ expect(subject.get('Ethernet1')[:description]).to eq('foo bar')
68
+ end
69
+ end
70
+
71
+ describe '#set_shutdown' do
72
+ it 'sets the shutdown value to true' do
73
+ node.config(['interface Ethernet1', 'no shutdown'])
74
+ expect(subject.get('Ethernet1')[:shutdown]).to be_falsy
75
+ expect(subject.set_shutdown('Ethernet1', value: true)).to be_truthy
76
+ expect(subject.get('Ethernet1')[:shutdown]).to be_truthy
77
+ end
78
+
79
+ it 'sets the shutdown value to false' do
80
+ node.config(['interface Ethernet1', :shutdown])
81
+ expect(subject.get('Ethernet1')[:shutdown]).to be_truthy
82
+ expect(subject.set_shutdown('Ethernet1', value: false)).to be_truthy
83
+ expect(subject.get('Ethernet1')[:shutdown]).to be_falsy
84
+ end
85
+ end
86
+
87
+ describe '#set_sflow' do
88
+ it 'sets the sflow value to true' do
89
+ node.config(['interface Ethernet1', 'no sflow enable'])
90
+ expect(subject.get('Ethernet1')[:sflow]).to be_falsy
91
+ expect(subject.set_sflow('Ethernet1', value: true)).to be_truthy
92
+ expect(subject.get('Ethernet1')[:sflow]).to be_truthy
93
+ end
94
+
95
+ it 'sets the sflow value to false' do
96
+ node.config(['interface Ethernet1', 'sflow enable'])
97
+ expect(subject.get('Ethernet1')[:sflow]).to be_truthy
98
+ expect(subject.set_sflow('Ethernet1', value: false)).to be_truthy
99
+ expect(subject.get('Ethernet1')[:sflow]).to be_falsy
100
+ end
101
+ end
102
+
103
+ describe '#set_flowcontrol_send' do
104
+ it 'sets the flowcontrol send value to on' do
105
+ node.config(['interface Ethernet1', 'flowcontrol send off'])
106
+ expect(subject.get('Ethernet1')[:flowcontrol_send]).to eq('off')
107
+ expect(subject.set_flowcontrol_send('Ethernet1', value: 'on')).to be_truthy
108
+ expect(subject.get('Ethernet1')[:flowcontrol_send]).to eq('on')
109
+ end
110
+
111
+ it 'sets the flowcontrol send value to off' do
112
+ node.config(['interface Ethernet1', 'flowcontrol send on'])
113
+ expect(subject.get('Ethernet1')[:flowcontrol_send]).to eq('on')
114
+ expect(subject.set_flowcontrol_send('Ethernet1', value: 'off')).to be_truthy
115
+ expect(subject.get('Ethernet1')[:flowcontrol_send]).to eq('off')
116
+ end
117
+ end
118
+
119
+ describe '#set_flowcontrol_receive' do
120
+ it 'sets the flowcontrol receive value to on' do
121
+ node.config(['interface Ethernet1', 'flowcontrol receive off '])
122
+ expect(subject.get('Ethernet1')[:flowcontrol_receive]).to eq('off')
123
+ expect(subject.set_flowcontrol_receive('Ethernet1', value: 'on')).to be_truthy
124
+ expect(subject.get('Ethernet1')[:flowcontrol_receive]).to eq('on')
125
+ end
126
+
127
+ it 'sets the flowcontrol receive value to off' do
128
+ node.config(['interface Ethernet1', 'flowcontrol receive on'])
129
+ expect(subject.get('Ethernet1')[:flowcontrol_receive]).to eq('on')
130
+ expect(subject.set_flowcontrol_receive('Ethernet1', value: 'off')).to be_truthy
131
+ expect(subject.get('Ethernet1')[:flowcontrol_receive]).to eq('off')
132
+ end
133
+ end
134
+ end
135
+