MovableInkAWS 0.1.7 → 0.1.8

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: 70c7161f12a2166192760b49a13d6471cf932d6add3c4fa8000fd371968ad4ff
4
- data.tar.gz: eabe1300e40c7f0a495288c6c2aa7bacde4d94daeb0ae2f8c31bebe061630673
3
+ metadata.gz: 1017fd4533c1f9b954f1f1f4406c1ccd43577c699225b5c24efb60673cf7c77d
4
+ data.tar.gz: 8e6d6842f44ba620ae8471e1dfd914cfcdb9a4d579408f9bca06b0d504d8ef6a
5
5
  SHA512:
6
- metadata.gz: 9a459ba6e2dce6df83d950557d08f9dc5f8ee9eb81946ec2b213270019063d5f6a8bdf6329589af5f2e5c89dd598da016a2b380818ac07bbe479ed470f40a030
7
- data.tar.gz: d7599a25f9be94a0a89e9f6a19c5d88fa808757d8e7b87f7b2149086bec0c5cdae771593f4489ea2179d65da585fd21f1ca858a9efbaa7101d0913ae3c0b48a0
6
+ metadata.gz: 554ba89ad8f58564096c006702862ab7fed8b40568fdbc2295093596f3f4ff0fad5523b14ca588b2c45840e71a2dc62be702c82e7de582e36ff3bdf760f57679
7
+ data.tar.gz: 5bebb37a8deaa719bf5476039f17f21244c04729cbb296ac31fbc4130c85ffd6a886d6ed798f55a16b8b66e5d73e3491d3fac8355226f2e289b694e8f3d61d7a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- MovableInkAWS (0.1.7)
4
+ MovableInkAWS (0.1.8)
5
5
  aws-sdk (~> 2.11, >= 2.11.0)
6
6
 
7
7
  GEM
@@ -6,6 +6,8 @@ require_relative 'aws/sns'
6
6
  require_relative 'aws/autoscaling'
7
7
  require_relative 'aws/route53'
8
8
  require_relative 'aws/ssm'
9
+ require_relative 'aws/athena'
10
+ require_relative 'aws/s3'
9
11
 
10
12
  module MovableInk
11
13
  class AWS
@@ -14,6 +16,8 @@ module MovableInk
14
16
  include Autoscaling
15
17
  include Route53
16
18
  include SSM
19
+ include Athena
20
+ include S3
17
21
 
18
22
  class << self
19
23
  def regions
@@ -41,6 +45,7 @@ module MovableInk
41
45
  Aws::Route53::Errors::ThrottlingException,
42
46
  Aws::Route53::Errors::ServiceError,
43
47
  Aws::SSM::Errors::TooManyUpdates,
48
+ Aws::Athena::Errors::ThrottlingException,
44
49
  MovableInk::AWS::Errors::NoEnvironmentTagError
45
50
  sleep_time = (num+1)**2 + rand(10)
46
51
  if quiet
@@ -72,9 +77,5 @@ module MovableInk
72
77
  def datacenter(region: my_region)
73
78
  regions.key(region)
74
79
  end
75
-
76
- def s3
77
- @s3_client ||= Aws::S3::Client.new(region: 'us-east-1')
78
- end
79
80
  end
80
81
  end
@@ -0,0 +1,10 @@
1
+ module MovableInk
2
+ class AWS
3
+ module Athena
4
+ def athena(region: my_region)
5
+ @athena_client ||= {}
6
+ @athena_client[region] ||= Aws::Athena::Client.new(region: region)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,13 @@
1
+ module MovableInk
2
+ class AWS
3
+ module S3
4
+ def s3
5
+ @s3_client ||= Aws::S3::Client.new(region: 'us-east-1')
6
+ end
7
+
8
+ def directory_exists?(bucket:, prefix:)
9
+ !run_with_backoff { s3.list_objects_v2(bucket: bucket, prefix: prefix, max_keys: 1).contents.empty? }
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,5 +1,5 @@
1
1
  module MovableInk
2
2
  class AWS
3
- VERSION = '0.1.7'
3
+ VERSION = '0.1.8'
4
4
  end
5
5
  end
@@ -1,4 +1,3 @@
1
- require 'aws-sdk'
2
1
  require_relative '../lib/movable_ink/aws'
3
2
 
4
3
  describe MovableInk::AWS::Autoscaling do
data/spec/aws_spec.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'aws-sdk'
2
1
  require_relative '../lib/movable_ink/aws'
3
2
 
4
3
  describe MovableInk::AWS do
data/spec/ec2_spec.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'aws-sdk'
2
1
  require_relative '../lib/movable_ink/aws'
3
2
 
4
3
  describe MovableInk::AWS::EC2 do
data/spec/route53_spec.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'aws-sdk'
2
1
  require_relative '../lib/movable_ink/aws'
3
2
 
4
3
  describe MovableInk::AWS::Route53 do
data/spec/s3_spec.rb ADDED
@@ -0,0 +1,42 @@
1
+ require_relative '../lib/movable_ink/aws'
2
+
3
+ describe MovableInk::AWS::S3 do
4
+ let(:aws) { MovableInk::AWS.new }
5
+ let(:s3) { Aws::S3::Client.new(stub_responses: true) }
6
+
7
+ describe "#directory_exists?" do
8
+ let(:existing_folder) { s3.stub_data(:list_objects_v2,
9
+ contents: [{
10
+ key: "foo/file",
11
+ }],
12
+ name: "bucket",
13
+ prefix: "foo/",
14
+ delimiter: "/",
15
+ max_keys: 1,
16
+ )}
17
+ let(:nonexistant_folder) { s3.stub_data(:list_objects_v2,
18
+ contents: [],
19
+ name: "bucket",
20
+ prefix: "bar/",
21
+ delimiter: "/",
22
+ max_keys: 1,
23
+ )}
24
+
25
+ before(:each) do
26
+ allow(aws).to receive(:mi_env).and_return('test')
27
+ allow(aws).to receive(:s3).and_return(s3)
28
+ end
29
+
30
+ it "should return true if an S3 directory exists" do
31
+ s3.stub_responses(:list_objects_v2, existing_folder)
32
+
33
+ expect(aws.directory_exists?(bucket: "bucket", prefix: "foo/")).to eq(true)
34
+ end
35
+
36
+ it "should return false if an S3 directory doesn't exist" do
37
+ s3.stub_responses(:list_objects_v2, nonexistant_folder)
38
+
39
+ expect(aws.directory_exists?(bucket: "bucket", prefix: "bar/")).to eq(false)
40
+ end
41
+ end
42
+ end
data/spec/sns_spec.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'aws-sdk'
2
1
  require_relative '../lib/movable_ink/aws'
3
2
 
4
3
  describe MovableInk::AWS::SNS do
data/spec/ssm_spec.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'aws-sdk'
2
1
  require_relative '../lib/movable_ink/aws'
3
2
 
4
3
  describe MovableInk::AWS::SSM do
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.7
4
+ version: 0.1.8
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-31 00:00:00.000000000 Z
11
+ date: 2018-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -42,10 +42,12 @@ files:
42
42
  - MovableInkAWS.gemspec
43
43
  - README.md
44
44
  - lib/movable_ink/aws.rb
45
+ - lib/movable_ink/aws/athena.rb
45
46
  - lib/movable_ink/aws/autoscaling.rb
46
47
  - lib/movable_ink/aws/ec2.rb
47
48
  - lib/movable_ink/aws/errors.rb
48
49
  - lib/movable_ink/aws/route53.rb
50
+ - lib/movable_ink/aws/s3.rb
49
51
  - lib/movable_ink/aws/sns.rb
50
52
  - lib/movable_ink/aws/ssm.rb
51
53
  - lib/movable_ink/version.rb
@@ -53,6 +55,7 @@ files:
53
55
  - spec/aws_spec.rb
54
56
  - spec/ec2_spec.rb
55
57
  - spec/route53_spec.rb
58
+ - spec/s3_spec.rb
56
59
  - spec/sns_spec.rb
57
60
  - spec/ssm_spec.rb
58
61
  homepage: