beaker-puppet_install_helper 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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