Class: LeasewebAPI
- Inherits:
-
Object
- Object
- LeasewebAPI
- Includes:
- HTTParty
- Defined in:
- lib/leaseweb-rest-api.rb
Instance Method Summary collapse
- #addDedicatedServerToPrivateNetwork(id, server_id) ⇒ Object
- #apiKeyAuth(apikey) ⇒ Object
- #createDedicatedServerDhcpReservation(server_id, boot_file_name) ⇒ Object
-
#createPrivateNetworks(name = '') ⇒ Object
TODO: check post with name.
- #delete(url) ⇒ Object
- #deletePrivateNetwork(id) ⇒ Object
- #get(url) ⇒ Object
- #get_paginated(url, key, offset = 0, limit = 50) ⇒ Object
- #getControlPanel(operating_system_id, control_panel_id) ⇒ Object
- #getControlPanels(operating_system_id) ⇒ Object
- #getDedicatedServer(server_id) ⇒ Object
- #getDedicatedServerBandwidthMetrics(server_id, date_from, date_to, format = 'json') ⇒ Object
- #getDedicatedServerByIp(ip) ⇒ Object
- #getDedicatedServerDatatrafficMetrics(server_id, date_from, date_to, format = 'json') ⇒ Object
- #getDedicatedServerDhcpReservation(server_id) ⇒ Object
- #getDedicatedServerHardware(server_id) ⇒ Object
- #getDedicatedServers(result = nil) ⇒ Object
- #getIp(ip) ⇒ Object
-
#getIps ⇒ Object
IPs.
- #getOauthToken(client_id, client_secret) ⇒ Object
- #getOperatingSystem(operating_system_id) ⇒ Object
-
#getOperatingSystems ⇒ Object
Operating Systems.
- #getPrivateNetwork(id) ⇒ Object
-
#getPrivateNetworks ⇒ Object
Private Networks.
- #getVirtualServer(server_id) ⇒ Object
- #getVirtualServerControlPanelCredentials(server_id) ⇒ Object
- #getVirtualServerControlPanelCredentialsForUser(server_id, username) ⇒ Object
- #getVirtualServerOsCredentials(server_id) ⇒ Object
- #getVirtualServerOsCredentialsForUser(server_id, username) ⇒ Object
- #getVirtualServers(result = nil) ⇒ Object
-
#initialize ⇒ LeasewebAPI
constructor
A new instance of LeasewebAPI.
- #launchRescueModeDedicatedServer(server_id, rescue_image_id, ssh_key) ⇒ Object
- #post(url, body) ⇒ Object
- #powerOffVirtualServer(server_id) ⇒ Object
- #powerOnDedicatedServer(server_id) ⇒ Object
- #powerOnVirtualServer(server_id) ⇒ Object
- #put(url, body) ⇒ Object
- #rebootDedicatedServer(server_id) ⇒ Object
- #rebootVirtualServer(server_id) ⇒ Object
- #reinstallVirtualServer(server_id) ⇒ Object
- #removeDedicatedServerDhcpReservation(server_id) ⇒ Object
- #removeDedicatedServerFromPrivateNetwork(id, server_id) ⇒ Object
- #updateIp(ip, reverse_lookup = '', null_routed = 0) ⇒ Object
-
#updatePrivateNetwork(id, name = '') ⇒ Object
TODO: Check with Jeroen if it works.
Constructor Details
#initialize ⇒ LeasewebAPI
Returns a new instance of LeasewebAPI.
15 16 17 18 |
# File 'lib/leaseweb-rest-api.rb', line 15 def initialize @tmpdir = '/tmp/lsw-rest-api' Dir.mkdir(@tmpdir) unless Dir.exist?(@tmpdir) end |
Instance Method Details
#addDedicatedServerToPrivateNetwork(id, server_id) ⇒ Object
222 223 224 225 226 |
# File 'lib/leaseweb-rest-api.rb', line 222 def addDedicatedServerToPrivateNetwork(id, server_id) opt = @options.merge!(body: { serverId: server_id }.to_json) self.class.post("/bareMetals/v2/privateNetworks/#{id}/servers", opt) end |
#apiKeyAuth(apikey) ⇒ Object
20 21 22 23 24 25 26 27 |
# File 'lib/leaseweb-rest-api.rb', line 20 def apiKeyAuth(apikey) @options = { headers: { 'X-Lsw-Auth' => apikey, 'Content-Type' => 'application/json' } } end |
#createDedicatedServerDhcpReservation(server_id, boot_file_name) ⇒ Object
131 132 133 134 |
# File 'lib/leaseweb-rest-api.rb', line 131 def createDedicatedServerDhcpReservation(server_id, boot_file_name) opt = @options.merge!(body: { bootFileName: boot_file_name }.to_json) self.class.post("/bareMetals/v2/servers/#{server_id}/leases", opt) end |
#createPrivateNetworks(name = '') ⇒ Object
TODO: check post with name
201 202 203 204 205 |
# File 'lib/leaseweb-rest-api.rb', line 201 def createPrivateNetworks(name = '') opt = @options.merge!(body: { name: name }.to_json) self.class.post('/bareMetals/v2/privateNetworks', opt) end |
#delete(url) ⇒ Object
60 61 62 |
# File 'lib/leaseweb-rest-api.rb', line 60 def delete(url) self.class.delete(url, @options) end |
#deletePrivateNetwork(id) ⇒ Object
218 219 220 |
# File 'lib/leaseweb-rest-api.rb', line 218 def deletePrivateNetwork(id) self.class.delete("/bareMetals/v2/privateNetworks/#{id}", @options) end |
#get(url) ⇒ Object
46 47 48 |
# File 'lib/leaseweb-rest-api.rb', line 46 def get(url) self.class.get(url, @options) end |
#get_paginated(url, key, offset = 0, limit = 50) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/leaseweb-rest-api.rb', line 64 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 |
#getControlPanel(operating_system_id, control_panel_id) ⇒ Object
245 246 247 |
# File 'lib/leaseweb-rest-api.rb', line 245 def getControlPanel(, control_panel_id) self.class.get("/bareMetals/v2/operatingSystems/#{}/controlPanels/#{control_panel_id}", @options) end |
#getControlPanels(operating_system_id) ⇒ Object
241 242 243 |
# File 'lib/leaseweb-rest-api.rb', line 241 def getControlPanels() self.class.get("/bareMetals/v2/operatingSystems/#{}/controlPanels", @options) end |
#getDedicatedServer(server_id) ⇒ Object
118 119 120 |
# File 'lib/leaseweb-rest-api.rb', line 118 def getDedicatedServer(server_id) self.class.get("/bareMetals/v2/servers/#{server_id}", @options) end |
#getDedicatedServerBandwidthMetrics(server_id, date_from, date_to, format = 'json') ⇒ Object
264 265 266 |
# File 'lib/leaseweb-rest-api.rb', line 264 def getDedicatedServerBandwidthMetrics(server_id, date_from, date_to, format = 'json') self.class.get("/bareMetals/v2/servers/#{server_id}/metrics/bandwidth", formatRequest(date_from, date_to, 'AVG', format)) end |
#getDedicatedServerByIp(ip) ⇒ Object
114 115 116 |
# File 'lib/leaseweb-rest-api.rb', line 114 def getDedicatedServerByIp(ip) self.class.get("/internal/dedicatedserverapi/v2/servers?ip=#{ip}", @options) end |
#getDedicatedServerDatatrafficMetrics(server_id, date_from, date_to, format = 'json') ⇒ Object
268 269 270 |
# File 'lib/leaseweb-rest-api.rb', line 268 def getDedicatedServerDatatrafficMetrics(server_id, date_from, date_to, format = 'json') self.class.get("/bareMetals/v2/servers/#{server_id}/metrics/datatraffic", formatRequest(date_from, date_to, 'SUM', format)) end |
#getDedicatedServerDhcpReservation(server_id) ⇒ Object
126 127 128 129 |
# File 'lib/leaseweb-rest-api.rb', line 126 def getDedicatedServerDhcpReservation(server_id) result = self.class.get("/bareMetals/v2/servers/#{server_id}/leases", @options) result['leases'].pop end |
#getDedicatedServerHardware(server_id) ⇒ Object
122 123 124 |
# File 'lib/leaseweb-rest-api.rb', line 122 def getDedicatedServerHardware(server_id) self.class.get("/bareMetals/v2/servers/#{server_id}/hardwareInfo", @options) end |
#getDedicatedServers(result = nil) ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/leaseweb-rest-api.rb', line 95 def getDedicatedServers(result = nil) partialSize = (result && result['servers'] && result['servers'].size) || 0 partialResult = self.class.get("/bareMetals/v2/servers?offset=#{partialSize}&limit=50", @options) return partialResult if partialResult['errorMessage'] if result.nil? result = partialResult else result['servers'] += partialResult['servers'] result['_metadata']['offset'] = 0 result['_metadata']['limit'] = partialResult['_metadata']['totalCount'] end return getDedicatedServers(result) if result['servers'].size < partialResult['_metadata']['totalCount'] result end |
#getIp(ip) ⇒ Object
254 255 256 |
# File 'lib/leaseweb-rest-api.rb', line 254 def getIp(ip) self.class.get("/ipMgmt/v2/ips/#{ip}", @options) end |
#getIps ⇒ Object
IPs
250 251 252 |
# File 'lib/leaseweb-rest-api.rb', line 250 def getIps self.class.get('/ipMgmt/v2/ips', @options) end |
#getOauthToken(client_id, client_secret) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/leaseweb-rest-api.rb', line 29 def getOauthToken(client_id, client_secret) access_token = validate_token(client_id) if access_token == false response = self.class.post('https://auth.leaseweb.com/token', basic_auth: { username: client_id, password: client_secret }, body: { grant_type: 'client_credentials' }) access_token = response.parsed_response['access_token'] cache_token(client_id, access_token, response.parsed_response['expires_in']) end @options = { headers: { 'Authorization' => "Bearer #{access_token}", 'Content-Type' => 'application/json' } } end |
#getOperatingSystem(operating_system_id) ⇒ Object
237 238 239 |
# File 'lib/leaseweb-rest-api.rb', line 237 def () self.class.get("/bareMetals/v2/operatingSystems/#{}", @options) end |
#getOperatingSystems ⇒ Object
Operating Systems
233 234 235 |
# File 'lib/leaseweb-rest-api.rb', line 233 def self.class.get('/bareMetals/v2/operatingSystems', @options) end |
#getPrivateNetwork(id) ⇒ Object
207 208 209 |
# File 'lib/leaseweb-rest-api.rb', line 207 def getPrivateNetwork(id) self.class.get("/bareMetals/v2/privateNetworks/#{id}", @options) end |
#getPrivateNetworks ⇒ Object
Private Networks
196 197 198 |
# File 'lib/leaseweb-rest-api.rb', line 196 def getPrivateNetworks self.class.get('/bareMetals/v2/privateNetworks', @options) end |
#getVirtualServer(server_id) ⇒ Object
175 176 177 |
# File 'lib/leaseweb-rest-api.rb', line 175 def getVirtualServer(server_id) self.class.get("/cloud/v2/virtualServers/#{server_id}", @options) end |
#getVirtualServerControlPanelCredentials(server_id) ⇒ Object
179 180 181 |
# File 'lib/leaseweb-rest-api.rb', line 179 def getVirtualServerControlPanelCredentials(server_id) self.class.get("/cloud/v2/virtualServers/#{server_id}/credentials/CONTROL_PANEL", @options) end |
#getVirtualServerControlPanelCredentialsForUser(server_id, username) ⇒ Object
183 184 185 |
# File 'lib/leaseweb-rest-api.rb', line 183 def getVirtualServerControlPanelCredentialsForUser(server_id, username) self.class.get("/cloud/v2/virtualServers/#{server_id}/credentials/CONTROL_PANEL/#{username}", @options) end |
#getVirtualServerOsCredentials(server_id) ⇒ Object
187 188 189 |
# File 'lib/leaseweb-rest-api.rb', line 187 def getVirtualServerOsCredentials(server_id) self.class.get("/cloud/v2/virtualServers/#{server_id}/credentials/OPERATING_SYSTEM", @options) end |
#getVirtualServerOsCredentialsForUser(server_id, username) ⇒ Object
191 192 193 |
# File 'lib/leaseweb-rest-api.rb', line 191 def getVirtualServerOsCredentialsForUser(server_id, username) self.class.get("/cloud/v2/virtualServers/#{server_id}/credentials/OPERATING_SYSTEM/#{username}", @options) end |
#getVirtualServers(result = nil) ⇒ Object
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
# File 'lib/leaseweb-rest-api.rb', line 156 def getVirtualServers(result = nil) partialSize = (result && result['virtualServers'] && result['virtualServers'].size) || 0 partialResult = self.class.get("/cloud/v2/virtualServers?offset=#{partialSize}&limit=50", @options) return partialResult if partialResult['errorMessage'] if result.nil? result = partialResult else result['virtualServers'] += partialResult['virtualServers'] result['_metadata']['offset'] = 0 result['_metadata']['limit'] = partialResult['_metadata']['totalCount'] end return getVirtualServers(result) if result['virtualServers'].size < partialResult['_metadata']['totalCount'] result end |
#launchRescueModeDedicatedServer(server_id, rescue_image_id, ssh_key) ⇒ Object
87 88 89 90 91 92 93 |
# File 'lib/leaseweb-rest-api.rb', line 87 def launchRescueModeDedicatedServer(server_id, rescue_image_id, ssh_key) self.class.post("/bareMetals/v2/servers/#{server_id}/cancelActiveJob", @options) opt = @options.merge!(body: { rescueImageId: rescue_image_id, sshKeys: ssh_key, powerCycle: true }.to_json) self.class.post("/bareMetals/v2/servers/#{server_id}/rescueMode", opt) end |
#post(url, body) ⇒ Object
50 51 52 53 |
# File 'lib/leaseweb-rest-api.rb', line 50 def post(url, body) opt = @options.merge!(body: body) self.class.post(url, opt) end |
#powerOffVirtualServer(server_id) ⇒ Object
144 145 146 |
# File 'lib/leaseweb-rest-api.rb', line 144 def powerOffVirtualServer(server_id) self.class.post("/cloud/v2/virtualServers/#{server_id}/powerOff", @options) end |
#powerOnDedicatedServer(server_id) ⇒ Object
83 84 85 |
# File 'lib/leaseweb-rest-api.rb', line 83 def powerOnDedicatedServer(server_id) self.class.post("/bareMetals/v2/servers/#{server_id}/powerOn", @options) end |
#powerOnVirtualServer(server_id) ⇒ Object
140 141 142 |
# File 'lib/leaseweb-rest-api.rb', line 140 def powerOnVirtualServer(server_id) self.class.post("/cloud/v2/virtualServers/#{server_id}/powerOn", @options) end |
#put(url, body) ⇒ Object
55 56 57 58 |
# File 'lib/leaseweb-rest-api.rb', line 55 def put(url, body) opt = @options.merge!(body: body) self.class.put(url, opt) end |
#rebootDedicatedServer(server_id) ⇒ Object
79 80 81 |
# File 'lib/leaseweb-rest-api.rb', line 79 def rebootDedicatedServer(server_id) self.class.post("/bareMetals/v2/servers/#{server_id}/powerCycle", @options) end |
#rebootVirtualServer(server_id) ⇒ Object
148 149 150 |
# File 'lib/leaseweb-rest-api.rb', line 148 def rebootVirtualServer(server_id) self.class.post("/cloud/v2/virtualServers/#{server_id}/reboot", @options) end |
#reinstallVirtualServer(server_id) ⇒ Object
152 153 154 |
# File 'lib/leaseweb-rest-api.rb', line 152 def reinstallVirtualServer(server_id) self.class.post("/cloud/v2/virtualServers/#{server_id}/reinstall", @options) end |
#removeDedicatedServerDhcpReservation(server_id) ⇒ Object
136 137 138 |
# File 'lib/leaseweb-rest-api.rb', line 136 def removeDedicatedServerDhcpReservation(server_id) self.class.delete("/bareMetals/v2/servers/#{server_id}/leases", @options) end |
#removeDedicatedServerFromPrivateNetwork(id, server_id) ⇒ Object
228 229 230 |
# File 'lib/leaseweb-rest-api.rb', line 228 def removeDedicatedServerFromPrivateNetwork(id, server_id) self.class.delete("/bareMetals/v2/privateNetworks/#{id}/servers/#{server_id}", @options) end |
#updateIp(ip, reverse_lookup = '', null_routed = 0) ⇒ Object
258 259 260 261 262 |
# File 'lib/leaseweb-rest-api.rb', line 258 def updateIp(ip, reverse_lookup = '', null_routed = 0) opt = @options.merge!(body: { reverseLookup: reverse_lookup, nullRouted: null_routed }.to_json) self.class.put("/ipMgmt/v2/ips/#{ip}", opt) end |
#updatePrivateNetwork(id, name = '') ⇒ Object
TODO: Check with Jeroen if it works
212 213 214 215 216 |
# File 'lib/leaseweb-rest-api.rb', line 212 def updatePrivateNetwork(id, name = '') opt = @options.merge!(body: { name: name }.to_json) self.class.put("/bareMetals/v2/privateNetworks/#{id}", opt) end |