leaseweb-rest-api 1.1.6 → 2.0.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.
metadata CHANGED
@@ -1,59 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leaseweb-rest-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.6
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Arnoud Vermeer
7
+ - Leaseweb Product Owners
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-20 00:00:00.000000000 Z
11
+ date: 2020-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.18.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: rspec
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: webmock
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
26
+ version: 0.18.0
55
27
  description: Leaseweb REST API client for Ruby.
56
- email: a.vermeer@tech.leaseweb.com
28
+ email: productowners@leaseweb.com
57
29
  executables: []
58
30
  extensions: []
59
31
  extra_rdoc_files: []
@@ -63,18 +35,13 @@ files:
63
35
  - ".rubocop.yml"
64
36
  - Gemfile
65
37
  - LICENSE.txt
38
+ - README.md
66
39
  - Rakefile
67
40
  - leaseweb-rest-api.gemspec
68
- - lib/hash-to-uri-conversion.rb
69
41
  - lib/leaseweb-rest-api.rb
70
- - readme.md
71
- - spec/lib/leaseweb-rest-api_spec.rb
72
- - spec/spec_helper.rb
73
- - test/id_rsa
74
- - test/id_rsa.pub.pem
75
42
  homepage: https://github.com/LeaseWeb/leaseweb-rest-api
76
43
  licenses:
77
- - Apache
44
+ - Apache-2.0
78
45
  metadata: {}
79
46
  post_install_message:
80
47
  rdoc_options: []
@@ -91,8 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
58
  - !ruby/object:Gem::Version
92
59
  version: '0'
93
60
  requirements: []
94
- rubyforge_project:
95
- rubygems_version: 2.6.11
61
+ rubygems_version: 3.1.2
96
62
  signing_key:
97
63
  specification_version: 4
98
64
  summary: Leaseweb REST API client for Ruby
@@ -1,32 +0,0 @@
1
- class HashToURIConversion
2
- def to_params(hash)
3
- params = hash.map { |k, v| normalize_param(k, v) }.join
4
- params.chop! # trailing &
5
- params
6
- end
7
-
8
- def normalize_param(key, value)
9
- param = ''
10
- stack = []
11
-
12
- if value.is_a?(Array)
13
- param << value.each_with_index.map { |element, i| normalize_param("#{key}[#{i}]", element) }.join
14
- elsif value.is_a?(Hash)
15
- stack << [key, value]
16
- else
17
- param << "#{key}=#{URI.encode(value.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))}&"
18
- end
19
-
20
- stack.each do |parent, hash|
21
- hash.each do |k, v|
22
- if v.is_a?(Hash)
23
- stack << ["#{parent}[#{k}]", v]
24
- else
25
- param << normalize_param("#{parent}[#{k}]", v)
26
- end
27
- end
28
- end
29
-
30
- param
31
- end
32
- end
@@ -1,648 +0,0 @@
1
- require 'spec_helper'
2
- require_relative '../../lib/leaseweb-rest-api'
3
-
4
- describe LeasewebAPI do
5
- let(:apikey) { 'e17b534d-3af6-4208-89e6-e43798b3c30f' }
6
- let(:privateKey) { File.expand_path('./test/id_rsa') }
7
- let(:password) { 'cdcHRt+,zVuZWtV2a7PkixZTn' }
8
- let(:request_headers) do
9
- { 'X-Lsw-Auth' => apikey }
10
- end
11
-
12
- subject do
13
- api = LeasewebAPI.new
14
- api.apiKeyAuth(apikey)
15
- api.readPrivateKey(privateKey, password)
16
- api
17
- end
18
-
19
- describe '#getDomains' do
20
- let(:response) { '{}' }
21
-
22
- it 'returns a list of all the domains assigned to the account' do
23
- stub_request(:get, 'https://api.leaseweb.com/v1/domains')
24
- .with(headers: request_headers)
25
- .to_return(status: 200, body: response, headers: {})
26
-
27
- subject.getDomains
28
- end
29
- end
30
-
31
- describe '#getDomain' do
32
- let(:response) { '{}' }
33
-
34
- it 'returns a representation of a domain resource' do
35
- stub_request(:get, 'https://api.leaseweb.com/v1/domains/example.com')
36
- .with(headers: request_headers)
37
- .to_return(status: 200, body: response, headers: {})
38
-
39
- subject.getDomain('example.com')
40
- end
41
- end
42
-
43
- describe '#updateDomain' do
44
- let(:response) { '{}' }
45
-
46
- it 'updates a domain' do
47
- body = 'ttl=86400'
48
-
49
- stub_request(:put, 'https://api.leaseweb.com/v1/domains/example.com')
50
- .with(headers: request_headers, body: body)
51
- .to_return(status: 200, body: response, headers: {})
52
-
53
- subject.updateDomain('example.com', 86_400)
54
- end
55
- end
56
-
57
- describe '#getDNSRecords' do
58
- let(:response) { '{}' }
59
-
60
- it 'returns a representation of a specific dnsRecords of a domain' do
61
- stub_request(:get, 'https://api.leaseweb.com/v1/domains/example.com/dnsRecords')
62
- .with(headers: request_headers)
63
- .to_return(status: 200, body: response, headers: {})
64
-
65
- subject.getDNSRecords('example.com')
66
- end
67
- end
68
-
69
- describe '#createDNSRecords' do
70
- let(:response) { '{}' }
71
-
72
- it 'creates a new dns record' do
73
- body = 'host=example.com&content=123.123.123.123&type=MX&priority=10'
74
-
75
- stub_request(:post, 'https://api.leaseweb.com/v1/domains/example.com/dnsRecords')
76
- .with(headers: request_headers, body: body)
77
- .to_return(status: 200, body: response, headers: {})
78
-
79
- subject.createDNSRecords('example.com', 'example.com', '123.123.123.123', 'MX', 10)
80
- end
81
- end
82
-
83
- describe '#getDNSRecord' do
84
- let(:response) { '{}' }
85
-
86
- it 'returns a representation of a specific dnsRecord of a domain' do
87
- stub_request(:get, 'https://api.leaseweb.com/v1/domains/example.com/dnsRecords/123')
88
- .with(headers: request_headers)
89
- .to_return(status: 200, body: response, headers: {})
90
-
91
- subject.getDNSRecord('example.com', 123)
92
- end
93
- end
94
-
95
- describe '#updateDNSRecord' do
96
- let(:response) { '{}' }
97
-
98
- it 'updates a dns record' do
99
- body = 'id=123&host=example.com&content=10.10.10.10&type=MX&priority=20'
100
-
101
- stub_request(:put, 'https://api.leaseweb.com/v1/domains/example.com/dnsRecords/123')
102
- .with(headers: request_headers, body: body)
103
- .to_return(status: 200, body: response, headers: {})
104
-
105
- subject.updateDNSRecord('example.com', '123', 'example.com', '10.10.10.10', 'MX', '20')
106
- end
107
- end
108
-
109
- describe '#deleteDNSRecord' do
110
- let(:response) { '{}' }
111
-
112
- it 'deletes a dns record for a domain' do
113
- stub_request(:delete, 'https://api.leaseweb.com/v1/domains/example.com/dnsRecords/123')
114
- .with(headers: request_headers)
115
- .to_return(status: 200, body: response, headers: {})
116
-
117
- subject.deleteDNSRecord('example.com', '123')
118
- end
119
- end
120
-
121
- describe '#getRescueImages' do
122
- let(:response) do
123
- '{"rescueImages":[{"rescueImage":{"id":121,"name":"FreeBSD Rescue 2.1 (amd64)"}},{"rescueImage":{"id":122,"name":"FreeBSD Rescue 2.1 (x86)"}},{"rescueImage":{"id":137,"name":"Rescue 2.1 (amd64)"}},{"rescueImage":{"id":138,"name":"Rescue 2.1 (x86)"}}]}'
124
- end
125
-
126
- it 'returns all your available rescue images' do
127
- stub_request(:get, 'https://api.leaseweb.com/v1/rescueImages')
128
- .with(headers: request_headers)
129
- .to_return(status: 200, body: response, headers: {})
130
-
131
- subject.getRescueImages
132
- end
133
- end
134
-
135
- describe '#getBareMetals' do
136
- let(:response) do
137
- '{"bareMetals":[{"bareMetal":{"reference":null,"bareMetalId":"114916","serverName":"LSPG003","serverType":"Bare Metal"}},{"bareMetal":{"reference":null,"bareMetalId":"198969","serverName":"LSPG001","serverType":"Bare Metal"}},{"bareMetal":{"reference":null,"bareMetalId":"198970","serverName":"LSPG002","serverType":"Bare Metal"}}]}'
138
- end
139
-
140
- it 'returns the id of all your Bare Metal servers' do
141
- stub_request(:get, 'https://api.leaseweb.com/v1/bareMetals')
142
- .with(headers: request_headers)
143
- .to_return(status: 200, body: response, headers: {})
144
-
145
- subject.getBareMetals
146
- end
147
- end
148
-
149
- describe '#getBareMetal' do
150
- let(:response) do
151
- '{"bareMetal":{"reference":null,"location":{"site":"SFO-12","cabinet":"0209","rackspace":"-","combinationLock":"-"},"server":{"ram":"16GB","kvm":"No","serverType":"Preinstalled SFO12.300.0209 DL120 G7","processorType":"Intel Quad-Core Xeon E3-1230","processorSpeed":"3200 Mhz","numberOfCpus":1,"numberOfCores":4,"hardDisks":" 2x1TB ","hardwareRaid":"No"},"network":{"dataPack":"Connectivity - see other packs","ipsFreeOfCharge":"1","ipsAssigned":1,"excessIpsPrice":"0.00","dataPackExcess":{"type":"","value":"0.00","unit":""},"macAddresses":{"mac":["C8:CB:B8:C5:17:0C","C8:CB:B8:C5:17:0D"]}},"extras":{"extra":{"service":"Private network: 100Mbps"}},"bareMetalId":"114916","serverName":"LSPG003","serverType":"Bare Metal","serverHostingPack":{"reference":null,"bareMetalId":"114916","serverName":"LSPG003","serverType":"Bare Metal","startDate":"Jul 1, 2012","endDate":"","contractTerm":"3 month(s)"},"serverSpecifications":[],"serviceLevelAgreement":{"sla":"Basic - 24x7x24"},"datacenterAccessCards":{"accessCards":["0",[]]}}}'
152
- end
153
-
154
- it 'returns the data of your Bare Metal server' do
155
- stub_request(:get, 'https://api.leaseweb.com/v1/bareMetals/114916')
156
- .with(headers: request_headers)
157
- .to_return(status: 200, body: response, headers: {})
158
-
159
- subject.getBareMetal(114_916)
160
- end
161
- end
162
-
163
- describe '#updateBareMetal' do
164
- let(:response) { '{}' }
165
-
166
- it 'updates a bareMetal' do
167
- body = 'reference=test'
168
-
169
- stub_request(:put, 'https://api.leaseweb.com/v1/bareMetals/114916')
170
- .with(headers: request_headers, body: body)
171
- .to_return(status: 200, body: response, headers: {})
172
-
173
- subject.updateBareMetal(114_916, 'test')
174
- end
175
- end
176
-
177
- describe '#getSwitchPort' do
178
- let(:response) do
179
- '{"switchPort":{"status":"open","serverId":"114916","serverName":"LSPG003","switchNode":1}}'
180
- end
181
-
182
- it 'returns the switchport status of your Bare Metal server' do
183
- stub_request(:get, 'https://api.leaseweb.com/v1/bareMetals/114916/switchPort')
184
- .with(headers: request_headers)
185
- .to_return(status: 200, body: response, headers: {})
186
-
187
- subject.getSwitchPort(114_916)
188
- end
189
- end
190
-
191
- describe '#postSwitchPortOpen' do
192
- let(:response) { '{}' }
193
-
194
- it 'opens the switch port of your Bare Metal server' do
195
- stub_request(:post, 'https://api.leaseweb.com/v1/bareMetals/114916/switchPort/open')
196
- .with(headers: request_headers)
197
- .to_return(status: 200, body: response, headers: {})
198
-
199
- subject.postSwitchPortOpen(114_916)
200
- end
201
- end
202
-
203
- describe '#postSwitchPortClose' do
204
- let(:response) { '{}' }
205
-
206
- it 'closes the switch port of your Bare Metal server' do
207
- stub_request(:post, 'https://api.leaseweb.com/v1/bareMetals/114916/switchPort/close')
208
- .with(headers: request_headers)
209
- .to_return(status: 200, body: response, headers: {})
210
-
211
- subject.postSwitchPortClose(114_916)
212
- end
213
- end
214
-
215
- describe '#getPowerStatus' do
216
- let(:response) do
217
- '{"powerStatus":{"status":"on","serverId":"114916","serverName":"LSPG003"}}'
218
- end
219
-
220
- it 'returns the power status of your Bare Metal server' do
221
- stub_request(:get, 'https://api.leaseweb.com/v1/bareMetals/114916/powerStatus')
222
- .with(headers: request_headers)
223
- .to_return(status: 200, body: response, headers: {})
224
-
225
- subject.getPowerStatus(114_916)
226
- end
227
- end
228
-
229
- describe '#getIPs' do
230
- let(:response) do
231
- '{"ips":[{"ip":{"ip":"209.58.131.10","reverseLookup":"","ipDetails":{"gateway":"209.58.131.62","mask":"255.255.255.192"},"nullRouted":false,"billingInformation":{"price":"0.00","startDate":"Jun 1, 2015","endDate":null},"serverId":"114916","serverType":"Bare Metal","serverName":"LSPG003"}}]}'
232
- end
233
-
234
- it 'returns the ips of your Bare Metal server' do
235
- stub_request(:get, 'https://api.leaseweb.com/v1/bareMetals/114916/ips')
236
- .with(headers: request_headers)
237
- .to_return(status: 200, body: response, headers: {})
238
-
239
- subject.getIPs(114_916)
240
- end
241
- end
242
-
243
- describe '#getIP' do
244
- let(:response) do
245
- '{"ip":{"ip":"209.58.131.10","reverseLookup":"","ipDetails":{"gateway":"209.58.131.62","mask":"255.255.255.192"},"nullRouted":false,"billingInformation":{"price":"0.00","startDate":"Jun 1, 2015","endDate":null},"serverId":"114916","serverType":"Bare Metal","serverName":"LSPG003"}}'
246
- end
247
-
248
- it 'returns information about the ip of your Bare Metal server' do
249
- stub_request(:get, 'https://api.leaseweb.com/v1/bareMetals/114916/ips/209.58.131.10')
250
- .with(headers: request_headers)
251
- .to_return(status: 200, body: response, headers: {})
252
-
253
- subject.getIP(114_916, '209.58.131.10')
254
- end
255
- end
256
-
257
- describe '#updateIP' do
258
- let(:response) { '{}' }
259
-
260
- it 'updates information of the ip of your Bare Metal server' do
261
- stub_request(:put, 'https://api.leaseweb.com/v1/bareMetals/114916/ips/209.58.131.10')
262
- .with(headers: request_headers)
263
- .to_return(status: 200, body: response, headers: {})
264
-
265
- subject.updateIP(114_916, '209.58.131.10', 'modified-by-api.leaseweb.com', 1)
266
- end
267
- end
268
-
269
- describe '#getNetworkUsage' do
270
- let(:response) do
271
- '{"bandwidth":{"measurement":{"node":{"in":"-","out":"-","total":"10.91 Kbps"},"total":"10.91 Kbps","average":"10.91 Kbps"},"overusage":"0 bps","serverId":114916,"serverName":"LSPG003","interval":{"from":"09-05-2015","to":"08-06-2015"},"monthlyThreshold":"0 Mbps"},"dataTraffic":{"measurement":{"node":{"in":"3.5 GB","out":"523.81 MB","total":"4.02 GB"},"total":"4.02 GB"},"overusage":"0 B","serverId":114916,"serverName":"LSPG003","interval":{"from":"09-05-2015","to":"08-06-2015"},"monthlyThreshold":"0 GB"}}'
272
- end
273
-
274
- it 'returns network usage details of a bareMetal server' do
275
- stub_request(:get, 'https://api.leaseweb.com/v1/bareMetals/114916/networkUsage')
276
- .with(headers: request_headers)
277
- .to_return(status: 200, body: response, headers: {})
278
-
279
- subject.getNetworkUsage(114_916)
280
- end
281
- end
282
-
283
- describe '#getNetworkUsageBandWidth' do
284
- let(:response) do
285
- '{"bandwidth":{"measurement":{"node":{"in":"-","out":"-","total":"10.91 Kbps"},"total":"10.91 Kbps","average":"10.91 Kbps"},"overusage":"0 bps","serverId":114916,"serverName":"LSPG003","interval":{"from":"09-05-2015","to":"08-06-2015"},"monthlyThreshold":"0 Mbps"},"dataTraffic":{"measurement":{"node":{"in":"3.5 GB","out":"523.81 MB","total":"4.02 GB"},"total":"4.02 GB"},"overusage":"0 B","serverId":114916,"serverName":"LSPG003","interval":{"from":"09-05-2015","to":"08-06-2015"},"monthlyThreshold":"0 GB"}}'
286
- end
287
-
288
- it 'returns network usage details of a bareMetal server' do
289
- stub_request(:get, 'https://api.leaseweb.com/v1/bareMetals/114916/networkUsage/bandWidth?dateFrom=06-04-2015&dateTo=06-05-2015')
290
- .with(headers: request_headers)
291
- .to_return(status: 200, body: response, headers: {})
292
-
293
- subject.getNetworkUsageBandWidth(114_916, '06-04-2015', '06-05-2015', 'json')
294
- end
295
- end
296
-
297
- describe '#getNetworkUsageDataTraffic' do
298
- let(:response) do
299
- '{"dataTraffic":{"measurement":{"node":{"in":"370.71 MB","out":"98.07 MB","total":"468.78 MB"},"total":"468.78 MB"},"overusage":"0 B","serverId":198969,"serverName":"LSPG001","interval":{"from":"06-04-2015","to":"06-05-2015"},"monthlyThreshold":"0 GB"}}'
300
- end
301
-
302
- it 'returns network usage details of a bareMetal server' do
303
- stub_request(:get, 'https://api.leaseweb.com/v1/bareMetals/114916/networkUsage/dataTraffic?dateFrom=06-04-2015&dateTo=06-05-2015')
304
- .with(headers: request_headers)
305
- .to_return(status: 200, body: response, headers: {})
306
-
307
- subject.getNetworkUsageDataTraffic(114_916, '06-04-2015', '06-05-2015', 'json')
308
- end
309
- end
310
-
311
- describe '#postReboot' do
312
- let(:response) { '{}' }
313
-
314
- it 'performs a reboot of the server' do
315
- stub_request(:post, 'https://api.leaseweb.com/v1/bareMetals/114916/reboot')
316
- .with(headers: request_headers)
317
- .to_return(status: 200, body: response, headers: {})
318
-
319
- subject.postReboot(114_916)
320
- end
321
- end
322
-
323
- describe '#installServer' do
324
- let(:response) { '{}' }
325
-
326
- it 'performs a re-installation of the server' do
327
- body = 'osId=1899'
328
-
329
- stub_request(:post, 'https://api.leaseweb.com/v1/bareMetals/114916/install')
330
- .with(headers: request_headers, body: body)
331
- .to_return(status: 200, body: response, headers: {})
332
-
333
- subject.installServer(114_916, 1899)
334
- end
335
- end
336
-
337
- describe '#postResqueMode' do
338
- let(:response) { '{}' }
339
-
340
- it 'Launches the rescue mode for this bare metal server' do
341
- body = 'osId=121'
342
-
343
- stub_request(:post, 'https://api.leaseweb.com/v1/bareMetals/114916/rescueMode')
344
- .with(headers: request_headers, body: body)
345
- .to_return(status: 200, body: response, headers: {})
346
-
347
- subject.postResqueMode(114_916, 121)
348
- end
349
- end
350
-
351
- describe '#getRootPassword' do
352
- let(:response) do
353
- '{"dataTraffic":{"measurement":{"node":{"in":"370.71 MB","out":"98.07 MB","total":"468.78 MB"},"total":"468.78 MB"},"overusage":"0 B","serverId":198969,"serverName":"LSPG001","interval":{"from":"06-04-2015","to":"06-05-2015"},"monthlyThreshold":"0 GB"}}'
354
- end
355
-
356
- it 'returns the root password of the server' do
357
- stub_request(:get, 'https://api.leaseweb.com/v1/bareMetals/114916/rootPassword')
358
- .with(headers: request_headers)
359
- .to_return(status: 200, body: response, headers: {})
360
-
361
- subject.getRootPassword(114_916, 'json')
362
- end
363
- end
364
-
365
- describe '#getInstallationStatus' do
366
- let(:response) do
367
- '{"installationStatus":{"code":1000,"description":"Installing","serverPackId":"114916","serverName":"LSPG003"}}'
368
- end
369
-
370
- it 'returns the installation status of the server' do
371
- stub_request(:get, 'https://api.leaseweb.com/v1/bareMetals/114916/installationStatus')
372
- .with(headers: request_headers)
373
- .to_return(status: 200, body: response, headers: {})
374
-
375
- subject.getInstallationStatus(114_916)
376
- end
377
- end
378
-
379
- describe '#getLeases' do
380
- let(:response) do
381
- '{"_metadata":{"totalCount":1,"limit":10,"offset":0},"leases":[{"ip":"209.58.131.10","pop":"SFO-12","mac":"C8:CB:B8:C5:17:0C","scope":"209.58.131.0","options":[{"name":"Bootfile Name","optionId":"67","policyName":null,"type":"String","userClass":"","value":"undionly.kpxe","vendorClass":""},{"name":"DNS Servers","optionId":"6","policyName":null,"type":"IPv4Address","userClass":"","value":"209.58.128.22,209.58.135.185","vendorClass":""},{"name":"Boot Server Host Name","optionId":"66","policyName":null,"type":"String","userClass":"","value":"209.58.128.13","vendorClass":""},{"name":"Bootfile Name","optionId":"67","policyName":null,"type":"String","userClass":"gPXE","value":"http:\\/\\/95.211.51.8\\/server\\/getPxeConfig\\/serverId\\/58898\\/key\\/86504289080a3a914ac53912ea55336f","vendorClass":""}]}]}'
382
- end
383
-
384
- it 'returns a list of DHCP Leases for every MAC Address for a given bare metal' do
385
- stub_request(:get, 'https://api.leaseweb.com/v1/bareMetals/114916/leases')
386
- .with(headers: request_headers)
387
- .to_return(status: 200, body: response, headers: {})
388
-
389
- subject.getLeases(114_916)
390
- end
391
- end
392
-
393
- describe '#setLease' do
394
- let(:response) { '{}' }
395
-
396
- it 'Creates a new DHCP lease' do
397
- stub_request(:post, 'https://api.leaseweb.com/v1/bareMetals/114916/leases')
398
- .with(headers: request_headers)
399
- .to_return(status: 200, body: response, headers: {})
400
-
401
- subject.setLease(114_916, 'http://example.com/boot.ipxe')
402
- end
403
- end
404
-
405
- describe '#getLease' do
406
- let(:response) do
407
- '{"ip":"209.58.131.10","pop":"SFO-12","mac":"C8:CB:B8:C5:17:0C","scope":"209.58.131.0","options":[{"name":"Bootfile Name","optionId":"67","policyName":null,"type":"String","userClass":"","value":"undionly.kpxe","vendorClass":""},{"name":"DNS Servers","optionId":"6","policyName":null,"type":"IPv4Address","userClass":"","value":"209.58.128.22,209.58.135.185","vendorClass":""},{"name":"Boot Server Host Name","optionId":"66","policyName":null,"type":"String","userClass":"","value":"209.58.128.13","vendorClass":""},{"name":"Bootfile Name","optionId":"67","policyName":null,"type":"String","userClass":"gPXE","value":"http:\\/\\/95.211.51.8\\/server\\/getPxeConfig\\/serverId\\/58898\\/key\\/86504289080a3a914ac53912ea55336f","vendorClass":""}]}'
408
- end
409
-
410
- it 'returns a DHCP Lease for every MAC Address for a bare metal with specific MAC address' do
411
- stub_request(:get, 'https://api.leaseweb.com/v1/bareMetals/114916/leases/C8:CB:B8:C5:17:0C')
412
- .with(headers: request_headers)
413
- .to_return(status: 200, body: response, headers: {})
414
-
415
- subject.getLease(114_916, 'C8:CB:B8:C5:17:0C')
416
- end
417
- end
418
-
419
- describe '#deleteLease' do
420
- let(:response) { '{}' }
421
-
422
- it 'deletes a DHCP lease for a specific mac address' do
423
- stub_request(:delete, 'https://api.leaseweb.com/v1/bareMetals/114916/leases/C8:CB:B8:C5:17:0C')
424
- .with(headers: request_headers)
425
- .to_return(status: 200, body: response, headers: {})
426
-
427
- subject.deleteLease(114_916, 'C8:CB:B8:C5:17:0C')
428
- end
429
- end
430
-
431
- describe '#getPrivateNetworks' do
432
- let(:response) do
433
- '{"meta":{"first_page":1,"last_page":1,"previous_page":null,"current_page":1,"next_page":null,"total_results":1,"results_per_page":50},"results":[{"id":157,"name":""}]}'
434
- end
435
-
436
- it 'returns a list of all your privatenetworks' do
437
- stub_request(:get, 'https://api.leaseweb.com/v1/privateNetworks')
438
- .with(headers: request_headers)
439
- .to_return(status: 200, body: response, headers: {})
440
-
441
- subject.getPrivateNetworks
442
- end
443
- end
444
-
445
- describe '#createPrivateNetworks' do
446
- let(:response) { '{}' }
447
-
448
- it 'Creates a new private network' do
449
- stub_request(:post, 'https://api.leaseweb.com/v1/privateNetworks')
450
- .with(headers: request_headers)
451
- .to_return(status: 200, body: response, headers: {})
452
-
453
- subject.createPrivateNetworks
454
- end
455
- end
456
-
457
- describe '#getPrivateNetworks' do
458
- let(:response) do
459
- '{"meta":{"first_page":1,"last_page":1,"previous_page":null,"current_page":1,"next_page":null,"total_results":1,"results_per_page":50},"results":[{"id":157,"name":""}]}'
460
- end
461
-
462
- it 'returns a list of all your privatenetworks' do
463
- stub_request(:get, 'https://api.leaseweb.com/v1/privateNetworks')
464
- .with(headers: request_headers)
465
- .to_return(status: 200, body: response, headers: {})
466
-
467
- subject.getPrivateNetworks
468
- end
469
- end
470
-
471
- describe '#getPrivateNetwork' do
472
- let(:response) do
473
- '{"id":157,"name":"","bareMetals":[{"id":198969,"status":"CONFIGURED","dataCenter":"SFO-12","CIDR":"10.29.0.32\\/27","broadcast":"10.29.0.63","gateway":"10.29.0.62","netmask":"255.255.255.224","portSpeed":100},{"id":198970,"status":"CONFIGURED","dataCenter":"SFO-12","CIDR":"10.29.0.32\\/27","broadcast":"10.29.0.63","gateway":"10.29.0.62","netmask":"255.255.255.224","portSpeed":100},{"id":114916,"status":"CONFIGURED","dataCenter":"SFO-12","CIDR":"10.29.0.32\\/27","broadcast":"10.29.0.63","gateway":"10.29.0.62","netmask":"255.255.255.224","portSpeed":100}]}'
474
- end
475
-
476
- it 'returns information about your private network and servers' do
477
- stub_request(:get, 'https://api.leaseweb.com/v1/privateNetworks/157')
478
- .with(headers: request_headers)
479
- .to_return(status: 200, body: response, headers: {})
480
-
481
- subject.getPrivateNetwork(157)
482
- end
483
- end
484
-
485
- describe '#updatePrivateNetwork' do
486
- let(:response) { '{}' }
487
-
488
- it 'updates the name of your private network' do
489
- body = 'name=test'
490
-
491
- stub_request(:put, 'https://api.leaseweb.com/v1/privateNetworks/157')
492
- .with(headers: request_headers, body: body)
493
- .to_return(status: 200, body: response, headers: {})
494
-
495
- subject.updatePrivateNetwork(157, 'test')
496
- end
497
- end
498
-
499
- describe '#deletePrivateNetwork' do
500
- let(:response) { '{}' }
501
-
502
- it 'deletes a private network' do
503
- stub_request(:delete, 'https://api.leaseweb.com/v1/privateNetworks/157')
504
- .with(headers: request_headers)
505
- .to_return(status: 200, body: response, headers: {})
506
-
507
- subject.deletePrivateNetwork(157)
508
- end
509
- end
510
-
511
- describe '#createPrivateNetworks' do
512
- let(:response) { '{}' }
513
-
514
- it 'add a server to your private network' do
515
- body = 'bareMetalId=114916'
516
-
517
- stub_request(:post, 'https://api.leaseweb.com/v1/privateNetworks/157/bareMetals')
518
- .with(headers: request_headers, body: body)
519
- .to_return(status: 200, body: response, headers: {})
520
-
521
- subject.createPrivateNetworksBareMetals(157, 114_916)
522
- end
523
- end
524
-
525
- describe '#deletePrivateNetworksBareMetals' do
526
- let(:response) { '{}' }
527
-
528
- it 'delete server from your private network' do
529
- stub_request(:delete, 'https://api.leaseweb.com/v1/privateNetworks/157/bareMetals/114916')
530
- .with(headers: request_headers)
531
- .to_return(status: 200, body: response, headers: {})
532
-
533
- subject.deletePrivateNetworksBareMetals(157, 114_916)
534
- end
535
- end
536
-
537
- describe '#getOperatingSystems' do
538
- let(:response) do
539
- '{"operatingSystems":[{"operatingSystem":{"id":664,"name":"CentOS 5 (i386)"}},{"operatingSystem":{"id":665,"name":"CentOS 5 (x86_64)"}},{"operatingSystem":{"id":867,"name":"CentOS 6 (i386)"}},{"operatingSystem":{"id":868,"name":"CentOS 6 (x86_64)"}},{"operatingSystem":{"id":1899,"name":"CentOS 7 (x86_64)"}},{"operatingSystem":{"id":921,"name":"CloudLinux 6.4 (i386)"}},{"operatingSystem":{"id":920,"name":"CloudLinux 6.4 (x86_64)"}},{"operatingSystem":{"id":532,"name":"Debian 6.0 (amd64)"}},{"operatingSystem":{"id":531,"name":"Debian 6.0 (x86)"}},{"operatingSystem":{"id":1566,"name":"Debian 7.0 (x86)"}},{"operatingSystem":{"id":1567,"name":"Debian 7.0 (x86_64)"}},{"operatingSystem":{"id":2142,"name":"Debian 8.0 (x86_64)"}},{"operatingSystem":{"id":873,"name":"ESXi 5.0 (x86_64)"}},{"operatingSystem":{"id":1039,"name":"ESXi 5.1 (x86_64)"}},{"operatingSystem":{"id":1864,"name":"ESXi 5.5 (x86_64)"}},{"operatingSystem":{"id":2143,"name":"ESXi 6.0 (x86_64)"}},{"operatingSystem":{"id":1953,"name":"FreeBSD 10.1 (amd64)"}},{"operatingSystem":{"id":1901,"name":"FreeBSD 10.1 (i386)"}},{"operatingSystem":{"id":764,"name":"FreeBSD 8.4 (amd64)"}},{"operatingSystem":{"id":765,"name":"FreeBSD 8.4 (x86)"}},{"operatingSystem":{"id":927,"name":"FreeBSD 9.3 (amd64)"}},{"operatingSystem":{"id":926,"name":"FreeBSD 9.3 (i386)"}},{"operatingSystem":{"id":946,"name":"Ubuntu 12.04 (amd64)"}},{"operatingSystem":{"id":945,"name":"Ubuntu 12.04 (x86)"}},{"operatingSystem":{"id":1789,"name":"Ubuntu 14.04 (amd64)"}},{"operatingSystem":{"id":1790,"name":"Ubuntu 14.04 (x86)"}},{"operatingSystem":{"id":672,"name":"Windows 2008 R2 Enterprise (x64)"}},{"operatingSystem":{"id":175,"name":"Windows 2008 R2 Standard (x64)"}},{"operatingSystem":{"id":539,"name":"Windows 2008 R2 Standard (2 CPU) (x64)"}},{"operatingSystem":{"id":165,"name":"Windows 2008 R2 Web (x64)"}},{"operatingSystem":{"id":538,"name":"Windows 2008 R2 Web (2 CPU) (x64)"}},{"operatingSystem":{"id":1610,"name":"Windows Server 2012 Datacenter (1 CPU) (x64)"}},{"operatingSystem":{"id":1611,"name":"Windows Server 2012 Datacenter (2 CPU) (x64)"}},{"operatingSystem":{"id":2002,"name":"Windows Server 2012 R2 Datacenter (1 CPU) (x64)"}},{"operatingSystem":{"id":2003,"name":"Windows Server 2012 R2 Datacenter (2 CPU) (x64)"}},{"operatingSystem":{"id":2000,"name":"Windows Server 2012 R2 Standard (1 CPU) (x64)"}},{"operatingSystem":{"id":2001,"name":"Windows Server 2012 R2 Standard (2 CPU) (x64)"}},{"operatingSystem":{"id":1603,"name":"Windows Server 2012 Standard (1 CPU) (x64)"}},{"operatingSystem":{"id":1604,"name":"Windows Server 2012 Standard (2 CPU) (x64)"}}]}'
540
- end
541
-
542
- it 'returns the list of available operatingSystems for installation' do
543
- stub_request(:get, 'https://api.leaseweb.com/v1/operatingSystems')
544
- .with(headers: request_headers)
545
- .to_return(status: 200, body: response, headers: {})
546
-
547
- subject.getOperatingSystems
548
- end
549
- end
550
-
551
- describe '#getOperatingSystem' do
552
- let(:response) do
553
- '{"operatingSystem":{"id":1899,"name":"CentOS 7 (x86_64)"}}'
554
- end
555
-
556
- it 'returns the details of an operating system for installation' do
557
- stub_request(:get, 'https://api.leaseweb.com/v1/operatingSystems/1899')
558
- .with(headers: request_headers)
559
- .to_return(status: 200, body: response, headers: {})
560
-
561
- subject.getOperatingSystem(1899)
562
- end
563
- end
564
-
565
- describe '#getControlPanels' do
566
- let(:response) do
567
- '{"controlPanels":[{"controlPanel":{"id":1868,"name":"Plesk 12 (10 Domains Linux)"}},{"controlPanel":{"id":1875,"name":"Plesk 12 (30 Domains Linux)"}},{"controlPanel":{"id":1878,"name":"Plesk 12 (Unlimited Domains Linux)"}}]}'
568
- end
569
-
570
- it 'returns the details of an operating system for installation' do
571
- stub_request(:get, 'https://api.leaseweb.com/v1/operatingSystems/1899/controlPanels')
572
- .with(headers: request_headers)
573
- .to_return(status: 200, body: response, headers: {})
574
-
575
- subject.getControlPanels(1899)
576
- end
577
- end
578
-
579
- describe '#getControlPanel' do
580
- let(:response) do
581
- '{"controlPanel":{"id":1868,"name":"Plesk 12 (10 Domains Linux)"}}'
582
- end
583
-
584
- it 'returns the details of available control panels for installation on a particular operating system' do
585
- stub_request(:get, 'https://api.leaseweb.com/v1/operatingSystems/1899/controlPanels/1868')
586
- .with(headers: request_headers)
587
- .to_return(status: 200, body: response, headers: {})
588
-
589
- subject.getControlPanel(1899, 1868)
590
- end
591
- end
592
-
593
- describe '#getPartitionSchema' do
594
- let(:response) do
595
- '{"partitionSchema":{"limit":7,"disks":{"disk":["\\/dev\\/sda","\\/dev\\/hda","\\/dev\\/cciss\\/c0d0"]},"suggestion":{"disk":"\\/dev\\/sda","bootable":0,"hdd":{"partition":[{"index":0,"size":"500","type":"ext2","mountpoint":"\\/boot"},{"index":1,"size":"4096","type":"swap","mountpoint":""},{"index":2,"size":"2048","type":"ext4","mountpoint":"\\/tmp"},{"index":3,"size":"*","type":"ext4","mountpoint":"\\/"}]}},"filesystemTypes":{"type":["ext2","ext3","ext4","xfs","swap"]}}}'
596
- end
597
-
598
- it 'returns the list of available partition schema\'s for installation' do
599
- stub_request(:get, 'https://api.leaseweb.com/v1/operatingSystems/1899/partitionSchema?serverPackId=114916')
600
- .with(headers: request_headers)
601
- .to_return(status: 200, body: response, headers: {})
602
-
603
- subject.getPartitionSchema(1899, 114_916)
604
- end
605
- end
606
-
607
- describe '#getIps' do
608
- let(:response) do
609
- '{"ips":[{"ip":{"ip":"209.58.131.10","reverseLookup":"","ipDetails":{"gateway":"209.58.131.62","mask":"255.255.255.192"},"nullRouted":false,"billingInformation":{"price":"0.00","startDate":"Jun 1, 2015","endDate":null},"serverId":"114916","serverType":"Bare Metal","serverName":"LSPG003"}},{"ip":{"ip":"209.58.128.85","reverseLookup":"","ipDetails":{"gateway":"209.58.128.126","mask":"255.255.255.192"},"nullRouted":false,"billingInformation":{"price":"0.00","startDate":"Mar 1, 2015","endDate":null},"serverId":"198969","serverType":"Bare Metal","serverName":"LSPG001"}},{"ip":{"ip":"209.58.128.148","reverseLookup":"","ipDetails":{"gateway":"209.58.128.190","mask":"255.255.255.192"},"nullRouted":false,"billingInformation":{"price":"0.00","startDate":"Mar 1, 2015","endDate":null},"serverId":"198970","serverType":"Bare Metal","serverName":"LSPG002"}}]}'
610
- end
611
-
612
- it 'returns all IPs associated to the account' do
613
- stub_request(:get, 'https://api.leaseweb.com/v1/ips')
614
- .with(headers: request_headers)
615
- .to_return(status: 200, body: response, headers: {})
616
-
617
- subject.getIps
618
- end
619
- end
620
-
621
- describe '#getIps' do
622
- let(:response) do
623
- '{"ip":{"ip":"209.58.131.10","reverseLookup":"","ipDetails":{"gateway":"209.58.131.62","mask":"255.255.255.192"},"nullRouted":false,"billingInformation":{"price":"0.00","startDate":"Jun 1, 2015","endDate":null},"serverId":"114916","serverType":"Bare Metal","serverName":"LSPG003"}}'
624
- end
625
-
626
- it 'returns information about the IP' do
627
- stub_request(:get, 'https://api.leaseweb.com/v1/ips/209.58.131.10')
628
- .with(headers: request_headers)
629
- .to_return(status: 200, body: response, headers: {})
630
-
631
- subject.getIp('209.58.131.10')
632
- end
633
- end
634
-
635
- describe '#updateIp' do
636
- let(:response) { '{}' }
637
-
638
- it 'Updates information about the IP' do
639
- body = 'reverseLookup=modified-by-api.leaseweb.com&nullRouted=1'
640
-
641
- stub_request(:put, 'https://api.leaseweb.com/v1/ips/209.58.131.10')
642
- .with(headers: request_headers, body: body)
643
- .to_return(status: 200, body: response, headers: {})
644
-
645
- subject.updateIp('209.58.131.10', 'modified-by-api.leaseweb.com', 1)
646
- end
647
- end
648
- end