beaker-puppet 1.29.0 → 2.0.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 +4 -4
- data/.github/dependabot.yml +9 -0
- data/.github/workflows/release.yml +2 -2
- data/.github/workflows/test.yml +28 -7
- data/.rubocop.yml +5 -0
- data/.rubocop_todo.yml +842 -0
- data/CHANGELOG.md +31 -0
- data/Gemfile +5 -20
- data/Rakefile +64 -169
- data/acceptance/config/acceptance-options.rb +3 -3
- data/acceptance/config/gem/acceptance-options.rb +8 -8
- data/acceptance/config/git/acceptance-options.rb +8 -8
- data/acceptance/config/pkg/acceptance-options.rb +7 -7
- data/acceptance/pre_suite/gem/install.rb +6 -6
- data/acceptance/pre_suite/git/install.rb +22 -22
- data/acceptance/pre_suite/pkg/install.rb +3 -3
- data/acceptance/tests/backwards_compatible.rb +6 -7
- data/acceptance/tests/clone_git_repo_on_test.rb +12 -13
- data/acceptance/tests/create_tmpdir_on_test.rb +13 -9
- data/acceptance/tests/install_smoke_test.rb +5 -4
- data/acceptance/tests/stub_host.rb +11 -10
- data/acceptance/tests/web_helpers_test.rb +11 -10
- data/beaker-puppet.gemspec +16 -23
- data/bin/beaker-puppet +2 -4
- data/lib/beaker-puppet/helpers/facter_helpers.rb +9 -7
- data/lib/beaker-puppet/helpers/host_helpers.rb +10 -7
- data/lib/beaker-puppet/helpers/puppet_helpers.rb +151 -160
- data/lib/beaker-puppet/helpers/rake_helpers.rb +1 -1
- data/lib/beaker-puppet/helpers/tk_helpers.rb +22 -28
- data/lib/beaker-puppet/install_utils/aio_defaults.rb +39 -43
- data/lib/beaker-puppet/install_utils/ezbake_utils.rb +34 -42
- data/lib/beaker-puppet/install_utils/foss_defaults.rb +134 -138
- data/lib/beaker-puppet/install_utils/foss_utils.rb +293 -320
- data/lib/beaker-puppet/install_utils/module_utils.rb +58 -70
- data/lib/beaker-puppet/install_utils/puppet5.rb +30 -35
- data/lib/beaker-puppet/install_utils/puppet_utils.rb +58 -68
- data/lib/beaker-puppet/install_utils/windows_utils.rb +34 -36
- data/lib/beaker-puppet/version.rb +1 -1
- data/lib/beaker-puppet/wrappers.rb +13 -14
- data/lib/beaker-puppet.rb +4 -5
- data/setup/aio/010_Install_Puppet_Agent.rb +5 -6
- data/setup/common/000-delete-puppet-when-none.rb +2 -4
- data/setup/common/003_solaris_cert_fix.rb +74 -70
- data/setup/common/005_redhat_subscription_fix.rb +3 -2
- data/setup/common/011_Install_Puppet_Server.rb +7 -9
- data/setup/common/012_Finalize_Installs.rb +5 -5
- data/setup/common/025_StopFirewall.rb +1 -1
- data/setup/common/030_StopSssd.rb +2 -2
- data/setup/common/040_ValidateSignCert.rb +10 -12
- data/setup/common/045_EnsureMasterStarted.rb +2 -2
- data/setup/gem/010_GemInstall.rb +5 -4
- data/setup/git/000_EnvSetup.rb +48 -48
- data/setup/git/010_TestSetup.rb +13 -12
- data/setup/git/020_PuppetUserAndGroup.rb +3 -2
- data/setup/git/060_InstallModules.rb +14 -14
- data/setup/git/070_InstallCACerts.rb +82 -82
- data/spec/beaker-puppet/helpers/facter_helpers_spec.rb +22 -24
- data/spec/beaker-puppet/helpers/host_helpers_spec.rb +10 -6
- data/spec/beaker-puppet/helpers/puppet_helpers_spec.rb +506 -517
- data/spec/beaker-puppet/helpers/tk_helpers_spec.rb +20 -24
- data/spec/beaker-puppet/install_utils/ezbake_utils_spec.rb +86 -90
- data/spec/beaker-puppet/install_utils/foss_utils_spec.rb +636 -599
- data/spec/beaker-puppet/install_utils/module_utils_spec.rb +125 -116
- data/spec/beaker-puppet/install_utils/puppet5_spec.rb +159 -165
- data/spec/beaker-puppet/install_utils/puppet_utils_spec.rb +92 -77
- data/spec/beaker-puppet/install_utils/windows_utils_spec.rb +101 -89
- data/spec/beaker-puppet/wrappers_spec.rb +10 -10
- data/spec/helpers.rb +85 -91
- data/tasks/ci.rake +171 -179
- metadata +33 -62
- data/setup/common/020_InstallCumulusModules.rb +0 -13
- data/setup/common/021_InstallAristaModuleMasters.rb +0 -12
- data/setup/common/022_InstallAristaModuleAgents.rb +0 -13
@@ -12,24 +12,23 @@ module Beaker
|
|
12
12
|
# {Beaker::Host}'s interface to act upon
|
13
13
|
# * the module {Beaker::DSL::Wrappers} the provides convenience methods for {Beaker::DSL::Command} creation
|
14
14
|
module ModuleUtils
|
15
|
-
|
16
15
|
# The directories in the module directory that will not be scp-ed to the test system when using
|
17
16
|
# `copy_module_to`
|
18
17
|
PUPPET_MODULE_INSTALL_IGNORE = ['/.bundle', '/.git', '/.idea', '/.vagrant', '/.vendor', '/vendor', '/acceptance',
|
19
|
-
'/bundle', '/spec', '/tests', '/log', '/.svn', '/junit', '/pkg', '/example', '/tmp']
|
18
|
+
'/bundle', '/spec', '/tests', '/log', '/.svn', '/junit', '/pkg', '/example', '/tmp',]
|
20
19
|
|
21
20
|
# Install the desired module on all hosts using either the PMT or a
|
22
21
|
# staging forge
|
23
22
|
#
|
24
23
|
# @see install_dev_puppet_module
|
25
|
-
def install_dev_puppet_module_on(
|
24
|
+
def install_dev_puppet_module_on(host, opts)
|
26
25
|
if options[:forge_host]
|
27
|
-
install_puppet_module_via_pmt_on(
|
26
|
+
install_puppet_module_via_pmt_on(host, opts)
|
28
27
|
else
|
29
|
-
copy_module_to(
|
28
|
+
copy_module_to(host, opts)
|
30
29
|
end
|
31
30
|
end
|
32
|
-
alias
|
31
|
+
alias puppet_module_install_on install_dev_puppet_module_on
|
33
32
|
|
34
33
|
# Install the desired module on all hosts using either the PMT or a
|
35
34
|
# staging forge
|
@@ -48,21 +47,21 @@ module Beaker
|
|
48
47
|
#
|
49
48
|
# @see install_puppet_module_via_pmt
|
50
49
|
# @see copy_module_to
|
51
|
-
def install_dev_puppet_module(
|
52
|
-
block_on(
|
50
|
+
def install_dev_puppet_module(opts)
|
51
|
+
block_on(hosts) { |h| install_dev_puppet_module_on(h, opts) }
|
53
52
|
end
|
54
|
-
alias
|
53
|
+
alias puppet_module_install install_dev_puppet_module
|
55
54
|
|
56
55
|
# Install the desired module with the PMT on a given host
|
57
56
|
#
|
58
57
|
# @param opts [Hash]
|
59
58
|
# @option opts [String] :module_name The short name of the module to be installed
|
60
59
|
# @option opts [String] :version The version of the module to be installed
|
61
|
-
def install_puppet_module_via_pmt_on(
|
60
|
+
def install_puppet_module_via_pmt_on(host, opts = {})
|
62
61
|
block_on host do |h|
|
63
|
-
version_info = opts[:version] ? "-v #{opts[:version]}" :
|
62
|
+
version_info = opts[:version] ? "-v #{opts[:version]}" : ''
|
64
63
|
if opts[:source]
|
65
|
-
author_name, module_name = parse_for_modulename(
|
64
|
+
author_name, module_name = parse_for_modulename(opts[:source])
|
66
65
|
modname = "#{author_name}-#{module_name}"
|
67
66
|
else
|
68
67
|
modname = opts[:module_name]
|
@@ -70,15 +69,15 @@ module Beaker
|
|
70
69
|
|
71
70
|
puppet_opts = {}
|
72
71
|
if host[:default_module_install_opts].respond_to? :merge
|
73
|
-
puppet_opts = host[:default_module_install_opts].merge(
|
72
|
+
puppet_opts = host[:default_module_install_opts].merge(puppet_opts)
|
74
73
|
end
|
75
74
|
|
76
75
|
if options[:forge_host]
|
77
|
-
if options[:forge_host] =~ /^http/
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
76
|
+
puppet_opts[:module_repository] = if options[:forge_host] =~ /^http/
|
77
|
+
options[:forge_host]
|
78
|
+
else
|
79
|
+
"https://#{options[:forge_host]}"
|
80
|
+
end
|
82
81
|
end
|
83
82
|
|
84
83
|
on h, puppet("module install #{modname} #{version_info}", puppet_opts)
|
@@ -87,7 +86,7 @@ module Beaker
|
|
87
86
|
|
88
87
|
# Install the desired module with the PMT on all known hosts
|
89
88
|
# @see #install_puppet_module_via_pmt_on
|
90
|
-
def install_puppet_module_via_pmt(
|
89
|
+
def install_puppet_module_via_pmt(opts = {})
|
91
90
|
install_puppet_module_via_pmt_on(hosts, opts)
|
92
91
|
end
|
93
92
|
|
@@ -113,103 +112,97 @@ module Beaker
|
|
113
112
|
#
|
114
113
|
def copy_module_to(one_or_more_hosts, opts = {})
|
115
114
|
block_on one_or_more_hosts do |host|
|
116
|
-
opts = {:
|
117
|
-
|
118
|
-
|
115
|
+
opts = { source: './',
|
116
|
+
target_module_path: host['distmoduledir'],
|
117
|
+
ignore_list: PUPPET_MODULE_INSTALL_IGNORE, }.merge(opts)
|
119
118
|
|
120
119
|
ignore_list = build_ignore_list(opts)
|
121
120
|
target_module_dir = get_target_module_path(host, opts[:target_module_path])
|
122
|
-
source_path = File.expand_path(
|
121
|
+
source_path = File.expand_path(opts[:source])
|
123
122
|
source_name = File.basename(source_path)
|
124
123
|
if opts.has_key?(:module_name)
|
125
124
|
module_name = opts[:module_name]
|
126
125
|
else
|
127
|
-
_, module_name = parse_for_modulename(
|
126
|
+
_, module_name = parse_for_modulename(source_path)
|
128
127
|
end
|
129
128
|
|
130
129
|
target_path = File.join(target_module_dir, module_name)
|
131
|
-
if host.is_powershell? #make sure our slashes are correct
|
132
|
-
target_path = target_path.gsub(/\//,'\\')
|
133
|
-
end
|
130
|
+
target_path = target_path.gsub(%r{/}, '\\') if host.is_powershell? # make sure our slashes are correct
|
134
131
|
|
135
132
|
opts[:protocol] ||= 'scp'
|
136
133
|
case opts[:protocol]
|
137
134
|
when 'scp'
|
138
|
-
#move to the host
|
135
|
+
# move to the host
|
139
136
|
logger.debug "Using scp to transfer #{source_path} to #{target_path}"
|
140
|
-
scp_to host, source_path, target_module_dir, {:
|
137
|
+
scp_to host, source_path, target_module_dir, { ignore: ignore_list }
|
141
138
|
|
142
|
-
#rename to the selected module name, if not correct
|
139
|
+
# rename to the selected module name, if not correct
|
143
140
|
cur_path = File.join(target_module_dir, source_name)
|
144
|
-
if host.is_powershell? #make sure our slashes are correct
|
145
|
-
cur_path = cur_path.gsub(/\//,'\\')
|
146
|
-
end
|
141
|
+
cur_path = cur_path.gsub(%r{/}, '\\') if host.is_powershell? # make sure our slashes are correct
|
147
142
|
host.mv cur_path, target_path unless cur_path == target_path
|
148
143
|
when 'rsync'
|
149
144
|
logger.debug "Using rsync to transfer #{source_path} to #{target_path}"
|
150
|
-
rsync_to host, source_path, target_path, {:
|
145
|
+
rsync_to host, source_path, target_path, { ignore: ignore_list }
|
151
146
|
else
|
152
|
-
logger.debug
|
147
|
+
logger.debug 'Unsupported transfer protocol, returning nil'
|
153
148
|
nil
|
154
149
|
end
|
155
150
|
end
|
156
151
|
end
|
157
|
-
alias
|
152
|
+
alias copy_root_module_to copy_module_to
|
158
153
|
|
159
|
-
def get_target_module_path(host, path=nil)
|
154
|
+
def get_target_module_path(host, path = nil)
|
160
155
|
if path
|
161
|
-
on(
|
156
|
+
on(host, "echo #{path}").stdout.chomp
|
162
157
|
else
|
163
158
|
path = host.puppet['basemodulepath'].split(':').first
|
164
159
|
raise ArgumentError, 'Unable to find target module path to copy to' unless path
|
160
|
+
|
165
161
|
path
|
166
162
|
end
|
167
163
|
end
|
168
164
|
|
169
|
-
#Recursive method for finding the module root
|
165
|
+
# Recursive method for finding the module root
|
170
166
|
# Assumes that a Modulefile exists
|
171
167
|
# @param [String] possible_module_directory
|
172
168
|
# will look for Modulefile and if none found go up one level and try again until root is reached
|
173
169
|
#
|
174
170
|
# @return [String,nil]
|
175
171
|
def parse_for_moduleroot(possible_module_directory)
|
176
|
-
if File.
|
172
|
+
if File.exist?("#{possible_module_directory}/Modulefile") || File.exist?("#{possible_module_directory}/metadata.json")
|
177
173
|
possible_module_directory
|
178
174
|
elsif possible_module_directory === '/'
|
179
175
|
logger.error "At root, can't parse for another directory"
|
180
176
|
nil
|
181
177
|
else
|
182
178
|
logger.debug "No Modulefile or metadata.json found at #{possible_module_directory}, moving up"
|
183
|
-
parse_for_moduleroot File.expand_path(File.join(possible_module_directory,'..'))
|
179
|
+
parse_for_moduleroot File.expand_path(File.join(possible_module_directory, '..'))
|
184
180
|
end
|
185
181
|
end
|
186
182
|
|
187
|
-
#Parse root directory of a module for module name
|
183
|
+
# Parse root directory of a module for module name
|
188
184
|
# Searches for metadata.json and then if none found, Modulefile and parses for the Name attribute
|
189
185
|
# @param [String] root_module_dir
|
190
186
|
# @return [String] module name
|
191
187
|
def parse_for_modulename(root_module_dir)
|
192
|
-
author_name
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
end
|
188
|
+
author_name = nil
|
189
|
+
module_name = nil
|
190
|
+
if File.exist?("#{root_module_dir}/metadata.json")
|
191
|
+
logger.debug 'Attempting to parse Modulename from metadata.json'
|
192
|
+
module_json = JSON.parse(File.read("#{root_module_dir}/metadata.json"))
|
193
|
+
author_name, module_name = get_module_name(module_json['name']) if module_json.has_key?('name')
|
199
194
|
end
|
200
|
-
if !module_name && File.
|
201
|
-
logger.debug
|
195
|
+
if !module_name && File.exist?("#{root_module_dir}/Modulefile")
|
196
|
+
logger.debug 'Attempting to parse Modulename from Modulefile'
|
202
197
|
if /^name\s+'?(\w+-\w+)'?\s*$/i.match(File.read("#{root_module_dir}/Modulefile"))
|
203
198
|
author_name, module_name = get_module_name(Regexp.last_match[1])
|
204
199
|
end
|
205
200
|
end
|
206
|
-
if !module_name && !author_name
|
207
|
-
|
208
|
-
end
|
209
|
-
return author_name, module_name
|
201
|
+
logger.debug 'Unable to determine name, returning null' if !module_name && !author_name
|
202
|
+
[author_name, module_name]
|
210
203
|
end
|
211
204
|
|
212
|
-
#Parse modulename from the pattern 'Auther-ModuleName'
|
205
|
+
# Parse modulename from the pattern 'Auther-ModuleName'
|
213
206
|
#
|
214
207
|
# @param [String] author_module_name <Author>-<ModuleName> pattern
|
215
208
|
#
|
@@ -217,23 +210,21 @@ module Beaker
|
|
217
210
|
#
|
218
211
|
def get_module_name(author_module_name)
|
219
212
|
split_name = split_author_modulename(author_module_name)
|
220
|
-
|
221
|
-
|
222
|
-
|
213
|
+
return unless split_name
|
214
|
+
|
215
|
+
[split_name[:author], split_name[:module]]
|
223
216
|
end
|
224
217
|
|
225
|
-
#Split the Author-Name into a hash
|
218
|
+
# Split the Author-Name into a hash
|
226
219
|
# @param [String] author_module_attr
|
227
220
|
#
|
228
221
|
# @return [Hash<Symbol,String>,nil] :author and :module symbols will be returned
|
229
222
|
#
|
230
223
|
def split_author_modulename(author_module_attr)
|
231
224
|
result = /(\w+)-(\w+)/.match(author_module_attr)
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
nil
|
236
|
-
end
|
225
|
+
return unless result
|
226
|
+
|
227
|
+
{ author: result[1], module: result[2] }
|
237
228
|
end
|
238
229
|
|
239
230
|
# Build an array list of files/directories to ignore when pushing to remote host
|
@@ -244,16 +235,13 @@ module Beaker
|
|
244
235
|
# @option opts [Array] :ignore_list A list of files/directories to ignore
|
245
236
|
def build_ignore_list(opts = {})
|
246
237
|
ignore_list = opts[:ignore_list] || PUPPET_MODULE_INSTALL_IGNORE
|
247
|
-
if !ignore_list.
|
248
|
-
|
249
|
-
end
|
238
|
+
raise ArgumentError 'Ignore list must be an Array' if !ignore_list.is_a?(Array) || ignore_list.nil?
|
239
|
+
|
250
240
|
ignore_list << '.' unless ignore_list.include? '.'
|
251
241
|
ignore_list << '..' unless ignore_list.include? '..'
|
252
242
|
ignore_list
|
253
243
|
end
|
254
|
-
|
255
244
|
end
|
256
245
|
end
|
257
|
-
|
258
246
|
end
|
259
247
|
end
|
@@ -16,15 +16,13 @@ module Beaker
|
|
16
16
|
#
|
17
17
|
# @return [Hash{String=>String}] build json parsed into a ruby hash
|
18
18
|
def fetch_build_details(sha_yaml_url)
|
19
|
-
dst_folder
|
19
|
+
dst_folder = Dir.mktmpdir
|
20
20
|
|
21
21
|
at_exit do
|
22
|
-
if $!.nil? || ($!.is_a?(SystemExit) && $!.success?)
|
23
|
-
|
24
|
-
require 'fileutils'
|
22
|
+
if ($!.nil? || ($!.is_a?(SystemExit) && $!.success?)) && File.directory?(dst_folder)
|
23
|
+
require 'fileutils'
|
25
24
|
|
26
|
-
|
27
|
-
end
|
25
|
+
FileUtils.rm_rf(dst_folder)
|
28
26
|
end
|
29
27
|
end
|
30
28
|
|
@@ -34,7 +32,7 @@ module Beaker
|
|
34
32
|
sha_yaml_file_local_path = fetch_http_file(
|
35
33
|
sha_yaml_folder_url,
|
36
34
|
sha_yaml_filename,
|
37
|
-
dst_folder
|
35
|
+
dst_folder,
|
38
36
|
)
|
39
37
|
|
40
38
|
file_hash = YAML.load_file(sha_yaml_file_local_path)
|
@@ -52,7 +50,7 @@ module Beaker
|
|
52
50
|
fail_test(message)
|
53
51
|
end
|
54
52
|
|
55
|
-
|
53
|
+
[sha_yaml_folder_url, file_hash[:platform_data]]
|
56
54
|
end
|
57
55
|
|
58
56
|
# Get the host's packaging platform, based on beaker-hostgenerator's
|
@@ -66,7 +64,7 @@ module Beaker
|
|
66
64
|
def host_packaging_platform(host)
|
67
65
|
packaging_platform = host[:packaging_platform]
|
68
66
|
if ENV['BEAKER_PACKAGING_PLATFORMS']
|
69
|
-
overrides =
|
67
|
+
overrides = ENV['BEAKER_PACKAGING_PLATFORMS'].split(',').map { |e| e.split('=') }.to_h
|
70
68
|
logger.debug("Found packaging platform overrides: #{overrides}")
|
71
69
|
if overrides[host[:platform]]
|
72
70
|
platform = overrides[host[:platform]]
|
@@ -91,23 +89,23 @@ module Beaker
|
|
91
89
|
message = <<-EOF
|
92
90
|
:packaging_platform not provided for host '#{host}', platform '#{host[:platform]}'
|
93
91
|
:packaging_platform should be the platform-specific key from this list:
|
94
|
-
#{
|
92
|
+
#{build_details.keys}
|
95
93
|
EOF
|
96
|
-
fail_test(
|
94
|
+
fail_test(message)
|
97
95
|
end
|
98
96
|
|
99
|
-
logger.debug(
|
100
|
-
logger.debug("#{
|
97
|
+
logger.debug('Platforms available for this build:')
|
98
|
+
logger.debug("#{build_details.keys}")
|
101
99
|
logger.debug("PLATFORM SPECIFIC INFO for #{host} (packaging name '#{packaging_platform}'):")
|
102
100
|
packaging_data = build_details[packaging_platform]
|
103
|
-
logger.debug("- #{
|
101
|
+
logger.debug("- #{packaging_data}, isnil? #{packaging_data.nil?}")
|
104
102
|
if packaging_data.nil?
|
105
103
|
message = <<-EOF
|
106
104
|
:packaging_platform '#{packaging_platform}' for host '#{host}' not in build details
|
107
105
|
:packaging_platform should be the platform-specific key from this list:
|
108
|
-
#{
|
106
|
+
#{build_details.keys}
|
109
107
|
EOF
|
110
|
-
fail_test(
|
108
|
+
fail_test(message)
|
111
109
|
end
|
112
110
|
|
113
111
|
artifact_buildserver_path = packaging_data[:artifact]
|
@@ -116,11 +114,11 @@ module Beaker
|
|
116
114
|
|
117
115
|
artifact_url = "#{build_url}/#{artifact_buildserver_path}"
|
118
116
|
repoconfig_url = "#{build_url}/#{repoconfig_buildserver_path}" unless repoconfig_buildserver_path.nil?
|
119
|
-
artifact_url_correct = link_exists?(
|
117
|
+
artifact_url_correct = link_exists?(artifact_url)
|
120
118
|
logger.debug("- artifact url: '#{artifact_url}'. Exists? #{artifact_url_correct}")
|
121
|
-
fail_test('artifact url built incorrectly')
|
119
|
+
fail_test('artifact url built incorrectly') unless artifact_url_correct
|
122
120
|
|
123
|
-
|
121
|
+
[artifact_url, repoconfig_url]
|
124
122
|
end
|
125
123
|
|
126
124
|
# install build artifact on the given host
|
@@ -131,12 +129,12 @@ module Beaker
|
|
131
129
|
#
|
132
130
|
# @return nil
|
133
131
|
def install_artifact_on(host, artifact_url, project_name)
|
134
|
-
variant, version,
|
132
|
+
variant, version, = host[:platform].to_array
|
135
133
|
case variant
|
136
134
|
when 'eos'
|
137
135
|
host.get_remote_file(artifact_url)
|
138
136
|
onhost_package_file = File.basename(artifact_url)
|
139
|
-
# TODO Will be refactored into {Beaker::Host#install_local_package}
|
137
|
+
# TODO: Will be refactored into {Beaker::Host#install_local_package}
|
140
138
|
# immediately following this work. The release timing makes it
|
141
139
|
# necessary to have this here separately for a short while
|
142
140
|
host.install_from_file(onhost_package_file)
|
@@ -166,14 +164,12 @@ module Beaker
|
|
166
164
|
scp_to host, artifact_filename, onhost_package_dir
|
167
165
|
onhost_package_file = "#{onhost_package_dir}/#{artifact_filename}"
|
168
166
|
|
169
|
-
# TODO Will be refactored into {Beaker::Host#install_local_package}
|
167
|
+
# TODO: Will be refactored into {Beaker::Host#install_local_package}
|
170
168
|
# immediately following this work. The release timing makes it
|
171
169
|
# necessary to have this here seperately for a short while
|
172
170
|
# NOTE: the AIX 7.1 package will only install on 7.2 with
|
173
171
|
# --ignoreos. This is a bug in package building on AIX 7.1's RPM
|
174
|
-
if version ==
|
175
|
-
aix_72_ignoreos_hack = "--ignoreos"
|
176
|
-
end
|
172
|
+
aix_72_ignoreos_hack = '--ignoreos' if version == '7.2'
|
177
173
|
on host, "rpm -ivh #{aix_72_ignoreos_hack} #{onhost_package_file}"
|
178
174
|
else
|
179
175
|
host.install_package(artifact_url)
|
@@ -192,7 +188,7 @@ module Beaker
|
|
192
188
|
return
|
193
189
|
end
|
194
190
|
|
195
|
-
install_repo_configs_from_url(
|
191
|
+
install_repo_configs_from_url(host, repoconfig_url)
|
196
192
|
end
|
197
193
|
|
198
194
|
# Installs a specified puppet project on all hosts. Gets build information
|
@@ -208,26 +204,26 @@ module Beaker
|
|
208
204
|
#
|
209
205
|
# @return nil
|
210
206
|
def install_from_build_data_url(project_name, sha_yaml_url, local_hosts = nil)
|
211
|
-
|
207
|
+
unless link_exists?(sha_yaml_url)
|
212
208
|
message = <<-EOF
|
213
209
|
Unable to locate a downloadable build of #{project_name} (tried #{sha_yaml_url})
|
214
210
|
EOF
|
215
|
-
fail_test(
|
211
|
+
fail_test(message)
|
216
212
|
end
|
217
213
|
|
218
|
-
base_url, build_details = fetch_build_details(
|
214
|
+
base_url, build_details = fetch_build_details(sha_yaml_url)
|
219
215
|
|
220
216
|
install_targets = local_hosts.nil? ? hosts : Array(local_hosts)
|
221
217
|
|
222
218
|
install_targets.each do |host|
|
223
|
-
artifact_url, repoconfig_url = host_urls(
|
219
|
+
artifact_url, repoconfig_url = host_urls(host, build_details, base_url)
|
224
220
|
if repoconfig_url.nil?
|
225
|
-
install_artifact_on(
|
221
|
+
install_artifact_on(host, artifact_url, project_name)
|
226
222
|
else
|
227
|
-
install_repo_configs_on(
|
228
|
-
host.install_package(
|
223
|
+
install_repo_configs_on(host, repoconfig_url)
|
224
|
+
host.install_package(project_name)
|
229
225
|
end
|
230
|
-
configure_type_defaults_on(
|
226
|
+
configure_type_defaults_on(host)
|
231
227
|
end
|
232
228
|
end
|
233
229
|
|
@@ -248,4 +244,3 @@ module Beaker
|
|
248
244
|
end
|
249
245
|
end
|
250
246
|
end
|
251
|
-
|