rbeapi 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
-