beaker-pe 1.13.0 → 1.14.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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YTA2MWQxYmE4MDE4M2E3MzdjNzkzZWQwODc2ODRlMzJmOTFhOTE5OQ==
4
+ MTE4ODY4OWQzNDM5ZDEyNzVmMjY4ZTIwMzkwZjE4NjYxYTY2ZmQ3Yw==
5
5
  data.tar.gz: !binary |-
6
- MDU5OTkyNTgzODI1MTFjM2Q1OGYyMGMyZWQ2ZTE2NjQxNGM0MTdlZg==
6
+ ZjUxMGNlNmEyNGYxZDQ1ZWJmMzVkOWIzNGJlZTI0M2Q1ODU3MmFmOA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OTZmNzgyMmMzY2ExZmRhZTE4NzAyMGZmNDU1NWMwMzhmY2RiYjNkNzcxNWI0
10
- OTc2YjY2ZTU1NmI1NGJjYjJiOTRjMzQ4NTY1MjQyZDQ3YzFmOWE4ZDIzNDI3
11
- MWIzOWI2NDkyM2ZhOGQwNmUzNDA0ZjFkZjViYjg5NzM5OWUwY2Q=
9
+ ZDhiZTQ1NThmMTQwYjlkOGVmNTM2MTdjZWFjNDQwNjEzZTUxYWY3ZmIwYzY2
10
+ ZGU2NmQ1YTc4MGIxZTgxZTNjNzZhOWZiNTNlOThjZTVmYjQzYmE1MjVkOTA4
11
+ Zjc0ZDBiYzAwNTUwZmFlYjgwNWNkZTMyNzQ1YTI1OWJjODllYzI=
12
12
  data.tar.gz: !binary |-
13
- MjkyZjI3MWFjOTczOTZlNjA3OTI4MTNhMmFkODQyMmJhOTZlNDM0ZDE5YTEw
14
- MWU3ZDAzYjg2ZGEyYTk2ZWI1ZWMxMmY1YjRkZTE4YzA0MjFiMDc1MDkxYjlk
15
- M2EwNzM4YTNjMjNiNzk5MDk3ZDAzZDAxZTFjZGQyYjAxN2IwZWE=
13
+ ZTkyMWZlYTNmNDJiNWQ1OTkyZTVhMDJmNmNmMjBmZjE4NmMzODhkNTA2ODUx
14
+ OGQ3MzJmZDE0OTJhNjg4ZWVhYjM3MTFjZWFmOTFhYmUxMTkzM2RkMTZmNzcz
15
+ ODBkNTdjMjViZjc2YmQzNzdjMmU1ZmExZTg3MTAxYTBjNGQ0YWU=
data/HISTORY.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # worker - History
2
2
  ## Tags
3
- * [LATEST - 6 Apr, 2017 (197a55dd)](#LATEST)
3
+ * [LATEST - 10 May, 2017 (588c5ca5)](#LATEST)
4
+ * [1.13.0 - 6 Apr, 2017 (a3c5d641)](#1.13.0)
4
5
  * [1.12.1 - 29 Mar, 2017 (fe8bbc82)](#1.12.1)
5
6
  * [1.12.0 - 23 Mar, 2017 (0784adc6)](#1.12.0)
6
7
  * [1.11.0 - 23 Mar, 2017 (6c3b0067)](#1.11.0)
@@ -36,7 +37,85 @@
36
37
  * [0.1.0 - 29 Feb, 2016 (4fc88d8c)](#0.1.0)
37
38
 
38
39
  ## Details
39
- ### <a name = "LATEST">LATEST - 6 Apr, 2017 (197a55dd)
40
+ ### <a name = "LATEST">LATEST - 10 May, 2017 (588c5ca5)
41
+
42
+ * (GEM) update beaker-pe version to 1.14.0 (588c5ca5)
43
+
44
+ * Merge pull request #69 from nicklewis/properly-install-pe-client-tools-from-tag (e162d8ed)
45
+
46
+
47
+ ```
48
+ Merge pull request #69 from nicklewis/properly-install-pe-client-tools-from-tag
49
+
50
+ (maint) Properly install pe-client-tools when using a tag version
51
+ ```
52
+ * (maint) Properly install pe-client-tools when using a tag version (8b8e5366)
53
+
54
+
55
+ ```
56
+ (maint) Properly install pe-client-tools when using a tag version
57
+
58
+ Previously, installing pe-client-tools with a tag version would fail on
59
+ Windows/OS X and install the wrong package on Linux.
60
+
61
+ When installing pe-client-tools, we provide two options:
62
+ - pe_client_tools_sha: the commit SHA of the version to install
63
+ - pe_client_tools_version: the `git describe` of the version to install
64
+
65
+ pe_client_tools_version is always the name of the package to install.
66
+ But the *location* of the package differs based on whether the package
67
+ version corresponds to a tag or not. When the package isn't a tag
68
+ version, it's located in a directory named based on the SHA. But when it
69
+ is a tag version, it's located in a directory named after the tag.
70
+
71
+ When pe_client_tools_version was specified as a tag, we would look in
72
+ the directory named after the SHA (which was actually from a *previous*
73
+ build of the package, from before it was tagged) for a file named after
74
+ the tag. That file would never be there, since we had a mismatch of
75
+ directory and filename. For Windows and OS X, this caused a failure to
76
+ install, because they need to know the exact filename.
77
+
78
+ This case incidentally *worked* (or appeared to work) on Linux
79
+ platforms, because they never actually refer to the package by
80
+ filename. Instead, they install the package by setting up a repo config,
81
+ which *is* always named after pe_client_tools_sha, and never
82
+ pe_client_tools_version. In that case, the Linux platforms would
83
+ actually install the previous version of the package by SHA, from before
84
+ it had been tagged.
85
+
86
+ We now properly handle the case where pe_client_tools_version is a tag,
87
+ by using that version as the location of the file in addition to the
88
+ filename.
89
+ ```
90
+ * Merge pull request #66 from cthorn42/main/master/PE-20086_msi_install_method_for_2016.5.(0|1)_if_windows2008r2 (a77cf5bf)
91
+
92
+
93
+ ```
94
+ Merge pull request #66 from cthorn42/main/master/PE-20086_msi_install_method_for_2016.5.(0|1)_if_windows2008r2
95
+
96
+ (PE-20086) PE 2016.5.(0|1) should install via msi method if windows2008r2
97
+ ```
98
+ * (PE-20086) PE 2016.5.(0|1) should install via msi method for windows2008r2 (738e6f52)
99
+
100
+
101
+ ```
102
+ (PE-20086) PE 2016.5.(0|1) should install via msi method for windows2008r2
103
+
104
+ Due to the timing of our LTS releases and our new major branches, PE 2016.5.0 and
105
+ PE 2016.5.1 did not get the windows2008r2 powershell fix that was done in PE-18351.
106
+ This means we need to not attempt to install fricitonlessly if it is pe 2016.5.(0|1)
107
+ if the agent platform is windows2008r2.
108
+ This PR adjust the install_via_msi? method and refactors the logic in there to clean
109
+ it up a bit (it is getting tough to easily read).
110
+ It breaks the method down to three lines:
111
+ 1. If the agent is older then PE 2016.4.0.
112
+ 2. If the agent is windows2008r2 and is less then 2016.4.3
113
+ 3. If the agent is windows2008r2 and the agent version is between 2016.4.99 and 2016.5.99.
114
+ If any of those are true then the MSI method should be used to install the agent.
115
+ ```
116
+ ### <a name = "1.13.0">1.13.0 - 6 Apr, 2017 (a3c5d641)
117
+
118
+ * (HISTORY) update beaker-pe history for gem release 1.13.0 (a3c5d641)
40
119
 
41
120
  * (GEM) update beaker-pe version to 1.13.0 (197a55dd)
42
121
 
@@ -759,13 +759,16 @@ module Beaker
759
759
  Beaker::DSL::InstallUtils::FeatureFlags.new(opts).flag?(flag)
760
760
  end
761
761
 
762
+ # @deprecated the !version_is_less(host['pe_ver'], '3.99') can be removed once we no longer support pre 2015.2.0 PE versions
762
763
  # Check if windows host is able to frictionlessly install puppet
763
764
  # @param [Beaker::Host] host that we are checking if it is possible to install frictionlessly to
764
765
  # @return [Boolean] true if frictionless is supported and not affected by known bugs
765
766
  def install_via_msi?(host)
766
767
  #windows agents from 4.0 -> 2016.1.2 were only installable via the aio method
767
- #powershell2 bug was fixed in PE 2016.4.3
768
- (host['platform'] =~ /windows/ && (version_is_less(host['pe_ver'], '2016.4.0') && !version_is_less(host['pe_ver'], '3.99'))) || (host['platform'] =~ /windows-2008r2/ && (version_is_less(host['pe_ver'], '2016.4.3') && !version_is_less(host['pe_ver'], '3.99')))
768
+ #powershell2 bug was fixed in PE 2016.4.3, and PE 2017.1.0, but not 2016.5.z.
769
+ (host['platform'] =~ /windows/ && (version_is_less(host['pe_ver'], '2016.4.0') && !version_is_less(host['pe_ver'], '3.99'))) ||
770
+ (host['platform'] =~ /windows-2008r2/ && (version_is_less(host['pe_ver'], '2016.4.3') && !version_is_less(host['pe_ver'], '3.99'))) ||
771
+ (host['platform'] =~ /windows-2008r2/ && (!version_is_less(host['pe_ver'], '2016.4.99') && version_is_less(host['pe_ver'], '2016.5.99') && !version_is_less(host['pe_ver'], '3.99')))
769
772
  end
770
773
 
771
774
  # True if version is greater than or equal to MEEP_CLASSIFICATION_VERSION
@@ -17,14 +17,22 @@ module Beaker
17
17
  block_on hosts do |host|
18
18
  variant, version, arch, codename = host['platform'].to_array
19
19
  package_name = ''
20
+ # If we're installing a tagged version, then the package will be
21
+ # located in a directory named after the tag. Otherwise, look for
22
+ # it by SHA.
23
+ if opts[:pe_client_tools_version] =~ /^\d+(\.\d+)+$/
24
+ directory = opts[:pe_client_tools_version]
25
+ else
26
+ directory = opts[:pe_client_tools_sha]
27
+ end
20
28
  case host['platform']
21
29
  when /win/
22
30
  package_name << product
23
- release_path = "#{opts[:dev_builds_url]}/#{product}/#{ opts[:pe_client_tools_sha] }/artifacts/#{variant}"
31
+ release_path = "#{opts[:dev_builds_url]}/#{product}/#{directory}/artifacts/#{variant}"
24
32
  package_name << "-#{opts[:pe_client_tools_version]}-x#{arch}.msi"
25
33
  generic_install_msi_on(host, File.join(release_path, package_name), {}, {:debug => true})
26
34
  when /osx/
27
- release_path = "#{opts[:dev_builds_url]}/#{product}/#{ opts[:pe_client_tools_sha] }/artifacts/apple/#{version}/#{opts[:puppet_collection]}/#{arch}"
35
+ release_path = "#{opts[:dev_builds_url]}/#{product}/#{directory}/artifacts/apple/#{version}/#{opts[:puppet_collection]}/#{arch}"
28
36
  package_base = product.dup
29
37
  package_base << "-#{opts[:pe_client_tools_version]}"
30
38
  package_name = package_base.dup
@@ -36,7 +44,7 @@ module Beaker
36
44
  scp_to host, File.join(copy_dir_local, package_name), host.external_copy_base
37
45
  host.generic_install_dmg(package_name, package_base, installer)
38
46
  else
39
- install_dev_repos_on(product, host, opts[:pe_client_tools_sha], '/tmp/repo_configs',{:dev_builds_url => opts[:dev_builds_url]})
47
+ install_dev_repos_on(product, host, directory, '/tmp/repo_configs',{:dev_builds_url => opts[:dev_builds_url]})
40
48
  host.install_package('pe-client-tools')
41
49
  end
42
50
  end
@@ -3,7 +3,7 @@ module Beaker
3
3
  module PE
4
4
 
5
5
  module Version
6
- STRING = '1.13.0'
6
+ STRING = '1.14.0'
7
7
  end
8
8
 
9
9
  end
@@ -285,6 +285,22 @@ describe ClassMixedWithDSLInstallUtils do
285
285
  expect(subject.install_via_msi?(the_host)).to eq(false)
286
286
  end
287
287
 
288
+ it 'returns true if pe_version is 2016.5.1 and platform is windows-2008r2 bug' do
289
+ the_host = winhost.dup
290
+ the_host['roles'] = ['frictionless']
291
+ the_host['platform'] = 'windows-2008r2'
292
+ the_host['pe_ver'] = '2016.5.1'
293
+ expect(subject.install_via_msi?(the_host)).to eq(true)
294
+ end
295
+
296
+ it 'returns false if pe_version is 2017.1.0 and platform is windows-2008r2 bug' do
297
+ the_host = winhost.dup
298
+ the_host['roles'] = ['frictionless']
299
+ the_host['platform'] = 'windows-2008r2'
300
+ the_host['pe_ver'] = '2017.1.0'
301
+ expect(subject.install_via_msi?(the_host)).to eq(false)
302
+ end
303
+
288
304
  end
289
305
 
290
306
  describe 'higgs installer' do
@@ -10,14 +10,20 @@ describe ClassPEClientToolsMixedWithPatterns do
10
10
  let(:hosts) do
11
11
  make_hosts({:platform => platform })
12
12
  end
13
- opts = {
14
- :puppet_collection => 'PC1',
15
- :pe_client_tools_sha => '12345',
16
- :pe_client_tools_version => '1.0.0-g12345'
17
- }
13
+ let(:opts) do
14
+ {:puppet_collection => 'PC1',
15
+ :pe_client_tools_sha => '12345',
16
+ :pe_client_tools_version => '1.0.0-g12345'}
17
+ end
18
+
19
+ let(:tag_opts) do
20
+ {:puppet_collection => 'PC1',
21
+ :pe_client_tools_sha => '56789',
22
+ :pe_client_tools_version => '1.0.0'}
23
+ end
18
24
 
19
25
  before do
20
- allow(subject). to receive(:scp_to)
26
+ allow(subject).to receive(:scp_to)
21
27
  end
22
28
 
23
29
  context 'on el-6' do
@@ -25,11 +31,20 @@ describe ClassPEClientToolsMixedWithPatterns do
25
31
  it 'installs' do
26
32
  hosts.each do |host|
27
33
  allow(subject). to receive(:fetch_http_file).with("http://builds.delivery.puppetlabs.net/pe-client-tools/#{opts[:pe_client_tools_sha]}/repo_configs/rpm/", "pl-pe-client-tools-#{opts[:pe_client_tools_sha]}-el-6-x86_64.repo", "/tmp/repo_configs/el-6-x86_64")
28
- allow(host). to receive(:external_copy_base)
29
34
  expect(host).to receive(:install_package).with("pe-client-tools")
35
+
30
36
  subject.install_pe_client_tools_on(host, opts)
31
37
  end
32
38
  end
39
+
40
+ it 'installs tag versions correctly' do
41
+ hosts.each do |host|
42
+ allow(subject). to receive(:fetch_http_file).with("http://builds.delivery.puppetlabs.net/pe-client-tools/#{tag_opts[:pe_client_tools_version]}/repo_configs/rpm/", "pl-pe-client-tools-#{tag_opts[:pe_client_tools_version]}-el-6-x86_64.repo", "/tmp/repo_configs/el-6-x86_64")
43
+ expect(host).to receive(:install_package).with("pe-client-tools")
44
+
45
+ subject.install_pe_client_tools_on(host, tag_opts)
46
+ end
47
+ end
33
48
  end
34
49
 
35
50
  context 'on ubuntu' do
@@ -37,20 +52,28 @@ describe ClassPEClientToolsMixedWithPatterns do
37
52
  it 'installs' do
38
53
  hosts.each do |host|
39
54
  allow(subject). to receive(:fetch_http_file).with("http://builds.delivery.puppetlabs.net/pe-client-tools/#{opts[:pe_client_tools_sha]}/repo_configs/deb/", "pl-pe-client-tools-#{opts[:pe_client_tools_sha]}-xenial.list", "/tmp/repo_configs/ubuntu-xenial-x86_64")
40
- allow(host). to receive(:external_copy_base)
41
55
  expect(subject).to receive(:on).with(host, 'apt-get update')
42
56
  expect(host).to receive(:install_package).with('pe-client-tools')
57
+
43
58
  subject.install_pe_client_tools_on(host, opts)
44
59
  end
45
60
  end
61
+
62
+ it 'installs tag versions correctly' do
63
+ hosts.each do |host|
64
+ allow(subject). to receive(:fetch_http_file).with("http://builds.delivery.puppetlabs.net/pe-client-tools/#{tag_opts[:pe_client_tools_version]}/repo_configs/deb/", "pl-pe-client-tools-#{tag_opts[:pe_client_tools_version]}-xenial.list", "/tmp/repo_configs/ubuntu-xenial-x86_64")
65
+ expect(subject).to receive(:on).with(host, 'apt-get update')
66
+ expect(host).to receive(:install_package).with('pe-client-tools')
67
+
68
+ subject.install_pe_client_tools_on(host, tag_opts)
69
+ end
70
+ end
46
71
  end
47
72
 
48
73
  context 'on windows' do
49
74
  let(:platform) { Beaker::Platform.new('windows-2012r2-x86_64') }
50
75
  it 'installs' do
51
76
  hosts.each do |host|
52
- allow(subject). to receive(:fetch_http_file).with("http://builds.delivery.puppetlabs.net/pe-client-tools/#{opts[:pe_client_tools_sha]}/artifacts/deb/xenial/PC1", "pe-client-tools_#{opts[:pe_client_tools_version]}-1xenial_x86_64.deb", "tmp/repo_configs")
53
- allow(host). to receive(:external_copy_base)
54
77
  expect(subject).to receive(:generic_install_msi_on).with( host,
55
78
  "http://builds.delivery.puppetlabs.net/pe-client-tools/#{opts[:pe_client_tools_sha]}/artifacts/windows/pe-client-tools-#{opts[:pe_client_tools_version]}-xx86_64.msi",
56
79
  {},
@@ -59,18 +82,39 @@ describe ClassPEClientToolsMixedWithPatterns do
59
82
  subject.install_pe_client_tools_on(host, opts)
60
83
  end
61
84
  end
85
+
86
+ it 'installs tag versions correctly' do
87
+ hosts.each do |host|
88
+ expect(subject).to receive(:generic_install_msi_on).with( host,
89
+ "http://builds.delivery.puppetlabs.net/pe-client-tools/#{tag_opts[:pe_client_tools_version]}/artifacts/windows/pe-client-tools-#{tag_opts[:pe_client_tools_version]}-xx86_64.msi",
90
+ {},
91
+ { :debug => true }
92
+ )
93
+ subject.install_pe_client_tools_on(host, tag_opts)
94
+ end
95
+ end
62
96
  end
63
97
 
64
98
  context 'on OS X' do
65
99
  let(:platform) { Beaker::Platform.new('osx-1111-x86_64') }
66
100
  it 'installs' do
67
101
  hosts.each do |host|
68
- allow(subject). to receive(:fetch_http_file).with("http://builds.delivery.puppetlabs.net/pe-client-tools/#{opts[:pe_client_tools_sha]}/artifacts/apple/1111/PC1/x86_64", "pe-client-tools-#{opts[:pe_client_tools_version]}-1.osx1111.dmg", "tmp/repo_configs")
69
- allow(host). to receive(:external_copy_base)
102
+ allow(subject).to receive(:fetch_http_file).with("http://builds.delivery.puppetlabs.net/pe-client-tools/#{opts[:pe_client_tools_sha]}/artifacts/apple/1111/PC1/x86_64", "pe-client-tools-#{opts[:pe_client_tools_version]}-1.osx1111.dmg", "tmp/repo_configs")
103
+ allow(host).to receive(:external_copy_base)
70
104
  expect(host).to receive(:generic_install_dmg).with("pe-client-tools-#{opts[:pe_client_tools_version]}-1.osx1111.dmg", "pe-client-tools-#{opts[:pe_client_tools_version]}", "pe-client-tools-#{opts[:pe_client_tools_version]}-1-installer.pkg")
71
105
  subject.install_pe_client_tools_on(host, opts)
72
106
  end
73
107
  end
108
+
109
+ it 'installs tag versions correctly' do
110
+ hosts.each do |host|
111
+ allow(subject).to receive(:fetch_http_file).with("http://builds.delivery.puppetlabs.net/pe-client-tools/#{tag_opts[:pe_client_tools_version]}/artifacts/apple/1111/PC1/x86_64", "pe-client-tools-#{tag_opts[:pe_client_tools_version]}-1.osx1111.dmg", "tmp/repo_configs")
112
+ allow(host).to receive(:external_copy_base)
113
+ expect(host).to receive(:generic_install_dmg).with("pe-client-tools-#{tag_opts[:pe_client_tools_version]}-1.osx1111.dmg", "pe-client-tools-#{tag_opts[:pe_client_tools_version]}", "pe-client-tools-#{tag_opts[:pe_client_tools_version]}-1-installer.pkg")
114
+
115
+ subject.install_pe_client_tools_on(host, tag_opts)
116
+ end
117
+ end
74
118
  end
75
119
 
76
120
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaker-pe
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.0
4
+ version: 1.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppetlabs
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-06 00:00:00.000000000 Z
11
+ date: 2017-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec