beaker-puppet_install_helper 0.5.0 → 0.6.0

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
  SHA1:
3
- metadata.gz: 11815b324733036dc08183bfbbf1adeedcb26087
4
- data.tar.gz: 4ffdbaeeb350522e4b5a553d5543970779205ca9
3
+ metadata.gz: e3ab1391c840c72e0a1e79bf939dcbfbdf58869a
4
+ data.tar.gz: f4c3d416e7647511608663e7e3fe84540eee0ab8
5
5
  SHA512:
6
- metadata.gz: 5f1501d591403ec224579a049bf95244b2905f0a6a688d34bd839980ebe673a4893e39533a21a2bff630faf4e9840d976333db534c185a0ebe101756fc69c30b
7
- data.tar.gz: 2d561aa93e32f028c296065f60e32c242b67b5274bf16017d760207f2903cd30a2e617b16607031f29ecbdb364bdcf24b2dc90571dcbf28c1b0e478ddacfd05c
6
+ metadata.gz: 21987dff0ba3291aa3a1e81cc5a94e076ba08c62c387ba0ac5c4fea2cc5484719d7489c3ae3b881a4d519cf1f1758b3847fba5df0c6d8f5c8e839b93cda02000
7
+ data.tar.gz: 8b6c6cd2b7c4d31e6853a8f0454990bb3d56166e6261297e28b76a79d745f5d05b0098e4014b2f72f3b99f5c77c3dc3c3a312429d1e00c06367021a6ea0c624e
data/.travis.yml CHANGED
@@ -3,5 +3,5 @@ script: "bundle exec rspec spec"
3
3
  notifications:
4
4
  email: false
5
5
  rvm:
6
- - 2.1.6
7
- - 1.9.3
6
+ - 2.3.1
7
+ - 2.2.5
data/CHANGELOG.md ADDED
@@ -0,0 +1,41 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
+ and this project adheres to [Semantic Versioning](http://semver.org/).
6
+
7
+ ## [0.6.0]
8
+ ### Changed
9
+ - Change the default `PUPPET_INSTALL_TYPE` to `agent`
10
+
11
+ ## [0.5.0]
12
+ ### Changed
13
+ - Bump the beaker dependency range up to allow for beaker 3.
14
+
15
+ ## [0.4.4]
16
+ ### Fixed
17
+ - Always add certs on windows
18
+
19
+ ## [0.4.3]
20
+ ### Fixed
21
+ - Use pe\_ver for the host variable of version to install
22
+
23
+ ## [0.4.2]
24
+ ### Fixed
25
+ - Re-add CA certs on windows and solaris for PE 3.
26
+
27
+ ## [0.4.1]
28
+ ### Fixed
29
+ - Don't copy certs on solaris, as they are no longer needed
30
+
31
+ ## [0.4.0]
32
+ ### Changed
33
+ - Add solaris for installing CA certs as well.
34
+
35
+ [0.6.0]: https://github.com/puppetlabs/beaker-puppet_install_helper/compare/0.5.0...0.6.0
36
+ [0.5.0]: https://github.com/puppetlabs/beaker-puppet_install_helper/compare/0.4.4...0.5.0
37
+ [0.4.4]: https://github.com/puppetlabs/beaker-puppet_install_helper/compare/0.4.3...0.4.4
38
+ [0.4.3]: https://github.com/puppetlabs/beaker-puppet_install_helper/compare/0.4.2...0.4.3
39
+ [0.4.2]: https://github.com/puppetlabs/beaker-puppet_install_helper/compare/0.4.1...0.4.2
40
+ [0.4.1]: https://github.com/puppetlabs/beaker-puppet_install_helper/compare/0.4.0...0.4.1
41
+ [0.4.2]: https://github.com/puppetlabs/beaker-puppet_install_helper/compare/0.3.1...0.4.0
data/Gemfile CHANGED
@@ -1,8 +1,20 @@
1
- source ENV['GEM_SOURCE'] || "https://rubygems.org"
1
+ source ENV['GEM_SOURCE'] || 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- if File.exists? "#{__FILE__}.local"
6
- eval(File.read("#{__FILE__}.local"), binding)
5
+ group :test do
6
+ gem 'beaker', '= 2.52.0' if RUBY_VERSION <= '2.1.6'
7
+ gem 'beaker' if RUBY_VERSION > '2.1.6'
8
+ gem 'bundler', '~> 1.9'
9
+ gem 'rake', '~> 10.0'
10
+ gem 'rspec', '~> 3'
11
+ gem 'rubocop', require: false
12
+ gem 'rubocop-rspec', require: false
7
13
  end
8
14
 
15
+ group :development do
16
+ gem 'pry'
17
+ gem 'pry-byebug'
18
+ end
19
+
20
+ eval(File.read("#{__FILE__}.local"), binding) if File.exist? "#{__FILE__}.local"
data/MAINTAINERS ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "version": 1,
3
+ "file_format": "This MAINTAINERS file format is described at http://pup.pt/maintainers",
4
+ "issues": "https://github.com/puppetlabs/beaker-puppet_install_helper/issues",
5
+ "people": [
6
+ {
7
+ "github": "hunner",
8
+ "name": "Hunter Haugen"
9
+ },
10
+ {
11
+ "github": "DavidS",
12
+ "name": "David Schmitt"
13
+ }
14
+ ]
15
+ }
data/README.md CHANGED
@@ -6,15 +6,22 @@ This gem is simply an abstraction for the various ways that we install puppet fr
6
6
 
7
7
  The way to use this is to declare either `run_puppet_install_helper()` or `run_puppet_install_helper_on(hosts)` and set environment variables `PUPPET_INSTALL_VERSION` and/or `PUPPET_INSTALL_TYPE` in the following combinations to have puppet installed on the desired hosts:
8
8
 
9
- - `PUPPET_INSTALL_TYPE` is unset: it will look at the default node's type (ie, `default.is_pe?` and choose either foss or pe methods below.
9
+ - `PUPPET_INSTALL_TYPE` is unset: if `type: pe` is set for the default node in the nodeset, it will us the PE install method. Otherwise it will only install an agent.
10
10
  - `PUPPET_INSTALL_TYPE=pe` will read `PUPPET_INSTALL_VERSION` and attempt to install that version of the PE tarball. If no version is set, then it uses the latest stable build.
11
+ - `PUPPET_INSTALL_TYPE=agent` will read `PUPPET_INSTALL_VERSION` and install that version of puppet-agent (eg, `PUPPET_INSTALL_TYPE=agent PUPPET_INSTALL_VERSION=1.0.0`)
11
12
  - `PUPPET_INSTALL_TYPE=foss` will read `PUPPET_INSTALL_VERSION` and:
12
13
  - if `PUPPET_INSTALL_VERSION` is less than 4 will attempt to install that version of the system package if available, or else the ruby gem of that version.
13
14
  - if `PUPPET_INSTALL_VERSION` is 4 or more it will attempt to install the corresponding puppet-agent package, or gem version otherwise.
14
- - `PUPPET_INSTALL_TYPE=agent` will read `PUPPET_INSTALL_VERSION` and install that version of puppet-agent (eg, `PUPPET_INSTALL_TYPE=agent PUPPET_INSTALL_VERSION=1.0.0`)
15
15
 
16
16
  The best way is explicitly set `PUPPET_INSTALL_TYPE` and `PUPPET_INSTALL_VERSION` to what you want. It'll probably do what you expect.
17
17
 
18
+ #### Installing a puppet-agent package from a development repository
19
+
20
+ In order to use a custom, or unreleased, puppet-agent package set the following environment variables"
21
+ - `PUPPET_INSTALL_TYPE=agent`
22
+ - `PUPPET_AGENT_SHA` is the longform commit SHA used when building the puppet-agent package, for example `PUPPET_AGENT_SHA=18d31fd5ed41abb276398201f84a4347e0fc7092`. This is required to be set in order to use a development puppet-agent package
23
+ - `PUPPET_AGENT_SUITE_VERSION` is the version of the puppet-agent package, for example `PUPPET_AGENT_SUITE_VERSION="1.8.2.350.g18d31fd`. This is optional, and will default to `PUPPET_AGENT_SHA` if not set
24
+
18
25
  ### `install_ca_certs`
19
26
 
20
27
  Install Certificate Authority Certs on Windows and OSX for Geotrust, User Trust Network, and Equifax
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+ require 'bundler/gem_tasks'
2
+ task default: [:lint, :spec]
3
+
4
+ require 'rubocop/rake_task'
5
+ desc 'Run rubocop'
6
+ RuboCop::RakeTask.new(:lint) do |t|
7
+ t.requires << 'rubocop-rspec'
8
+ end
9
+
10
+ require 'rspec/core/rake_task'
11
+ desc 'Run spec tests using rspec'
12
+ RSpec::Core::RakeTask.new(:spec) do |t|
13
+ t.rspec_opts = ['--color']
14
+ t.pattern = 'spec'
15
+ end
@@ -1,18 +1,17 @@
1
1
  Gem::Specification.new do |s|
2
- s.name = "beaker-puppet_install_helper"
3
- s.version = '0.5.0'
4
- s.authors = ["Puppetlabs"]
5
- s.email = ["hunter@puppetlabs.com"]
6
- s.homepage = "https://github.com/puppetlabs/beaker-puppet_install_helper"
7
- s.summary = %q{Puppet install helper for Beaker}
8
- s.description = %q{Puppet install helper for Beaker, see https://github.com/puppetlabs/beaker}
2
+ s.name = 'beaker-puppet_install_helper'
3
+ s.version = '0.6.0'
4
+ s.authors = ['Puppetlabs']
5
+ s.email = ['hunter@puppet.com']
6
+ s.homepage = 'https://github.com/puppetlabs/beaker-puppet_install_helper'
7
+ s.summary = 'Puppet install helper for Beaker'
8
+ s.description = 'Provides a unified external interface to choosing which version of puppet to install on the systems under test. For details on Beaker, see https://github.com/puppetlabs/beaker'
9
9
  s.license = 'Apache-2'
10
10
 
11
-
12
11
  s.files = `git ls-files`.split("\n")
13
12
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
14
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
15
- s.require_paths = ["lib"]
13
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
14
+ s.require_paths = ['lib']
16
15
 
17
16
  ## Testing dependencies
18
17
  s.add_development_dependency 'rspec'
@@ -10,7 +10,6 @@ module Beaker::CaCertHelper
10
10
  install_ca_certs_on(hosts)
11
11
  end
12
12
 
13
-
14
13
  ##
15
14
  # Install certs on Windows and OSX Hosts
16
15
  #
@@ -23,7 +22,7 @@ module Beaker::CaCertHelper
23
22
  if host['platform'] =~ /windows/i
24
23
  create_cert_on_host(host, cert_name, ca)
25
24
  add_windows_cert host, cert_name
26
- elsif host['platform'] =~ /solaris/i and host['pe_ver'] and version_is_less(host['pe_ver'], '4.0.0')
25
+ elsif host['platform'] =~ /solaris/i && host['pe_ver'] && version_is_less(host['pe_ver'], '4.0.0')
27
26
  create_cert_on_host(host, cert_name, ca)
28
27
  add_solaris_cert host, cert_name
29
28
  end
@@ -136,8 +135,6 @@ A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y
136
135
 
137
136
  certs
138
137
  end
139
-
140
-
141
138
  end
142
139
 
143
140
  include Beaker::CaCertHelper
@@ -2,22 +2,21 @@ require 'beaker'
2
2
  require 'beaker/ca_cert_helper'
3
3
 
4
4
  module Beaker::PuppetInstallHelper
5
- def run_puppet_install_helper(type_arg=find_install_type,version=find_install_version)
6
- run_puppet_install_helper_on(hosts,type_arg,version)
5
+ def run_puppet_install_helper(type_arg = find_install_type, version = find_install_version)
6
+ run_puppet_install_helper_on(hosts, type_arg, version)
7
7
  end
8
8
 
9
9
  # Takes a host(s) object, install type string, and install version string.
10
10
  # - Type defaults to PE for PE nodes, and foss otherwise.
11
11
  # - Version will default to the latest 3x foss/pe package, depending on type
12
- def run_puppet_install_helper_on(hosts,type_arg=find_install_type,version=find_install_version)
13
-
12
+ def run_puppet_install_helper_on(hosts, type_arg = find_install_type, version = find_install_version)
14
13
  type = type_arg || find_install_type
15
14
 
16
15
  # Short circuit based on rspec-system and beaker variables
17
- if ENV["RS_PROVISION"] == "no" or ENV["BEAKER_provision"] == "no"
16
+ if (ENV['RS_PROVISION'] == 'no') || (ENV['BEAKER_provision'] == 'no')
18
17
  Array(hosts).each do |host|
19
18
  case type
20
- when "pe"
19
+ when 'pe'
21
20
  configure_pe_defaults_on(host)
22
21
  when /foss|agent/
23
22
  configure_foss_defaults_on(host)
@@ -35,48 +34,56 @@ module Beaker::PuppetInstallHelper
35
34
  # PUPPET_INSTALL_TYPE=foss
36
35
  # PUPPET_INSTALL_TYPE=agent
37
36
 
37
+ # For PUPPET_INSTALL_TYPE=agent and using a development version of Puppet Agent
38
+ # PUPPET_AGENT_SHA=18d31fd5ed41abb276398201f84a4347e0fc7092 <-- Required. Long form commit SHA used to build the Puppet Agent
39
+ # PUPPET_AGENT_SUITE_VERSION=1.8.2.350.g18d31fd <-- Optiona. Version string for the Puppet Agent
40
+
38
41
  # Ensure windows 2003 is always set to 32 bit
39
42
  Array(hosts).each do |host|
40
- if host["platform"] =~ /windows-2003/i
41
- host["install_32"] = true
42
- end
43
+ host['install_32'] = true if host['platform'] =~ /windows-2003/i
43
44
  end
44
45
 
45
46
  case type
46
- when "pe"
47
+ when 'pe'
47
48
  # These will skip hosts that are not supported
48
- install_pe_on(Array(hosts),options.merge({"pe_ver" => version}))
49
+ install_pe_on(Array(hosts), options.merge('pe_ver' => version))
49
50
  install_ca_certs_on(Array(hosts))
50
- when "foss"
51
- opts = options.merge({
52
- :version => version,
53
- :default_action => "gem_install",
54
- })
51
+ when 'foss'
52
+ opts = options.merge(version: version,
53
+ default_action: 'gem_install')
55
54
 
56
55
  install_puppet_on(hosts, opts)
57
56
  # XXX install_puppet_on() will only add_aio_defaults_on when the nodeset
58
57
  # type == 'aio', but we don't want to depend on that.
59
- if opts[:version] and not version_is_less(opts[:version], '4.0.0')
58
+ if opts[:version] && !version_is_less(opts[:version], '4.0.0')
60
59
  add_aio_defaults_on(hosts)
61
60
  add_puppet_paths_on(hosts)
62
61
  end
63
62
  Array(hosts).each do |host|
64
- if fact_on(host,"osfamily") != "windows"
65
- on host, "mkdir -p #{host["distmoduledir"]}"
63
+ if fact_on(host, 'osfamily') != 'windows'
64
+ on host, "mkdir -p #{host['distmoduledir']}"
66
65
  # XXX Maybe this can just be removed? What PE/puppet version needs
67
66
  # it?
68
- on host, "touch #{host.puppet["hiera_config"]}"
67
+ on host, "touch #{host.puppet['hiera_config']}"
69
68
  end
70
- if fact_on(host, "operatingsystem") == "Debian"
69
+ if fact_on(host, 'operatingsystem') == 'Debian'
71
70
  on host, "echo 'export PATH=/var/lib/gems/1.8/bin/:${PATH}' >> ~/.bashrc"
72
71
  end
73
- if fact_on(host, "operatingsystem") == "Solaris"
72
+ if fact_on(host, 'operatingsystem') == 'Solaris'
74
73
  on host, "echo 'export PATH=/opt/puppet/bin:/var/ruby/1.8/gem_home/bin:${PATH}' >> ~/.bashrc"
75
74
  end
76
75
  end
77
- when "agent"
78
- # This will fail on hosts that are not supported; use foss and specify a 4.x version instead
79
- install_puppet_agent_on(hosts,options.merge({:version => version}))
76
+ when 'agent'
77
+ if ENV['PUPPET_AGENT_SHA'].nil?
78
+ # This will fail on hosts that are not supported; use foss and specify a 4.x version instead
79
+ install_puppet_agent_on(hosts, options.merge(version: version))
80
+ else
81
+ opts = options.merge(puppet_collection: 'PC1',
82
+ puppet_agent_sha: ENV['PUPPET_AGENT_SHA'],
83
+ puppet_agent_version: ENV['PUPPET_AGENT_SUITE_VERSION'] || ENV['PUPPET_AGENT_SHA'])
84
+ install_puppet_agent_dev_repo_on(hosts, opts)
85
+ end
86
+
80
87
  # XXX install_puppet_agent_on() will only add_aio_defaults_on when the
81
88
  # nodeset type == 'aio', but we don't want to depend on that.
82
89
  add_aio_defaults_on(hosts)
@@ -87,23 +94,15 @@ module Beaker::PuppetInstallHelper
87
94
  end
88
95
 
89
96
  def find_install_type
90
- if type = ENV["PUPPET_INSTALL_TYPE"]
91
- type
92
- elsif default.is_pe?
93
- "pe"
94
- else
95
- "foss"
96
- end
97
+ ENV['PUPPET_INSTALL_TYPE'] || if default.is_pe?
98
+ 'pe'
99
+ else
100
+ 'agent'
101
+ end
97
102
  end
98
103
 
99
104
  def find_install_version
100
- if type = ENV["PUPPET_INSTALL_VERSION"]
101
- type
102
- elsif type = ENV["PUPPET_VERSION"]
103
- type
104
- else
105
- nil
106
- end
105
+ ENV['PUPPET_INSTALL_VERSION'] || ENV['PUPPET_VERSION']
107
106
  end
108
107
  end
109
108
 
@@ -8,16 +8,16 @@ describe 'beaker::ca_cert_helper' do
8
8
  end
9
9
  end
10
10
 
11
-
12
11
  describe 'install_ca_certs_on' do
13
12
  before :each do
14
13
  allow(subject).to receive(:get_cert_hash).and_return(
15
- {'geotrustglobal.pem' => 'my cert string',
16
- 'usertrust-network.pem' => 'my user trust cert'})
14
+ 'geotrustglobal.pem' => 'my cert string',
15
+ 'usertrust-network.pem' => 'my user trust cert'
16
+ )
17
17
  end
18
18
 
19
- it "windows 2003 node" do
20
- w2k3 = {"pe_ver" => "3.8.3", "platform" => 'windows-2003r2-64', 'distmoduledir' => '/dne', 'hieraconf' => '/dne'}
19
+ it 'windows 2003 node' do
20
+ w2k3 = { 'pe_ver' => '3.8.3', 'platform' => 'windows-2003r2-64', 'distmoduledir' => '/dne', 'hieraconf' => '/dne' }
21
21
 
22
22
  expect(subject).to receive(:add_windows_cert).with(w2k3, 'geotrustglobal.pem')
23
23
  expect(subject).to receive(:create_cert_on_host).with(w2k3, 'geotrustglobal.pem', 'my cert string')
@@ -26,8 +26,8 @@ describe 'beaker::ca_cert_helper' do
26
26
  subject.install_ca_certs_on w2k3
27
27
  end
28
28
 
29
- it "solaris 11 node" do
30
- sol = {"pe_ver" => "3.8.3", "platform" => 'solaris-11-x86_64', 'distmoduledir' => '/dne', 'hieraconf' => '/dne'}
29
+ it 'solaris 11 node' do
30
+ sol = { 'pe_ver' => '3.8.3', 'platform' => 'solaris-11-x86_64', 'distmoduledir' => '/dne', 'hieraconf' => '/dne' }
31
31
 
32
32
  expect(subject).to receive(:add_solaris_cert).with(sol, 'geotrustglobal.pem')
33
33
  expect(subject).to receive(:create_cert_on_host).with(sol, 'geotrustglobal.pem', 'my cert string')
@@ -38,24 +38,24 @@ describe 'beaker::ca_cert_helper' do
38
38
  end
39
39
 
40
40
  describe 'add_windows_cert' do
41
- it {
42
- host = {"platform" => 'windows-2003r2-64', 'distmoduledir' => '/dne', 'hieraconf' => '/dne'}
41
+ it do
42
+ host = { 'platform' => 'windows-2003r2-64', 'distmoduledir' => '/dne', 'hieraconf' => '/dne' }
43
43
  expect(subject).to receive(:on).with(host, 'cmd /c certutil -v -addstore Root `cygpath -w geotrustglobal.pem`')
44
44
  subject.add_windows_cert host, 'geotrustglobal.pem'
45
- }
45
+ end
46
46
  end
47
47
 
48
48
  describe 'add_solaris_cert' do
49
- it {
50
- host = {"platform" => 'solaris-11-x86_64', 'distmoduledir' => '/dne', 'hieraconf' => '/dne'}
49
+ it do
50
+ host = { 'platform' => 'solaris-11-x86_64', 'distmoduledir' => '/dne', 'hieraconf' => '/dne' }
51
51
  expect(subject).to receive(:on).with(host, 'echo \'# geotrustglobal.pem\' >> /opt/puppet/ssl/cert.pem')
52
52
  expect(subject).to receive(:on).with(host, 'cat geotrustglobal.pem >> /opt/puppet/ssl/cert.pem')
53
53
  subject.add_solaris_cert host, 'geotrustglobal.pem'
54
- }
54
+ end
55
55
  end
56
56
 
57
57
  describe 'get_cert_hash' do
58
- it 'should contain 3 certs' do
58
+ it 'contains 3 certs' do
59
59
  cert_hash = subject.get_cert_hash
60
60
  expect(cert_hash.length).to equal(3)
61
61
  expect(cert_hash.class).to eq(Hash)
@@ -1,20 +1,20 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe 'beaker::puppet_install_helper' do
3
+ describe 'Beaker::PuppetInstallHelper' do
4
4
  let :subject do
5
5
  Class.new { include Beaker::PuppetInstallHelper }
6
6
  end
7
7
  let :hosts do
8
- foss_host = double(:is_pe? => false)
9
- pe_host = double(:is_pe? => true)
10
- allow(foss_host).to receive(:[]).with("distmoduledir").and_return("/dne")
11
- allow(foss_host).to receive(:[]).with("platform").and_return("Debian")
12
- allow(foss_host).to receive(:[]).with("pe_ver").and_return(nil)
13
- allow(foss_host).to receive(:puppet).and_return({"hiera_config" => "/dne"})
14
- allow(pe_host).to receive(:[]).with("pe_ver").and_return("3.8.3")
15
- allow(pe_host).to receive(:[]).with("distmoduledir").and_return("/dne")
16
- allow(pe_host).to receive(:[]).with("platform").and_return("Debian")
17
- allow(pe_host).to receive(:puppet).and_return({"hiera_config" => "/dne"})
8
+ foss_host = double(is_pe?: false)
9
+ pe_host = double(is_pe?: true)
10
+ allow(foss_host).to receive(:[]).with('distmoduledir').and_return('/dne')
11
+ allow(foss_host).to receive(:[]).with('platform').and_return('Debian')
12
+ allow(foss_host).to receive(:[]).with('pe_ver').and_return(nil)
13
+ allow(foss_host).to receive(:puppet).and_return('hiera_config' => '/dne')
14
+ allow(pe_host).to receive(:[]).with('pe_ver').and_return('3.8.3')
15
+ allow(pe_host).to receive(:[]).with('distmoduledir').and_return('/dne')
16
+ allow(pe_host).to receive(:[]).with('platform').and_return('Debian')
17
+ allow(pe_host).to receive(:puppet).and_return('hiera_config' => '/dne')
18
18
  [foss_host, pe_host]
19
19
  end
20
20
  before :each do
@@ -23,9 +23,11 @@ describe 'beaker::puppet_install_helper' do
23
23
  allow(subject).to receive(:fact_on)
24
24
  end
25
25
  after :each do
26
- ENV.delete("PUPPET_VERSION")
27
- ENV.delete("PUPPET_INSTALL_VERSION")
28
- ENV.delete("PUPPET_INSTALL_TYPE")
26
+ ENV.delete('PUPPET_VERSION')
27
+ ENV.delete('PUPPET_INSTALL_VERSION')
28
+ ENV.delete('PUPPET_INSTALL_TYPE')
29
+ ENV.delete('PUPPET_AGENT_SHA')
30
+ ENV.delete('PUPPET_AGENT_SUITE_VERSION')
29
31
  end
30
32
  describe '#run_puppet_install_helper' do
31
33
  before :each do
@@ -33,97 +35,118 @@ describe 'beaker::puppet_install_helper' do
33
35
  allow(subject).to receive(:default).and_return(hosts[0])
34
36
  end
35
37
  it 'calls run_puppet_install_helper_on on each host' do
36
- expect(subject).to receive(:run_puppet_install_helper_on).with(hosts,"foss",nil)
38
+ expect(subject).to receive(:run_puppet_install_helper_on).with(hosts, 'agent', nil)
37
39
  subject.run_puppet_install_helper
38
40
  end
39
- ["PUPPET_VERSION","PUPPET_INSTALL_VERSION"].each do |version_var|
41
+ %w(PUPPET_VERSION PUPPET_INSTALL_VERSION).each do |version_var|
40
42
  it 'calls run_puppet_install_helper_on on each host with a version ' do
41
- ENV[version_var] = "4.1.0"
42
- expect(subject).to receive(:run_puppet_install_helper_on).with(hosts,"foss","4.1.0")
43
+ ENV[version_var] = '4.1.0'
44
+ expect(subject).to receive(:run_puppet_install_helper_on).with(hosts, 'agent', '4.1.0')
43
45
  subject.run_puppet_install_helper
44
46
  end
45
47
  end
46
48
  end
47
49
  describe '#run_puppet_install_helper_on' do
48
- context "for default" do
49
- it "uses foss by default for non-pe nodes" do
50
+ context 'for default' do
51
+ it 'uses agent by default for non-pe nodes' do
50
52
  expect(subject).to receive(:default).and_return(hosts[0])
51
- expect(subject).to receive(:install_puppet_on).with(hosts,{:version => nil,:default_action => "gem_install"})
53
+ expect(subject).to receive(:add_aio_defaults_on).with(hosts)
54
+ expect(subject).to receive(:add_puppet_paths_on).with(hosts)
55
+ expect(subject).to receive(:install_puppet_agent_on).with(hosts, version: nil)
52
56
  subject.run_puppet_install_helper_on(hosts)
53
57
  end
54
- it "windows 2003 node" do
55
- w2k3 = {"platform" => 'windows-2003r2-64', 'distmoduledir' => '/dne','hieraconf' => '/dne'}
56
- win_hosts = [ w2k3 ]
57
- expect(subject).to receive(:default).and_return(double(:is_pe? => true))
58
- expect(subject).to receive(:install_pe_on).with([w2k3.merge({'install_32' => true})], {"pe_ver" => nil})
58
+ it 'windows 2003 node' do
59
+ w2k3 = { 'platform' => 'windows-2003r2-64', 'distmoduledir' => '/dne', 'hieraconf' => '/dne' }
60
+ win_hosts = [w2k3]
61
+ expect(subject).to receive(:default).and_return(double(is_pe?: true))
62
+ expect(subject).to receive(:install_pe_on).with([w2k3.merge('install_32' => true)], 'pe_ver' => nil)
59
63
  expect(subject).to receive(:create_cert_on_host).exactly(3).times
60
64
  expect(subject).to receive(:add_windows_cert).exactly(3).times
61
65
  subject.run_puppet_install_helper_on(win_hosts)
62
66
  end
63
- it "uses PE by default for PE nodes" do
67
+ it 'uses PE by default for PE nodes' do
64
68
  expect(subject).to receive(:default).and_return(hosts[1])
65
- expect(subject).to receive(:install_pe_on).with(hosts,{"pe_ver" => nil})
69
+ expect(subject).to receive(:install_pe_on).with(hosts, 'pe_ver' => nil)
66
70
  subject.run_puppet_install_helper_on(hosts)
67
71
  end
68
72
  end
69
- context "for foss" do
70
- it "uses foss explicitly" do
71
- ENV["PUPPET_INSTALL_TYPE"] = "foss"
72
- expect(subject).to receive(:install_puppet_on).with(hosts,{:version => nil,:default_action => "gem_install"})
73
+ context 'for foss' do
74
+ it 'uses foss explicitly' do
75
+ ENV['PUPPET_INSTALL_TYPE'] = 'foss'
76
+ expect(subject).to receive(:install_puppet_on).with(hosts, version: nil, default_action: 'gem_install')
73
77
  subject.run_puppet_install_helper_on(hosts)
74
78
  end
75
- ["PUPPET_VERSION","PUPPET_INSTALL_VERSION"].each do |version_var|
76
- it "uses foss with a version" do
77
- ENV["PUPPET_INSTALL_TYPE"] = "foss"
78
- ENV[version_var] = "3.8.1"
79
- expect(subject).to receive(:install_puppet_on).with(hosts,{:version => "3.8.1",:default_action => "gem_install"})
79
+ %w(PUPPET_VERSION PUPPET_INSTALL_VERSION).each do |version_var|
80
+ it 'uses foss with a version' do
81
+ ENV['PUPPET_INSTALL_TYPE'] = 'foss'
82
+ ENV[version_var] = '3.8.1'
83
+ expect(subject).to receive(:install_puppet_on).with(hosts, version: '3.8.1', default_action: 'gem_install')
80
84
  subject.run_puppet_install_helper_on(hosts)
81
85
  end
82
- it "uses foss with a >4 version detects AIO" do
83
- ENV["PUPPET_INSTALL_TYPE"] = "foss"
84
- ENV[version_var] = "4.1.0"
85
- expect(subject).to receive(:install_puppet_on).with(hosts,{:version => "4.1.0",:default_action => "gem_install"})
86
+ it 'uses foss with a >4 version detects AIO' do
87
+ ENV['PUPPET_INSTALL_TYPE'] = 'foss'
88
+ ENV[version_var] = '4.1.0'
89
+ expect(subject).to receive(:install_puppet_on).with(hosts, version: '4.1.0', default_action: 'gem_install')
86
90
  expect(subject).to receive(:add_aio_defaults_on).with(hosts)
87
91
  expect(subject).to receive(:add_puppet_paths_on).with(hosts)
88
92
  subject.run_puppet_install_helper_on(hosts)
89
93
  end
90
94
  end
91
95
  end
92
- context "for PE" do
93
- it "uses PE explicitly" do
94
- ENV["PUPPET_INSTALL_TYPE"] = "pe"
95
- expect(subject).to receive(:install_pe_on).with(hosts,{"pe_ver" => nil})
96
+ context 'for PE' do
97
+ it 'uses PE explicitly' do
98
+ ENV['PUPPET_INSTALL_TYPE'] = 'pe'
99
+ expect(subject).to receive(:install_pe_on).with(hosts, 'pe_ver' => nil)
96
100
  subject.run_puppet_install_helper_on(hosts)
97
101
  end
98
- it "uses PE with a version" do
99
- ENV["PUPPET_INSTALL_TYPE"] = "pe"
100
- ENV["PUPPET_INSTALL_VERSION"] = "3.8.1"
101
- expect(subject).to receive(:install_pe_on).with(hosts,{"pe_ver" => "3.8.1"})
102
+ it 'uses PE with a version' do
103
+ ENV['PUPPET_INSTALL_TYPE'] = 'pe'
104
+ ENV['PUPPET_INSTALL_VERSION'] = '3.8.1'
105
+ expect(subject).to receive(:install_pe_on).with(hosts, 'pe_ver' => '3.8.1')
102
106
  subject.run_puppet_install_helper_on(hosts)
103
107
  end
104
- it "installs certs on PE 3 solaris" do
105
- sol = {"pe_ver" => "3.8.3", "platform" => 'solaris-11-64', 'distmoduledir' => '/dne','hieraconf' => '/dne'}
106
- hosts = [ sol ]
107
- ENV["PUPPET_INSTALL_TYPE"] = "pe"
108
- ENV["PUPPET_INSTALL_VERSION"] = "3.8.1"
109
- expect(subject).to receive(:install_pe_on).with(hosts,{"pe_ver" => "3.8.1"})
108
+ it 'installs certs on PE 3 solaris' do
109
+ sol = { 'pe_ver' => '3.8.3', 'platform' => 'solaris-11-64', 'distmoduledir' => '/dne', 'hieraconf' => '/dne' }
110
+ hosts = [sol]
111
+ ENV['PUPPET_INSTALL_TYPE'] = 'pe'
112
+ ENV['PUPPET_INSTALL_VERSION'] = '3.8.1'
113
+ expect(subject).to receive(:install_pe_on).with(hosts, 'pe_ver' => '3.8.1')
110
114
  expect(subject).to receive(:create_cert_on_host).exactly(3).times
111
115
  expect(subject).to receive(:add_solaris_cert).exactly(3).times
112
116
  subject.run_puppet_install_helper_on(hosts)
113
117
  end
114
118
  end
115
- context "for puppet-agent" do
116
- it "uses agent explicitly" do
117
- ENV["PUPPET_INSTALL_TYPE"] = "agent"
118
- expect(subject).to receive(:install_puppet_agent_on).with(hosts,{:version => nil})
119
+ context 'for puppet-agent' do
120
+ it 'uses agent explicitly' do
121
+ ENV['PUPPET_INSTALL_TYPE'] = 'agent'
122
+ expect(subject).to receive(:install_puppet_agent_on).with(hosts, version: nil)
123
+ expect(subject).to receive(:add_aio_defaults_on).with(hosts)
124
+ expect(subject).to receive(:add_puppet_paths_on).with(hosts)
125
+ subject.run_puppet_install_helper_on(hosts)
126
+ end
127
+ it 'uses foss with a version' do
128
+ ENV['PUPPET_INSTALL_TYPE'] = 'agent'
129
+ ENV['PUPPET_INSTALL_VERSION'] = '1.1.0'
130
+ expect(subject).to receive(:install_puppet_agent_on).with(hosts, version: '1.1.0')
131
+ expect(subject).to receive(:add_aio_defaults_on).with(hosts)
132
+ expect(subject).to receive(:add_puppet_paths_on).with(hosts)
133
+ subject.run_puppet_install_helper_on(hosts)
134
+ end
135
+ end
136
+ context 'for puppet-agent development repo' do
137
+ before :each do
138
+ ENV['PUPPET_INSTALL_TYPE'] = 'agent'
139
+ ENV['PUPPET_AGENT_SHA'] = 'abc123'
140
+ end
141
+ it 'uses a development repo' do
142
+ expect(subject).to receive(:install_puppet_agent_dev_repo_on).with(hosts, puppet_collection: 'PC1', puppet_agent_sha: 'abc123', puppet_agent_version: 'abc123')
119
143
  expect(subject).to receive(:add_aio_defaults_on).with(hosts)
120
144
  expect(subject).to receive(:add_puppet_paths_on).with(hosts)
121
145
  subject.run_puppet_install_helper_on(hosts)
122
146
  end
123
- it "uses foss with a version" do
124
- ENV["PUPPET_INSTALL_TYPE"] = "agent"
125
- ENV["PUPPET_INSTALL_VERSION"] = "1.1.0"
126
- expect(subject).to receive(:install_puppet_agent_on).with(hosts,{:version => "1.1.0"})
147
+ it 'uses a development repo with suite version' do
148
+ ENV['PUPPET_AGENT_SUITE_VERSION'] = '1.0.0.0.gabc123'
149
+ expect(subject).to receive(:install_puppet_agent_dev_repo_on).with(hosts, puppet_collection: 'PC1', puppet_agent_sha: 'abc123', puppet_agent_version: '1.0.0.0.gabc123')
127
150
  expect(subject).to receive(:add_aio_defaults_on).with(hosts)
128
151
  expect(subject).to receive(:add_puppet_paths_on).with(hosts)
129
152
  subject.run_puppet_install_helper_on(hosts)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaker-puppet_install_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppetlabs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-28 00:00:00.000000000 Z
11
+ date: 2017-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -38,19 +38,23 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.0'
41
- description: Puppet install helper for Beaker, see https://github.com/puppetlabs/beaker
41
+ description: Provides a unified external interface to choosing which version of puppet
42
+ to install on the systems under test. For details on Beaker, see https://github.com/puppetlabs/beaker
42
43
  email:
43
- - hunter@puppetlabs.com
44
+ - hunter@puppet.com
44
45
  executables: []
45
46
  extensions: []
46
47
  extra_rdoc_files: []
47
48
  files:
48
49
  - ".gitignore"
49
50
  - ".travis.yml"
51
+ - CHANGELOG.md
50
52
  - CONTRIBUTING.md
51
53
  - Gemfile
52
54
  - LICENSE
55
+ - MAINTAINERS
53
56
  - README.md
57
+ - Rakefile
54
58
  - beaker-puppet_install_helper.gemspec
55
59
  - lib/beaker/ca_cert_helper.rb
56
60
  - lib/beaker/puppet_install_helper.rb