aerosol 1.9.0 → 1.9.1
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/lib/aerosol/auto_scaling.rb +13 -3
- data/lib/aerosol/instance.rb +7 -0
- data/lib/aerosol/launch_template.rb +1 -1
- data/lib/aerosol/runner.rb +7 -4
- data/lib/aerosol/version.rb +1 -1
- data/spec/aerosol/runner_spec.rb +51 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9494ad62c369aa73f67af3dca0dcc28d8dd29ef820e5bd75c05e30b4203bd950
|
4
|
+
data.tar.gz: a7be58f47b1d874751346371cc3e448bcea64f5fce4846fc2b2c4875788db5ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 805b520c8b7e883e58113b864732bbd841f01d56d3d1703da8e79982d940d590a47d0f2ed5458efa523bbb03c95d81a82eee5b031d81f946f92d7ff58b1f6024
|
7
|
+
data.tar.gz: 8b0390907ccbefef4e58d333f2e92da0a5489304380776fa00836fa9d578200c1623a489985aa1bff66e48e22cea84cdbcec2915ad984b1d364e0fcf31955b9d
|
data/lib/aerosol/auto_scaling.rb
CHANGED
@@ -41,7 +41,7 @@ class Aerosol::AutoScaling
|
|
41
41
|
def create!
|
42
42
|
ensure_present! :max_size, :min_size
|
43
43
|
raise 'availability_zones or vpc_zone_identifier must be set' if [availability_zones, vpc_zone_identifier].none?
|
44
|
-
raise 'launch_configuration or launch_template must be set'
|
44
|
+
raise 'launch_configuration or launch_template must be set' unless launch_details
|
45
45
|
|
46
46
|
info "creating auto scaling group"
|
47
47
|
launch_details = create_launch_details
|
@@ -70,9 +70,9 @@ class Aerosol::AutoScaling
|
|
70
70
|
conn.delete_auto_scaling_group(auto_scaling_group_name: auto_scaling_group_name, force_delete: true)
|
71
71
|
begin
|
72
72
|
(0..2).each { break if deleting?; sleep 1 }
|
73
|
-
|
73
|
+
launch_details.destroy
|
74
74
|
rescue => ex
|
75
|
-
info "Launch
|
75
|
+
info "Launch Details: #{launch_details} for #{auto_scaling_group_name} were not deleted."
|
76
76
|
info ex.message
|
77
77
|
end
|
78
78
|
end
|
@@ -91,6 +91,10 @@ class Aerosol::AutoScaling
|
|
91
91
|
.instances.map { |instance| Aerosol::Instance.from_hash(instance) }
|
92
92
|
end
|
93
93
|
|
94
|
+
def launch_details
|
95
|
+
launch_configuration || launch_template
|
96
|
+
end
|
97
|
+
|
94
98
|
def tag(val)
|
95
99
|
tags.merge!(val)
|
96
100
|
end
|
@@ -152,6 +156,12 @@ class Aerosol::AutoScaling
|
|
152
156
|
}}
|
153
157
|
end
|
154
158
|
|
159
|
+
def self.from_hash(hash)
|
160
|
+
instance = super(hash)
|
161
|
+
instance['launch_template'] = (hash[:launch_template][:launch_template_name]) if hash[:launch_template]
|
162
|
+
instance
|
163
|
+
end
|
164
|
+
|
155
165
|
private
|
156
166
|
def conn
|
157
167
|
Aerosol::AWS.auto_scaling
|
data/lib/aerosol/instance.rb
CHANGED
@@ -5,6 +5,7 @@ class Aerosol::Instance
|
|
5
5
|
|
6
6
|
aws_attribute :availability_zone, :health_status, :instance_id, :lifecycle_state
|
7
7
|
aws_class_attribute :launch_configuration, Aerosol::LaunchConfiguration
|
8
|
+
aws_class_attribute :launch_template, Aerosol::LaunchTemplate
|
8
9
|
primary_key :instance_id
|
9
10
|
|
10
11
|
def live?
|
@@ -58,6 +59,12 @@ class Aerosol::Instance
|
|
58
59
|
instances
|
59
60
|
end
|
60
61
|
|
62
|
+
def self.from_hash(hash)
|
63
|
+
instance = super(hash)
|
64
|
+
instance['launch_template'] = (hash[:launch_template][:launch_template_name]) if hash[:launch_template]
|
65
|
+
instance
|
66
|
+
end
|
67
|
+
|
61
68
|
private
|
62
69
|
def describe!
|
63
70
|
ensure_present! :instance_id
|
@@ -60,7 +60,7 @@ class Aerosol::LaunchTemplate
|
|
60
60
|
def all_instances
|
61
61
|
Aerosol::Instance.all.select { |instance|
|
62
62
|
!instance.launch_template.nil? &&
|
63
|
-
(instance.launch_template
|
63
|
+
(instance.launch_template == launch_template_name)
|
64
64
|
}.each(&:description)
|
65
65
|
end
|
66
66
|
|
data/lib/aerosol/runner.rb
CHANGED
@@ -229,7 +229,7 @@ class Aerosol::Runner
|
|
229
229
|
|
230
230
|
def old_instances
|
231
231
|
require_deploy!
|
232
|
-
old_auto_scaling_groups.map(&:
|
232
|
+
old_auto_scaling_groups.map(&:launch_details).compact.map(&:all_instances).flatten.compact
|
233
233
|
end
|
234
234
|
|
235
235
|
def old_auto_scaling_groups
|
@@ -243,6 +243,7 @@ class Aerosol::Runner
|
|
243
243
|
def select_auto_scaling_groups(&block)
|
244
244
|
require_deploy!
|
245
245
|
Aerosol::LaunchConfiguration.all # load all of the launch configurations first
|
246
|
+
Aerosol::LaunchTemplate.all
|
246
247
|
Aerosol::AutoScaling.all.select { |asg|
|
247
248
|
(asg.tags['Deploy'].to_s == auto_scaling.tags['Deploy']) &&
|
248
249
|
(block.nil? ? true : block.call(asg))
|
@@ -251,11 +252,13 @@ class Aerosol::Runner
|
|
251
252
|
|
252
253
|
def new_instances
|
253
254
|
require_deploy!
|
254
|
-
|
255
|
+
|
256
|
+
while launch_details.all_instances.length < auto_scaling.min_size
|
255
257
|
info "Waiting for instances to come up"
|
256
258
|
sleep 10
|
257
259
|
end
|
258
|
-
|
260
|
+
|
261
|
+
launch_details.all_instances
|
259
262
|
end
|
260
263
|
|
261
264
|
def with_deploy(name)
|
@@ -280,7 +283,7 @@ class Aerosol::Runner
|
|
280
283
|
:live_check, :db_config_path, :instance_live_grace_period,
|
281
284
|
:app_port, :continue_if_stop_app_fails, :stop_app_retries,
|
282
285
|
:is_alive?, :log_files, :tail_logs, :to => :deploy
|
283
|
-
delegate :
|
286
|
+
delegate :launch_details, :to => :auto_scaling
|
284
287
|
|
285
288
|
private
|
286
289
|
|
data/lib/aerosol/version.rb
CHANGED
data/spec/aerosol/runner_spec.rb
CHANGED
@@ -253,6 +253,57 @@ describe Aerosol::Runner do
|
|
253
253
|
end
|
254
254
|
|
255
255
|
describe '#new_instances' do
|
256
|
+
context 'With a launch template' do
|
257
|
+
let!(:lt) do
|
258
|
+
Aerosol::LaunchTemplate.new! do
|
259
|
+
name :lt
|
260
|
+
image_id 'fake-ami-how-scandalous'
|
261
|
+
instance_type 'm1.large'
|
262
|
+
end
|
263
|
+
end
|
264
|
+
let!(:asg_lt) do
|
265
|
+
Aerosol::AutoScaling.new! do
|
266
|
+
name :asg_lt
|
267
|
+
availability_zones 'us-east-1'
|
268
|
+
min_size 0
|
269
|
+
max_size 3
|
270
|
+
launch_template :lt
|
271
|
+
stub(:sleep)
|
272
|
+
end
|
273
|
+
end
|
274
|
+
let!(:instance1) do
|
275
|
+
Aerosol::Instance.from_hash(
|
276
|
+
{
|
277
|
+
instance_id: 'z0',
|
278
|
+
launch_template: { launch_template_name: lt.launch_template_name }
|
279
|
+
}
|
280
|
+
)
|
281
|
+
end
|
282
|
+
let!(:instance2) do
|
283
|
+
double(
|
284
|
+
:launch_template => double(:launch_template_name => 'lc7-8891022'),
|
285
|
+
:launch_configuration => nil
|
286
|
+
)
|
287
|
+
end
|
288
|
+
let!(:instance3) do
|
289
|
+
double(
|
290
|
+
:launch_template => nil,
|
291
|
+
:launch_configuration => double(:launch_configuration_name => 'lc0-8891022')
|
292
|
+
)
|
293
|
+
end
|
294
|
+
|
295
|
+
before do
|
296
|
+
Aerosol::Instance.stub(:all).and_return([instance1, instance2, instance3])
|
297
|
+
end
|
298
|
+
|
299
|
+
it 'returns each instance that is a member of the current launch template' do
|
300
|
+
deploy = Aerosol::Deploy.new!(name: :lt_deploy, auto_scaling: :asg_lt)
|
301
|
+
subject.with_deploy(:lt_deploy) do
|
302
|
+
subject.new_instances.should == [instance1]
|
303
|
+
end
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
256
307
|
let!(:lc7) do
|
257
308
|
Aerosol::LaunchConfiguration.new! do
|
258
309
|
name :lc7
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aerosol
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.9.
|
4
|
+
version: 1.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Swipely, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|