Class: LeasewebAPI

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/leaseweb-rest-api.rb

Instance Method Summary collapse

Instance Method Details

#apiKeyAuth(apikey) ⇒ Object



16
17
18
# File 'lib/leaseweb-rest-api.rb', line 16

def apiKeyAuth(apikey)
  @options = { headers: { 'X-Lsw-Auth' => apikey } }
end

#createDNSRecords(domain, host, content, type, priority = nil) ⇒ Object



84
85
86
87
88
89
90
91
92
# File 'lib/leaseweb-rest-api.rb', line 84

def createDNSRecords(domain, host, content, type, priority = nil)
  opt = @options.merge!(body: { host: host, content: content, type: type })

  if !priority.nil? && ((type == 'MX') || (type == 'SRV'))
    opt[:body][:priority] = priority
  end

  self.class.post("/v1/domains/#{domain}/dnsRecords", opt)
end

#createPAYGInstance(modelId) ⇒ Object



312
313
314
315
316
# File 'lib/leaseweb-rest-api.rb', line 312

def createPAYGInstance(modelId)
  opt = @options.merge!(model: modelId)

  self.class.post('/v1/payAsYouGo/bareMetals/instances', opt)
end

#createPrivateNetworks(name = '') ⇒ Object

TODO: check post with name



238
239
240
241
242
# File 'lib/leaseweb-rest-api.rb', line 238

def createPrivateNetworks(name = '')
  opt = @options.merge!(body: { name: name })

  self.class.post('/v1/privateNetworks', opt)
end

#createPrivateNetworksBareMetals(id, bareMetalId) ⇒ Object



259
260
261
262
263
# File 'lib/leaseweb-rest-api.rb', line 259

def createPrivateNetworksBareMetals(id, bareMetalId)
  opt = @options.merge!(body: { bareMetalId: bareMetalId })

  self.class.post("/v1/privateNetworks/#{id}/bareMetals", opt)
end

#delete(url) ⇒ Object



61
62
63
# File 'lib/leaseweb-rest-api.rb', line 61

def delete(url)
  self.class.delete(url, @options)
end

#deleteDNSRecord(domain, dnsRecordId) ⇒ Object



108
109
110
# File 'lib/leaseweb-rest-api.rb', line 108

def deleteDNSRecord(domain, dnsRecordId)
  self.class.delete("/v1/domains/#{domain}/dnsRecords/#{dnsRecordId}", @options)
end

#deleteLease(bareMetalId, macAddress) ⇒ Object



228
229
230
# File 'lib/leaseweb-rest-api.rb', line 228

def deleteLease(bareMetalId, macAddress)
  self.class.delete("/v1/bareMetals/#{bareMetalId}/leases/#{macAddress}", @options)
end

#deletePrivateNetwork(id) ⇒ Object



255
256
257
# File 'lib/leaseweb-rest-api.rb', line 255

def deletePrivateNetwork(id)
  self.class.delete("/v1/privateNetworks/#{id}", @options)
end

#deletePrivateNetworksBareMetals(id, bareMetalId) ⇒ Object



265
266
267
# File 'lib/leaseweb-rest-api.rb', line 265

def deletePrivateNetworksBareMetals(id, bareMetalId)
  self.class.delete("/v1/privateNetworks/#{id}/bareMetals/#{bareMetalId}", @options)
end

#destroyPAYGInstance(bareMetalId) ⇒ Object



322
323
324
# File 'lib/leaseweb-rest-api.rb', line 322

def destroyPAYGInstance(bareMetalId)
  self.class.post("/v1/payAsYouGo/bareMetals/instances/#{bareMetalId}/destroy", @options)
end

#get(url) ⇒ Object



31
32
33
# File 'lib/leaseweb-rest-api.rb', line 31

def get(url)
  self.class.get(url, @options)
end

#get_paginated(url, key, offset = 0, limit = 50) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/leaseweb-rest-api.rb', line 35

def get_paginated(url, key, offset = 0, limit = 50)
  data = []

  loop do
    response = self.class.get("#{url}&offset=#{offset}&limit=#{limit}", @options)
    total = response.parsed_response['_metadata']['totalCount']

    data += response.parsed_response[key]

    offset += limit
    break unless offset < total
  end

  data
end

#getBareMetal(bareMetalId) ⇒ Object



122
123
124
# File 'lib/leaseweb-rest-api.rb', line 122

def getBareMetal(bareMetalId)
  self.class.get("/v1/bareMetals/#{bareMetalId}", @options)
end

#getBareMetalsObject

BareMetals



118
119
120
# File 'lib/leaseweb-rest-api.rb', line 118

def getBareMetals
  self.class.get('/v1/bareMetals', @options)
end

#getControlPanel(operatingSystemId, controlPanelId) ⇒ Object



282
283
284
# File 'lib/leaseweb-rest-api.rb', line 282

def getControlPanel(operatingSystemId, controlPanelId)
  self.class.get("/v1/operatingSystems/#{operatingSystemId}/controlPanels/#{controlPanelId}", @options)
end

#getControlPanels(operatingSystemId) ⇒ Object



278
279
280
# File 'lib/leaseweb-rest-api.rb', line 278

def getControlPanels(operatingSystemId)
  self.class.get("/v1/operatingSystems/#{operatingSystemId}/controlPanels", @options)
end

#getDNSRecord(domain, dnsRecordId) ⇒ Object



94
95
96
# File 'lib/leaseweb-rest-api.rb', line 94

def getDNSRecord(domain, dnsRecordId)
  self.class.get("/v1/domains/#{domain}/dnsRecords/#{dnsRecordId}", @options)
end

#getDNSRecords(domain) ⇒ Object



80
81
82
# File 'lib/leaseweb-rest-api.rb', line 80

def getDNSRecords(domain)
  self.class.get("/v1/domains/#{domain}/dnsRecords", @options)
end

#getDomain(domain) ⇒ Object



70
71
72
# File 'lib/leaseweb-rest-api.rb', line 70

def getDomain(domain)
  self.class.get("/v1/domains/#{domain}", @options)
end

#getDomainsObject

Domains



66
67
68
# File 'lib/leaseweb-rest-api.rb', line 66

def getDomains
  self.class.get('/v1/domains', @options)
end

#getInstallationStatus(bareMetalId) ⇒ Object



200
201
202
203
204
205
206
207
208
209
210
211
212
# File 'lib/leaseweb-rest-api.rb', line 200

def getInstallationStatus(bareMetalId)
  response = self.class.get("/v1/bareMetals/#{bareMetalId}/installationStatus", @options)

  if response['installationStatus'].include?('initRootPassword')
    response['installationStatus']['initRootPassword'] = decrypt(response['installationStatus']['initRootPassword'])
  end

  if response['installationStatus'].include?('rescueModeRootPass')
    response['installationStatus']['rescueModeRootPass'] = decrypt(response['installationStatus']['rescueModeRootPass'])
  end

  response
end

#getIp(ipAddress) ⇒ Object



297
298
299
# File 'lib/leaseweb-rest-api.rb', line 297

def getIp(ipAddress)
  self.class.get("/v1/ips/#{ipAddress}", @options)
end

#getIP(bareMetalId, ipAddress) ⇒ Object



152
153
154
# File 'lib/leaseweb-rest-api.rb', line 152

def getIP(bareMetalId, ipAddress)
  self.class.get("/v1/bareMetals/#{bareMetalId}/ips/#{ipAddress}", @options)
end

#getIpmiCredentials(bareMetalId) ⇒ Object



162
163
164
# File 'lib/leaseweb-rest-api.rb', line 162

def getIpmiCredentials(bareMetalId)
  self.class.get("/v1/bareMetals/#{bareMetalId}/ipmiCredentials", @options)
end

#getIpsObject

IPs



293
294
295
# File 'lib/leaseweb-rest-api.rb', line 293

def getIps
  self.class.get('/v1/ips', @options)
end

#getIPs(bareMetalId) ⇒ Object



148
149
150
# File 'lib/leaseweb-rest-api.rb', line 148

def getIPs(bareMetalId)
  self.class.get("/v1/bareMetals/#{bareMetalId}/ips", @options)
end

#getLease(bareMetalId, macAddress) ⇒ Object



224
225
226
# File 'lib/leaseweb-rest-api.rb', line 224

def getLease(bareMetalId, macAddress)
  self.class.get("/v1/bareMetals/#{bareMetalId}/leases/#{macAddress}", @options)
end

#getLeases(bareMetalId) ⇒ Object



214
215
216
# File 'lib/leaseweb-rest-api.rb', line 214

def getLeases(bareMetalId)
  self.class.get("/v1/bareMetals/#{bareMetalId}/leases", @options)
end

#getNetworkUsage(bareMetalId) ⇒ Object



166
167
168
# File 'lib/leaseweb-rest-api.rb', line 166

def getNetworkUsage(bareMetalId)
  self.class.get("/v1/bareMetals/#{bareMetalId}/networkUsage", @options)
end

#getNetworkUsageBandWidth(bareMetalId, dateFrom, dateTo, format = 'json') ⇒ Object



170
171
172
# File 'lib/leaseweb-rest-api.rb', line 170

def getNetworkUsageBandWidth(bareMetalId, dateFrom, dateTo, format = 'json')
  self.class.get("/v1/bareMetals/#{bareMetalId}/networkUsage/bandWidth", formatRequest(dateFrom, dateTo, format))
end

#getNetworkUsageDataTraffic(bareMetalId, dateFrom, dateTo, format = 'json') ⇒ Object



174
175
176
# File 'lib/leaseweb-rest-api.rb', line 174

def getNetworkUsageDataTraffic(bareMetalId, dateFrom, dateTo, format = 'json')
  self.class.get("/v1/bareMetals/#{bareMetalId}/networkUsage/dataTraffic", formatRequest(dateFrom, dateTo, format))
end

#getOauthToken(clientId, clientSecret) ⇒ Object



20
21
22
23
24
25
# File 'lib/leaseweb-rest-api.rb', line 20

def getOauthToken(clientId, clientSecret)
  response = self.class.post('https://auth.leaseweb.com/token', basic_auth: { username: clientId, password: clientSecret }, body: { grant_type: 'client_credentials' })
  access_token = response.parsed_response['access_token']

  @options = { headers: { 'Authorization' => "Bearer #{access_token}" } }
end

#getOperatingSystem(operatingSystemId) ⇒ Object



274
275
276
# File 'lib/leaseweb-rest-api.rb', line 274

def getOperatingSystem(operatingSystemId)
  self.class.get("/v1/operatingSystems/#{operatingSystemId}", @options)
end

#getOperatingSystemsObject

Operating Systems



270
271
272
# File 'lib/leaseweb-rest-api.rb', line 270

def getOperatingSystems
  self.class.get('/v1/operatingSystems', @options)
end

#getPartitionSchema(operatingSystemId, bareMetalId) ⇒ Object



286
287
288
289
290
# File 'lib/leaseweb-rest-api.rb', line 286

def getPartitionSchema(operatingSystemId, bareMetalId)
  opt = @options.merge!(query: { serverPackId: bareMetalId })

  self.class.get("/v1/operatingSystems/#{operatingSystemId}/partitionSchema", opt)
end

#getPAYGInstance(bareMetalId) ⇒ Object



318
319
320
# File 'lib/leaseweb-rest-api.rb', line 318

def getPAYGInstance(bareMetalId)
  self.class.get("/v1/payAsYouGo/bareMetals/instances/#{bareMetalId}", @options)
end

#getPAYGInstancesObject

Pay as you go



308
309
310
# File 'lib/leaseweb-rest-api.rb', line 308

def getPAYGInstances
  self.class.get('/v1/payAsYouGo/bareMetals/instances', @options)
end

#getPAYGModelInstance(modelId) ⇒ Object



330
331
332
# File 'lib/leaseweb-rest-api.rb', line 330

def getPAYGModelInstance(modelId)
  self.class.get("/v1/payAsYouGo/bareMetals/models/#{modelId}", @options)
end

#getPAYGModelsObject



326
327
328
# File 'lib/leaseweb-rest-api.rb', line 326

def getPAYGModels
  self.class.get('/v1/payAsYouGo/bareMetals/models', @options)
end

#getPowerStatus(bareMetalId) ⇒ Object



144
145
146
# File 'lib/leaseweb-rest-api.rb', line 144

def getPowerStatus(bareMetalId)
  self.class.get("/v1/bareMetals/#{bareMetalId}/powerStatus", @options)
end

#getPrivateNetwork(id) ⇒ Object



244
245
246
# File 'lib/leaseweb-rest-api.rb', line 244

def getPrivateNetwork(id)
  self.class.get("/v1/privateNetworks/#{id}", @options)
end

#getPrivateNetworksObject

Private Networks



233
234
235
# File 'lib/leaseweb-rest-api.rb', line 233

def getPrivateNetworks
  self.class.get('/v1/privateNetworks', @options)
end

#getRescueImagesObject

Rescue



113
114
115
# File 'lib/leaseweb-rest-api.rb', line 113

def getRescueImages
  self.class.get('/v1/rescueImages', @options)
end

#getRootPassword(bareMetalId, format = 'json') ⇒ Object



194
195
196
197
198
# File 'lib/leaseweb-rest-api.rb', line 194

def getRootPassword(bareMetalId, format = 'json')
  opt = @options.merge!(headers: formatHeader(format))

  self.class.get("/v1/bareMetals/#{bareMetalId}/rootPassword", opt)
end

#getSwitchPort(bareMetalId) ⇒ Object



132
133
134
# File 'lib/leaseweb-rest-api.rb', line 132

def getSwitchPort(bareMetalId)
  self.class.get("/v1/bareMetals/#{bareMetalId}/switchPort", @options)
end

#installServer(bareMetalId, osId, hdd = []) ⇒ Object



182
183
184
185
186
# File 'lib/leaseweb-rest-api.rb', line 182

def installServer(bareMetalId, osId, hdd = [])
  opt = @options.merge!(body: { osId: osId, hdd: hdd }, query_string_normalizer: ->(h) { HashToURIConversion.new.to_params(h) })

  self.class.post("/v1/bareMetals/#{bareMetalId}/install", opt)
end

#post(url, body) ⇒ Object



51
52
53
54
# File 'lib/leaseweb-rest-api.rb', line 51

def post(url, body)
  opt = @options.merge!(body: body)
  self.class.post(url, opt)
end

#postReboot(bareMetalId) ⇒ Object



178
179
180
# File 'lib/leaseweb-rest-api.rb', line 178

def postReboot(bareMetalId)
  self.class.post("/v1/bareMetals/#{bareMetalId}/reboot", @options)
end

#postResqueMode(bareMetalId, osId) ⇒ Object



188
189
190
191
192
# File 'lib/leaseweb-rest-api.rb', line 188

def postResqueMode(bareMetalId, osId)
  opt = @options.merge!(body: { osId: osId })

  self.class.post("/v1/bareMetals/#{bareMetalId}/rescueMode", opt)
end

#postSwitchPortClose(bareMetalId) ⇒ Object



140
141
142
# File 'lib/leaseweb-rest-api.rb', line 140

def postSwitchPortClose(bareMetalId)
  self.class.post("/v1/bareMetals/#{bareMetalId}/switchPort/close", @options)
end

#postSwitchPortOpen(bareMetalId) ⇒ Object



136
137
138
# File 'lib/leaseweb-rest-api.rb', line 136

def postSwitchPortOpen(bareMetalId)
  self.class.post("/v1/bareMetals/#{bareMetalId}/switchPort/open", @options)
end

#put(url, body) ⇒ Object



56
57
58
59
# File 'lib/leaseweb-rest-api.rb', line 56

def put(url, body)
  opt = @options.merge!(body: body)
  self.class.put(url, opt)
end

#readPrivateKey(privateKey, password) ⇒ Object



27
28
29
# File 'lib/leaseweb-rest-api.rb', line 27

def readPrivateKey(privateKey, password)
  @private_key = OpenSSL::PKey::RSA.new(File.read(privateKey), password)
end

#setLease(bareMetalId, bootFileName) ⇒ Object



218
219
220
221
222
# File 'lib/leaseweb-rest-api.rb', line 218

def setLease(bareMetalId, bootFileName)
  opt = @options.merge!(body: { bootFileName: bootFileName })

  self.class.post("/v1/bareMetals/#{bareMetalId}/leases", opt)
end

#updateBareMetal(bareMetalId, reference) ⇒ Object



126
127
128
129
130
# File 'lib/leaseweb-rest-api.rb', line 126

def updateBareMetal(bareMetalId, reference)
  opt = @options.merge!(body: { reference: reference })

  self.class.put("/v1/bareMetals/#{bareMetalId}", opt)
end

#updateDNSRecord(domain, dnsRecordId, host, content, type, priority = nil) ⇒ Object



98
99
100
101
102
103
104
105
106
# File 'lib/leaseweb-rest-api.rb', line 98

def updateDNSRecord(domain, dnsRecordId, host, content, type, priority = nil)
  opt = @options.merge!(body: { id: dnsRecordId, host: host, content: content, type: type })

  if !priority.nil? && ((type == 'MX') || (type == 'SRV'))
    opt[:body][:priority] = priority
  end

  self.class.put("/v1/domains/#{domain}/dnsRecords/#{dnsRecordId}", opt)
end

#updateDomain(domain, ttl) ⇒ Object



74
75
76
77
78
# File 'lib/leaseweb-rest-api.rb', line 74

def updateDomain(domain, ttl)
  opt = @options.merge!(body: { ttl: ttl })

  self.class.put("/v1/domains/#{domain}", opt)
end

#updateIP(bareMetalId, ipAddress, reverseLookup = '', nullRouted = 0) ⇒ Object



156
157
158
159
160
# File 'lib/leaseweb-rest-api.rb', line 156

def updateIP(bareMetalId, ipAddress, reverseLookup = '', nullRouted = 0)
  opt = @options.merge!(body: { reverseLookup: reverseLookup, nullRouted: nullRouted })

  self.class.put("/v1/bareMetals/#{bareMetalId}/ips/#{ipAddress}", opt)
end

#updateIp(ipAddress, reverseLookup = '', nullRouted = 0) ⇒ Object



301
302
303
304
305
# File 'lib/leaseweb-rest-api.rb', line 301

def updateIp(ipAddress, reverseLookup = '', nullRouted = 0)
  opt = @options.merge!(body: { reverseLookup: reverseLookup, nullRouted: nullRouted })

  self.class.put("/v1/ips/#{ipAddress}", opt)
end

#updatePrivateNetwork(id, name = '') ⇒ Object

TODO: Check with Jeroen if it works



249
250
251
252
253
# File 'lib/leaseweb-rest-api.rb', line 249

def updatePrivateNetwork(id, name = '')
  opt = @options.merge!(body: { name: name })

  self.class.put("/v1/privateNetworks/#{id}", opt)
end