race 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,445 @@
1
+ module Race::Run
2
+ class Droplets < Base
3
+ description 'Show Droplets'
4
+ syntax 'race droplets'
5
+ def run
6
+ result = barge.droplet.all
7
+ if !result.success?
8
+ puts 'Error: Please check your information'.red
9
+ else
10
+ puts 'Your Droplets'.yellow
11
+ droplets = []
12
+
13
+ droplets << [
14
+ 'ID',
15
+ 'Name',
16
+ 'IP Address',
17
+ 'Status',
18
+ 'Created At'
19
+ ]
20
+
21
+ result.droplets.each do |droplet|
22
+ droplets << [
23
+ droplet.id,
24
+ droplet.name.to_s.red,
25
+ droplet.networks.v4[0].ip_address.to_s.red,
26
+ droplet.status == 'active' ? 'Active'.green : 'Deactive'.red,
27
+ droplet.created_at
28
+ ]
29
+ end
30
+ table = Terminal::Table.new rows: droplets
31
+ puts table
32
+ end
33
+ end
34
+
35
+ description 'Create new droplet'
36
+ syntax 'race droplets new [DROPLET_NAME] [SIZE_ID] [IMAGE_ID] [REGION_ID]'
37
+ def new(*args)
38
+ name = args[0]
39
+ size = args[1]
40
+ image_id = args[2]
41
+ region_id = args[3]
42
+ if name.nil? || size.nil? || image_id.nil? || region_id.nil?
43
+ puts 'Argument Error'.red
44
+ puts 'Usage'.yellow
45
+ puts '$ race droplets new [DROPLET_NAME] [SIZE_ID] [IMAGE_ID] [REGION_ID]'.yellow
46
+ else
47
+ result = barge.droplet.create(name: name, region: region_id, size: size, image: image_id)
48
+ if !result.success?
49
+ puts "#{result.message}".red
50
+ else
51
+ puts 'Droplet created'.green
52
+ end
53
+ end
54
+ end
55
+
56
+ description 'Destroy droplet'
57
+ syntax 'race droplets destroy [DROPLET_ID]'
58
+ def destroy(*args)
59
+ id = args[0]
60
+ if id.nil?
61
+ puts 'Argument Error'.red
62
+ puts 'Usage'.yellow
63
+ puts '$ race droplets destroy [DROPLET_ID]'.yellow
64
+ else
65
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
66
+ result = barge.droplet.destroy(id)
67
+ if !result.success?
68
+ puts "#{result.message}".red
69
+ else
70
+ puts 'Droplet destroyed'.green
71
+ end
72
+ end
73
+ end
74
+
75
+ description 'Reboot droplet'
76
+ syntax 'race droplets reboot [DROPLET_ID]'
77
+ def reboot(*args)
78
+ id = args[0]
79
+ if id.nil?
80
+ puts 'Argument Error'.red
81
+ puts 'Usage'.yellow
82
+ puts '$ race droplets reboot [DROPLET_ID]'.yellow
83
+ else
84
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
85
+ result = barge.droplet.reboot(id)
86
+ if !result.success?
87
+ puts "#{result.message}".red
88
+ else
89
+ puts 'Droplet rebooted'.green
90
+ end
91
+ end
92
+ end
93
+
94
+ description 'This method allows you to power cycle a droplet. This will turn off the droplet and then turn it back on.'
95
+ syntax 'race droplets cycle [DROPLET_ID]'
96
+ def cycle(*args)
97
+ id = args[0]
98
+ if id.nil?
99
+ puts 'Argument Error'.red
100
+ puts 'Usage'.yellow
101
+ puts '$ race droplets cycle [DROPLET_ID]'.yellow
102
+ else
103
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
104
+ result = barge.droplet.power_cycle(id)
105
+ if !result.success?
106
+ puts "#{result.message}".red
107
+ else
108
+ puts 'Power cycle has been successful'.green
109
+ end
110
+ end
111
+ end
112
+
113
+ description 'This method allows you to shutdown a running droplet. The droplet will remain in your account.'
114
+ syntax 'race droplets down [DROPLET_ID]'
115
+ def down(*args)
116
+ id = args[0]
117
+ if id.nil?
118
+ puts 'Argument Error'.red
119
+ puts 'Usage'.yellow
120
+ puts '$ race droplets down [DROPLET_ID]'.yellow
121
+ else
122
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
123
+ result = barge.droplet.shutdown(id)
124
+ if !result.success?
125
+ puts "#{result.message}".red
126
+ else
127
+ puts 'Shut down has been successful'.green
128
+ end
129
+ end
130
+ end
131
+
132
+ description 'This method allows you to poweroff a running droplet. The droplet will remain in your account.'
133
+ syntax 'race droplets off [DROPLET_ID]'
134
+ def off(*args)
135
+ id = args[0]
136
+ if id.nil?
137
+ puts 'Argument Error'.red
138
+ puts 'Usage'.yellow
139
+ puts '$ race droplets off [DROPLET_ID]'.yellow
140
+ else
141
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
142
+ result = barge.droplet.power_off(id)
143
+ if !result.success?
144
+ puts "#{result.message}".red
145
+ else
146
+ puts 'Power off has been successful'.green
147
+ end
148
+ end
149
+ end
150
+
151
+ description 'This method allows you to poweron a powered off droplet.'
152
+ syntax 'race droplets on [DROPLET_ID]'
153
+ def on(*args)
154
+ id = args[0]
155
+ if id.nil?
156
+ puts 'Argument Error'.red
157
+ puts 'Usage'.yellow
158
+ puts '$ race droplets on [DROPLET_ID]'.yellow
159
+ else
160
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
161
+ result = barge.droplet.power_on(id)
162
+ if !result.success?
163
+ puts "#{result.message}".red
164
+ else
165
+ puts 'Power on has been successful'.green
166
+ end
167
+ end
168
+ end
169
+
170
+ description 'This method will reset the root password for a droplet. Please be aware that this will reboot the droplet to allow resetting the password.'
171
+ syntax 'race droplets reset_password [DROPLET_ID]'
172
+ def reset_password(*args)
173
+ id = args[0]
174
+ if id.nil?
175
+ puts 'Argument Error'.red
176
+ puts 'Usage'.yellow
177
+ puts '$ race droplets reset_password [DROPLET_ID]'.yellow
178
+ else
179
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
180
+ result = barge.droplet.password_reset(id)
181
+ if !result.success?
182
+ puts "#{result.message}".red
183
+ else
184
+ puts 'Password restored. Please check your email'.green
185
+ end
186
+ end
187
+ end
188
+
189
+ description 'This method allows you to resize a specific droplet to a different size. This will affect the number of processors and memory allocated to the droplet.'
190
+ syntax 'race droplets resize [DROPLET_ID] [SIZE_ID]'
191
+ def resize(*args)
192
+ id = args[0]
193
+ size_id = args[1]
194
+ if id.nil? || size_id.nil?
195
+ puts 'Argument Error'.red
196
+ puts 'Usage'.yellow
197
+ puts '$ race droplets resize [DROPLET_ID] [SIZE_ID]'.yellow
198
+ else
199
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
200
+ fail ArgumentError, "Argument Error - #{id}" unless size_id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
201
+ result = barge.droplet.resize(id, size: size_id)
202
+ if !result.success?
203
+ puts "#{result.message}".red
204
+ else
205
+ puts 'Droplet resized'.green
206
+ end
207
+ end
208
+ end
209
+
210
+ description 'This method allows you to take a snapshot of the droplet once it has been powered off, which can later be restored or used to create a new droplet from the same image. Please be aware this may cause a reboot.'
211
+ syntax 'race droplets create-snaphot [DROPLET_ID] [SNAPSHOT_NAME]'
212
+ def create_snapshot(*args)
213
+ id = args[0]
214
+ name = args[1]
215
+ if id.nil? || name.nil?
216
+ puts 'Argument Error'.red
217
+ puts 'Usage'.yellow
218
+ puts '$ race droplets snaphot [DROPLET_ID] [SNAPSHOT_NAME]'.yellow
219
+ else
220
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
221
+ result = barge.droplet.snapshot(id, name: name)
222
+ if !result.success?
223
+ puts "#{result.message}".red
224
+ else
225
+ puts 'Snapshot generated.'.green
226
+ end
227
+ end
228
+ end
229
+
230
+ description 'Show droplet snapshots'
231
+ syntax 'race droplets snaphots [DROPLET_ID]'
232
+ def snapshots(*args)
233
+ id = args[0]
234
+ if id.nil?
235
+ puts 'Argument Error'.red
236
+ puts 'Usage'.yellow
237
+ puts '$ race droplets snaphots [DROPLET_ID] '.yellow
238
+ else
239
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
240
+ result = barge.droplet.snapshots(id)
241
+ if !result.success?
242
+ puts "#{result.message}".red
243
+ else
244
+ puts 'Your Droplets'.yellow
245
+ snapshots = []
246
+ snapshots << [
247
+ 'Name',
248
+ 'Distribution',
249
+ 'Public',
250
+ 'Created At'
251
+ ]
252
+ result.snapshots.each do |snapshot|
253
+ snapshots << [
254
+ snapshot.name.to_s.red,
255
+ snapshot.distribution.to_s.red,
256
+ snapshot.status.to_s == 'active' ? 'Active'.green : 'Deactive'.red,
257
+ snapshot.created_at
258
+ ]
259
+ end
260
+ table = Terminal::Table.new rows: snapshots
261
+ puts table
262
+ end
263
+
264
+ end
265
+ end
266
+
267
+ description 'This method allows you to restore a droplet with a previous image or snapshot. This will be a mirror copy of the image or snapshot to your droplet. Be sure you have backed up any necessary information prior to restore.'
268
+ syntax 'race droplets restore [DROPLET_ID] [IMAGE_ID]'
269
+ def restore(*args)
270
+ id = args[0]
271
+ image_id = args[1]
272
+ if id.nil? || image_id.nil?
273
+ puts 'Argument Error'.red
274
+ puts 'Usage'.yellow
275
+ puts '$ race droplets restore [DROPLET_ID] [IMAGE_ID]'.yellow
276
+ else
277
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
278
+ fail ArgumentError, "Argument Error - #{image_id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
279
+ result = barge.droplet.restore(id, image: image_id)
280
+ if !result.success?
281
+ puts "#{result.message}".red
282
+ else
283
+ puts 'Droplets restored.'.green
284
+ end
285
+ end
286
+ end
287
+
288
+ description 'This method allows you to reinstall a droplet with a default image. This is useful if you want to start again but retain the same IP address for your droplet.'
289
+ syntax 'race droplets rebuild [DROPLET_ID] [IMAGE_ID]'
290
+ def rebuild(*args)
291
+ id = args[0]
292
+ image_id = args[1]
293
+ if id.nil? || image_id.nil?
294
+ puts 'Argument Error'.red
295
+ puts 'Usage'.yellow
296
+ puts '$ race droplets rebuild [DROPLET_ID] [IMAGE_ID]'.yellow
297
+ else
298
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
299
+ fail ArgumentError, "Argument Error - #{image_id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
300
+ result = barge.droplet.rebuild(id, image: image_id)
301
+ if !result.success?
302
+ puts "#{result.message}".red
303
+ else
304
+ puts 'Droplets rebuilded.'.green
305
+ end
306
+ end
307
+ end
308
+
309
+ description 'This method renames the droplet to the specified name.'
310
+ syntax 'race droplets rename [DROPLET_ID] [NEW_NAME]'
311
+ def rename(*args)
312
+ id = args[0]
313
+ name = args[1]
314
+ if id.nil? || name.nil?
315
+ puts 'Argument Error'.red
316
+ puts 'Usage'.yellow
317
+ puts '$ race droplets rename [DROPLET_ID] [NEW_NAME]'.yellow
318
+ else
319
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
320
+ result = barge.droplet.rename(id, name: name)
321
+ if !result.success?
322
+ puts "#{result.message}".red
323
+ else
324
+ puts 'Droplets renamed.'.green
325
+ end
326
+ end
327
+ end
328
+
329
+ description 'Enable IPv6 for a droplet'
330
+ syntax 'race droplets enable-ipv6 [DROPLET_ID]'
331
+ def enable_ipv6(*args)
332
+ id = args[0]
333
+ if id.nil?
334
+ puts 'Argument Error'.red
335
+ puts 'Usage'.yellow
336
+ puts '$ race droplets enable-ipv6 [DROPLET_ID]'
337
+ else
338
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
339
+ result = barge.droplet.enable_ipv6(id)
340
+ if !result.success?
341
+ puts "#{result.message}".red
342
+ else
343
+ puts 'IPv6 Enabled'.green
344
+ end
345
+ end
346
+ end
347
+
348
+ description 'Show droplet kernels'
349
+ syntax 'race droplets kernels [DROPLET_ID]'
350
+ def kernels(*args)
351
+ id = args[0]
352
+ if id.nil?
353
+ puts 'Argument Error'.red
354
+ puts 'Usage'.yellow
355
+ puts '$ race droplets kernels [DROPLET_ID]'
356
+ else
357
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
358
+ result = barge.droplet.kernels(id)
359
+ if !result.success?
360
+ puts "#{result.message}".red
361
+ else
362
+ puts 'Kernels'.yellow
363
+ kernels = []
364
+
365
+ kernels << %w(ID Name Version)
366
+
367
+ result.kernels.each do |kernel|
368
+ kernels << [
369
+ kernel.id,
370
+ kernel.name.to_s.red,
371
+ kernel.version.to_s
372
+ ]
373
+ end
374
+ table = Terminal::Table.new rows: kernels
375
+ puts table
376
+ end
377
+ end
378
+ end
379
+
380
+ description "Change a droplet's kernel"
381
+ syntax 'race droplets change-kernel [DROPLET_ID] [KERNEL_ID]'
382
+ def change_kernel(*args)
383
+ id = args[0]
384
+ kernel_id = args[1]
385
+ if id.nil? || kernel_id.nil?
386
+ puts 'Argument Error'.red
387
+ puts 'Usage'.yellow
388
+ puts '$ race droplets change-kernel [DROPLET_ID] [KERNEL_ID]'
389
+ else
390
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
391
+ fail ArgumentError, "Argument Error - #{kernel_id}" unless kernel_id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
392
+ result = barge.droplet.change_kernel(id, kernel: kernel_id)
393
+ if !result.success?
394
+ puts "#{result.message}".red
395
+ else
396
+ puts 'Droplet kernel changed'.green
397
+ end
398
+ end
399
+ end
400
+
401
+ description 'Disable backups for a droplet'
402
+ syntax 'race droplets disable-backup [DROPLET_ID]'
403
+ def disable_backup(*args)
404
+ id = args[0]
405
+ if id.nil?
406
+ puts 'Argument Error'.red
407
+ puts 'Usage'.yellow
408
+ puts '$ race droplets disable-backup [DROPLET_ID]'
409
+ else
410
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
411
+ result = barge.droplet.disable_backups(id)
412
+ if !result.success?
413
+ puts "#{result.message}".red
414
+ else
415
+ puts 'Backup disabled'.green
416
+ end
417
+ end
418
+ end
419
+
420
+ description 'Enable private networking for a droplet'
421
+ syntax 'race droplets enable-private-network [DROPLET_ID]'
422
+ def enable_private_network(*args)
423
+ id = args[0]
424
+ if id.nil?
425
+ puts 'Argument Error'.red
426
+ puts 'Usage'.yellow
427
+ puts '$ race droplets enable-private-network [DROPLET_ID]'
428
+ else
429
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
430
+ result = barge.droplet.enable_private_networking(id)
431
+ if !result.success?
432
+ puts "#{result.message}".red
433
+ else
434
+ puts 'Backup disabled'.green
435
+ end
436
+ end
437
+ end
438
+
439
+ private
440
+
441
+ def config(value)
442
+ @config ||= value
443
+ end
444
+ end
445
+ end
@@ -0,0 +1,121 @@
1
+ module Race::Run
2
+ class Images < Base
3
+ description 'This method returns all the available images that can be accessed by your client ID. You will have access to all public images by default, and any snapshots or backups that you have created in your own account.'
4
+ syntax 'race images'
5
+ def run(*_args)
6
+ result = barge.image.all
7
+ if !result.success?
8
+ puts 'Error: Please check your information'.red
9
+ else
10
+ puts 'Images'.yellow
11
+ rows = []
12
+ rows << %w(ID Name Distribution Public Regions)
13
+ result.images.each do |image|
14
+ rows << [
15
+ image.id,
16
+ image.name.to_s.red,
17
+ image.distribution.to_s.red,
18
+ image.public.to_s == 'true' ? 'True'.green : 'False'.red,
19
+ image.regions.join(',').yellow
20
+ ]
21
+ end
22
+ table = Terminal::Table.new rows: rows
23
+ puts table
24
+ end
25
+ end
26
+
27
+ description 'This method displays the attributes of an image.'
28
+ syntax 'race images show [IMAGE_ID]'
29
+ def show(*args)
30
+ id = args[0]
31
+ if id.nil?
32
+ puts 'Argument Error'.red
33
+ puts 'Usage'.yellow
34
+ puts '$ race images show [IMAGE_ID]'.yellow
35
+ else
36
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
37
+ result = barge.image.show(id)
38
+ if !result.success?
39
+ puts "#{result.message}".red
40
+ else
41
+ puts 'Images'.yellow
42
+ rows = []
43
+ rows << %w(ID Name Distribution Public Regions)
44
+ image = result.image
45
+ rows << [
46
+ image.id,
47
+ image.name.to_s.red,
48
+ image.distribution.to_s.red,
49
+ image.public.to_s == 'true' ? 'True'.green : 'False'.red,
50
+ image.regions.join(',').yellow
51
+ ]
52
+
53
+ table = Terminal::Table.new rows: rows
54
+ puts table
55
+
56
+ end
57
+ end
58
+ end
59
+
60
+ description 'This method allows you to destroy an image. There is no way to restore a deleted image so be careful and ensure your data is properly backed up.'
61
+ syntax 'race images destroy [IMAGE_ID]'
62
+
63
+ def destroy(*args)
64
+ id = args[0]
65
+ if id.nil?
66
+ puts 'Argument Error'.red
67
+ puts 'Usage'.yellow
68
+ puts '$ race images destroy [IMAGE_ID]'.yellow
69
+ else
70
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
71
+ result = barge.image.destroy(id)
72
+ if !result.success?
73
+ puts "#{result.message}".red
74
+ else
75
+ puts 'Image destroyed'.green
76
+ end
77
+ end
78
+ end
79
+
80
+ description 'This method allows you to transfer an image to a specified region.'
81
+ syntax 'race images transfer [IMAGE_ID] [REGION_ID]'
82
+ def transfer(*args)
83
+ id = args[0]
84
+ region_id = args[1]
85
+ if id.nil? || region_id.nil?
86
+ puts 'Argument Error'.red
87
+ puts 'Usage'.yellow
88
+ puts '$ race images transfer [IMAGE_ID] [REGION_ID]'.yellow
89
+ else
90
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
91
+ fail ArgumentError, "Argument Error - #{region_id}" unless region_id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
92
+ result = barge.image.transfer(id, region: region_id)
93
+ if !result.success?
94
+ puts "#{result.message}".red
95
+ else
96
+ puts 'Image transfered'.green
97
+ end
98
+ end
99
+ end
100
+
101
+ description 'Update image'
102
+ syntax 'race images update [IMAGE_ID] [NEW_IMAGE_NAME]'
103
+ def update(*args)
104
+ id = args[0]
105
+ name = args[1]
106
+ if id.nil? || name.nil?
107
+ puts 'Argument Error'.red
108
+ puts 'Usage'.yellow
109
+ puts '$ race images transfer [IMAGE_ID] [NAME]'.yellow
110
+ else
111
+ fail ArgumentError, "Argument Error - #{id}" unless id =~ /\A[-+]?[0-9]*\.?[0-9]+\Z/
112
+ result = barge.image.update(id, name: name)
113
+ if !result.success?
114
+ puts "#{result.message}".red
115
+ else
116
+ puts 'Image updated'.green
117
+ end
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,22 @@
1
+ module Race::Run
2
+ class Info < Base
3
+ description 'Show your API information'
4
+ def show
5
+ puts "Access Tokens: #{Race::Config.get('api_key')}".yellow
6
+ end
7
+
8
+ description 'Change your API information'
9
+ def change(*_args)
10
+ config = Netrc.read("#{(ENV['HOME'] || './')}/race.netrc")
11
+ api_key = [(print 'Access Tokens: '), STDIN.gets.rstrip][1]
12
+ client_id = 'empty'
13
+ if api_key.empty?
14
+ puts 'Please fill all fields'.red
15
+ else
16
+ config['api.digitalocean.com'] = api_key, client_id
17
+ config.save
18
+ puts 'Informations is changed'.red
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,24 @@
1
+ module Race::Run
2
+ class Regions < Base
3
+ description 'This method will return all the available regions within the DigitalRaceean cloud.'
4
+ syntax 'race regions'
5
+ def run
6
+ result = barge.region.all
7
+ if !result.success?
8
+ puts 'Error: Please check your information'.red
9
+ else
10
+ puts 'Regions'.yellow
11
+ droplets = []
12
+ droplets << %w(ID Name)
13
+ result.regions.each do |region|
14
+ droplets << [
15
+ region.slug,
16
+ region.name.to_s.red
17
+ ]
18
+ end
19
+ table = Terminal::Table.new rows: droplets
20
+ puts table
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,37 @@
1
+ module Race::Run
2
+ class Sizes < Base
3
+ description 'This method returns all the available sizes that can be used to create a droplet.'
4
+ syntax 'race sizes'
5
+ def run
6
+ result = barge.size.all
7
+ if !result.success?
8
+ puts "Error: #{result['error_message']}".red
9
+ else
10
+ puts 'Sizes'.yellow
11
+ rows = []
12
+
13
+ rows << [
14
+ 'ID',
15
+ 'Memory',
16
+ 'Disk',
17
+ 'Cpu',
18
+ 'Price (Monthly)',
19
+ 'Price (Hourly)'
20
+ ]
21
+
22
+ result.sizes.each do |size|
23
+ rows << [
24
+ size.slug,
25
+ size.memory.to_s + ' MB',
26
+ size.disk.to_s + ' GB',
27
+ size.vcpus,
28
+ '$ ' + size.price_monthly.to_s,
29
+ '$ ' + size.price_hourly.to_s
30
+ ]
31
+ end
32
+ table = Terminal::Table.new rows: rows
33
+ puts table
34
+ end
35
+ end
36
+ end
37
+ end