dpl 1.5.1.travis.180.2 → 1.5.1.travis.182.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YTk3YWRjOGMzYTEwYmMyZTBiNjU1NTI5NTNlYTE0ZGQ0YzYzNzFhYQ==
4
+ ZWFjNTA4ZTk1Yzc1NDk2NDAzNmMwNGZmM2YwZjM0MDIyMGY5ODZlNQ==
5
5
  data.tar.gz: !binary |-
6
- OGZjMDNjOWNjODBiMGRlNDg3NWI4ZDk3OTBjNWEyZWJmNmIxMWI1NQ==
6
+ MTRkOGMyODFlNTliMTRlYzE1OGViYWNjOTc3ZTdjN2MzMGM3NjQ2Mg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NTkyMjgzMjE2Y2UwMzcyZjRjMDdhY2MyN2MwZjM4MjdhYWFlZGI4ZWQyNjk5
10
- ZDllY2NiMGY4MzkyNWJjNDI4MTg1M2QyYzlhMjExY2Q4ODcxODc2MTEzY2Rj
11
- YzhlZjdiMjM3YjljNDJhZmQzOTAyOWMzNzgyOWY2MGZjNjE4OWQ=
9
+ OTQyOTczNmI4NGZhOGZjZDVjZmU1ZjhkODU2NDliY2NlMGQ2YWE2YzcwZjMx
10
+ MzkzZTNiMDNiMTFjODUxMjVhMzM3OTM5ZTRmM2Q1OTg3OTc4YzFiYjM3NDU4
11
+ N2ZjNTU1NzkwOTE5MDE0YzJhN2NhZjg2ZTM1MGNhYmIyMDU0OWQ=
12
12
  data.tar.gz: !binary |-
13
- NjY5MWFkNzQ3M2M4OTYwMTdjNzBmNDY2MzU4NDQyYzE0OTdmZDAyOWYxZGE1
14
- MTA4ZjY0MDc3NTAyZTI5M2VhYTdlY2FmOGQwYTQwMDc2YmY5Y2Y1YzgyMzMx
15
- OWMwYTc1YTY2MDFmODhkZDE1ZDA4ZDJjMjMyODYxNjI0NGRkYTI=
13
+ ZWIzODJkNzU1Zjk3NTIxNzU3ZDY3MDg0YTMzYjEzMmYzODA3ZmIzYzczNmFj
14
+ NmI0YTUwMWFlYTJlN2I3ZDFlNWVlMWEzZjI1NzNjNzdmNDUyZGU5OGYwZTdi
15
+ ODM4ZDI0MGYxM2YyODNiMjJmNjM5YTQ0ZmM4OTk3ZTllZjI3YTU=
data/Gemfile CHANGED
@@ -22,3 +22,7 @@ end
22
22
  group :rubygems do
23
23
  gem 'gems', '>= 0.8.3'
24
24
  end
25
+
26
+ group :sss do
27
+ gem 'aws-sdk'
28
+ end
data/README.md CHANGED
@@ -17,3 +17,4 @@ Supported providers:
17
17
  * Cloud Foundry
18
18
  * dotCloud (experimental)
19
19
  * NPM (experimental)
20
+ * S3 (experimental)
@@ -13,6 +13,7 @@ module DPL
13
13
  autoload :Openshift, 'dpl/provider/openshift'
14
14
  autoload :RubyGems, 'dpl/provider/rubygems'
15
15
  autoload :NPM, 'dpl/provider/npm'
16
+ autoload :S3, 'dpl/provider/s3'
16
17
  autoload :CloudControl, 'dpl/provider/cloudcontrol'
17
18
  autoload :CloudFoundry, 'dpl/provider/cloud_foundry'
18
19
  autoload :PyPI, 'dpl/provider/pypi'
@@ -0,0 +1,47 @@
1
+ module DPL
2
+ class Provider
3
+ class S3 < Provider
4
+
5
+ requires 'aws-sdk'
6
+ experimental "S3"
7
+
8
+ def api
9
+ @api ||= AWS::S3.new
10
+ end
11
+
12
+ def needs_key?
13
+ false
14
+ end
15
+
16
+ def check_app
17
+
18
+ end
19
+
20
+ def setup_auth
21
+ AWS.config(:access_key_id => option(:access_key_id), :secret_access_key => option(:secret_access_key))
22
+ end
23
+
24
+ def check_auth
25
+ setup_auth
26
+ log "Logging in with Access Key: #{option(:access_key_id)[-4..-1].rjust(20, '*')}"
27
+ end
28
+
29
+ def push_app
30
+ Dir.glob("**/*") do |fileName|
31
+ api.buckets[option(:bucket)].objects.create(fileName, File.read(fileName)) unless File.directory?(fileName)
32
+ end
33
+ end
34
+
35
+ def deploy
36
+ super
37
+ rescue AWS::S3::Errors::InvalidAccessKeyId
38
+ raise Error, "Invalid S3 Access Key Id, Stopping Deploy"
39
+ rescue AWS::S3::Errors::SignatureDoesNotMatch
40
+ raise Error, "Aws Secret Key does not match Access Key Id, Stopping Deploy"
41
+ rescue AWS::S3::Errors::AccessDenied
42
+ raise Error, "Oops, It looks like you tried to write to a bucket that isn't yours or doesn't exist yet. Please create the bucket before trying to write to it."
43
+ end
44
+
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+ require 'aws-sdk'
3
+ require 'dpl/provider/s3'
4
+
5
+ describe DPL::Provider::S3 do
6
+
7
+ before (:each) do
8
+ AWS.stub!
9
+ end
10
+
11
+ subject :provider do
12
+ described_class.new(DummyContext.new, :access_key_id => 'qwertyuiopasdfghjklz', :secret_access_key => 'qwertyuiopasdfghjklzqwertyuiopasdfghjklz', :bucket => 'my-bucket')
13
+ end
14
+
15
+ describe :check_auth do
16
+ example do
17
+ provider.should_receive(:setup_auth)
18
+ provider.should_receive(:log).with("Logging in with Access Key: ****************jklz")
19
+ provider.check_auth
20
+ end
21
+ end
22
+
23
+ describe :setup_auth do
24
+ example do
25
+ AWS.should_receive(:config).with(:access_key_id => 'qwertyuiopasdfghjklz', :secret_access_key => 'qwertyuiopasdfghjklzqwertyuiopasdfghjklz').once.and_call_original
26
+ provider.setup_auth
27
+ end
28
+ end
29
+
30
+ describe :needs_key? do
31
+ example do
32
+ provider.needs_key?.should == false
33
+ end
34
+ end
35
+
36
+ describe :push_app do
37
+ example do
38
+ provider.push_app
39
+ end
40
+ end
41
+
42
+ describe :api do
43
+ example do
44
+ AWS::S3.should_receive(:new)
45
+ provider.api
46
+ end
47
+ end
48
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dpl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1.travis.180.2
4
+ version: 1.5.1.travis.182.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Haase
@@ -98,6 +98,7 @@ files:
98
98
  - lib/dpl/provider/openshift.rb
99
99
  - lib/dpl/provider/pypi.rb
100
100
  - lib/dpl/provider/rubygems.rb
101
+ - lib/dpl/provider/s3.rb
101
102
  - lib/dpl/version.rb
102
103
  - notes/dotcloud.md
103
104
  - notes/engine_yard.md
@@ -112,6 +113,7 @@ files:
112
113
  - spec/provider/openshift_spec.rb
113
114
  - spec/provider/pypi_spec.rb
114
115
  - spec/provider/rubygems_spec.rb
116
+ - spec/provider/s3_spec.rb
115
117
  - spec/provider_spec.rb
116
118
  - spec/spec_helper.rb
117
119
  homepage: https://github.com/rkh/dpl