dpl 1.7.1.travis.575.1 → 1.7.1.travis.577.1

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
- ZmEwZGRjMWI3OTUyY2RhYTQzMDU0NmEwZGIxMGIzM2NmZDVjMDZhYQ==
4
+ MTkwNTdjYmJkMGVlZDdmMTFhOTMxOGI2YWM5MGQ5MjhjZWQzMzRhOQ==
5
5
  data.tar.gz: !binary |-
6
- MTRhYTQyYzljZjIzOGIwZThjYzUwMjRjNDNhOGFkOTE1ZTVmYzU2Yw==
6
+ ZTIwYTNjYWVjMzU5YmI4NWQ1YTdlOWUwMzZlNWEyM2Q2ODM3MzgxNw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ODk0YTIwOTk5MTBiZjNiOGVlNzlkYjhmYzhhMGVmMGM0NjY3YjBjNjgxZjFm
10
- NTk0ZGI2Y2U2MjQyNjVlYjljYjQ0MjcxMDViNDE5MzlkMzEzMjIxNzY2OWM5
11
- OTYwYzNhNDRjNjVjOWY4YmZiZmI4ZjhiYzdiMzY5YzUzMGE3Zjg=
9
+ N2U2NjdmZDY3ZTNlN2EzYjgwZjZmM2I1OGIzYzM1M2VmNDVkMDMzNDZjYzdm
10
+ MmUzNTk3OTc4NDU5YzI2NjNhMWQwNmQ2YjNlZTFiNmMzZGFlMmRmYWYwNjc3
11
+ YTBlNTMzM2I0ZDc1MjBjODhjMmJiNGZiMGM2MTBiNTA0NmFhNTk=
12
12
  data.tar.gz: !binary |-
13
- NTJjY2U0YWJiZDE5YjhhOGVjZWRjMzA0MWEyZWI1ZGNiMDcwMjA4NGNjZDc2
14
- NDViYzBjY2Y5MTQ3Mzg4NTA2MmM3NzViYzAzZWFkOGExNTgzZGEwYzk1YmVj
15
- NjI2YTBiODFhNDY1NWEzNmIzODdmN2U0YjkyMTdkNTAxOWZjMTk=
13
+ YzBiNTcwZDRiNzcwOGFhNjg3OTUyMWE4OTQ1MjRmMDRmYWE2YTQ4MWU5ZDk0
14
+ NDY1MGI5MmQ2ODA1YzI3NmE3ZmRmOWY4ODJlM2RiOTBmNjM0N2NkYjczN2Ex
15
+ MmFmNjJiMmNhNTQ0YTIzNThkNWUzNjk2NzY4MGQzMjQ5NDA0Yjc=
data/Gemfile CHANGED
@@ -54,3 +54,8 @@ end
54
54
  group :bitballoon do
55
55
  gem 'bitballoon'
56
56
  end
57
+
58
+ group :puppet_forge do
59
+ gem 'puppet'
60
+ gem 'puppet-blacksmith'
61
+ end
data/README.md CHANGED
@@ -28,6 +28,7 @@ Dpl supports the following providers:
28
28
  * [Deis](#deis)
29
29
  * [Google Cloud Storage](#google-cloud-storage)
30
30
  * [Elastic Beanstalk](#elastic-beanstalk)
31
+ * [Puppet Forge](#puppet-forge)
31
32
 
32
33
  ## Installation:
33
34
 
@@ -390,3 +391,14 @@ For accounts using two factor authentication, you have to use an oauth token as
390
391
  dpl --access-token=<access-token> --site-id=3f932c1e-708b-4573-938a-a07d9728c22e
391
392
  dpl --access-token=<access-token> --site-id=3f932c1e-708b-4573-938a-a07d9728c22e --local-dir=build
392
393
 
394
+ ### Puppet Forge:
395
+
396
+ #### Options:
397
+
398
+ * **user**: Required. The user name at Puppet forge.
399
+ * **password**: Required. The Puppet forge password.
400
+ * **url**: Optional. The forge URL to deploy to. Defaults to https://forgeapi.puppetlabs.com/
401
+
402
+ #### Examples:
403
+
404
+ dpl --provider=puppetforge --user=puppetlabs --password=s3cr3t
data/lib/dpl/provider.rb CHANGED
@@ -30,6 +30,7 @@ module DPL
30
30
  autoload :GAE, 'dpl/provider/gae'
31
31
  autoload :BitBalloon, 'dpl/provider/bitballoon'
32
32
  autoload :ElasticBeanstalk, 'dpl/provider/elastic_beanstalk'
33
+ autoload :PuppetForge, 'dpl/provider/puppet_forge'
33
34
 
34
35
  def self.new(context, options)
35
36
  return super if self < Provider
@@ -0,0 +1,42 @@
1
+ module DPL
2
+ class Provider
3
+ class PuppetForge < Provider
4
+ require 'pathname'
5
+
6
+ requires 'puppet', :load => 'puppet/face'
7
+ requires 'puppet-blacksmith', :load => 'puppet_blacksmith'
8
+
9
+ def modulefile
10
+ @modulefile ||= Blacksmith::Modulefile.new
11
+ end
12
+
13
+ def forge
14
+ @forge ||= Blacksmith::Forge.new(options[:user], options[:password], options[:url])
15
+ end
16
+
17
+ def build
18
+ pmod = Puppet::Face['module', :current]
19
+ pmod.build('./')
20
+ end
21
+
22
+ def needs_key?
23
+ false
24
+ end
25
+
26
+ def check_app
27
+ modulefile.metadata
28
+ end
29
+
30
+ def check_auth
31
+ raise Error, "must supply a user" unless option(:user)
32
+ raise Error, "must supply a password" unless option(:password)
33
+ end
34
+
35
+ def push_app
36
+ build
37
+ log "Uploading to Puppet Forge #{forge.username}/#{modulefile.name}"
38
+ forge.push!(modulefile.name)
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+ require 'dpl/provider/puppet_forge'
3
+ require 'puppet/face'
4
+ require 'puppet_blacksmith'
5
+
6
+ describe DPL::Provider::PuppetForge do
7
+ subject :provider do
8
+ described_class.new(DummyContext.new, :user => 'puppetlabs', :password => 's3cr3t')
9
+ end
10
+
11
+ describe "forge" do
12
+ it 'should include the user and password specified' do
13
+ expect(provider.forge.username).to eq(provider.options[:user])
14
+ expect(provider.forge.password).to eq(provider.options[:password])
15
+ end
16
+ end
17
+
18
+ describe "build" do
19
+ it 'should use Puppet module tool to build the module' do
20
+ pmt = double('pmt')
21
+ expect(::Puppet::Face).to receive(:[]).and_return(pmt)
22
+ expect(pmt).to receive(:build).with('./')
23
+ provider.build
24
+ end
25
+ end
26
+
27
+ describe "#check_auth" do
28
+ it 'should require a user' do
29
+ provider.options.update(:user => nil)
30
+ expect{ provider.check_auth }.to raise_error("must supply a user")
31
+ end
32
+
33
+ it 'should require a password' do
34
+ provider.options.update(:password => nil)
35
+ expect{ provider.check_auth }.to raise_error("must supply a password")
36
+ end
37
+ end
38
+
39
+ describe "#check_app" do
40
+ it 'should load module metadata using Blacksmith' do
41
+ modulefile = double('modulefile')
42
+ expect(::Blacksmith::Modulefile).to receive(:new).and_return(modulefile)
43
+ expect(modulefile).to receive(:metadata) { true }
44
+ provider.check_app
45
+ end
46
+ end
47
+
48
+ describe "#push_app" do
49
+ it 'should use Blacksmith to push to the Forge' do
50
+ forge = double('forge')
51
+ expect(provider).to receive(:build).and_return(true)
52
+ expect(provider).to receive(:modulefile).at_least(:once).and_return(double('modulefile', :name => 'test'))
53
+ expect(provider).to receive(:log).and_return(true)
54
+ expect(::Blacksmith::Forge).to receive(:new).and_return(forge)
55
+ expect(forge).to receive(:push!) { true }
56
+ expect(forge).to receive(:username) { provider.options[:user] }
57
+ provider.push_app
58
+ end
59
+ end
60
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dpl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.1.travis.575.1
4
+ version: 1.7.1.travis.577.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Haase
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-14 00:00:00.000000000 Z
11
+ date: 2014-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -124,6 +124,7 @@ files:
124
124
  - lib/dpl/provider/npm.rb
125
125
  - lib/dpl/provider/openshift.rb
126
126
  - lib/dpl/provider/ops_works.rb
127
+ - lib/dpl/provider/puppet_forge.rb
127
128
  - lib/dpl/provider/pypi.rb
128
129
  - lib/dpl/provider/releases.rb
129
130
  - lib/dpl/provider/rubygems.rb
@@ -155,6 +156,7 @@ files:
155
156
  - spec/provider/npm.rb
156
157
  - spec/provider/openshift_spec.rb
157
158
  - spec/provider/ops_works_spec.rb
159
+ - spec/provider/puppet_forge_spec.rb
158
160
  - spec/provider/pypi_spec.rb
159
161
  - spec/provider/releases_spec.rb
160
162
  - spec/provider/rubygems_spec.rb