red_drop 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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