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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 39b5e008df5f5d43afd211101c2ac866a9446c310a2ebbbb153924c5071984e2
4
- data.tar.gz: b56a8836f6013f1c85e5d791389dd007986a7f62d4dfc98473e3402312537d2f
3
+ metadata.gz: 26e8eafa8d17697861606704de815460ab54c26ed722354cd1e11600df4df40b
4
+ data.tar.gz: ca8fe1639beb391c4e62f8881822a328d28d492c09f4e0fe632d85e542ea58ae
5
5
  SHA512:
6
- metadata.gz: 07fb962ef9b66d417b6c6467727946c559da5e3bca564368ca5173255afe41f4ce540277ab4a0f8f2b18a45c28d00ce8e268024e37c93f310ee6c96cb5892420
7
- data.tar.gz: 8575bbfb5f2e53383b1b00e0c7ea3514910bc6e59d9be538c878190f0c91ae5fd30a2c0064566e1e1212a937cee5ccd144d63b57a9282be49d3693b53354e3b7
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.4.0)
5
- droplet_kit (~> 3.18)
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
- coercible (1.0.0)
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
- @faraday = Faraday.new("https://api.digitalocean.com/v2/droplets")
12
- @res = @faraday.get do |req|
13
- req.headers["Authorization"] = "Bearer #{@secret}"
14
- end
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
- @res = @faraday.get do |req|
24
- req.headers["Authorization"] = "Bearer #{@secret}"
25
- end
24
+ @conn.headers["Authorization"] = "Bearer #{@secret}"
25
+ @res = @conn.get
26
26
  end
27
- @secret
27
+ @conn
28
28
  end
29
29
  end
@@ -7,10 +7,13 @@ class Create
7
7
  puts "loading... \n\n"
8
8
  #user_data = File.read("cloud-config.yaml")
9
9
 
10
- droplet = DropletKit::Droplet.new(name: 'RedDrop', region: 'nyc1', size: 's-1vcpu-512mb-10gb', image: 'ubuntu-22-04-x64')
11
- response = @client.droplets.create(droplet)
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: #{response.id}, is being provisioned.\n"
16
+ puts "Your droplet: #{body["droplet"]["id"]}, is being provisioned.\n"
14
17
  end
15
18
  end
16
19
 
@@ -6,7 +6,7 @@ class Delete
6
6
  def execute
7
7
  puts "loading... \n"
8
8
 
9
- droplets = @client.droplets.all.map { |droplet| droplet.to_h }
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[:id]}" }
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.droplets.delete(id: droplets[option][:id])
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
@@ -6,7 +6,7 @@ class Status
6
6
  def execute
7
7
  puts "loading... \n\n"
8
8
 
9
- droplets = @client.droplets.all.map { |droplet| droplet.to_h }
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[:networks] = droplet[:networks][:v4].find { |n| n[:type] == "public" }
17
+ droplet["networks"] = droplet["networks"]["v4"].find { |n| n["type"] == "public" }
18
18
 
19
- if droplet[:networks]
20
- droplet[:ip] = "running on #{droplet[:networks][:ip_address]}"
19
+ if droplet["networks"]
20
+ droplet["status"] = "running on #{droplet["networks"]["ip_address"]}"
21
21
  else
22
- droplet[:ip] = "ip not yet assigned, try again in a minute"
22
+ droplet["status"] = "ip not yet assigned, try again in a minute"
23
23
  end
24
24
 
25
- puts "droplet: #{droplet[:id]} #{droplet[:ip]}"
25
+ puts "droplet: #{droplet["id"]} #{droplet["status"]}"
26
26
  end
27
27
  end
28
28
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class RedDrop
4
- VERSION = "0.4.0"
4
+ VERSION = "0.5.0"
5
5
  end
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 = DropletKit::Client.new(access_token: Auth.new.token)
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 "droplet_kit", "~> 3.18"
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.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-16 00:00:00.000000000 Z
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: droplet_kit
28
+ name: faraday
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.18'
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: '3.18'
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.15
87
+ rubygems_version: 3.3.26
88
88
  signing_key:
89
89
  specification_version: 4
90
90
  summary: Simple cli for automating droplet management