upcloud_api 1.5.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/upcloud_api.rb +209 -54
- data/lib/upcloud_api/version.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b9499c81732dab73f760bcfc382a7c288d82960
|
4
|
+
data.tar.gz: 61ec8087b5b00f870495fdf4c9859e962c8675f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52496d8d4289e67cf15da5703500e497201d312553c78eaf58e548d1958796075177405ae5b5acc75dbfc1a594bc6b6fc7913cc8d789c7cce7cbdbb47b4c7e8e
|
7
|
+
data.tar.gz: edab2b929517934e42e082142ae19b5c186116b4a3cc248cf31df506974b415641dd4e46efbe07d175fa100c120b63f642bcd799ac06352ac35de4a0e66d3660
|
data/lib/upcloud_api.rb
CHANGED
@@ -19,7 +19,7 @@ class UpcloudApi
|
|
19
19
|
#
|
20
20
|
# Calls GET /1.2/server
|
21
21
|
#
|
22
|
-
# Returns true in success, false if not
|
22
|
+
# Returns true in success, false if not.
|
23
23
|
def login
|
24
24
|
response = get "server"
|
25
25
|
response.code == 200
|
@@ -27,7 +27,13 @@ class UpcloudApi
|
|
27
27
|
|
28
28
|
# Returns available server configurations.
|
29
29
|
#
|
30
|
-
# Calls GET /1.2/server_size
|
30
|
+
# Calls GET /1.2/server_size.
|
31
|
+
#
|
32
|
+
# Returns array of server size hashes:
|
33
|
+
# {
|
34
|
+
# "core_number": "1",
|
35
|
+
# "memory_amount": "512"
|
36
|
+
# }
|
31
37
|
def server_configurations
|
32
38
|
response = get "server_size"
|
33
39
|
response["server_sizes"]["server_size"]
|
@@ -36,17 +42,19 @@ class UpcloudApi
|
|
36
42
|
# Returns available credits.
|
37
43
|
#
|
38
44
|
# Calls GET /1.2/acccount
|
45
|
+
#
|
46
|
+
# Returns available credits in the account as a string.
|
39
47
|
def account_information
|
40
48
|
response = get "account"
|
41
49
|
data = JSON.parse response.body
|
42
50
|
data["account"]["credits"]
|
43
51
|
end
|
44
52
|
|
45
|
-
# Lists servers associated with the account
|
53
|
+
# Lists servers associated with the account.
|
46
54
|
#
|
47
|
-
# Calls GET /1.2/server
|
55
|
+
# Calls GET /1.2/server.
|
48
56
|
#
|
49
|
-
# Returns array of servers with values
|
57
|
+
# Returns array of servers with following values or empty array if no servers found.
|
50
58
|
# - zone
|
51
59
|
# - core_number
|
52
60
|
# - title
|
@@ -62,54 +70,121 @@ class UpcloudApi
|
|
62
70
|
|
63
71
|
# Shows details of a server.
|
64
72
|
#
|
65
|
-
# Calls GET /1.2/server
|
73
|
+
# Calls GET /1.2/server/_uuid_.
|
66
74
|
#
|
67
75
|
# @param uuid from UpcloudApi#servers
|
76
|
+
#
|
77
|
+
# Returns hash of server details or nil:
|
78
|
+
# {
|
79
|
+
# "boot_order" => "cdrom,disk",
|
80
|
+
# "core_number" => "3",
|
81
|
+
# "firewall" => "off",
|
82
|
+
# "hostname" => "dummy",
|
83
|
+
# "ip_addresses" => {
|
84
|
+
# "ip_address" => [
|
85
|
+
# {
|
86
|
+
# "access" => "private",
|
87
|
+
# "address" => "192.168.0.1",
|
88
|
+
# "family" => "IPv4"
|
89
|
+
# },
|
90
|
+
# {
|
91
|
+
# "access" => "public",
|
92
|
+
# "address" => "::1",
|
93
|
+
# "family" => "IPv6"
|
94
|
+
# },
|
95
|
+
# {
|
96
|
+
# "access" => "public",
|
97
|
+
# "address" => "198.51.100.1",
|
98
|
+
# "family" => "IPv4"
|
99
|
+
# }
|
100
|
+
# ]
|
101
|
+
# },
|
102
|
+
# "license" => 0,
|
103
|
+
# "memory_amount" => "3072",
|
104
|
+
# "nic_model" => "virtio",
|
105
|
+
# "plan" => "custom",
|
106
|
+
# "state" => "stopped",
|
107
|
+
# "storage_devices" => {
|
108
|
+
# "storage_device" => [
|
109
|
+
# {
|
110
|
+
# "address" => "virtio:1",
|
111
|
+
# "storage" => "storage_uuid",
|
112
|
+
# "storage_size" => 10,
|
113
|
+
# "storage_title" => "Disk name",
|
114
|
+
# "type" => "disk"
|
115
|
+
# }
|
116
|
+
# ]
|
117
|
+
# },
|
118
|
+
# "tags" => {"tag" => []},
|
119
|
+
# "timezone" => "UTC",
|
120
|
+
# "title" => "Server name",
|
121
|
+
# "uuid" => "uuid",
|
122
|
+
# "video_model" => "cirrus",
|
123
|
+
# "vnc" => "off",
|
124
|
+
# "vnc_password" => "1234",
|
125
|
+
# "zone" => "de-fra1"
|
126
|
+
# }
|
68
127
|
def server_details(uuid)
|
69
128
|
response = get "server/#{uuid}"
|
70
129
|
data = JSON.parse response.body
|
71
|
-
data
|
72
|
-
end
|
73
130
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
def templates
|
78
|
-
response = get "storage/template"
|
79
|
-
data = JSON.parse response.body
|
80
|
-
data
|
131
|
+
return nil if data["server"].nil?
|
132
|
+
|
133
|
+
data["server"]
|
81
134
|
end
|
82
135
|
|
83
136
|
# Creates new server from template.
|
84
137
|
#
|
85
|
-
# Calls POST /1.2/server
|
138
|
+
# Calls POST /1.2/server.
|
86
139
|
#
|
87
140
|
# Storage devices should be array of hashes containing following data:
|
88
141
|
#
|
89
142
|
# {
|
90
|
-
#
|
91
|
-
#
|
92
|
-
#
|
93
|
-
#
|
143
|
+
# "action" => "clone" # Can be "create", "clone" or "attach"
|
144
|
+
# "storage" => template_uuid, # Should be passed only for "clone" or "attach"
|
145
|
+
# "title" => disk_name, # Name of the storage,
|
146
|
+
# "tier" => "maxiops", # No sense using HDD any more
|
147
|
+
# }
|
148
|
+
#
|
149
|
+
# @param plan [String] Preconfigured plan for the server. If nil, a custom plan will be created from input data, otherwise this overrides custom configuration.
|
150
|
+
# Predefined plans can be fetched with {#plans}.
|
151
|
+
#
|
152
|
+
# login_user should be following hash or nil:
|
153
|
+
# {
|
154
|
+
# "username": "upclouduser",
|
155
|
+
# "ssh_keys": {
|
156
|
+
# "ssh_key": [
|
157
|
+
# "ssh-rsa AAAAB3NzaC1yc2EAA[...]ptshi44x user@some.host",
|
158
|
+
# "ssh-dss AAAAB3NzaC1kc3MAA[...]VHRzAA== someuser@some.other.host"
|
159
|
+
# ]
|
160
|
+
# }
|
94
161
|
# }
|
95
162
|
#
|
96
163
|
# ip_addresses should be an array containing :public, :private and/or :ipv6. It defaults to
|
97
164
|
# :all, which means the server will get public IPv4, private IPv4 and public IPv6 addresses.
|
98
165
|
#
|
99
|
-
#
|
166
|
+
# @param other [Hash] Other optional arguments create_server API call takes. See Upcloud’s documentation for possible values.
|
167
|
+
#
|
168
|
+
# Returns HTTParty response object.
|
100
169
|
def create_server(zone: "fi-hel1", title:, hostname:, core_number: 1,
|
101
|
-
memory_amount: 1024, storage_devices:, ip_addresses: :all
|
170
|
+
memory_amount: 1024, storage_devices:, ip_addresses: :all,
|
171
|
+
plan: nil, login_user: nil, other: nil)
|
102
172
|
data = {
|
103
173
|
"server" => {
|
104
174
|
"zone" => zone,
|
105
175
|
"title" => title,
|
106
176
|
"hostname" => hostname,
|
107
|
-
"core_number" => core_number,
|
108
|
-
"memory_amount" => memory_amount,
|
109
177
|
"storage_devices" => { "storage_device" => storage_devices }
|
110
178
|
}
|
111
179
|
}
|
112
180
|
|
181
|
+
if plan.nil?
|
182
|
+
data["server"]["core_number"] = core_number
|
183
|
+
data["server"]["memory_amount"] = memory_amount
|
184
|
+
else
|
185
|
+
data["server"]["plan"] = plan
|
186
|
+
end
|
187
|
+
|
113
188
|
if ip_addresses != :all
|
114
189
|
ips = []
|
115
190
|
ips << { "access" => "public", "family" => "IPv4" } if ip_addresses.include? :public
|
@@ -120,6 +195,14 @@ class UpcloudApi
|
|
120
195
|
data["server"]["ip_addresses"]["ip_address"] = ips
|
121
196
|
end
|
122
197
|
|
198
|
+
unless login_user.nil?
|
199
|
+
data["login_user"] = login_user
|
200
|
+
end
|
201
|
+
|
202
|
+
unless other.nil?
|
203
|
+
data.merge! other
|
204
|
+
end
|
205
|
+
|
123
206
|
json = JSON.generate data
|
124
207
|
response = post "server", json
|
125
208
|
response
|
@@ -129,10 +212,12 @@ class UpcloudApi
|
|
129
212
|
#
|
130
213
|
# In order to modify a server, the server must be stopped first.
|
131
214
|
#
|
132
|
-
# Calls PUT /1.2/server
|
215
|
+
# Calls PUT /1.2/server/_uuid_.
|
133
216
|
#
|
134
217
|
# @param server_uuid [String] UUID of the server that will be modified.
|
135
218
|
# @param params [Hash] Hash of params that will be passed to be changed.
|
219
|
+
#
|
220
|
+
# Returns HTTParty response object.
|
136
221
|
def modify_server(server_uuid, params)
|
137
222
|
data = { "server" => params }
|
138
223
|
json = JSON.generate data
|
@@ -145,7 +230,9 @@ class UpcloudApi
|
|
145
230
|
#
|
146
231
|
# In order to delete a server, the server must be stopped first.
|
147
232
|
#
|
148
|
-
# Calls DELETE /1.2/server
|
233
|
+
# Calls DELETE /1.2/server/_uuid_.
|
234
|
+
#
|
235
|
+
# Returns HTTParty response object.
|
149
236
|
def delete_server(server_uuid)
|
150
237
|
response = delete "server/#{server_uuid}"
|
151
238
|
|
@@ -154,18 +241,20 @@ class UpcloudApi
|
|
154
241
|
|
155
242
|
# Starts server that is shut down.
|
156
243
|
#
|
157
|
-
# Calls POST /1.2/server
|
244
|
+
# Calls POST /1.2/server/_uuid_/start.
|
158
245
|
#
|
159
|
-
# @param server_uuid UUID of the server
|
246
|
+
# @param server_uuid UUID of the server.
|
247
|
+
#
|
248
|
+
# Returns HTTParty response object.
|
160
249
|
def start_server(server_uuid)
|
161
250
|
response = post "server/#{server_uuid}/start"
|
162
251
|
|
163
252
|
response
|
164
253
|
end
|
165
254
|
|
166
|
-
# Shuts down a server that is currently running
|
255
|
+
# Shuts down a server that is currently running.
|
167
256
|
#
|
168
|
-
# Calls POST /1.2/server
|
257
|
+
# Calls POST /1.2/server/_uuid_/stop.
|
169
258
|
#
|
170
259
|
# Hard shutdown means practically same as taking the power cable
|
171
260
|
# off from the computer. Soft shutdown sends ACPI signal to the server,
|
@@ -183,6 +272,8 @@ class UpcloudApi
|
|
183
272
|
#
|
184
273
|
# Raises Timeout::Error in case server does not shut down in 300
|
185
274
|
# seconds in non-asynchronous mode.
|
275
|
+
#
|
276
|
+
# Returns HTTParty response object if server was removed successfully or request is asynchronous and nil otherwise
|
186
277
|
def stop_server(server_uuid, type: :soft, timeout: nil, asynchronous: false)
|
187
278
|
data = {
|
188
279
|
"stop_server" => {
|
@@ -200,15 +291,17 @@ class UpcloudApi
|
|
200
291
|
Timeout.timeout 300 do
|
201
292
|
loop do
|
202
293
|
details = server_details server_uuid
|
203
|
-
return response if details
|
204
|
-
return response if details["
|
294
|
+
return response if details.nil?
|
295
|
+
return response if details["state"] == "stopped"
|
205
296
|
end
|
206
297
|
end
|
298
|
+
|
299
|
+
nil
|
207
300
|
end
|
208
301
|
|
209
|
-
# Restarts a server that is currently running
|
302
|
+
# Restarts a server that is currently running.
|
210
303
|
#
|
211
|
-
# Calls POST /1.2/server
|
304
|
+
# Calls POST /1.2/server/_uuid_/restart.
|
212
305
|
#
|
213
306
|
# Hard shutdown means practically same as taking the power cable
|
214
307
|
# off from the computer. Soft shutdown sends ACPI signal to the server,
|
@@ -224,8 +317,9 @@ class UpcloudApi
|
|
224
317
|
# @param timeout_action What will happen when timeout happens.
|
225
318
|
# :destroy hard stops the server and :ignore stops the operation
|
226
319
|
# if timeout happens. Default is :ignore.
|
227
|
-
|
228
|
-
|
320
|
+
#
|
321
|
+
# Returns HTTParty response object.
|
322
|
+
def restart_server(server_uuid, type: :soft, timeout: nil, timeout_action: :ignore)
|
229
323
|
data = {
|
230
324
|
"restart_server" => {
|
231
325
|
"stop_type" => type.to_s,
|
@@ -243,7 +337,7 @@ class UpcloudApi
|
|
243
337
|
|
244
338
|
# Lists all storages or storages matching to given type.
|
245
339
|
#
|
246
|
-
# Calls GET /1.2/storage or /1.2/storage
|
340
|
+
# Calls GET /1.2/storage or /1.2/storage/_type_.
|
247
341
|
#
|
248
342
|
# Available types:
|
249
343
|
# - public
|
@@ -254,27 +348,46 @@ class UpcloudApi
|
|
254
348
|
# - template
|
255
349
|
# - favorite
|
256
350
|
#
|
257
|
-
# @param type Type of the storages to be returned on nil
|
351
|
+
# @param type Type of the storages to be returned on nil.
|
352
|
+
#
|
353
|
+
# Returns array of storages, inside "storage" key in the API or empty array if none found.
|
258
354
|
def storages(type: nil)
|
259
355
|
response = get(type && "storage/#{type}" || "storage")
|
260
356
|
data = JSON.parse response.body
|
261
|
-
data
|
357
|
+
data["storages"]["storage"]
|
262
358
|
end
|
263
359
|
|
264
360
|
# Shows detailed information of single storage.
|
265
361
|
#
|
266
|
-
# Calls GET /1.2/storage
|
362
|
+
# Calls GET /1.2/storage/_uuid_.
|
363
|
+
#
|
364
|
+
# @param storage_uuid UUID of the storage.
|
267
365
|
#
|
268
|
-
#
|
366
|
+
# Returns hash of following storage details or nil:
|
367
|
+
# {
|
368
|
+
# "access" => "public",
|
369
|
+
# "license" => 0,
|
370
|
+
# "servers" => {
|
371
|
+
# "server"=> []
|
372
|
+
# },
|
373
|
+
# "size" => 1,
|
374
|
+
# "state" => "online",
|
375
|
+
# "title" => "Windows Server 2003 R2 Standard (CD 1)",
|
376
|
+
# "type" => "cdrom",
|
377
|
+
# "uuid" => "01000000-0000-4000-8000-000010010101"
|
378
|
+
# }
|
269
379
|
def storage_details(storage_uuid)
|
270
380
|
response = get "storage/#{storage_uuid}"
|
271
381
|
data = JSON.parse response.body
|
272
|
-
|
382
|
+
|
383
|
+
return nil if data["storage"].nil?
|
384
|
+
|
385
|
+
data["storage"]
|
273
386
|
end
|
274
387
|
|
275
388
|
# Creates new storage.
|
276
389
|
#
|
277
|
-
# Calls POST /1.2/storage
|
390
|
+
# Calls POST /1.2/storage.
|
278
391
|
#
|
279
392
|
# backup_rule should be hash with following attributes:
|
280
393
|
# - interval # allowed values: daily / mon / tue / wed / thu / fri / sat / sun
|
@@ -289,6 +402,8 @@ class UpcloudApi
|
|
289
402
|
# with the server
|
290
403
|
# @param backup_rule Hash of backup information. If not given, no
|
291
404
|
# backups will be automatically created.
|
405
|
+
#
|
406
|
+
# Returns HTTParty response object.
|
292
407
|
def create_storage(size:, tier: "maxiops", title:, zone: "fi-hel1",
|
293
408
|
backup_rule: nil)
|
294
409
|
data = {
|
@@ -309,7 +424,7 @@ class UpcloudApi
|
|
309
424
|
|
310
425
|
# Modifies existing storage.
|
311
426
|
#
|
312
|
-
# Calls PUT /1.2/storage
|
427
|
+
# Calls PUT /1.2/storage/_uuid_.
|
313
428
|
#
|
314
429
|
# backup_rule should be hash with following attributes:
|
315
430
|
# - interval # allowed values: daily / mon / tue / wed / thu / fri / sat / sun
|
@@ -321,6 +436,8 @@ class UpcloudApi
|
|
321
436
|
# @param title Name of the disk
|
322
437
|
# @param backup_rule Hash of backup information. If not given, no
|
323
438
|
# backups will be automatically created.
|
439
|
+
#
|
440
|
+
# Returns HTTParty response object.
|
324
441
|
def modify_storage(storage_uuid, size:, title:, backup_rule: nil)
|
325
442
|
data = {
|
326
443
|
"storage" => {
|
@@ -341,7 +458,7 @@ class UpcloudApi
|
|
341
458
|
#
|
342
459
|
# This operation is asynchronous.
|
343
460
|
#
|
344
|
-
# Calls POST /1.2/storage
|
461
|
+
# Calls POST /1.2/storage/_uuid_/clone.
|
345
462
|
#
|
346
463
|
# @param storage_uuid UUID of the storage that will be modified
|
347
464
|
# @param tier Type of the disk. maxiops is SSD powered disk, other
|
@@ -349,6 +466,8 @@ class UpcloudApi
|
|
349
466
|
# @param title Name of the disk
|
350
467
|
# @param zone Where the disk will reside. Needs to be within same zone
|
351
468
|
# with the server
|
469
|
+
#
|
470
|
+
# Returns HTTParty response object.
|
352
471
|
def clone_storage(storage_uuid, zone: "fi-hel1", title:, tier: "maxiops")
|
353
472
|
data = {
|
354
473
|
"storage" => {
|
@@ -369,10 +488,12 @@ class UpcloudApi
|
|
369
488
|
#
|
370
489
|
# This operation is asynchronous.
|
371
490
|
#
|
372
|
-
# Calls POST /1.2/storage
|
491
|
+
# Calls POST /1.2/storage/_uuid_/templatize.
|
373
492
|
#
|
374
493
|
# @param storage_uuid UUID of the storage that will be templatized
|
375
494
|
# @param title Name of the template storage
|
495
|
+
#
|
496
|
+
# Returns HTTParty response object.
|
376
497
|
def templatize_storage(storage_uuid, title:)
|
377
498
|
data = {
|
378
499
|
"storage" => {
|
@@ -390,7 +511,7 @@ class UpcloudApi
|
|
390
511
|
# Attaches a storage to a server. Server must be stopped before the
|
391
512
|
# storage can be attached.
|
392
513
|
#
|
393
|
-
# Calls POST /1.2/server
|
514
|
+
# Calls POST /1.2/server/_server_uuid_/storage/attach.
|
394
515
|
#
|
395
516
|
# Valid values for address are: ide[01]:[01] / scsi:0:[0-7] / virtio:[0-7]
|
396
517
|
#
|
@@ -399,6 +520,8 @@ class UpcloudApi
|
|
399
520
|
# @param type Type of the disk. Valid values are "disk" and "cdrom".
|
400
521
|
# @param address Address where the disk will be attached to. Defaults
|
401
522
|
# to next available address.
|
523
|
+
#
|
524
|
+
# Returns HTTParty response object.
|
402
525
|
def attach_storage(server_uuid, storage_uuid:, type: "disk", address: nil)
|
403
526
|
data = {
|
404
527
|
"storage_device" => {
|
@@ -418,10 +541,12 @@ class UpcloudApi
|
|
418
541
|
# Detaches storage from a server. Server must be stopped before the
|
419
542
|
# storage can be detached.
|
420
543
|
#
|
421
|
-
# Calls POST /1.2/server
|
544
|
+
# Calls POST /1.2/server/_server_uuid_/storage/detach.
|
422
545
|
#
|
423
546
|
# @param server_uuid UUID of the server from which to detach the storage.
|
424
547
|
# @param address Address where the storage that will be detached resides.
|
548
|
+
#
|
549
|
+
# Returns HTTParty response object.
|
425
550
|
def detach_storage(server_uuid, address:)
|
426
551
|
data = {
|
427
552
|
"storage_device" => {
|
@@ -440,10 +565,12 @@ class UpcloudApi
|
|
440
565
|
#
|
441
566
|
# This operation is asynchronous.
|
442
567
|
#
|
443
|
-
# Calls /1.2/storage
|
568
|
+
# Calls /1.2/storage/_uuid_/backup
|
444
569
|
#
|
445
570
|
# @param storage_uuid UUID of the storage to be backed-up
|
446
571
|
# @param title Name of the backup
|
572
|
+
#
|
573
|
+
# Returns HTTParty response object.
|
447
574
|
def create_backup(storage_uuid, title:)
|
448
575
|
data = {
|
449
576
|
"storage" => {
|
@@ -462,31 +589,37 @@ class UpcloudApi
|
|
462
589
|
#
|
463
590
|
# If the storage is attached to server, the server must first be stopped.
|
464
591
|
#
|
465
|
-
# Calls /1.2/storage
|
592
|
+
# Calls /1.2/storage/_backup_uuid_/restore.
|
466
593
|
#
|
467
594
|
# @param backup_uuid UUID of the backup
|
595
|
+
#
|
596
|
+
# Returns HTTParty response object.
|
468
597
|
def restore_backup(backup_uuid)
|
469
598
|
response = post "storage/#{backup_uuid}/restore"
|
470
599
|
|
471
600
|
response
|
472
601
|
end
|
473
602
|
|
474
|
-
# Adds storage to favorites
|
603
|
+
# Adds storage to favorites.
|
475
604
|
#
|
476
|
-
# Calls POST /1.2/storage
|
605
|
+
# Calls POST /1.2/storage/_storage_uuid_/favorite.
|
477
606
|
#
|
478
607
|
# @param storage_uuid UUID of the storage to be included in favorites
|
608
|
+
#
|
609
|
+
# Returns HTTParty response object.
|
479
610
|
def favorite_storage(storage_uuid)
|
480
611
|
response = post "storage/#{storage_uuid}/favorite"
|
481
612
|
|
482
613
|
response
|
483
614
|
end
|
484
615
|
|
485
|
-
# Removes storage to favorites
|
616
|
+
# Removes storage to favorites.
|
486
617
|
#
|
487
|
-
# Calls POST /1.2/storage
|
618
|
+
# Calls POST /1.2/storage/_storage_uuid_/favorite.
|
488
619
|
#
|
489
620
|
# @param storage_uuid UUID of the storage to be removed from favorites
|
621
|
+
#
|
622
|
+
# Returns HTTParty response object.
|
490
623
|
def defavorite_storage(storage_uuid)
|
491
624
|
response = delete "storage/#{storage_uuid}/favorite"
|
492
625
|
|
@@ -500,12 +633,34 @@ class UpcloudApi
|
|
500
633
|
# Backups will not be deleted.
|
501
634
|
#
|
502
635
|
# @param storage_uuid UUID of the storage that will be deleted.
|
636
|
+
#
|
637
|
+
# Returns HTTParty response object.
|
503
638
|
def delete_storage(storage_uuid)
|
504
639
|
response = delete "storage/#{storage_uuid}"
|
505
640
|
|
506
641
|
response
|
507
642
|
end
|
508
643
|
|
644
|
+
# Lists available predefined plans that can be used to create a server.
|
645
|
+
#
|
646
|
+
# Returns Array of plan hashes:
|
647
|
+
# [
|
648
|
+
# {
|
649
|
+
# "core_number" : 1,
|
650
|
+
# "memory_amount" : 1024,
|
651
|
+
# "name" : "1xCPU-1GB",
|
652
|
+
# "public_traffic_out" : 2048,
|
653
|
+
# "storage_size" : 30,
|
654
|
+
# "storage_tier" : "maxiops"
|
655
|
+
# }
|
656
|
+
# ]
|
657
|
+
def plans
|
658
|
+
response = get "plan"
|
659
|
+
|
660
|
+
data = JSON.parse response.body
|
661
|
+
data["plans"]["plan"]
|
662
|
+
end
|
663
|
+
|
509
664
|
private
|
510
665
|
|
511
666
|
def get(action)
|
data/lib/upcloud_api/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: upcloud_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samu Voutilainen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2017-01-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
@@ -54,9 +54,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
54
54
|
version: '0'
|
55
55
|
requirements: []
|
56
56
|
rubyforge_project:
|
57
|
-
rubygems_version: 2.
|
57
|
+
rubygems_version: 2.5.1
|
58
58
|
signing_key:
|
59
59
|
specification_version: 4
|
60
60
|
summary: Implementation of Upcloud API for VPS management
|
61
61
|
test_files: []
|
62
|
-
has_rdoc:
|