simp-rake-helpers 5.6.2 → 5.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/simp/packer/iso_vars_json.rb +87 -0
- data/lib/simp/rake/build/auto.rb +6 -31
- data/lib/simp/rake/helpers/assets/rpm_spec/simp6.spec +36 -8
- data/lib/simp/rake/helpers/assets/rpm_spec/simpdefault.spec +36 -8
- data/lib/simp/rake/helpers/version.rb +1 -1
- data/spec/acceptance/00_pkg_rpm_custom_scriptlets_spec.rb +19 -3
- data/spec/acceptance/10_pkg_rpm_spec.rb +52 -8
- data/spec/acceptance/20_pkg_rpm_upgrade_spec.rb +223 -0
- data/spec/acceptance/files/mock_packages/simp-adapter/usr/local/sbin/simp_rpm_helper +334 -245
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/CHANGELOG +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/Rakefile +3 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/build/rpm_metadata/requires +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/CentOS.yaml +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/RedHat.yaml +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/hiera.yaml +14 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/manifests/init.pp +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/metadata.json +37 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/CHANGELOG +5 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/Rakefile +3 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/build/rpm_metadata/requires +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/CentOS.yaml +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/RedHat.yaml +2 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/hiera.yaml +14 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/manifests/init.pp +3 -0
- data/spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/metadata.json +37 -0
- data/spec/acceptance/nodesets/default.yml +7 -8
- data/spec/acceptance/support/pkg_rpm_helpers.rb +2 -2
- data/spec/lib/simp/packer/iso_vars_json_spec.rb +65 -0
- metadata +29 -5
- data/spec/acceptance/20_pkg_rpm_safely_upgrading_obsolete_modules_spec.rb +0 -175
@@ -0,0 +1,37 @@
|
|
1
|
+
{
|
2
|
+
"name": "simp-testpackage",
|
3
|
+
"version": "1.0.0",
|
4
|
+
"author": "simp",
|
5
|
+
"summary": "A SIMP Test Package for Testing Test Things",
|
6
|
+
"license": "Apache-2.0",
|
7
|
+
"source": "https://github.com/simp/pupmod-imatest",
|
8
|
+
"project_page": "https://github.com/simp/pupmod-imatest",
|
9
|
+
"issues_url": "https://simp/project.atlassian.net",
|
10
|
+
"tags": [ "simp", "test"],
|
11
|
+
"dependencies": [
|
12
|
+
{
|
13
|
+
"name": "puppetlabs/stdlib",
|
14
|
+
"version_requirement": ">= 1.1.0"
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"name": "simp/simplib",
|
18
|
+
"version_requirement": ">= 1.1.0"
|
19
|
+
}
|
20
|
+
],
|
21
|
+
"operatingsystem_support": [
|
22
|
+
{
|
23
|
+
"operatingsystem": "CentOS",
|
24
|
+
"operatingsystemrelease": [
|
25
|
+
"6",
|
26
|
+
"7"
|
27
|
+
]
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"operatingsystem": "RedHat",
|
31
|
+
"operatingsystemrelease": [
|
32
|
+
"6",
|
33
|
+
"7"
|
34
|
+
]
|
35
|
+
}
|
36
|
+
]
|
37
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
{
|
2
|
+
"name": "simp-testpackage",
|
3
|
+
"version": "2.0.0",
|
4
|
+
"author": "simp",
|
5
|
+
"summary": "A SIMP Test Package for Testing Test Things",
|
6
|
+
"license": "Apache-2.0",
|
7
|
+
"source": "https://github.com/simp/pupmod-imatest",
|
8
|
+
"project_page": "https://github.com/simp/pupmod-imatest",
|
9
|
+
"issues_url": "https://simp/project.atlassian.net",
|
10
|
+
"tags": [ "simp", "test"],
|
11
|
+
"dependencies": [
|
12
|
+
{
|
13
|
+
"name": "puppetlabs/stdlib",
|
14
|
+
"version_requirement": ">= 1.1.0"
|
15
|
+
},
|
16
|
+
{
|
17
|
+
"name": "simp/simplib",
|
18
|
+
"version_requirement": ">= 1.1.0"
|
19
|
+
}
|
20
|
+
],
|
21
|
+
"operatingsystem_support": [
|
22
|
+
{
|
23
|
+
"operatingsystem": "CentOS",
|
24
|
+
"operatingsystemrelease": [
|
25
|
+
"6",
|
26
|
+
"7"
|
27
|
+
]
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"operatingsystem": "RedHat",
|
31
|
+
"operatingsystemrelease": [
|
32
|
+
"6",
|
33
|
+
"7"
|
34
|
+
]
|
35
|
+
}
|
36
|
+
]
|
37
|
+
}
|
@@ -18,10 +18,10 @@ HOSTS:
|
|
18
18
|
- 'yum install -y rpm-build augeas-devel createrepo genisoimage git gnupg2 libicu-devel libxml2 libxml2-devel libxslt libxslt-devel rpmdevtools which'
|
19
19
|
# rvm build-deps
|
20
20
|
- 'yum install -y libyaml-devel glibc-headers autoconf gcc-c++ glibc-devel readline-devel libffi-devel openssl-devel automake libtool bison sqlite-devel'
|
21
|
-
- 'runuser build_user -l -c "gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys
|
21
|
+
- 'runuser build_user -l -c "{ gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3; } || { gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 7D2BAF1CF37B13E2069D6956105BD0E739499BDB || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 7D2BAF1CF37B13E2069D6956105BD0E739499BDB ; }"'
|
22
22
|
- 'runuser build_user -l -c "curl -sSL https://get.rvm.io | bash -s stable"'
|
23
|
-
- 'runuser build_user -l -c "rvm install 2.
|
24
|
-
- 'runuser build_user -l -c "rvm use --default 2.
|
23
|
+
- 'runuser build_user -l -c "rvm install 2.4"'
|
24
|
+
- 'runuser build_user -l -c "rvm use --default 2.4"'
|
25
25
|
- 'runuser build_user -l -c "rvm all do gem install bundler"'
|
26
26
|
mount_folders:
|
27
27
|
folder1:
|
@@ -47,11 +47,10 @@ HOSTS:
|
|
47
47
|
- 'yum install -y rpm-build augeas-devel createrepo genisoimage git gnupg2 libicu-devel libxml2 libxml2-devel libxslt libxslt-devel rpmdevtools clamav-update which'
|
48
48
|
# rvm build-deps
|
49
49
|
- 'yum install -y libyaml-devel glibc-headers autoconf gcc-c++ glibc-devel readline-devel libffi-devel openssl-devel automake libtool bison sqlite-devel'
|
50
|
-
- 'runuser build_user -l -c "gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys
|
51
|
-
- 'runuser build_user -l -c "gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3"'
|
50
|
+
- 'runuser build_user -l -c "{ gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3; } || { gpg2 --keyserver hkp://pgp.mit.edu --recv-keys 7D2BAF1CF37B13E2069D6956105BD0E739499BDB || gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 7D2BAF1CF37B13E2069D6956105BD0E739499BDB ; }"'
|
52
51
|
- 'runuser build_user -l -c "curl -sSL https://get.rvm.io | bash -s stable"'
|
53
|
-
- 'runuser build_user -l -c "rvm install 2.
|
54
|
-
- 'runuser build_user -l -c "rvm use --default 2.
|
52
|
+
- 'runuser build_user -l -c "rvm install 2.4"'
|
53
|
+
- 'runuser build_user -l -c "rvm use --default 2.4"'
|
55
54
|
- 'runuser build_user -l -c "rvm all do gem install bundler"'
|
56
55
|
- 'yum install -y rpm-sign'
|
57
56
|
mount_folders:
|
@@ -66,4 +65,4 @@ HOSTS:
|
|
66
65
|
|
67
66
|
CONFIG:
|
68
67
|
log_level: verbose
|
69
|
-
type:
|
68
|
+
type: aio
|
@@ -29,7 +29,7 @@ module Simp::BeakerHelpers::SimpRakeHelpers::PkgRpmHelpers
|
|
29
29
|
'postinstall' => 'post',
|
30
30
|
'preuninstall' => 'preun',
|
31
31
|
'postuninstall' => 'postun',
|
32
|
-
'posttrans' =>
|
32
|
+
'posttrans' => 'posttrans',
|
33
33
|
}
|
34
34
|
end
|
35
35
|
|
@@ -37,7 +37,7 @@ module Simp::BeakerHelpers::SimpRakeHelpers::PkgRpmHelpers
|
|
37
37
|
# returns a Hash of information about an RPM file's scriptlets
|
38
38
|
def rpm_scriptlets_for( host, rpm_file )
|
39
39
|
_labels = scriptlet_label_map.keys.join('|')
|
40
|
-
rx_scriptlet_blocks = /^(?<block>(?<scriptlet>#{_labels}) scriptlet.*?(\r|\n)(?<content>.*?))(?=\n#{_labels}|\Z)/m
|
40
|
+
rx_scriptlet_blocks = /^(?<block>(?<scriptlet>#{_labels}) scriptlet.*?(\r|\n)(?<content>.*?))(?=\n(#{_labels}) scriptlet|\Z)/m
|
41
41
|
|
42
42
|
result = on host, %Q(rpm -qp --scripts #{rpm_file})
|
43
43
|
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'simp/packer/iso_vars_json'
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'tmpdir'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
describe Simp::Packer::IsoVarsJson do
|
7
|
+
DUMMY_CONTENT = 'Dummy text with known checksum'.freeze
|
8
|
+
DUMMY_CHECKSUM = 'bd6eae40b2b18359f33332dd5b1a3dd5c9e885240c3d4907d6a1208cdafa0003'.freeze
|
9
|
+
|
10
|
+
before do
|
11
|
+
@tmp_dir = Dir.mktmpdir(File.basename(__FILE__))
|
12
|
+
@iso = File.expand_path('fixture.iso', @tmp_dir)
|
13
|
+
File.open(@iso, 'w') { |f| f.puts DUMMY_CONTENT }
|
14
|
+
target_release = '6.3.0-Beta1'
|
15
|
+
target_data = {
|
16
|
+
'isos' => ['/path/to/CentOS-6.10-x86_64-bin-DVD1.iso', '/path/to/CentOS-6.10-x86_64-bin-DVD2.iso'],
|
17
|
+
'build_command' => "bundle exec rake build:auto[/path/to,#{target_release}]",
|
18
|
+
'os_version' => '6.10',
|
19
|
+
'flavor' => 'CentOS'
|
20
|
+
}
|
21
|
+
@var_json = described_class.new(@iso, target_release, target_data, :silent => true)
|
22
|
+
end
|
23
|
+
|
24
|
+
after do
|
25
|
+
FileUtils.remove_entry_secure @tmp_dir
|
26
|
+
end
|
27
|
+
|
28
|
+
let(:expected_checksum) { DUMMY_CHECKSUM }
|
29
|
+
|
30
|
+
describe '#data' do
|
31
|
+
it 'returns expected information for v1.0.0 format' do
|
32
|
+
expect(@var_json.data).to include(
|
33
|
+
'simp_vars_version' => '1.0.0',
|
34
|
+
'box_distro_release' => 'SIMP-6.3.0-Beta1-CentOS-6.10',
|
35
|
+
'box_simp_release' => '6.3.0-Beta1',
|
36
|
+
'iso_checksum' => DUMMY_CHECKSUM,
|
37
|
+
'iso_checksum_type' => 'sha256',
|
38
|
+
'dist_os_flavor' => 'CentOS',
|
39
|
+
'dist_os_maj_version' => '6',
|
40
|
+
'dist_os_version' => '6.10',
|
41
|
+
'dist_source_isos' => 'CentOS-6.10-x86_64-bin-DVD1.iso:CentOS-6.10-x86_64-bin-DVD2.iso',
|
42
|
+
'packer_src_type' => 'simp-iso',
|
43
|
+
'iso_builder' => 'rubygem-simp-rake-helpers'
|
44
|
+
)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '#write' do
|
49
|
+
before (:each) { @var_json.write }
|
50
|
+
|
51
|
+
let(:json_file) { "#{File.basename(@iso, '.iso')}.json" }
|
52
|
+
|
53
|
+
it 'writes a .json file with the same name as the .iso' do
|
54
|
+
Dir.chdir(@tmp_dir) { |_dir| expect(File.exist?(json_file)).to be true }
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'writes a .json file with expected data' do
|
58
|
+
Dir.chdir(@tmp_dir) do |_dir|
|
59
|
+
file_content = File.read(json_file)
|
60
|
+
file_data = JSON.parse(file_content)
|
61
|
+
expect(file_data['iso_checksum']).to eq expected_checksum
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simp-rake-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Tessmer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-12-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: simp-beaker-helpers
|
@@ -159,16 +159,22 @@ dependencies:
|
|
159
159
|
name: parallel_tests
|
160
160
|
requirement: !ruby/object:Gem::Requirement
|
161
161
|
requirements:
|
162
|
-
- - "
|
162
|
+
- - ">"
|
163
163
|
- !ruby/object:Gem::Version
|
164
164
|
version: '2.4'
|
165
|
+
- - "<"
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: '2.25'
|
165
168
|
type: :runtime
|
166
169
|
prerelease: false
|
167
170
|
version_requirements: !ruby/object:Gem::Requirement
|
168
171
|
requirements:
|
169
|
-
- - "
|
172
|
+
- - ">"
|
170
173
|
- !ruby/object:Gem::Version
|
171
174
|
version: '2.4'
|
175
|
+
- - "<"
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '2.25'
|
172
178
|
- !ruby/object:Gem::Dependency
|
173
179
|
name: r10k
|
174
180
|
requirement: !ruby/object:Gem::Requirement
|
@@ -245,6 +251,7 @@ files:
|
|
245
251
|
- bin/simp_rake_helpers
|
246
252
|
- lib/simp/componentinfo.rb
|
247
253
|
- lib/simp/local_gpg_signing_key.rb
|
254
|
+
- lib/simp/packer/iso_vars_json.rb
|
248
255
|
- lib/simp/rake.rb
|
249
256
|
- lib/simp/rake/build/auto.rb
|
250
257
|
- lib/simp/rake/build/build.rb
|
@@ -278,7 +285,7 @@ files:
|
|
278
285
|
- lib/simp/yum.rb
|
279
286
|
- spec/acceptance/00_pkg_rpm_custom_scriptlets_spec.rb
|
280
287
|
- spec/acceptance/10_pkg_rpm_spec.rb
|
281
|
-
- spec/acceptance/
|
288
|
+
- spec/acceptance/20_pkg_rpm_upgrade_spec.rb
|
282
289
|
- spec/acceptance/30_pkg_misc_spec.rb
|
283
290
|
- spec/acceptance/50_local_gpg_signing_key_spec.rb
|
284
291
|
- spec/acceptance/55_build_pkg_signing_spec.rb
|
@@ -336,6 +343,22 @@ files:
|
|
336
343
|
- spec/acceptance/files/module_with_misordered_entries/CHANGELOG
|
337
344
|
- spec/acceptance/files/module_with_misordered_entries/Rakefile
|
338
345
|
- spec/acceptance/files/module_with_misordered_entries/metadata.json
|
346
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/CHANGELOG
|
347
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/Rakefile
|
348
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/build/rpm_metadata/requires
|
349
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/CentOS.yaml
|
350
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/data/os/RedHat.yaml
|
351
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/hiera.yaml
|
352
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/manifests/init.pp
|
353
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-1.0/metadata.json
|
354
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/CHANGELOG
|
355
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/Rakefile
|
356
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/build/rpm_metadata/requires
|
357
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/CentOS.yaml
|
358
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/data/os/RedHat.yaml
|
359
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/hiera.yaml
|
360
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/manifests/init.pp
|
361
|
+
- spec/acceptance/files/package_upgrades/pupmod-simp-testpackage-2.0/metadata.json
|
339
362
|
- spec/acceptance/files/simplib/CHANGELOG
|
340
363
|
- spec/acceptance/files/simplib/Rakefile
|
341
364
|
- spec/acceptance/files/simplib/build/rpm_metadata/requires
|
@@ -448,6 +471,7 @@ files:
|
|
448
471
|
- spec/lib/simp/files/testpackage-multi.spec
|
449
472
|
- spec/lib/simp/files/testpackage.spec
|
450
473
|
- spec/lib/simp/local_gpg_signing_key_spec.rb.beaker-only
|
474
|
+
- spec/lib/simp/packer/iso_vars_json_spec.rb
|
451
475
|
- spec/lib/simp/rake/build/files/changed_name_mod/metadata.json
|
452
476
|
- spec/lib/simp/rake/build/files/dependencies.yaml
|
453
477
|
- spec/lib/simp/rake/build/files/malformed_dep_meta_mod/metadata.json
|
@@ -1,175 +0,0 @@
|
|
1
|
-
require 'spec_helper_acceptance'
|
2
|
-
require_relative 'support/pkg_rpm_helpers'
|
3
|
-
|
4
|
-
require 'beaker/puppet_install_helper'
|
5
|
-
require 'json'
|
6
|
-
|
7
|
-
RSpec.configure do |c|
|
8
|
-
c.include Simp::BeakerHelpers::SimpRakeHelpers::PkgRpmHelpers
|
9
|
-
c.extend Simp::BeakerHelpers::SimpRakeHelpers::PkgRpmHelpers
|
10
|
-
end
|
11
|
-
|
12
|
-
|
13
|
-
# These tests demonstrate custom RPM triggers that work around the obsolete
|
14
|
-
# module RPM upgrate + simp_rpm_helper problem described in SIMP-3895:
|
15
|
-
#
|
16
|
-
# https://simp-project.atlassian.net/browse/SIMP-3988
|
17
|
-
#
|
18
|
-
# The expected outcome is that simp_rpm_helper always ensures the correct
|
19
|
-
# content is installed after an upgrade, even during after a package has been
|
20
|
-
# obsoleted. This is accomplished via %triggerpostun -- <name of old package>
|
21
|
-
#
|
22
|
-
# old 1.0 -> old 2.0 = no need for a trigger
|
23
|
-
# old 1.0 -> new 2.0 = must re-run simp_rpm_helper
|
24
|
-
# old 1.0 -> new 3.0 = must re-run simp_rpm_helper
|
25
|
-
# old 2.0 -> new 2.0 = must re-run simp_rpm_helper
|
26
|
-
# old 2.0 -> new 3.0 = must re-run simp_rpm_helper
|
27
|
-
# new 2.0 -> new 3.0 = no need for a trigger
|
28
|
-
|
29
|
-
|
30
|
-
shared_examples_for 'an upgrade path that works safely with rpm_simp_helper' do |first_package_file, second_package_file|
|
31
|
-
let( :rpm_regex ) do
|
32
|
-
/^(?<name>pupmod-[a-z0-9_]+-[a-z0-9_]+)-(?<version>\d+\.\d+\.\d+)-(?<release>\d+)\..*\.rpm$/
|
33
|
-
end
|
34
|
-
|
35
|
-
let( :first_package_version ){ first_package_file.match(rpm_regex)['version'] }
|
36
|
-
let( :first_package_name ){ first_package_file.match(rpm_regex)['name'] }
|
37
|
-
let( :first_package_forge_name ){ first_package_name.sub(/^[^-]+-/,'') }
|
38
|
-
let( :first_package_module_name ){ first_package_forge_name.sub(/^[^-]+-/,'') }
|
39
|
-
let( :first_package_dir_name ){ first_package_name + '-' + first_package_version.sub(/\.\d+-\d+$/,'') }
|
40
|
-
|
41
|
-
let( :second_package_name ){ second_package_file.match(rpm_regex)['name'] }
|
42
|
-
let( :second_package_forge_name ){ second_package_name.sub(/^[^-]+-/,'') }
|
43
|
-
let( :second_package_module_name ){ second_package_forge_name.sub(/^[^-]+-/,'') }
|
44
|
-
let( :second_package_version ){ second_package_file.match(rpm_regex)['version'] }
|
45
|
-
let( :second_package_dir_name ){ second_package_name + '-' + second_package_version.sub(/\.\d+-\d+$/,'') }
|
46
|
-
|
47
|
-
context "When upgrading from #{first_package_file} to #{second_package_file}" do
|
48
|
-
it "should clean out any old installs" do
|
49
|
-
on host, "rpm -e #{first_package_name} &> /dev/null; " +
|
50
|
-
"rpm -e #{second_package_name} &> /dev/null ",
|
51
|
-
accept_all_exit_codes: true
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should install #{first_package_file}" do
|
55
|
-
on host, "cd #{pkg_root_dir}/#{first_package_dir_name.gsub(/\.\d+$/,'')}; "+
|
56
|
-
"rpm -Uvh dist/#{first_package_file}"
|
57
|
-
end
|
58
|
-
|
59
|
-
it "should transfer contents of #{first_package_file} into the code directory" do
|
60
|
-
result = on host, "cat /opt/test/puppet/code/#{first_package_module_name}/metadata.json"
|
61
|
-
metadata = JSON.parse(result.stdout)
|
62
|
-
expect(metadata['name']).to eq first_package_forge_name
|
63
|
-
expect(metadata['version']).to eq first_package_version
|
64
|
-
end
|
65
|
-
|
66
|
-
it "should upgrade to #{second_package_file}" do
|
67
|
-
on host, "cd #{pkg_root_dir}/#{second_package_dir_name.gsub(/\.\d+$/,'')}; rpm -Uvh dist/#{second_package_file}"
|
68
|
-
end
|
69
|
-
|
70
|
-
it "should transfer contents of #{second_package_file} into the code directory" do
|
71
|
-
result = on host, "cat /opt/test/puppet/code/#{second_package_module_name}/metadata.json"
|
72
|
-
metadata = JSON.parse(result.stdout)
|
73
|
-
expect(metadata['name']).to eq second_package_forge_name
|
74
|
-
expect(metadata['version']).to eq second_package_version
|
75
|
-
end
|
76
|
-
|
77
|
-
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
describe 'rake pkg:rpm + modules with customized content to safely upgrade obsoleted packagess' do
|
82
|
-
|
83
|
-
let(:pkg_root_dir) do
|
84
|
-
'/home/build_user/host_files/spec/acceptance/files/custom_scriptlet_triggers'
|
85
|
-
end
|
86
|
-
|
87
|
-
before :all do
|
88
|
-
copy_host_files_into_build_user_homedir(hosts)
|
89
|
-
|
90
|
-
comment 'ensure the Puppet AIO is installed'
|
91
|
-
ENV['PUPPET_INSTALL_TYPE'] ||= 'agent'
|
92
|
-
ENV['PUPPET_INSTALL_VERSION'] ||= '1.10.6'
|
93
|
-
run_puppet_install_helper_on(hosts)
|
94
|
-
|
95
|
-
comment 'configure puppet agent to look like a Puppet server for simp_rpm_helper'
|
96
|
-
on hosts, '/opt/puppetlabs/bin/puppet config --section master set user root; ' +
|
97
|
-
'/opt/puppetlabs/bin/puppet config --section master set group root; ' +
|
98
|
-
'/opt/puppetlabs/bin/puppet config --section master set codedir /opt/test/puppet/code; ' +
|
99
|
-
'/opt/puppetlabs/bin/puppet config --section master set confdir /opt/test/puppet/code'
|
100
|
-
|
101
|
-
|
102
|
-
comment 'build and install mock RPMs'
|
103
|
-
mock_pkg_dir = '/home/build_user/host_files/spec/acceptance/files/mock_packages'
|
104
|
-
on hosts, %Q[#{run_cmd} "cd #{mock_pkg_dir}; rm -rf pkg"]
|
105
|
-
on hosts, %Q[#{run_cmd} "cd #{mock_pkg_dir}; bash rpmbuild.sh simp-adapter.spec"]
|
106
|
-
on hosts, %Q[#{run_cmd} "cd #{mock_pkg_dir}; bash rpmbuild.sh pupmod-puppetlabs-stdlib.spec"]
|
107
|
-
on hosts, %Q[#{run_cmd} "cd #{mock_pkg_dir}; bash rpmbuild.sh pupmod-simp-simplib.spec"]
|
108
|
-
on hosts, %Q[#{run_cmd} "cd #{mock_pkg_dir}; bash rpmbuild.sh pupmod-simp-foo.spec"]
|
109
|
-
|
110
|
-
on hosts, %Q[rpm -Uvh "#{mock_pkg_dir}/pkg/dist/*.noarch.rpm"], acceptable_exit_codes: [0,1]
|
111
|
-
end
|
112
|
-
|
113
|
-
hosts.each do |_host|
|
114
|
-
context "on #{_host}" do
|
115
|
-
let!(:host){ _host }
|
116
|
-
|
117
|
-
context 'with module RPMs that are suceptible to SIMP-3895' do
|
118
|
-
|
119
|
-
let(:testpackages) do
|
120
|
-
[
|
121
|
-
'pupmod-old-package-1.0',
|
122
|
-
'pupmod-old-package-2.0',
|
123
|
-
'pupmod-old-package-2.2',
|
124
|
-
'pupmod-new-package-2.1',
|
125
|
-
'pupmod-new-package-3.0',
|
126
|
-
]
|
127
|
-
end
|
128
|
-
|
129
|
-
it 'should create RPMs' do
|
130
|
-
testpackages.each do |package|
|
131
|
-
on host, %Q(#{run_cmd} "cd #{pkg_root_dir}/#{package}; ) +
|
132
|
-
%Q(rvm use default; bundle update --local || bundle update")
|
133
|
-
rpm_name = package.sub(/-[^-]+$/,'')
|
134
|
-
# In case previous tests haven't been clean
|
135
|
-
on host, "rpm -q #{rpm_name} && rpm -e #{rpm_name}; :"
|
136
|
-
|
137
|
-
on host, %(#{run_cmd} "cd #{pkg_root_dir}/#{package}; #{rake_cmd} pkg:rpm")
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
142
|
-
'pupmod-old-package-1.0.0-0.noarch.rpm',
|
143
|
-
'pupmod-old-package-2.0.0-0.noarch.rpm')
|
144
|
-
|
145
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
146
|
-
'pupmod-old-package-1.0.0-0.noarch.rpm',
|
147
|
-
'pupmod-new-package-2.1.0-0.noarch.rpm')
|
148
|
-
|
149
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
150
|
-
'pupmod-new-package-2.1.0-0.noarch.rpm',
|
151
|
-
'pupmod-old-package-2.2.0-0.noarch.rpm')
|
152
|
-
|
153
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
154
|
-
'pupmod-old-package-1.0.0-0.noarch.rpm',
|
155
|
-
'pupmod-new-package-3.0.0-0.noarch.rpm')
|
156
|
-
|
157
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
158
|
-
'pupmod-old-package-2.0.0-0.noarch.rpm',
|
159
|
-
'pupmod-new-package-2.1.0-0.noarch.rpm')
|
160
|
-
|
161
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
162
|
-
'pupmod-old-package-2.0.0-0.noarch.rpm',
|
163
|
-
'pupmod-new-package-3.0.0-0.noarch.rpm')
|
164
|
-
|
165
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
166
|
-
'pupmod-old-package-2.2.0-0.noarch.rpm',
|
167
|
-
'pupmod-new-package-3.0.0-0.noarch.rpm')
|
168
|
-
|
169
|
-
it_should_behave_like('an upgrade path that works safely with rpm_simp_helper',
|
170
|
-
'pupmod-new-package-2.1.0-0.noarch.rpm',
|
171
|
-
'pupmod-new-package-3.0.0-0.noarch.rpm')
|
172
|
-
end
|
173
|
-
end
|
174
|
-
end
|
175
|
-
end
|