elbas 3.0.3 → 3.0.4

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: 32639852b7a6af9bce74c3e376c271e4f7847bec72268de2d2f0d9533cea6138
4
- data.tar.gz: 5ba3d1d1d1c599ad1c0a4bcc88643db6287e5cca6dad4deb49831a7ce7a36e8e
3
+ metadata.gz: 8a9767c651ec0c1760448416fd452ca1fffb11f8506d0dae40cd736484df7caa
4
+ data.tar.gz: 5b70894f9efe95dfe0bb4744551b4830573f0eb77a33e0fef8d859153d9495c8
5
5
  SHA512:
6
- metadata.gz: f4b57b5fa841290a1356cd8faca19f9b1591aae7e91952661200605f75c323876308e42f7fa599f765dc8a2af34a6b08f7f6720e0a973de726ccbe615136bf70
7
- data.tar.gz: b6ed8c0f548a61a18dc10b1c493b7e18fa97cfa3b98d94da4b8ebfa7f0c467a95d46db7f418032a1f424b52b3a191272c522e9ae234e053760ec51cb6ab95713
6
+ metadata.gz: a86b52dc84b95896c1f6d9bea51d6dffa7c77042314544ca340c8e96c636116fc5a5623d4d9e88fa1f759a0fe8b7a040ded8887015e8f140c4aab3ba0c19b441
7
+ data.tar.gz: 83f24b0f72ecabcea6ddfadd01a6be41d4d4cfbc02ac55349ddaa3e9f665b145df6fabc0a9be9c6c39fcad70b9ed9d302bbc57a49255d8e538ebb049acd586a9
@@ -1,6 +1,4 @@
1
1
  require 'capistrano/all'
2
- require 'active_support/concern'
3
-
4
2
  require 'aws-sdk-autoscaling'
5
3
  require 'aws-sdk-ec2'
6
4
 
@@ -17,12 +17,13 @@ module Elbas
17
17
  end
18
18
 
19
19
  def launch_template
20
- raise Elbas::Errors::NoLaunchTemplate unless aws_counterpart.launch_template
20
+ lts = aws_launch_template || aws_launch_template_specification
21
+ raise Elbas::Errors::NoLaunchTemplate unless lts
21
22
 
22
23
  LaunchTemplate.new(
23
- aws_counterpart.launch_template.launch_template_id,
24
- aws_counterpart.launch_template.launch_template_name,
25
- aws_counterpart.launch_template.version,
24
+ lts.launch_template_id,
25
+ lts.launch_template_name,
26
+ lts.version
26
27
  )
27
28
  end
28
29
 
@@ -38,6 +39,14 @@ module Elbas
38
39
  .first
39
40
  end
40
41
 
42
+ def aws_launch_template
43
+ aws_counterpart.launch_template
44
+ end
45
+
46
+ def aws_launch_template_specification
47
+ aws_counterpart.mixed_instances_policy&.launch_template
48
+ &.launch_template_specification
49
+ end
41
50
  end
42
51
  end
43
- end
52
+ end
@@ -4,17 +4,35 @@ module Elbas
4
4
  module Logger
5
5
  include Capistrano::Doctor::OutputHelpers
6
6
 
7
+ PREFIX_TEXT = '[ELBAS] '.freeze
8
+
7
9
  def info(message)
8
10
  $stdout.puts [prefix, message, "\n"].join
9
11
  end
10
12
 
11
- def cyan(text)
12
- color.colorize text, :cyan
13
+ def error(message)
14
+ $stderr.puts [error_prefix, message, "\n"].join
13
15
  end
14
16
 
15
17
  private
16
18
  def prefix
17
- @prefix ||= cyan('[ELBAS] ')
19
+ @prefix ||= cyan(PREFIX_TEXT)
20
+ end
21
+
22
+ def error_prefix
23
+ @error_prefix ||= red(PREFIX_TEXT)
24
+ end
25
+
26
+ def cyan(text)
27
+ color_text text, :cyan
28
+ end
29
+
30
+ def red(text)
31
+ color_text text, :red
32
+ end
33
+
34
+ def color_text(text, coloring)
35
+ color.colorize text, coloring
18
36
  end
19
37
  end
20
38
  end
@@ -1,3 +1,3 @@
1
1
  module Elbas
2
- VERSION = '3.0.3'.freeze
2
+ VERSION = '3.0.4'.freeze
3
3
  end
@@ -48,6 +48,20 @@ describe Elbas::AWS::AutoscaleGroup do
48
48
  expect(subject.launch_template.version).to eq '$Latest'
49
49
  end
50
50
 
51
+ it 'returns a LauchTemplate object for fleet composition' do
52
+ allow(subject.aws_counterpart).to receive(:launch_template) { nil }
53
+ allow(subject.aws_counterpart).to receive_message_chain(
54
+ :mixed_instances_policy, :launch_template,
55
+ :launch_template_specification) do
56
+ double(launch_template_id: 'test-2',
57
+ launch_template_name: 'mixed_instance',
58
+ version: '$Latest')
59
+ end
60
+
61
+ expect(subject.launch_template.id).to eq 'test-2'
62
+ expect(subject.launch_template.name).to eq 'mixed_instance'
63
+ expect(subject.launch_template.version).to eq '$Latest'
64
+ end
51
65
 
52
66
  end
53
- end
67
+ end
@@ -63,4 +63,15 @@ describe '#autoscale' do
63
63
  expect(env.servers.to_a[1].properties.keys).to_not include :primary
64
64
  end
65
65
  end
66
- end
66
+
67
+ context 'no servers' do
68
+ before do
69
+ webmock :post, %r{ec2.(.*).amazonaws.com\/\z} => 'DescribeInstances_Empty.200.xml',
70
+ with: Hash[body: /Action=DescribeInstances/]
71
+ end
72
+
73
+ it 'logs as an error' do
74
+ expect { autoscale 'test-asg' }.to output.to_stderr
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,17 @@
1
+ <DescribeInstancesResponse xmlns="http://ec2.amazonaws.com/doc/2014-10-01/">
2
+ <requestId>fdcdcab1-ae5c-489e-9c33-4637c5dda355</requestId>
3
+ <reservationSet>
4
+ <item>
5
+ <reservationId>r-1a2b3c4d</reservationId>
6
+ <ownerId>123456789012</ownerId>
7
+ <groupSet>
8
+ <item>
9
+ <groupId>sg-1a2b3c4d</groupId>
10
+ <groupName>my-security-group</groupName>
11
+ </item>
12
+ </groupSet>
13
+ <instancesSet>
14
+ </instancesSet>
15
+ </item>
16
+ </reservationSet>
17
+ </DescribeInstancesResponse>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elbas
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.3
4
+ version: 3.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Logan Serman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-12 00:00:00.000000000 Z
11
+ date: 2019-05-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -184,6 +184,7 @@ files:
184
184
  - spec/support/stubs/DescribeAutoScalingGroups.200.xml
185
185
  - spec/support/stubs/DescribeImages.200.xml
186
186
  - spec/support/stubs/DescribeInstances.200.xml
187
+ - spec/support/stubs/DescribeInstances_Empty.200.xml
187
188
  - spec/support/stubs/DescribeInstances_MultipleReservations.200.xml
188
189
  - spec/support/stubs/DescribeInstances_MultipleRunning.200.xml
189
190
  - spec/support/stubs/DescribeLaunchConfigurations.200.xml
@@ -233,6 +234,7 @@ test_files:
233
234
  - spec/support/stubs/DescribeAutoScalingGroups.200.xml
234
235
  - spec/support/stubs/DescribeImages.200.xml
235
236
  - spec/support/stubs/DescribeInstances.200.xml
237
+ - spec/support/stubs/DescribeInstances_Empty.200.xml
236
238
  - spec/support/stubs/DescribeInstances_MultipleReservations.200.xml
237
239
  - spec/support/stubs/DescribeInstances_MultipleRunning.200.xml
238
240
  - spec/support/stubs/DescribeLaunchConfigurations.200.xml