MovableInkAWS 0.1.4 → 0.1.5

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: fe55480a2a2c96efcd39918d21548949818a350547c4b74620ebd279e74b955f
4
- data.tar.gz: 0567e3fd685f43f7bfbb283451662564f736dfb3417bacf8d81f6b2b9094730b
3
+ metadata.gz: 0539bfb11df57a94a89383fd54ba31df82b1fbee4980262d1ea35c023fad9664
4
+ data.tar.gz: 6684d49314bbb159b52b88d35a0783e8c917bccbd2bd273cf3fe0adf320128b6
5
5
  SHA512:
6
- metadata.gz: 7a8c162aa5efdc6e1799126527cf7e65192a369defec263849f48c9a4c0dbf1529a737b2190370fdb1dfc10a0260d7ebd9e7a63fb17fda839ce09388e9a5320f
7
- data.tar.gz: 24e8aca54e3f8090fabefab524ca859ab30b2eca49ec01b9b5faf317c115bbc33eb68d1cfdbddab06be38e9fa747b65075b218f46f5cfbc2739aa8f9e05208d8
6
+ metadata.gz: 26464d435dc1f1306967b4166c9d970c6ca9dab58e22b3ec1f8f3b1a94b1b40259f004f2141cfb63364a29280cf36cbafc253709cf4ad39ed70e2ee77b2de2de
7
+ data.tar.gz: ea438262feb93ca615aff818c417d117651d4b017250c9bf6b0b0f930ae86f16e01ff3d855481db7ce9a4650a590966cfc978ec847d2f883340cc42de134b683
data/Gemfile.lock CHANGED
@@ -1,19 +1,19 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- MovableInkAWS (0.1.3)
4
+ MovableInkAWS (0.1.4)
5
5
  aws-sdk (~> 2.10, >= 2.10.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- aws-sdk (2.10.125)
11
- aws-sdk-resources (= 2.10.125)
12
- aws-sdk-core (2.10.125)
10
+ aws-sdk (2.11.28)
11
+ aws-sdk-resources (= 2.11.28)
12
+ aws-sdk-core (2.11.28)
13
13
  aws-sigv4 (~> 1.0)
14
14
  jmespath (~> 1.0)
15
- aws-sdk-resources (2.10.125)
16
- aws-sdk-core (= 2.10.125)
15
+ aws-sdk-resources (2.11.28)
16
+ aws-sdk-core (= 2.11.28)
17
17
  aws-sigv4 (1.0.2)
18
18
  diff-lcs (1.3)
19
19
  jmespath (1.3.1)
@@ -39,4 +39,4 @@ DEPENDENCIES
39
39
  rspec (~> 3.6)
40
40
 
41
41
  BUNDLED WITH
42
- 1.16.0
42
+ 1.16.1
@@ -11,16 +11,20 @@ module MovableInk
11
11
  end
12
12
 
13
13
  def load_mi_env
14
- run_with_backoff do
15
- ec2.describe_tags(filters: [
16
- {
17
- name: 'resource-id',
18
- values: [instance_id]
19
- }
20
- ])
21
- .tags
22
- .detect { |tag| tag.key == 'mi:env' }
23
- .value
14
+ run_with_backoff(quiet: true) do
15
+ begin
16
+ ec2.describe_tags(filters: [
17
+ {
18
+ name: 'resource-id',
19
+ values: [instance_id]
20
+ }
21
+ ])
22
+ .tags
23
+ .detect { |tag| tag.key == 'mi:env' }
24
+ .value
25
+ rescue NoMethodError
26
+ raise MovableInk::AWS::Errors::NoEnvironmentTagError
27
+ end
24
28
  end
25
29
  end
26
30
 
@@ -3,6 +3,7 @@ module MovableInk
3
3
  module Errors
4
4
  class FailedWithBackoff < StandardError; end
5
5
  class EC2Required < StandardError; end
6
+ class NoEnvironmentTagError < StandardError; end
6
7
  end
7
8
  end
8
9
  end
@@ -30,7 +30,7 @@ module MovableInk
30
30
  @mi_env = environment
31
31
  end
32
32
 
33
- def run_with_backoff
33
+ def run_with_backoff(quiet: false)
34
34
  9.times do |num|
35
35
  begin
36
36
  return yield
@@ -40,8 +40,14 @@ module MovableInk
40
40
  Aws::S3::Errors::SlowDown,
41
41
  Aws::Route53::Errors::ThrottlingException,
42
42
  Aws::Route53::Errors::ServiceError,
43
- Aws::SSM::Errors::TooManyUpdates
44
- notify_and_sleep((num+1)**2 + rand(10), $!.class)
43
+ Aws::SSM::Errors::TooManyUpdates,
44
+ MovableInk::AWS::Errors::NoEnvironmentTagError
45
+ sleep_time = (num+1)**2 + rand(10)
46
+ if quiet
47
+ (num >=8) ? notify_and_sleep(sleep_time, $!.class) : sleep(sleep_time)
48
+ else
49
+ notify_and_sleep(sleep_time, $!.class)
50
+ end
45
51
  end
46
52
  end
47
53
  raise MovableInk::AWS::Errors::FailedWithBackoff
@@ -1,5 +1,5 @@
1
1
  module MovableInk
2
2
  class AWS
3
- VERSION = '0.1.4'
3
+ VERSION = '0.1.5'
4
4
  end
5
5
  end
data/spec/aws_spec.rb CHANGED
@@ -42,6 +42,18 @@ describe MovableInk::AWS do
42
42
  aws.run_with_backoff { ec2.describe_instances } rescue nil
43
43
  end
44
44
 
45
+ it "should not notify slack when quiet param is passed in" do
46
+ aws = MovableInk::AWS.new(environment: 'test')
47
+ ec2 = Aws::EC2::Client.new(stub_responses: true)
48
+ ec2.stub_responses(:describe_instances, 'RequestLimitExceeded')
49
+
50
+ expect(aws).to receive(:notify_slack).exactly(1).times
51
+ expect(aws).to receive(:sleep).exactly(9).times.and_return(true)
52
+ expect(STDOUT).to receive(:puts).exactly(1).times
53
+
54
+ aws.run_with_backoff(quiet: true) { ec2.describe_instances } rescue nil
55
+ end
56
+
45
57
  it "should raise an error after too many timeouts" do
46
58
  aws = MovableInk::AWS.new(environment: 'test')
47
59
  ec2 = Aws::EC2::Client.new(stub_responses: true)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: MovableInkAWS
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Chesler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-25 00:00:00.000000000 Z
11
+ date: 2018-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk