brasa 0.4.0 → 0.4.2

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: 10c05491bcc0f0acb8baea99ebdf17b598c2d2306cddd27f37b20036649f7877
4
- data.tar.gz: 4b5ef6aacd6da982766cafc26e0fbbcfaa06748fe843a25049101c6611bb7bcb
3
+ metadata.gz: 8770bfdcdf312ee8493341a83de7356e76dfb6b6cebd4fa4d0155ae2ec8f3425
4
+ data.tar.gz: e27282ef7d4dd88a159c2463320c7f1393a2bfa9c93a07e0e234ca73b7fb8df8
5
5
  SHA512:
6
- metadata.gz: a3f40bb61b742e672444fad37d5ed851c3bef5b8b1acdffe8a06ec7aff3b21f9ba9499cda34d882416b5d0d1e8ea6455785e9c185d50b20a53315fbc2a334112
7
- data.tar.gz: 9feffff14f3712c98cdb2070791183472425b378d055b733765802762421e95349d503e68bd2f91316b05f48db320a642ba38c61ed81b6e6715a1853f91456e1
6
+ metadata.gz: fdad15d4954607bff0bb6a2737a4be3d8959e7213393cd32ec0ccfb995f0c42d8f416a6046810f9aa8d3ac88fd57dd34989e429be6856a9c5830d1b8d8466580
7
+ data.tar.gz: 6d2293ceb1e6ab6ae539e6a8f6e28b22bf82b29a64e31d383c103125e9891e7a0287bd0acabd02d2bf02c6ce5ce773c7331b1cd33ef24f6c3a2b6f935680b0bd
@@ -5,7 +5,7 @@ module Brasa
5
5
  module Commands
6
6
  class Deploy < Base
7
7
  POLL_INTERVAL = 5
8
- MAX_POLLS = 120
8
+ DEPLOY_MAX_POLLS = 360 # 30 minutes
9
9
 
10
10
  def execute(options = {})
11
11
  require_auth!
@@ -34,22 +34,47 @@ module Brasa
34
34
  private
35
35
 
36
36
  def wait_for_deploy(slug, deploy_id)
37
- MAX_POLLS.times do
37
+ started = Time.now
38
+ last_status = nil
39
+ DEPLOY_MAX_POLLS.times do |i|
38
40
  deploy = api.get("/api/v1/apps/#{slug}/deploys/#{deploy_id}")
39
41
 
40
42
  case deploy["status"]
41
43
  when "live"
42
- success("Deploy concluído com sucesso!")
44
+ elapsed = (Time.now - started).to_i
45
+ success("\nDeploy concluído com sucesso! (#{elapsed}s)")
43
46
  return
44
47
  when "failed"
45
- error("Deploy falhou.")
48
+ error("\nDeploy falhou.")
46
49
  return
47
50
  end
48
51
 
52
+ if deploy["status"] != last_status
53
+ print "\n #{status_label(deploy["status"])}" if last_status
54
+ last_status = deploy["status"]
55
+ end
49
56
  print "."
57
+ show_elapsed(started) if (i % 12).zero? && i > 0
58
+ sleep(POLL_INTERVAL)
59
+ rescue Faraday::Error, Errno::ECONNREFUSED, IO::TimeoutError
60
+ print "!"
50
61
  sleep(POLL_INTERVAL)
51
62
  end
52
- error("Timeout aguardando deploy.")
63
+ elapsed = (Time.now - started).to_i
64
+ error("\nTimeout aguardando deploy (#{elapsed}s). O processo pode ainda estar rodando — verifique com: brasa status")
65
+ end
66
+
67
+ def status_label(status)
68
+ { "queued" => "Na fila...",
69
+ "building" => "Construindo imagem...",
70
+ "deploying" => "Deployando..." }[status] || status
71
+ end
72
+
73
+ def show_elapsed(started)
74
+ elapsed = (Time.now - started).to_i
75
+ min = elapsed / 60
76
+ sec = elapsed % 60
77
+ print " (#{min}m#{sec}s)"
53
78
  end
54
79
  end
55
80
  end
@@ -5,7 +5,8 @@ module Brasa
5
5
  module Commands
6
6
  class Up < Base
7
7
  POLL_INTERVAL = 5
8
- MAX_POLLS = 120
8
+ PROVISION_MAX_POLLS = 240 # 20 minutes (cloud-init + readiness checks + managed DB)
9
+ DEPLOY_MAX_POLLS = 360 # 30 minutes (docker build + push + deploy)
9
10
 
10
11
  def execute(options = {})
11
12
  require_auth!
@@ -93,34 +94,71 @@ module Brasa
93
94
  end
94
95
 
95
96
  def wait_for_provisioning(slug)
96
- MAX_POLLS.times do
97
+ started = Time.now
98
+ last_status = nil
99
+ PROVISION_MAX_POLLS.times do |i|
97
100
  app = api.get("/api/v1/apps/#{slug}")
98
101
  return true if app["status"] == "active"
99
102
  if app["status"] == "error"
100
- error("Erro no provisionamento.")
103
+ error("\nErro no provisionamento.")
101
104
  return false
102
105
  end
106
+ if app["status"] != last_status
107
+ print "\n #{status_label(app["status"])}" if last_status
108
+ last_status = app["status"]
109
+ end
103
110
  print "."
111
+ show_elapsed(started) if (i % 12).zero? && i > 0
112
+ sleep(POLL_INTERVAL)
113
+ rescue Faraday::Error, Errno::ECONNREFUSED, IO::TimeoutError
114
+ print "!"
104
115
  sleep(POLL_INTERVAL)
105
116
  end
106
- error("Timeout aguardando provisionamento.")
117
+ elapsed = (Time.now - started).to_i
118
+ error("\nTimeout aguardando provisionamento (#{elapsed}s). O processo pode ainda estar rodando no servidor — verifique com: brasa status")
107
119
  false
108
120
  end
109
121
 
110
122
  def wait_for_deploy(slug, deploy_id)
111
- MAX_POLLS.times do
123
+ started = Time.now
124
+ last_status = nil
125
+ DEPLOY_MAX_POLLS.times do |i|
112
126
  deploy = api.get("/api/v1/apps/#{slug}/deploys/#{deploy_id}")
113
127
  return true if deploy["status"] == "live"
114
128
  if deploy["status"] == "failed"
115
- error("Deploy falhou.")
129
+ error("\nDeploy falhou.")
116
130
  return false
117
131
  end
132
+ if deploy["status"] != last_status
133
+ print "\n #{status_label(deploy["status"])}" if last_status
134
+ last_status = deploy["status"]
135
+ end
118
136
  print "."
137
+ show_elapsed(started) if (i % 12).zero? && i > 0
138
+ sleep(POLL_INTERVAL)
139
+ rescue Faraday::Error, Errno::ECONNREFUSED, IO::TimeoutError
140
+ print "!"
119
141
  sleep(POLL_INTERVAL)
120
142
  end
121
- error("Timeout aguardando deploy.")
143
+ elapsed = (Time.now - started).to_i
144
+ error("\nTimeout aguardando deploy (#{elapsed}s). O processo pode ainda estar rodando no servidor — verifique com: brasa status")
122
145
  false
123
146
  end
147
+
148
+ def status_label(status)
149
+ { "pending" => "Aguardando...",
150
+ "provisioning" => "Provisionando VM...",
151
+ "queued" => "Na fila...",
152
+ "building" => "Construindo imagem...",
153
+ "deploying" => "Deployando..." }[status] || status
154
+ end
155
+
156
+ def show_elapsed(started)
157
+ elapsed = (Time.now - started).to_i
158
+ min = elapsed / 60
159
+ sec = elapsed % 60
160
+ print " (#{min}m#{sec}s)"
161
+ end
124
162
  end
125
163
  end
126
164
  end
data/lib/brasa/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Brasa
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brasa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brasa