Class: LeasewebAPI
- Inherits:
-
Object
- Object
- LeasewebAPI
- Includes:
- HTTParty
- Defined in:
- lib/leaseweb-rest-api.rb
Instance Method Summary collapse
- #apiKeyAuth(apikey) ⇒ Object
- #createDNSRecords(domain, host, content, type, priority = nil) ⇒ Object
- #createPAYGInstance(modelId) ⇒ Object
-
#createPrivateNetworks(name = '') ⇒ Object
TODO: check post with name.
- #createPrivateNetworksBareMetals(id, bareMetalId) ⇒ Object
- #delete(url) ⇒ Object
- #deleteDNSRecord(domain, dnsRecordId) ⇒ Object
- #deleteLease(bareMetalId, macAddress) ⇒ Object
- #deletePrivateNetwork(id) ⇒ Object
- #deletePrivateNetworksBareMetals(id, bareMetalId) ⇒ Object
- #destroyPAYGInstance(bareMetalId) ⇒ Object
- #get(url) ⇒ Object
- #get_paginated(url, key, offset = 0, limit = 50) ⇒ Object
- #getBareMetal(bareMetalId) ⇒ Object
-
#getBareMetals ⇒ Object
BareMetals.
- #getControlPanel(operatingSystemId, controlPanelId) ⇒ Object
- #getControlPanels(operatingSystemId) ⇒ Object
- #getDNSRecord(domain, dnsRecordId) ⇒ Object
- #getDNSRecords(domain) ⇒ Object
- #getDomain(domain) ⇒ Object
-
#getDomains ⇒ Object
Domains.
- #getInstallationStatus(bareMetalId) ⇒ Object
- #getIp(ipAddress) ⇒ Object
- #getIP(bareMetalId, ipAddress) ⇒ Object
- #getIpmiCredentials(bareMetalId) ⇒ Object
-
#getIps ⇒ Object
IPs.
- #getIPs(bareMetalId) ⇒ Object
- #getLease(bareMetalId, macAddress) ⇒ Object
- #getLeases(bareMetalId) ⇒ Object
- #getNetworkUsage(bareMetalId) ⇒ Object
- #getNetworkUsageBandWidth(bareMetalId, dateFrom, dateTo, format = 'json') ⇒ Object
- #getNetworkUsageDataTraffic(bareMetalId, dateFrom, dateTo, format = 'json') ⇒ Object
- #getOauthToken(clientId, clientSecret) ⇒ Object
- #getOperatingSystem(operatingSystemId) ⇒ Object
-
#getOperatingSystems ⇒ Object
Operating Systems.
- #getPartitionSchema(operatingSystemId, bareMetalId) ⇒ Object
- #getPAYGInstance(bareMetalId) ⇒ Object
-
#getPAYGInstances ⇒ Object
Pay as you go.
- #getPAYGModelInstance(modelId) ⇒ Object
- #getPAYGModels ⇒ Object
- #getPowerStatus(bareMetalId) ⇒ Object
- #getPrivateNetwork(id) ⇒ Object
-
#getPrivateNetworks ⇒ Object
Private Networks.
-
#getRescueImages ⇒ Object
Rescue.
- #getRootPassword(bareMetalId, format = 'json') ⇒ Object
- #getSwitchPort(bareMetalId) ⇒ Object
- #installServer(bareMetalId, osId, hdd = []) ⇒ Object
- #post(url, body) ⇒ Object
- #postReboot(bareMetalId) ⇒ Object
- #postResqueMode(bareMetalId, osId) ⇒ Object
- #postSwitchPortClose(bareMetalId) ⇒ Object
- #postSwitchPortOpen(bareMetalId) ⇒ Object
- #put(url, body) ⇒ Object
- #readPrivateKey(privateKey, password) ⇒ Object
- #setLease(bareMetalId, bootFileName) ⇒ Object
- #updateBareMetal(bareMetalId, reference) ⇒ Object
- #updateDNSRecord(domain, dnsRecordId, host, content, type, priority = nil) ⇒ Object
- #updateDomain(domain, ttl) ⇒ Object
- #updateIP(bareMetalId, ipAddress, reverseLookup = '', nullRouted = 0) ⇒ Object
- #updateIp(ipAddress, reverseLookup = '', nullRouted = 0) ⇒ Object
-
#updatePrivateNetwork(id, name = '') ⇒ Object
TODO: Check with Jeroen if it works.
Instance Method Details
#apiKeyAuth(apikey) ⇒ Object
16 17 18 |
# File 'lib/leaseweb-rest-api.rb', line 16 def apiKeyAuth(apikey) = { 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 = .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 = .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 = .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, ) opt = .merge!(body: { 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, ) 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}", ) end |
#deleteLease(bareMetalId, macAddress) ⇒ Object
228 229 230 |
# File 'lib/leaseweb-rest-api.rb', line 228 def deleteLease(, macAddress) self.class.delete("/v1/bareMetals/#{bareMetalId}/leases/#{macAddress}", ) end |
#deletePrivateNetwork(id) ⇒ Object
255 256 257 |
# File 'lib/leaseweb-rest-api.rb', line 255 def deletePrivateNetwork(id) self.class.delete("/v1/privateNetworks/#{id}", ) end |
#deletePrivateNetworksBareMetals(id, bareMetalId) ⇒ Object
265 266 267 |
# File 'lib/leaseweb-rest-api.rb', line 265 def deletePrivateNetworksBareMetals(id, ) self.class.delete("/v1/privateNetworks/#{id}/bareMetals/#{bareMetalId}", ) end |
#destroyPAYGInstance(bareMetalId) ⇒ Object
322 323 324 |
# File 'lib/leaseweb-rest-api.rb', line 322 def destroyPAYGInstance() self.class.post("/v1/payAsYouGo/bareMetals/instances/#{bareMetalId}/destroy", ) end |
#get(url) ⇒ Object
31 32 33 |
# File 'lib/leaseweb-rest-api.rb', line 31 def get(url) self.class.get(url, ) 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}", ) 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() self.class.get("/v1/bareMetals/#{bareMetalId}", ) end |
#getBareMetals ⇒ Object
BareMetals
118 119 120 |
# File 'lib/leaseweb-rest-api.rb', line 118 def getBareMetals self.class.get('/v1/bareMetals', ) end |
#getControlPanel(operatingSystemId, controlPanelId) ⇒ Object
282 283 284 |
# File 'lib/leaseweb-rest-api.rb', line 282 def getControlPanel(, controlPanelId) self.class.get("/v1/operatingSystems/#{operatingSystemId}/controlPanels/#{controlPanelId}", ) end |
#getControlPanels(operatingSystemId) ⇒ Object
278 279 280 |
# File 'lib/leaseweb-rest-api.rb', line 278 def getControlPanels() self.class.get("/v1/operatingSystems/#{operatingSystemId}/controlPanels", ) 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}", ) 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", ) end |
#getDomain(domain) ⇒ Object
70 71 72 |
# File 'lib/leaseweb-rest-api.rb', line 70 def getDomain(domain) self.class.get("/v1/domains/#{domain}", ) end |
#getDomains ⇒ Object
Domains
66 67 68 |
# File 'lib/leaseweb-rest-api.rb', line 66 def getDomains self.class.get('/v1/domains', ) 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() response = self.class.get("/v1/bareMetals/#{bareMetalId}/installationStatus", ) 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}", ) end |
#getIP(bareMetalId, ipAddress) ⇒ Object
152 153 154 |
# File 'lib/leaseweb-rest-api.rb', line 152 def getIP(, ipAddress) self.class.get("/v1/bareMetals/#{bareMetalId}/ips/#{ipAddress}", ) end |
#getIpmiCredentials(bareMetalId) ⇒ Object
162 163 164 |
# File 'lib/leaseweb-rest-api.rb', line 162 def getIpmiCredentials() self.class.get("/v1/bareMetals/#{bareMetalId}/ipmiCredentials", ) end |
#getIps ⇒ Object
IPs
293 294 295 |
# File 'lib/leaseweb-rest-api.rb', line 293 def getIps self.class.get('/v1/ips', ) end |
#getIPs(bareMetalId) ⇒ Object
148 149 150 |
# File 'lib/leaseweb-rest-api.rb', line 148 def getIPs() self.class.get("/v1/bareMetals/#{bareMetalId}/ips", ) end |
#getLease(bareMetalId, macAddress) ⇒ Object
224 225 226 |
# File 'lib/leaseweb-rest-api.rb', line 224 def getLease(, macAddress) self.class.get("/v1/bareMetals/#{bareMetalId}/leases/#{macAddress}", ) end |
#getLeases(bareMetalId) ⇒ Object
214 215 216 |
# File 'lib/leaseweb-rest-api.rb', line 214 def getLeases() self.class.get("/v1/bareMetals/#{bareMetalId}/leases", ) end |
#getNetworkUsage(bareMetalId) ⇒ Object
166 167 168 |
# File 'lib/leaseweb-rest-api.rb', line 166 def getNetworkUsage() self.class.get("/v1/bareMetals/#{bareMetalId}/networkUsage", ) end |
#getNetworkUsageBandWidth(bareMetalId, dateFrom, dateTo, format = 'json') ⇒ Object
170 171 172 |
# File 'lib/leaseweb-rest-api.rb', line 170 def getNetworkUsageBandWidth(, 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(, 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'] = { headers: { 'Authorization' => "Bearer #{access_token}" } } end |
#getOperatingSystem(operatingSystemId) ⇒ Object
274 275 276 |
# File 'lib/leaseweb-rest-api.rb', line 274 def () self.class.get("/v1/operatingSystems/#{operatingSystemId}", ) end |
#getOperatingSystems ⇒ Object
Operating Systems
270 271 272 |
# File 'lib/leaseweb-rest-api.rb', line 270 def self.class.get('/v1/operatingSystems', ) end |
#getPartitionSchema(operatingSystemId, bareMetalId) ⇒ Object
286 287 288 289 290 |
# File 'lib/leaseweb-rest-api.rb', line 286 def getPartitionSchema(, ) opt = .merge!(query: { serverPackId: }) 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() self.class.get("/v1/payAsYouGo/bareMetals/instances/#{bareMetalId}", ) end |
#getPAYGInstances ⇒ Object
Pay as you go
308 309 310 |
# File 'lib/leaseweb-rest-api.rb', line 308 def getPAYGInstances self.class.get('/v1/payAsYouGo/bareMetals/instances', ) 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}", ) end |
#getPAYGModels ⇒ Object
326 327 328 |
# File 'lib/leaseweb-rest-api.rb', line 326 def getPAYGModels self.class.get('/v1/payAsYouGo/bareMetals/models', ) end |
#getPowerStatus(bareMetalId) ⇒ Object
144 145 146 |
# File 'lib/leaseweb-rest-api.rb', line 144 def getPowerStatus() self.class.get("/v1/bareMetals/#{bareMetalId}/powerStatus", ) end |
#getPrivateNetwork(id) ⇒ Object
244 245 246 |
# File 'lib/leaseweb-rest-api.rb', line 244 def getPrivateNetwork(id) self.class.get("/v1/privateNetworks/#{id}", ) end |
#getPrivateNetworks ⇒ Object
Private Networks
233 234 235 |
# File 'lib/leaseweb-rest-api.rb', line 233 def getPrivateNetworks self.class.get('/v1/privateNetworks', ) end |
#getRescueImages ⇒ Object
Rescue
113 114 115 |
# File 'lib/leaseweb-rest-api.rb', line 113 def getRescueImages self.class.get('/v1/rescueImages', ) end |
#getRootPassword(bareMetalId, format = 'json') ⇒ Object
194 195 196 197 198 |
# File 'lib/leaseweb-rest-api.rb', line 194 def getRootPassword(, format = 'json') opt = .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() self.class.get("/v1/bareMetals/#{bareMetalId}/switchPort", ) end |
#installServer(bareMetalId, osId, hdd = []) ⇒ Object
182 183 184 185 186 |
# File 'lib/leaseweb-rest-api.rb', line 182 def installServer(, osId, hdd = []) opt = .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 = .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() self.class.post("/v1/bareMetals/#{bareMetalId}/reboot", ) end |
#postResqueMode(bareMetalId, osId) ⇒ Object
188 189 190 191 192 |
# File 'lib/leaseweb-rest-api.rb', line 188 def postResqueMode(, osId) opt = .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() self.class.post("/v1/bareMetals/#{bareMetalId}/switchPort/close", ) end |
#postSwitchPortOpen(bareMetalId) ⇒ Object
136 137 138 |
# File 'lib/leaseweb-rest-api.rb', line 136 def postSwitchPortOpen() self.class.post("/v1/bareMetals/#{bareMetalId}/switchPort/open", ) end |
#put(url, body) ⇒ Object
56 57 58 59 |
# File 'lib/leaseweb-rest-api.rb', line 56 def put(url, body) opt = .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(, bootFileName) opt = .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(, reference) opt = .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 = .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 = .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(, ipAddress, reverseLookup = '', nullRouted = 0) opt = .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 = .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 = .merge!(body: { name: name }) self.class.put("/v1/privateNetworks/#{id}", opt) end |