red_drop 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +3 -28
- data/README.md +0 -1
- data/lib/red_drop/auth.rb +8 -8
- data/lib/red_drop/create.rb +6 -3
- data/lib/red_drop/delete.rb +6 -4
- data/lib/red_drop/status.rb +6 -6
- data/lib/red_drop/version.rb +1 -1
- data/lib/red_drop.rb +1 -2
- data/red_drop.gemspec +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26e8eafa8d17697861606704de815460ab54c26ed722354cd1e11600df4df40b
|
4
|
+
data.tar.gz: ca8fe1639beb391c4e62f8881822a328d28d492c09f4e0fe632d85e542ea58ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc86110aab1a32d3979fb43db15587eaa7d4c746c92c37e6c4864d016dfd608aa5743f51a3e70cef2a8439e1370bff8d678c9761c90e124dbd52a923f79bf04d
|
7
|
+
data.tar.gz: fb5d12dd53f3efd7a0712729a0493fc99bafc54156cccd576a3d4d9bb2ccf852086529670c104d431b1d2b31c7aa5ff9a24f09efb8c2337a50854ed6639dabb5
|
data/Gemfile.lock
CHANGED
@@ -1,37 +1,20 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
red_drop (0.
|
5
|
-
|
4
|
+
red_drop (0.5.0)
|
5
|
+
faraday (~> 2.7)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
addressable (2.8.1)
|
11
|
-
public_suffix (>= 2.0.2, < 6.0)
|
12
10
|
ansi (1.5.0)
|
13
11
|
ast (2.4.2)
|
14
|
-
axiom-types (0.1.1)
|
15
|
-
descendants_tracker (~> 0.0.4)
|
16
|
-
ice_nine (~> 0.11.0)
|
17
|
-
thread_safe (~> 0.3, >= 0.3.1)
|
18
12
|
builder (3.2.4)
|
19
|
-
|
20
|
-
descendants_tracker (~> 0.0.1)
|
21
|
-
descendants_tracker (0.0.4)
|
22
|
-
thread_safe (~> 0.3, >= 0.3.1)
|
23
|
-
droplet_kit (3.18.0)
|
24
|
-
faraday (>= 0.15)
|
25
|
-
kartograph (~> 0.2.8)
|
26
|
-
resource_kit (~> 0.1.5)
|
27
|
-
virtus (>= 1.0.3, <= 3)
|
28
|
-
faraday (2.7.1)
|
13
|
+
faraday (2.7.2)
|
29
14
|
faraday-net_http (>= 2.0, < 3.1)
|
30
15
|
ruby2_keywords (>= 0.0.4)
|
31
16
|
faraday-net_http (3.0.2)
|
32
|
-
ice_nine (0.11.2)
|
33
17
|
json (2.5.1)
|
34
|
-
kartograph (0.2.8)
|
35
18
|
minitest (5.16.3)
|
36
19
|
minitest-reporters (1.5.0)
|
37
20
|
ansi
|
@@ -41,12 +24,9 @@ GEM
|
|
41
24
|
parallel (1.22.1)
|
42
25
|
parser (3.1.3.0)
|
43
26
|
ast (~> 2.4.1)
|
44
|
-
public_suffix (5.0.0)
|
45
27
|
rainbow (3.1.1)
|
46
28
|
rake (13.0.6)
|
47
29
|
regexp_parser (2.6.1)
|
48
|
-
resource_kit (0.1.8)
|
49
|
-
addressable (>= 2.3.6, < 3.0.0)
|
50
30
|
rexml (3.2.5)
|
51
31
|
rubocop (1.39.0)
|
52
32
|
json (~> 2.3)
|
@@ -62,12 +42,7 @@ GEM
|
|
62
42
|
parser (>= 3.1.1.0)
|
63
43
|
ruby-progressbar (1.11.0)
|
64
44
|
ruby2_keywords (0.0.5)
|
65
|
-
thread_safe (0.3.6)
|
66
45
|
unicode-display_width (2.3.0)
|
67
|
-
virtus (2.0.0)
|
68
|
-
axiom-types (~> 0.1)
|
69
|
-
coercible (~> 1.0)
|
70
|
-
descendants_tracker (~> 0.0, >= 0.0.3)
|
71
46
|
|
72
47
|
PLATFORMS
|
73
48
|
x86_64-linux
|
data/README.md
CHANGED
@@ -51,7 +51,6 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/sergio
|
|
51
51
|
- Research: delete and status class to filter droplet destroy status before puts droplets
|
52
52
|
- Research: \# frozen_string_literal: true "magic comment"
|
53
53
|
- Research: File system programming in Ruby
|
54
|
-
- Research: replacing droplet_kit wrapper for vanilla Faraday http client library
|
55
54
|
- Features: cloud-init cloud-config.yaml for user_data in create class request
|
56
55
|
- Research: including created_at when puts droplets
|
57
56
|
|
data/lib/red_drop/auth.rb
CHANGED
@@ -8,10 +8,11 @@ class Auth
|
|
8
8
|
@secret = file.read
|
9
9
|
file.close
|
10
10
|
|
11
|
-
@
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
@conn = Faraday.new(
|
12
|
+
url: "https://api.digitalocean.com/v2/droplets",
|
13
|
+
headers: {"Authorization" => "Bearer #{@secret}"},
|
14
|
+
)
|
15
|
+
@res = @conn.get
|
15
16
|
end
|
16
17
|
|
17
18
|
def token
|
@@ -20,10 +21,9 @@ class Auth
|
|
20
21
|
@secret = gets.chomp
|
21
22
|
File.write("secret.txt", @secret)
|
22
23
|
|
23
|
-
@
|
24
|
-
|
25
|
-
end
|
24
|
+
@conn.headers["Authorization"] = "Bearer #{@secret}"
|
25
|
+
@res = @conn.get
|
26
26
|
end
|
27
|
-
@
|
27
|
+
@conn
|
28
28
|
end
|
29
29
|
end
|
data/lib/red_drop/create.rb
CHANGED
@@ -7,10 +7,13 @@ class Create
|
|
7
7
|
puts "loading... \n\n"
|
8
8
|
#user_data = File.read("cloud-config.yaml")
|
9
9
|
|
10
|
-
|
11
|
-
|
10
|
+
response = @client.post do |req|
|
11
|
+
req.body = {name: 'RedDrop', region: 'nyc1', size: 's-1vcpu-512mb-10gb', image: 'ubuntu-22-04-x64'}
|
12
|
+
end
|
13
|
+
|
14
|
+
body = JSON.parse(response.body)
|
12
15
|
|
13
|
-
puts "Your droplet: #{
|
16
|
+
puts "Your droplet: #{body["droplet"]["id"]}, is being provisioned.\n"
|
14
17
|
end
|
15
18
|
end
|
16
19
|
|
data/lib/red_drop/delete.rb
CHANGED
@@ -6,7 +6,7 @@ class Delete
|
|
6
6
|
def execute
|
7
7
|
puts "loading... \n"
|
8
8
|
|
9
|
-
droplets = @client.droplets
|
9
|
+
droplets = JSON.parse(@client.get.body)["droplets"]
|
10
10
|
|
11
11
|
if droplets.length == 0
|
12
12
|
puts "\nThere are no droplets in your DigitalOcean cloud.\n"
|
@@ -21,16 +21,18 @@ class Delete
|
|
21
21
|
|
22
22
|
until droplets.has_key? option
|
23
23
|
puts "\noption: droplet_id\n"
|
24
|
-
droplets.each { |key, droplet| puts "#{key}: #{droplet[
|
24
|
+
droplets.each { |key, droplet| puts "#{key}: #{droplet["id"]}" }
|
25
25
|
puts "\nPlease enter an option for a droplet to delete?\n\n"
|
26
26
|
|
27
27
|
option = gets.chomp
|
28
28
|
end
|
29
29
|
|
30
|
-
response = @client.
|
30
|
+
response = @client.delete(droplets[option]["id"].to_s)
|
31
31
|
|
32
|
-
if response
|
32
|
+
if response.success?
|
33
33
|
puts "\ndelete request processed succesfully\n\n"
|
34
|
+
else
|
35
|
+
puts response.body
|
34
36
|
end
|
35
37
|
end
|
36
38
|
end
|
data/lib/red_drop/status.rb
CHANGED
@@ -6,7 +6,7 @@ class Status
|
|
6
6
|
def execute
|
7
7
|
puts "loading... \n\n"
|
8
8
|
|
9
|
-
droplets = @client.droplets
|
9
|
+
droplets = JSON.parse(@client.get.body)["droplets"]
|
10
10
|
|
11
11
|
if droplets.length == 0
|
12
12
|
puts "There are no droplets in your DigitalOcean cloud."
|
@@ -14,15 +14,15 @@ class Status
|
|
14
14
|
end
|
15
15
|
|
16
16
|
droplets.each do |droplet|
|
17
|
-
droplet[
|
17
|
+
droplet["networks"] = droplet["networks"]["v4"].find { |n| n["type"] == "public" }
|
18
18
|
|
19
|
-
if droplet[
|
20
|
-
droplet[
|
19
|
+
if droplet["networks"]
|
20
|
+
droplet["status"] = "running on #{droplet["networks"]["ip_address"]}"
|
21
21
|
else
|
22
|
-
droplet[
|
22
|
+
droplet["status"] = "ip not yet assigned, try again in a minute"
|
23
23
|
end
|
24
24
|
|
25
|
-
puts "droplet: #{droplet[
|
25
|
+
puts "droplet: #{droplet["id"]} #{droplet["status"]}"
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
data/lib/red_drop/version.rb
CHANGED
data/lib/red_drop.rb
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
require "red_drop/auth"
|
2
|
-
require "droplet_kit"
|
3
2
|
require "red_drop/create"
|
4
3
|
require "red_drop/status"
|
5
4
|
require "red_drop/delete"
|
6
5
|
|
7
6
|
class RedDrop
|
8
7
|
def initialize
|
9
|
-
client =
|
8
|
+
client = Auth.new.token
|
10
9
|
|
11
10
|
@task_menu = {
|
12
11
|
"create" => Create.new(client),
|
data/red_drop.gemspec
CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
|
32
32
|
# Uncomment to register a new dependency of your gem
|
33
33
|
spec.add_development_dependency "minitest-reporters", "~> 1.5"
|
34
|
-
spec.add_dependency "
|
34
|
+
spec.add_dependency "faraday", "~> 2.7"
|
35
35
|
|
36
36
|
# For more information and examples about making a new gem, check out our
|
37
37
|
# guide at: https://bundler.io/guides/creating_gem.html
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: red_drop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergio Ortiz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-12-
|
11
|
+
date: 2022-12-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest-reporters
|
@@ -25,19 +25,19 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.5'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: faraday
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '2.7'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '2.7'
|
41
41
|
description: A cli wriiten in ruby for executing automated droplet tasks with sane
|
42
42
|
configurations baked in.
|
43
43
|
email:
|
@@ -84,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
84
|
- !ruby/object:Gem::Version
|
85
85
|
version: '0'
|
86
86
|
requirements: []
|
87
|
-
rubygems_version: 3.3.
|
87
|
+
rubygems_version: 3.3.26
|
88
88
|
signing_key:
|
89
89
|
specification_version: 4
|
90
90
|
summary: Simple cli for automating droplet management
|