rbeapi 0.1.0 → 0.2.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 (77) hide show
  1. data/.gitignore +5 -0
  2. data/.rubocop.yml +21 -0
  3. data/CHANGELOG.md +24 -0
  4. data/Gemfile +3 -1
  5. data/Guardfile +3 -3
  6. data/README.md +92 -17
  7. data/Rakefile +99 -4
  8. data/gems/README.rst +4 -0
  9. data/gems/inifile/.gitignore +2 -0
  10. data/gems/inifile/README.rst +5 -0
  11. data/gems/inifile/inifile.spec.tmpl +84 -0
  12. data/gems/net_http_unix/.gitignore +2 -0
  13. data/gems/net_http_unix/README.rst +5 -0
  14. data/gems/net_http_unix/net_http_unix.spec.tmpl +54 -0
  15. data/gems/netaddr/README.rst +5 -0
  16. data/gems/netaddr/netaddr.spec.tmpl +50 -0
  17. data/lib/rbeapi/api/aaa.rb +14 -17
  18. data/lib/rbeapi/api/acl.rb +276 -0
  19. data/lib/rbeapi/api/dns.rb +7 -4
  20. data/lib/rbeapi/api/interfaces.rb +239 -239
  21. data/lib/rbeapi/api/ipinterfaces.rb +5 -3
  22. data/lib/rbeapi/api/logging.rb +8 -5
  23. data/lib/rbeapi/api/mlag.rb +45 -127
  24. data/lib/rbeapi/api/ntp.rb +1 -4
  25. data/lib/rbeapi/api/ospf.rb +16 -13
  26. data/lib/rbeapi/api/prefixlists.rb +4 -4
  27. data/lib/rbeapi/api/radius.rb +34 -25
  28. data/lib/rbeapi/api/routemaps.rb +16 -10
  29. data/lib/rbeapi/api/snmp.rb +26 -13
  30. data/lib/rbeapi/api/staticroutes.rb +6 -5
  31. data/lib/rbeapi/api/stp.rb +77 -18
  32. data/lib/rbeapi/api/switchports.rb +20 -12
  33. data/lib/rbeapi/api/system.rb +6 -6
  34. data/lib/rbeapi/api/tacacs.rb +9 -6
  35. data/lib/rbeapi/api/varp.rb +15 -10
  36. data/lib/rbeapi/api/vlans.rb +5 -6
  37. data/lib/rbeapi/api.rb +56 -16
  38. data/lib/rbeapi/client.rb +85 -50
  39. data/lib/rbeapi/eapilib.rb +95 -56
  40. data/lib/rbeapi/netdev/snmp.rb +7 -16
  41. data/lib/rbeapi/utils.rb +3 -5
  42. data/lib/rbeapi/version.rb +1 -1
  43. data/rbeapi.gemspec +4 -2
  44. data/rbeapi.spec.tmpl +72 -0
  45. data/spec/support/fixtures.rb +6 -4
  46. data/spec/support/shared_examples_for_api_modules.rb +3 -18
  47. data/spec/system/api_acl_spec.rb +128 -0
  48. data/spec/system/api_ospf_interfaces_spec.rb +17 -14
  49. data/spec/system/api_ospf_spec.rb +8 -8
  50. data/spec/system/api_varp_interfaces_spec.rb +22 -13
  51. data/spec/system/api_varp_spec.rb +1 -4
  52. data/spec/system/rbeapi/api/interfaces_base_spec.rb +3 -4
  53. data/spec/system/rbeapi/api/interfaces_ethernet_spec.rb +13 -9
  54. data/spec/system/rbeapi/api/interfaces_portchannel_spec.rb +43 -26
  55. data/spec/system/rbeapi/api/interfaces_vxlan_spec.rb +7 -6
  56. data/spec/system/rbeapi/api/ipinterfaces_spec.rb +34 -21
  57. data/spec/system/rbeapi/api/mlag_interfaces_spec.rb +15 -38
  58. data/spec/system/rbeapi/api/mlag_spec.rb +26 -30
  59. data/spec/system/rbeapi/api/snmp_spec.rb +0 -3
  60. data/spec/system/rbeapi/api/stp_instances_spec.rb +20 -12
  61. data/spec/system/rbeapi/api/stp_interfaces_spec.rb +1 -3
  62. data/spec/system/rbeapi/api/switchports_spec.rb +14 -12
  63. data/spec/system/rbeapi/api/system_spec.rb +0 -3
  64. data/spec/system/rbeapi/api/vlans_spec.rb +19 -9
  65. data/spec/unit/rbeapi/api/acl/default_spec.rb +158 -0
  66. data/spec/unit/rbeapi/api/acl/fixture_acl_standard.text +22 -0
  67. data/spec/unit/rbeapi/api/interfaces/base_spec.rb +123 -0
  68. data/spec/unit/rbeapi/api/interfaces/ethernet_spec.rb +89 -0
  69. data/spec/unit/rbeapi/api/interfaces/fixture_interfaces.text +219 -0
  70. data/spec/unit/rbeapi/api/interfaces/portchannel_spec.rb +149 -0
  71. data/spec/unit/rbeapi/api/interfaces/vxlan_spec.rb +243 -0
  72. data/spec/unit/rbeapi/api/mlag/default_spec.rb +218 -0
  73. data/spec/unit/rbeapi/api/mlag/fixture_mlag.text +238 -0
  74. data/spec/unit/rbeapi/api/vlans/default_spec.rb +135 -0
  75. data/spec/unit/rbeapi/api/vlans/fixture_vlans.text +5 -0
  76. metadata +79 -4
  77. data/lib/rbeapi/api/radius.rb.old +0 -399
@@ -12,10 +12,10 @@ describe Rbeapi::Api::Interfaces do
12
12
  end
13
13
 
14
14
  describe '#get' do
15
-
16
15
  let(:entity) do
17
16
  { name: 'Ethernet1', type: 'ethernet', description: '', shutdown: false,
18
- sflow: true, flowcontrol_send: 'off', flowcontrol_receive: 'off' }
17
+ speed: 'auto', forced: false, sflow: true, flowcontrol_send: 'off',
18
+ flowcontrol_receive: 'off' }
19
19
  end
20
20
 
21
21
  before { node.config(['default interface Ethernet1']) }
@@ -35,7 +35,7 @@ describe Rbeapi::Api::Interfaces do
35
35
  it 'returns a hash collection' do
36
36
  expect(subject.getall).to be_a_kind_of(Hash)
37
37
  end
38
- end
38
+ end
39
39
 
40
40
  describe '#create' do
41
41
  it 'raises an error on create' do
@@ -63,7 +63,8 @@ describe Rbeapi::Api::Interfaces do
63
63
  it 'sets the description value on the interface' do
64
64
  node.config(['interface Ethernet1', 'no description'])
65
65
  expect(subject.get('Ethernet1')[:description]).to be_empty
66
- expect(subject.set_description('Ethernet1', value: 'foo bar')).to be_truthy
66
+ expect(subject.set_description('Ethernet1', value: 'foo bar'))
67
+ .to be_truthy
67
68
  expect(subject.get('Ethernet1')[:description]).to eq('foo bar')
68
69
  end
69
70
  end
@@ -104,14 +105,16 @@ describe Rbeapi::Api::Interfaces do
104
105
  it 'sets the flowcontrol send value to on' do
105
106
  node.config(['interface Ethernet1', 'flowcontrol send off'])
106
107
  expect(subject.get('Ethernet1')[:flowcontrol_send]).to eq('off')
107
- expect(subject.set_flowcontrol_send('Ethernet1', value: 'on')).to be_truthy
108
+ expect(subject.set_flowcontrol_send('Ethernet1', value: 'on'))
109
+ .to be_truthy
108
110
  expect(subject.get('Ethernet1')[:flowcontrol_send]).to eq('on')
109
111
  end
110
112
 
111
113
  it 'sets the flowcontrol send value to off' do
112
114
  node.config(['interface Ethernet1', 'flowcontrol send on'])
113
115
  expect(subject.get('Ethernet1')[:flowcontrol_send]).to eq('on')
114
- expect(subject.set_flowcontrol_send('Ethernet1', value: 'off')).to be_truthy
116
+ expect(subject.set_flowcontrol_send('Ethernet1', value: 'off'))
117
+ .to be_truthy
115
118
  expect(subject.get('Ethernet1')[:flowcontrol_send]).to eq('off')
116
119
  end
117
120
  end
@@ -120,16 +123,17 @@ describe Rbeapi::Api::Interfaces do
120
123
  it 'sets the flowcontrol receive value to on' do
121
124
  node.config(['interface Ethernet1', 'flowcontrol receive off '])
122
125
  expect(subject.get('Ethernet1')[:flowcontrol_receive]).to eq('off')
123
- expect(subject.set_flowcontrol_receive('Ethernet1', value: 'on')).to be_truthy
126
+ expect(subject.set_flowcontrol_receive('Ethernet1', value: 'on'))
127
+ .to be_truthy
124
128
  expect(subject.get('Ethernet1')[:flowcontrol_receive]).to eq('on')
125
129
  end
126
130
 
127
131
  it 'sets the flowcontrol receive value to off' do
128
132
  node.config(['interface Ethernet1', 'flowcontrol receive on'])
129
133
  expect(subject.get('Ethernet1')[:flowcontrol_receive]).to eq('on')
130
- expect(subject.set_flowcontrol_receive('Ethernet1', value: 'off')).to be_truthy
134
+ expect(subject.set_flowcontrol_receive('Ethernet1', value: 'off'))
135
+ .to be_truthy
131
136
  expect(subject.get('Ethernet1')[:flowcontrol_receive]).to eq('off')
132
137
  end
133
138
  end
134
139
  end
135
-
@@ -6,21 +6,21 @@ require 'rbeapi/api/interfaces'
6
6
  describe Rbeapi::Api::Interfaces do
7
7
  subject { described_class.new(node) }
8
8
 
9
-
10
9
  let(:node) do
11
10
  Rbeapi::Client.config.read(fixture_file('dut.conf'))
12
11
  Rbeapi::Client.connect_to('dut')
13
12
  end
14
13
 
15
14
  describe '#get' do
16
-
17
15
  let(:entity) do
18
16
  { name: 'Port-Channel1', type: 'portchannel', description: '',
19
17
  shutdown: false, members: [], lacp_mode: 'on', minimum_links: '0',
20
18
  lacp_timeout: '90', lacp_fallback: 'disabled' }
21
19
  end
22
20
 
23
- before { node.config(['no interface Port-Channel1', 'interface Port-Channel1']) }
21
+ before do
22
+ node.config(['no interface Port-Channel1', 'interface Port-Channel1'])
23
+ end
24
24
 
25
25
  it 'returns the interface resource' do
26
26
  expect(subject.get('Port-Channel1')).to eq(entity)
@@ -28,7 +28,9 @@ describe Rbeapi::Api::Interfaces do
28
28
  end
29
29
 
30
30
  describe '#getall' do
31
- before { node.config(['no interface Port-Channel1', 'interface Port-Channel1']) }
31
+ before do
32
+ node.config(['no interface Port-Channel1', 'interface Port-Channel1'])
33
+ end
32
34
 
33
35
  it 'returns the interface collection' do
34
36
  expect(subject.getall).to include('Port-Channel1')
@@ -37,7 +39,7 @@ describe Rbeapi::Api::Interfaces do
37
39
  it 'returns a hash collection' do
38
40
  expect(subject.getall).to be_a_kind_of(Hash)
39
41
  end
40
- end
42
+ end
41
43
 
42
44
  describe '#create' do
43
45
  before { node.config('no interface Port-Channel1') }
@@ -73,7 +75,8 @@ describe Rbeapi::Api::Interfaces do
73
75
  it 'sets the description value on the interface' do
74
76
  node.config(['interface Port-Channel1', 'no description'])
75
77
  expect(subject.get('Port-Channel1')[:description]).to be_empty
76
- expect(subject.set_description('Port-Channel1', value: 'foo bar')).to be_truthy
78
+ expect(subject.set_description('Port-Channel1', value: 'foo bar'))
79
+ .to be_truthy
77
80
  expect(subject.get('Port-Channel1')[:description]).to eq('foo bar')
78
81
  end
79
82
  end
@@ -95,19 +98,24 @@ describe Rbeapi::Api::Interfaces do
95
98
  end
96
99
 
97
100
  describe '#set_minimum_links' do
98
- before { node.config(['interface Port-Channel1',
99
- 'port-channel min-links 0']) }
101
+ before do
102
+ node.config(['interface Port-Channel1',
103
+ 'port-channel min-links 0'])
104
+ end
100
105
 
101
106
  it 'sets the minimum links value on the interface' do
102
107
  expect(subject.get('Port-Channel1')[:minimum_links]).to eq('0')
103
- expect(subject.set_minimum_links('Port-Channel1', value: '2')).to be_truthy
108
+ expect(subject.set_minimum_links('Port-Channel1', value: '2'))
109
+ .to be_truthy
104
110
  expect(subject.get('Port-Channel1')[:minimum_links]).to eq('2')
105
111
  end
106
112
  end
107
113
 
108
114
  describe '#set_members' do
109
- before { node.config(['no interface Port-Channel1',
110
- 'interface Port-Channel1']) }
115
+ before do
116
+ node.config(['no interface Port-Channel1',
117
+ 'interface Port-Channel1'])
118
+ end
111
119
 
112
120
  it 'adds new members to the port-channel interface' do
113
121
  node.config(['no interface Port-Channel1', 'interface Port-Channel1'])
@@ -118,17 +126,20 @@ describe Rbeapi::Api::Interfaces do
118
126
 
119
127
  it 'updates the member interfaces on existing interface' do
120
128
  node.config(['no interface Port-Channel1', 'interface Ethernet1-2',
121
- 'channel-group 1 mode on'])
122
- expect(subject.get('Port-Channel1')[:members]).to eq(['Ethernet1', 'Ethernet2'])
123
- expect(subject.set_members('Port-Channel1', ['Ethernet1', 'Ethernet3'])).to be_truthy
124
- expect(subject.get('Port-Channel1')[:members]).to eq(['Ethernet1', 'Ethernet3'])
129
+ 'channel-group 1 mode on'])
130
+ expect(subject.get('Port-Channel1')[:members]).to eq(%w(Ethernet1
131
+ Ethernet2))
132
+ expect(subject.set_members('Port-Channel1',
133
+ %w(Ethernet1 Ethernet3))).to be_truthy
134
+ expect(subject.get('Port-Channel1')[:members]).to eq(%w(Ethernet1
135
+ Ethernet3))
125
136
  end
126
137
  end
127
138
 
128
139
  describe '#set_lacp_mode' do
129
140
  it 'sets the lacp mode on the port-channel to active' do
130
141
  node.config(['no interface Port-Channel1', 'interface Ethernet1-3',
131
- 'channel-group 1 mode on'])
142
+ 'channel-group 1 mode on'])
132
143
  expect(subject.get('Port-Channel1')[:lacp_mode]).to eq('on')
133
144
  expect(subject.set_lacp_mode('Port-Channel1', 'active')).to be_truthy
134
145
  expect(subject.get('Port-Channel1')[:lacp_mode]).to eq('active')
@@ -136,7 +147,7 @@ describe Rbeapi::Api::Interfaces do
136
147
 
137
148
  it 'sets the lacp mode on the port-channel to passive' do
138
149
  node.config(['no interface Port-Channel1', 'interface Ethernet1-3',
139
- 'channel-group 1 mode on'])
150
+ 'channel-group 1 mode on'])
140
151
  expect(subject.get('Port-Channel1')[:lacp_mode]).to eq('on')
141
152
  expect(subject.set_lacp_mode('Port-Channel1', 'passive')).to be_truthy
142
153
  expect(subject.get('Port-Channel1')[:lacp_mode]).to eq('passive')
@@ -144,7 +155,7 @@ describe Rbeapi::Api::Interfaces do
144
155
 
145
156
  it 'sets the lacp mode on the port-channel to on' do
146
157
  node.config(['no interface Port-Channel1', 'interface Ethernet1-3',
147
- 'channel-group 1 mode active'])
158
+ 'channel-group 1 mode active'])
148
159
  expect(subject.get('Port-Channel1')[:lacp_mode]).to eq('active')
149
160
  expect(subject.set_lacp_mode('Port-Channel1', 'on')).to be_truthy
150
161
  expect(subject.get('Port-Channel1')[:lacp_mode]).to eq('on')
@@ -155,34 +166,40 @@ describe Rbeapi::Api::Interfaces do
155
166
  it 'sets the lacp fallback on the port-channel to static' do
156
167
  node.config(['interface Port-Channel1', 'no port-channel lacp fallback'])
157
168
  expect(subject.get('Port-Channel1')[:lacp_fallback]).to eq('disabled')
158
- expect(subject.set_lacp_fallback('Port-Channel1', value: 'static')).to be_truthy
169
+ expect(subject.set_lacp_fallback('Port-Channel1', value: 'static'))
170
+ .to be_truthy
159
171
  expect(subject.get('Port-Channel1')[:lacp_fallback]).to eq('static')
160
172
  end
161
173
 
162
174
  it 'sets the lacp fallback on the port-channel to individual' do
163
175
  node.config(['interface Port-Channel1', 'no port-channel lacp fallback'])
164
176
  expect(subject.get('Port-Channel1')[:lacp_fallback]).to eq('disabled')
165
- expect(subject.set_lacp_fallback('Port-Channel1', value: 'individual')).to be_truthy
177
+ expect(subject.set_lacp_fallback('Port-Channel1', value: 'individual'))
178
+ .to be_truthy
166
179
  expect(subject.get('Port-Channel1')[:lacp_fallback]).to eq('individual')
167
180
  end
168
181
 
169
182
  it 'sets the lacp fallback on the port-channel to disabled' do
170
- node.config(['interface Port-Channel1', 'port-channel lacp fallback static'])
183
+ node.config(['interface Port-Channel1',
184
+ 'port-channel lacp fallback static'])
171
185
  expect(subject.get('Port-Channel1')[:lacp_fallback]).to eq('static')
172
- expect(subject.set_lacp_fallback('Port-Channel1', value: 'disabled')).to be_truthy
186
+ expect(subject.set_lacp_fallback('Port-Channel1', value: 'disabled'))
187
+ .to be_truthy
173
188
  expect(subject.get('Port-Channel1')[:lacp_fallback]).to eq('disabled')
174
189
  end
175
190
  end
176
191
 
177
192
  describe '#set_lacp_timeout' do
178
- before { node.config(['interface Port-Channel1',
179
- 'default port-channel lacp fallback timeout']) }
193
+ before do
194
+ node.config(['interface Port-Channel1',
195
+ 'default port-channel lacp fallback timeout'])
196
+ end
180
197
 
181
198
  it 'sets the lacp fallback timeout value on the interface' do
182
199
  expect(subject.get('Port-Channel1')[:lacp_timeout]).to eq('90')
183
- expect(subject.set_lacp_timeout('Port-Channel1', value: '100')).to be_truthy
200
+ expect(subject.set_lacp_timeout('Port-Channel1', value: '100'))
201
+ .to be_truthy
184
202
  expect(subject.get('Port-Channel1')[:lacp_timeout]).to eq('100')
185
203
  end
186
204
  end
187
205
  end
188
-
@@ -12,10 +12,10 @@ describe Rbeapi::Api::Interfaces do
12
12
  end
13
13
 
14
14
  describe '#get' do
15
-
16
15
  let(:entity) do
17
16
  { name: 'Vxlan1', type: 'vxlan', description: '', shutdown: false,
18
- source_interface: '', multicast_group: ''}
17
+ source_interface: '', multicast_group: '', udp_port: 4789,
18
+ flood_list: [], vlans: {} }
19
19
  end
20
20
 
21
21
  before { node.config(['no interface Vxlan1', 'interface Vxlan1']) }
@@ -35,7 +35,7 @@ describe Rbeapi::Api::Interfaces do
35
35
  it 'returns a hash collection' do
36
36
  expect(subject.getall).to be_a_kind_of(Hash)
37
37
  end
38
- end
38
+ end
39
39
 
40
40
  describe '#create' do
41
41
  before { node.config('no interface Vxlan1') }
@@ -97,7 +97,8 @@ describe Rbeapi::Api::Interfaces do
97
97
 
98
98
  it 'sets the source interface value on the interface' do
99
99
  expect(subject.get('Vxlan1')[:source_interface]).to be_empty
100
- expect(subject.set_source_interface('Vxlan1', value: 'Loopback0')).to be_truthy
100
+ expect(subject.set_source_interface('Vxlan1', value: 'Loopback0'))
101
+ .to be_truthy
101
102
  expect(subject.get('Vxlan1')[:source_interface]).to eq('Loopback0')
102
103
  end
103
104
  end
@@ -107,9 +108,9 @@ describe Rbeapi::Api::Interfaces do
107
108
 
108
109
  it 'sets the multicast group value on the interface' do
109
110
  expect(subject.get('Vxlan1')[:multicast_group]).to be_empty
110
- expect(subject.set_multicast_group('Vxlan1', value: '239.10.10.10')).to be_truthy
111
+ expect(subject.set_multicast_group('Vxlan1', value: '239.10.10.10'))
112
+ .to be_truthy
111
113
  expect(subject.get('Vxlan1')[:multicast_group]).to eq('239.10.10.10')
112
114
  end
113
115
  end
114
116
  end
115
-
@@ -12,13 +12,14 @@ describe Rbeapi::Api::Ipinterfaces do
12
12
  end
13
13
 
14
14
  describe '#get' do
15
-
16
15
  let(:entity) do
17
- { address: '99.99.99.99/24', mtu: '1500', helper_addresses: [] }
16
+ { address: '77.99.99.99/24', mtu: '1500', helper_addresses: [] }
18
17
  end
19
18
 
20
- before { node.config(['default interface Ethernet1', 'interface Ethernet1',
21
- 'no switchport', 'ip address 99.99.99.99/24']) }
19
+ before do
20
+ node.config(['default interface Ethernet1', 'interface Ethernet1',
21
+ 'no switchport', 'ip address 77.99.99.99/24'])
22
+ end
22
23
 
23
24
  it 'returns the ipinterface resource' do
24
25
  expect(subject.get('Ethernet1')).to eq(entity)
@@ -26,8 +27,10 @@ describe Rbeapi::Api::Ipinterfaces do
26
27
  end
27
28
 
28
29
  describe '#getall' do
29
- before { node.config(['default interface Ethernet1', 'interface Ethernet1',
30
- 'no switchport', 'ip address 99.99.99.99/24']) }
30
+ before do
31
+ node.config(['default interface Ethernet1', 'interface Ethernet1',
32
+ 'no switchport', 'ip address 77.99.99.99/24'])
33
+ end
31
34
 
32
35
  it 'returns the ipinterface collection' do
33
36
  expect(subject.getall).to include('Ethernet1')
@@ -36,7 +39,7 @@ describe Rbeapi::Api::Ipinterfaces do
36
39
  it 'returns a hash collection' do
37
40
  expect(subject.getall).to be_a_kind_of(Hash)
38
41
  end
39
- end
42
+ end
40
43
 
41
44
  describe '#create' do
42
45
  before { node.config(['interface Ethernet1', 'switchport']) }
@@ -49,8 +52,10 @@ describe Rbeapi::Api::Ipinterfaces do
49
52
  end
50
53
 
51
54
  describe '#delete' do
52
- before { node.config(['interface Ethernet1', 'no switchport',
53
- 'ip address 99.99.99.99/24']) }
55
+ before do
56
+ node.config(['interface Ethernet1', 'no switchport',
57
+ 'ip address 77.99.99.99/24'])
58
+ end
54
59
 
55
60
  it 'deletes a ipinterface resource' do
56
61
  expect(subject.get('Ethernet1')).not_to be_nil
@@ -60,19 +65,24 @@ describe Rbeapi::Api::Ipinterfaces do
60
65
  end
61
66
 
62
67
  describe '#set_address' do
63
- before { node.config(['default interface Ethernet1', 'interface Ethernet1',
64
- 'no switchport']) }
68
+ before do
69
+ node.config(['default interface Ethernet1', 'interface Ethernet1',
70
+ 'no switchport'])
71
+ end
65
72
 
66
73
  it 'sets the address value' do
67
74
  expect(subject.get('Ethernet1')[:address]).to be_empty
68
- expect(subject.set_address('Ethernet1', value: '99.99.99.99/24')).to be_truthy
69
- expect(subject.get('Ethernet1')[:address]).to eq('99.99.99.99/24')
75
+ expect(subject.set_address('Ethernet1', value: '77.99.99.99/24'))
76
+ .to be_truthy
77
+ expect(subject.get('Ethernet1')[:address]).to eq('77.99.99.99/24')
70
78
  end
71
79
  end
72
80
 
73
81
  describe '#set_mtu' do
74
- before { node.config(['default interface Ethernet1', 'interface Ethernet1',
75
- 'no switchport']) }
82
+ before do
83
+ node.config(['default interface Ethernet1', 'interface Ethernet1',
84
+ 'no switchport'])
85
+ end
76
86
 
77
87
  it 'sets the mtu value on the interface' do
78
88
  expect(subject.get('Ethernet1')[:mtu]).to eq('1500')
@@ -82,16 +92,19 @@ describe Rbeapi::Api::Ipinterfaces do
82
92
  end
83
93
 
84
94
  describe '#set_helper_addresses' do
85
- before { node.config(['default interface Ethernet1', 'interface Ethernet1',
86
- 'no switchport', 'ip address 99.99.99.99/24']) }
95
+ before do
96
+ node.config(['default interface Ethernet1', 'interface Ethernet1',
97
+ 'no switchport', 'ip address 77.99.99.99/24'])
98
+ end
87
99
 
88
- let(:helpers) { %w(99.99.99.98 99.99.99.97) }
100
+ let(:helpers) { %w(77.99.99.98 77.99.99.97) }
89
101
 
90
102
  it 'sets the helper addresses on the interface' do
91
103
  expect(subject.get('Ethernet1')[:helper_addresses]).to be_empty
92
- expect(subject.set_helper_addresses('Ethernet1', value: helpers)).to be_truthy
93
- expect(subject.get('Ethernet1')[:helper_addresses].sort).to eq(helpers.sort)
104
+ expect(subject.set_helper_addresses('Ethernet1', value: helpers))
105
+ .to be_truthy
106
+ expect(subject.get('Ethernet1')[:helper_addresses].sort)
107
+ .to eq(helpers.sort)
94
108
  end
95
109
  end
96
110
  end
97
-
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  require 'rbeapi/client'
4
4
  require 'rbeapi/api/mlag'
5
5
 
6
- describe Rbeapi::Api::MlagInterfaces do
6
+ describe Rbeapi::Api::Mlag do
7
7
  subject { described_class.new(node) }
8
8
 
9
9
  let(:node) do
@@ -12,15 +12,14 @@ describe Rbeapi::Api::MlagInterfaces do
12
12
  end
13
13
 
14
14
  describe '#get' do
15
-
16
15
  let(:entity) do
17
- { mlag_id: '1' }
16
+ { mlag_id: 1 }
18
17
  end
19
18
 
20
19
  before { node.config(['interface Port-Channel1', 'mlag 1']) }
21
20
 
22
21
  it 'returns the mlag interface resource' do
23
- expect(subject.get('Port-Channel1')).to eq(entity)
22
+ expect(subject.get[:interfaces]['Port-Channel1']).to eq(entity)
24
23
  end
25
24
  end
26
25
 
@@ -28,53 +27,31 @@ describe Rbeapi::Api::MlagInterfaces do
28
27
  before { node.config(['interface Port-Channel1', 'mlag 1']) }
29
28
 
30
29
  it 'returns the interface collection' do
31
- expect(subject.getall).to include('Port-Channel1')
30
+ expect(subject.get[:interfaces]).to include('Port-Channel1')
32
31
  end
33
32
 
34
33
  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
34
+ expect(subject.get[:interfaces]).to be_a_kind_of(Hash)
46
35
  end
47
36
  end
48
37
 
49
- describe '#delete' do
50
- before { node.config(['interface Port-Channel1', 'mlag 1']) }
38
+ describe '#set_mlag_id' do
39
+ before { node.config(['interface Port-Channel1', 'no mlag']) }
51
40
 
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
41
+ it 'sets mlag_id on Port-Channel1' do
42
+ expect(subject.get[:interfaces]['Port-Channel1']).to be_nil
43
+ expect(subject.set_mlag_id('Port-Channel1', value: '1')).to be_truthy
44
+ expect(subject.get[:interfaces]['Port-Channel1'][:mlag_id]).to eq(1)
56
45
  end
57
46
  end
58
47
 
59
- describe '#default' do
48
+ describe '#set_mlag_id default' do
60
49
  before { node.config(['interface Port-Channel1', 'mlag 1']) }
61
50
 
62
51
  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
52
+ expect(subject.get[:interfaces]['Port-Channel1']).not_to be_nil
53
+ expect(subject.set_mlag_id('Port-Channel1', default: true)).to be_truthy
54
+ expect(subject.get[:interfaces]['Port-Channel1']).to be_nil
66
55
  end
67
56
  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
57
  end
80
-
@@ -12,18 +12,17 @@ describe Rbeapi::Api::Mlag do
12
12
  end
13
13
 
14
14
  describe '#get' do
15
-
16
- let(:keys) do
17
- [ :domain_id, :local_interface, :peer_address, :peer_link, :shutdown,
18
- :interfaces ]
15
+ let(:global_keys) do
16
+ [:domain_id, :local_interface, :peer_address, :peer_link, :shutdown]
19
17
  end
20
18
 
21
19
  before { node.config('default mlag configuration') }
22
20
 
23
- it 'contains all required keys' do
24
- keys.each do |key|
25
- expect(subject.get).to include(key)
21
+ it 'contains all required global keys' do
22
+ global_keys.each do |key|
23
+ expect(subject.get[:global]).to include(key)
26
24
  end
25
+ expect(subject.get).to include(:interfaces)
27
26
  end
28
27
  end
29
28
 
@@ -31,9 +30,9 @@ describe Rbeapi::Api::Mlag do
31
30
  before { node.config('default mlag configuration') }
32
31
 
33
32
  it 'configures the mlag domain-id value' do
34
- expect(subject.get[:domain_id]).to be_empty
33
+ expect(subject.get[:global][:domain_id]).to be_empty
35
34
  expect(subject.set_domain_id(value: 'foo')).to be_truthy
36
- expect(subject.get[:domain_id]).to eq('foo')
35
+ expect(subject.get[:global][:domain_id]).to eq('foo')
37
36
  end
38
37
  end
39
38
 
@@ -41,54 +40,51 @@ describe Rbeapi::Api::Mlag do
41
40
  before { node.config(['default mlag configuration', 'interface vlan4094']) }
42
41
 
43
42
  it 'configures the mlag local interface value' do
44
- expect(subject.get[:local_interface]).to be_empty
43
+ expect(subject.get[:global][:local_interface]).to be_empty
45
44
  expect(subject.set_local_interface(value: 'Vlan4094')).to be_truthy
46
- expect(subject.get[:local_interface]).to eq('Vlan4094')
45
+ expect(subject.get[:global][:local_interface]).to eq('Vlan4094')
47
46
  end
48
47
  end
49
48
 
50
49
  describe '#set_peer_link' do
51
- before { node.config(['default mlag configuration',
52
- 'default interface Ethernet1']) }
50
+ before do
51
+ node.config(['default mlag configuration',
52
+ 'default interface Ethernet1'])
53
+ end
53
54
 
54
55
  it 'configures the mlag peer link value' do
55
- expect(subject.get[:peer_link]).to be_empty
56
+ expect(subject.get[:global][:peer_link]).to be_empty
56
57
  expect(subject.set_peer_link(value: 'Ethernet1')).to be_truthy
57
- expect(subject.get[:peer_link]).to eq('Ethernet1')
58
+ expect(subject.get[:global][:peer_link]).to eq('Ethernet1')
58
59
  end
59
60
  end
60
61
 
61
62
  describe '#set_peer_address' do
62
- before { node.config(['default mlag configuration',
63
- 'default interface Ethernet1']) }
63
+ before do
64
+ node.config(['default mlag configuration',
65
+ 'default interface Ethernet1'])
66
+ end
64
67
 
65
68
  it 'configures the mlag peer address value' do
66
- expect(subject.get[:peer_address]).to be_empty
69
+ expect(subject.get[:global][:peer_address]).to be_empty
67
70
  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')
71
+ expect(subject.get[:global][:peer_address]).to eq('1.1.1.1')
69
72
  end
70
73
  end
71
74
 
72
75
  describe '#set_shutdown' do
73
76
  it 'configures mlag to be enabled' do
74
77
  node.config(['mlag configuration', 'shutdown'])
75
- expect(subject.get[:shutdown]).to be_truthy
78
+ expect(subject.get[:global][:shutdown]).to be_truthy
76
79
  expect(subject.set_shutdown(value: false)).to be_truthy
77
- expect(subject.get[:shutdown]).to be_falsy
80
+ expect(subject.get[:global][:shutdown]).to be_falsy
78
81
  end
79
82
 
80
83
  it 'configures mlag to be disabled' do
81
84
  node.config(['mlag configuration', 'no shutdown'])
82
- expect(subject.get[:shutdown]).to be_falsy
85
+ expect(subject.get[:global][:shutdown]).to be_falsy
83
86
  expect(subject.set_shutdown(value: true)).to be_truthy
84
- expect(subject.get[:shutdown]).to be_truthy
87
+ expect(subject.get[:global][:shutdown]).to be_truthy
85
88
  end
86
89
  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
90
  end
@@ -12,7 +12,6 @@ describe Rbeapi::Api::Snmp do
12
12
  end
13
13
 
14
14
  describe '#get' do
15
-
16
15
  let(:keys) do
17
16
  [:location, :contact, :chassis_id, :source_interface]
18
17
  end
@@ -64,5 +63,3 @@ describe Rbeapi::Api::Snmp do
64
63
  end
65
64
  end
66
65
  end
67
-
68
-