beaker 4.41.2 → 5.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 +26 -13
- data/.rubocop.yml +23 -10
- data/.rubocop_todo.yml +34 -10
- data/CHANGELOG.md +16 -52
- data/Gemfile +12 -7
- data/HISTORY.md +605 -0
- data/Rakefile +99 -111
- data/acceptance/config/acceptance-options.rb +1 -1
- data/acceptance/config/base/acceptance-options.rb +2 -2
- data/acceptance/config/hypervisor/acceptance-options.rb +2 -2
- data/acceptance/config/subcommands/acceptance-options.rb +2 -2
- data/acceptance/fixtures/module/Rakefile +1 -1
- data/acceptance/fixtures/module/spec/acceptance/demo_spec.rb +8 -12
- data/acceptance/fixtures/module/spec/classes/init_spec.rb +0 -1
- data/acceptance/fixtures/module/spec/spec_helper_acceptance.rb +3 -5
- data/acceptance/lib/helpers/test_helper.rb +6 -5
- data/acceptance/pre_suite/subcommands/05_install_ruby.rb +2 -3
- data/acceptance/pre_suite/subcommands/08_install_beaker.rb +1 -2
- data/acceptance/tests/base/dsl/helpers/configuration_test.rb +4 -4
- data/acceptance/tests/base/dsl/helpers/hocon_helpers_test.rb +1 -2
- data/acceptance/tests/base/dsl/helpers/host_helpers/add_system32_hosts_entry_test.rb +0 -3
- data/acceptance/tests/base/dsl/helpers/host_helpers/archive_file_from_test.rb +3 -1
- data/acceptance/tests/base/dsl/helpers/host_helpers/backup_the_file_test.rb +9 -9
- data/acceptance/tests/base/dsl/helpers/host_helpers/check_for_package_test.rb +0 -4
- data/acceptance/tests/base/dsl/helpers/host_helpers/create_remote_file_test.rb +19 -26
- data/acceptance/tests/base/dsl/helpers/host_helpers/curl_on_test.rb +2 -2
- data/acceptance/tests/base/dsl/helpers/host_helpers/curl_with_retries_test.rb +0 -1
- data/acceptance/tests/base/dsl/helpers/host_helpers/on_test.rb +18 -13
- data/acceptance/tests/base/dsl/helpers/host_helpers/retry_on_test.rb +3 -3
- data/acceptance/tests/base/dsl/helpers/host_helpers/rsync_to_test.rb +22 -27
- data/acceptance/tests/base/dsl/helpers/host_helpers/run_cron_on_test.rb +12 -16
- data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_on_test.rb +3 -4
- data/acceptance/tests/base/dsl/helpers/host_helpers/run_script_test.rb +3 -3
- data/acceptance/tests/base/dsl/helpers/host_helpers/scp_from_test.rb +4 -4
- data/acceptance/tests/base/dsl/helpers/host_helpers/scp_to_test.rb +3 -4
- data/acceptance/tests/base/dsl/helpers/host_helpers/shell_test.rb +5 -5
- data/acceptance/tests/base/dsl/helpers/host_helpers/upgrade_package_test.rb +3 -5
- data/acceptance/tests/base/dsl/platform_tag_confiner_test.rb +14 -17
- data/acceptance/tests/base/dsl/structure_test.rb +5 -11
- data/acceptance/tests/base/host/file_test.rb +2 -2
- data/acceptance/tests/base/host/group_test.rb +0 -1
- data/acceptance/tests/base/host/host_test.rb +66 -63
- data/acceptance/tests/base/host/packages.rb +1 -2
- data/acceptance/tests/base/host/packages_unix.rb +0 -55
- data/acceptance/tests/base/host/user_test.rb +0 -1
- data/acceptance/tests/base/host_prebuilt_steps/ssh_environment_test.rb +1 -2
- data/acceptance/tests/base/test_suite/export.rb +6 -9
- data/acceptance/tests/install/from_file.rb +2 -4
- data/acceptance/tests/load_path_bootstrap.rb +1 -1
- data/acceptance/tests/subcommands/destroy.rb +19 -21
- data/acceptance/tests/subcommands/exec.rb +0 -1
- data/acceptance/tests/subcommands/init.rb +2 -3
- data/acceptance/tests/subcommands/provision.rb +0 -1
- data/beaker.gemspec +4 -7
- data/docs/concepts/argument_processing_and_precedence.md +1 -10
- data/docs/how_to/debug_beaker_tests.md +12 -12
- data/docs/how_to/hosts/eos.md +2 -12
- data/docs/how_to/install_puppet.md +0 -18
- data/docs/how_to/the_beaker_dsl.md +0 -2
- data/lib/beaker/cli.rb +59 -68
- data/lib/beaker/command.rb +20 -28
- data/lib/beaker/command_factory.rb +3 -2
- data/lib/beaker/dsl/assertions.rb +6 -18
- data/lib/beaker/dsl/helpers/hocon_helpers.rb +3 -7
- data/lib/beaker/dsl/helpers/host_helpers.rb +62 -123
- data/lib/beaker/dsl/helpers/test_helpers.rb +3 -5
- data/lib/beaker/dsl/helpers/web_helpers.rb +19 -39
- data/lib/beaker/dsl/helpers.rb +2 -4
- data/lib/beaker/dsl/outcomes.rb +13 -15
- data/lib/beaker/dsl/patterns.rb +1 -3
- data/lib/beaker/dsl/roles.rb +17 -20
- data/lib/beaker/dsl/structure.rb +53 -65
- data/lib/beaker/dsl/test_tagging.rb +7 -10
- data/lib/beaker/dsl/wrappers.rb +15 -16
- data/lib/beaker/dsl.rb +2 -3
- data/lib/beaker/host/aix/exec.rb +1 -1
- data/lib/beaker/host/aix/file.rb +0 -1
- data/lib/beaker/host/aix/group.rb +1 -1
- data/lib/beaker/host/aix/user.rb +1 -1
- data/lib/beaker/host/aix.rb +3 -4
- data/lib/beaker/host/cisco.rb +27 -39
- data/lib/beaker/host/eos.rb +4 -30
- data/lib/beaker/host/freebsd/exec.rb +1 -1
- data/lib/beaker/host/freebsd/pkg.rb +3 -3
- data/lib/beaker/host/freebsd.rb +9 -12
- data/lib/beaker/host/mac/exec.rb +4 -4
- data/lib/beaker/host/mac/group.rb +7 -7
- data/lib/beaker/host/mac/pkg.rb +3 -106
- data/lib/beaker/host/mac/user.rb +2 -2
- data/lib/beaker/host/mac.rb +8 -9
- data/lib/beaker/host/pswindows/exec.rb +66 -70
- data/lib/beaker/host/pswindows/file.rb +3 -5
- data/lib/beaker/host/pswindows/group.rb +3 -3
- data/lib/beaker/host/pswindows/pkg.rb +12 -12
- data/lib/beaker/host/pswindows/user.rb +3 -3
- data/lib/beaker/host/pswindows.rb +4 -3
- data/lib/beaker/host/unix/exec.rb +81 -83
- data/lib/beaker/host/unix/file.rb +40 -45
- data/lib/beaker/host/unix/group.rb +1 -1
- data/lib/beaker/host/unix/pkg.rb +138 -401
- data/lib/beaker/host/unix/user.rb +2 -2
- data/lib/beaker/host/unix.rb +8 -11
- data/lib/beaker/host/windows/exec.rb +17 -17
- data/lib/beaker/host/windows/file.rb +3 -3
- data/lib/beaker/host/windows/group.rb +3 -3
- data/lib/beaker/host/windows/pkg.rb +3 -54
- data/lib/beaker/host/windows/user.rb +3 -3
- data/lib/beaker/host/windows.rb +12 -12
- data/lib/beaker/host.rb +76 -133
- data/lib/beaker/host_prebuilt_steps.rb +88 -196
- data/lib/beaker/hypervisor/noop.rb +2 -4
- data/lib/beaker/hypervisor.rb +44 -61
- data/lib/beaker/local_connection.rb +2 -4
- data/lib/beaker/logger.rb +68 -76
- data/lib/beaker/logger_junit.rb +21 -25
- data/lib/beaker/network_manager.rb +39 -42
- data/lib/beaker/options/command_line_parser.rb +12 -23
- data/lib/beaker/options/hosts_file_parser.rb +16 -25
- data/lib/beaker/options/options_file_parser.rb +3 -6
- data/lib/beaker/options/options_hash.rb +2 -7
- data/lib/beaker/options/parser.rb +86 -102
- data/lib/beaker/options/presets.rb +114 -123
- data/lib/beaker/options/subcommand_options_file_parser.rb +3 -6
- data/lib/beaker/options/validator.rb +26 -31
- data/lib/beaker/perf.rb +25 -30
- data/lib/beaker/platform.rb +26 -37
- data/lib/beaker/result.rb +7 -6
- data/lib/beaker/shared/error_handler.rb +8 -10
- data/lib/beaker/shared/fog_credentials.rb +5 -9
- data/lib/beaker/shared/host_manager.rb +36 -41
- data/lib/beaker/shared/options_resolver.rb +3 -7
- data/lib/beaker/shared/repetition.rb +2 -4
- data/lib/beaker/shared/semvar.rb +37 -41
- data/lib/beaker/shared/timed.rb +0 -3
- data/lib/beaker/shared.rb +1 -1
- data/lib/beaker/ssh_connection.rb +38 -47
- data/lib/beaker/subcommand.rb +17 -24
- data/lib/beaker/subcommands/subcommand_util.rb +4 -4
- data/lib/beaker/tasks/quick_start.rb +4 -9
- data/lib/beaker/tasks/rake_task.rb +25 -27
- data/lib/beaker/tasks/test.rb +4 -4
- data/lib/beaker/test_case.rb +16 -28
- data/lib/beaker/test_suite.rb +35 -39
- data/lib/beaker/test_suite_result.rb +45 -47
- data/lib/beaker/version.rb +1 -1
- data/lib/beaker.rb +6 -7
- data/spec/beaker/cli_spec.rb +121 -142
- data/spec/beaker/command_spec.rb +55 -59
- data/spec/beaker/dsl/assertions_spec.rb +36 -36
- data/spec/beaker/dsl/helpers/host_helpers_spec.rb +110 -131
- data/spec/beaker/dsl/helpers/test_helpers_spec.rb +9 -10
- data/spec/beaker/dsl/helpers/web_helpers_spec.rb +22 -31
- data/spec/beaker/dsl/outcomes_spec.rb +14 -14
- data/spec/beaker/dsl/roles_spec.rb +125 -130
- data/spec/beaker/dsl/structure_spec.rb +172 -161
- data/spec/beaker/dsl/test_tagging_spec.rb +89 -90
- data/spec/beaker/dsl/wrappers_spec.rb +32 -33
- data/spec/beaker/host/aix_spec.rb +14 -14
- data/spec/beaker/host/cisco_spec.rb +84 -94
- data/spec/beaker/host/eos_spec.rb +15 -36
- data/spec/beaker/host/freebsd/exec_spec.rb +3 -6
- data/spec/beaker/host/freebsd/pkg_spec.rb +24 -27
- data/spec/beaker/host/mac/exec_spec.rb +2 -3
- data/spec/beaker/host/mac/group_spec.rb +48 -57
- data/spec/beaker/host/mac/user_spec.rb +54 -63
- data/spec/beaker/host/pswindows/exec_spec.rb +30 -32
- data/spec/beaker/host/pswindows/file_spec.rb +16 -16
- data/spec/beaker/host/pswindows/user_spec.rb +17 -23
- data/spec/beaker/host/pswindows_spec.rb +13 -13
- data/spec/beaker/host/unix/exec_spec.rb +75 -80
- data/spec/beaker/host/unix/file_spec.rb +66 -71
- data/spec/beaker/host/unix/pkg_spec.rb +150 -411
- data/spec/beaker/host/unix_spec.rb +11 -207
- data/spec/beaker/host/windows/exec_spec.rb +30 -32
- data/spec/beaker/host/windows/file_spec.rb +18 -19
- data/spec/beaker/host/windows/group_spec.rb +10 -12
- data/spec/beaker/host/windows/pkg_spec.rb +6 -9
- data/spec/beaker/host/windows/user_spec.rb +17 -23
- data/spec/beaker/host/windows_spec.rb +39 -39
- data/spec/beaker/host_prebuilt_steps_spec.rb +168 -349
- data/spec/beaker/host_spec.rb +204 -284
- data/spec/beaker/hypervisor/hypervisor_spec.rb +36 -61
- data/spec/beaker/localhost_connection_spec.rb +10 -11
- data/spec/beaker/logger_junit_spec.rb +19 -30
- data/spec/beaker/logger_spec.rb +153 -136
- data/spec/beaker/network_manager_spec.rb +23 -23
- data/spec/beaker/options/command_line_parser_spec.rb +20 -23
- data/spec/beaker/options/hosts_file_parser_spec.rb +30 -32
- data/spec/beaker/options/options_file_parser_spec.rb +4 -7
- data/spec/beaker/options/options_hash_spec.rb +4 -6
- data/spec/beaker/options/parser_spec.rb +167 -167
- data/spec/beaker/options/presets_spec.rb +7 -9
- data/spec/beaker/options/subcommand_options_parser_spec.rb +13 -14
- data/spec/beaker/options/validator_spec.rb +10 -11
- data/spec/beaker/perf_spec.rb +18 -21
- data/spec/beaker/platform_spec.rb +25 -50
- data/spec/beaker/shared/error_handler_spec.rb +7 -16
- data/spec/beaker/shared/fog_credentials_spec.rb +29 -29
- data/spec/beaker/shared/host_manager_spec.rb +50 -84
- data/spec/beaker/shared/options_resolver_spec.rb +9 -12
- data/spec/beaker/shared/repetition_spec.rb +17 -24
- data/spec/beaker/shared/semvar_spec.rb +21 -26
- data/spec/beaker/ssh_connection_spec.rb +76 -83
- data/spec/beaker/subcommand/subcommand_util_spec.rb +31 -33
- data/spec/beaker/subcommand_spec.rb +75 -77
- data/spec/beaker/test_case_spec.rb +25 -50
- data/spec/beaker/test_suite_spec.rb +147 -154
- data/spec/helpers.rb +39 -45
- data/spec/matchers.rb +8 -7
- data/spec/mocks.rb +1 -6
- data/spec/spec_helper.rb +0 -1
- metadata +8 -24
- data/acceptance/tests/base/dsl/helpers/host_helpers/deploy_package_repo_test.rb +0 -142
- data/acceptance/tests/base/external_resources_test.rb +0 -31
- data/spec/beaker/host/mac_spec.rb +0 -113
|
@@ -1,42 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
[ 'command', "dsl" ].each do |lib|
|
|
1
|
+
%w[command dsl].each do |lib|
|
|
4
2
|
require "beaker/#{lib}"
|
|
5
3
|
end
|
|
6
4
|
|
|
7
5
|
module Beaker
|
|
8
|
-
#Provides convienience methods for commonly run actions on hosts
|
|
6
|
+
# Provides convienience methods for commonly run actions on hosts
|
|
9
7
|
module HostPrebuiltSteps
|
|
10
8
|
include Beaker::DSL::Patterns
|
|
11
9
|
|
|
12
10
|
NTPSERVER = 'pool.ntp.org'
|
|
13
11
|
SLEEPWAIT = 5
|
|
14
12
|
TRIES = 5
|
|
15
|
-
AMAZON2023_PACKAGES = %w[curl-minimal chrony]
|
|
16
13
|
RHEL8_PACKAGES = %w[curl chrony]
|
|
17
14
|
RHEL9_PACKAGES = ['chrony']
|
|
18
|
-
FEDORA_PACKAGES = [
|
|
19
|
-
UNIX_PACKAGES = [
|
|
15
|
+
FEDORA_PACKAGES = %w[curl chrony]
|
|
16
|
+
UNIX_PACKAGES = %w[curl ntpdate]
|
|
20
17
|
FREEBSD_PACKAGES = ['curl', 'perl5|perl']
|
|
21
18
|
OPENBSD_PACKAGES = ['curl']
|
|
22
|
-
ARCHLINUX_PACKAGES = [
|
|
19
|
+
ARCHLINUX_PACKAGES = %w[curl ntp net-tools openssh]
|
|
23
20
|
WINDOWS_PACKAGES = ['curl']
|
|
24
21
|
PSWINDOWS_PACKAGES = []
|
|
25
22
|
SLES10_PACKAGES = ['curl']
|
|
26
|
-
SLES_PACKAGES = [
|
|
27
|
-
DEBIAN_PACKAGES = [
|
|
28
|
-
CUMULUS_PACKAGES = [
|
|
29
|
-
SOLARIS10_PACKAGES = [
|
|
30
|
-
SOLARIS11_PACKAGES = [
|
|
23
|
+
SLES_PACKAGES = %w[curl ntp]
|
|
24
|
+
DEBIAN_PACKAGES = %w[curl ntpdate lsb-release apt-transport-https]
|
|
25
|
+
CUMULUS_PACKAGES = %w[curl ntpdate]
|
|
26
|
+
SOLARIS10_PACKAGES = %w[CSWcurl CSWntp wget]
|
|
27
|
+
SOLARIS11_PACKAGES = %w[curl ntp]
|
|
31
28
|
ETC_HOSTS_PATH = "/etc/hosts"
|
|
32
29
|
ETC_HOSTS_PATH_SOLARIS = "/etc/inet/hosts"
|
|
33
30
|
ROOT_KEYS_SCRIPT = "https://raw.githubusercontent.com/puppetlabs/puppetlabs-sshkeys/master/templates/scripts/manage_root_authorized_keys"
|
|
34
31
|
ROOT_KEYS_SYNC_CMD = "curl -k -o - -L #{ROOT_KEYS_SCRIPT} | %s"
|
|
35
32
|
ROOT_KEYS_SYNC_CMD_AIX = "curl --tlsv1 -o - -L #{ROOT_KEYS_SCRIPT} | %s"
|
|
36
|
-
APT_CFG = %q{ Acquire::http::Proxy "http://proxy.puppetlabs.net:3128/"; }
|
|
37
|
-
IPS_PKG_REPO="http://solaris-11-internal-repo.delivery.puppetlabs.net"
|
|
38
33
|
|
|
39
|
-
#Run timesync on the provided hosts
|
|
34
|
+
# Run timesync on the provided hosts
|
|
40
35
|
# @param [Host, Array<Host>] host One or more hosts to act upon
|
|
41
36
|
# @param [Hash{Symbol=>String}] opts Options to alter execution.
|
|
42
37
|
# @option opts [Beaker::Logger] :logger A {Beaker::Logger} object
|
|
@@ -48,38 +43,36 @@ module Beaker
|
|
|
48
43
|
if host['platform'].include? 'windows'
|
|
49
44
|
# The exit code of 5 is for Windows 2008 systems where the w32tm /register command
|
|
50
45
|
# is not actually necessary.
|
|
51
|
-
host.exec(Command.new("w32tm /register"), :acceptable_exit_codes => [0,5])
|
|
52
|
-
host.exec(Command.new("net start w32time"), :acceptable_exit_codes => [0,2])
|
|
46
|
+
host.exec(Command.new("w32tm /register"), :acceptable_exit_codes => [0, 5])
|
|
47
|
+
host.exec(Command.new("net start w32time"), :acceptable_exit_codes => [0, 2])
|
|
53
48
|
host.exec(Command.new("w32tm /config /manualpeerlist:#{ntp_server} /syncfromflags:manual /update"))
|
|
54
49
|
host.exec(Command.new("w32tm /resync"))
|
|
55
50
|
logger.notify "NTP date succeeded on #{host}"
|
|
56
51
|
else
|
|
57
|
-
|
|
58
|
-
when /amazon|el-[89]|fedora/.match?(host['platform'])
|
|
52
|
+
if /el-[89]|fedora/.match?(host['platform'])
|
|
59
53
|
ntp_command = "chronyc add server #{ntp_server} prefer trust;chronyc makestep;chronyc burst 1/2"
|
|
60
|
-
|
|
54
|
+
elsif /opensuse-|sles-/.match?(host['platform'])
|
|
61
55
|
ntp_command = "sntp #{ntp_server}"
|
|
62
|
-
|
|
56
|
+
elsif host['platform'].include?('cisco_nexus')
|
|
63
57
|
ntp_server = host.exec(Command.new("getent hosts #{NTPSERVER} | head -n1 |cut -d \" \" -f1"), :acceptable_exit_codes => [0]).stdout
|
|
64
58
|
ntp_command = "sudo -E sh -c 'export DCOS_CONTEXT=2;/isan/bin/ntpdate -u -t 20 #{ntp_server}'"
|
|
65
59
|
else
|
|
66
60
|
ntp_command = "ntpdate -u -t 20 #{ntp_server}"
|
|
67
61
|
end
|
|
68
|
-
success=false
|
|
62
|
+
success = false
|
|
69
63
|
try = 0
|
|
70
|
-
until try >= TRIES
|
|
64
|
+
until try >= TRIES
|
|
71
65
|
try += 1
|
|
72
66
|
if host.exec(Command.new(ntp_command), :accept_all_exit_codes => true).exit_code == 0
|
|
73
|
-
success=true
|
|
67
|
+
success = true
|
|
74
68
|
break
|
|
75
69
|
end
|
|
76
70
|
sleep SLEEPWAIT
|
|
77
71
|
end
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
end
|
|
72
|
+
raise "NTP date was not successful after #{try} tries" unless success
|
|
73
|
+
|
|
74
|
+
logger.notify "NTP date succeeded on #{host} after #{try} tries"
|
|
75
|
+
|
|
83
76
|
end
|
|
84
77
|
end
|
|
85
78
|
nil
|
|
@@ -115,8 +108,6 @@ module Beaker
|
|
|
115
108
|
# @return [Array<String>] A list of packages to install
|
|
116
109
|
def host_packages(host)
|
|
117
110
|
case host['platform']
|
|
118
|
-
when /amazon/
|
|
119
|
-
AMAZON2023_PACKAGES
|
|
120
111
|
when /el-8/
|
|
121
112
|
RHEL8_PACKAGES
|
|
122
113
|
when /el-9/
|
|
@@ -132,6 +123,7 @@ module Beaker
|
|
|
132
123
|
when /windows/
|
|
133
124
|
if host.is_cygwin?
|
|
134
125
|
raise RuntimeError, "cygwin is not installed on #{host}" if !host.cygwin_installed?
|
|
126
|
+
|
|
135
127
|
WINDOWS_PACKAGES
|
|
136
128
|
else
|
|
137
129
|
PSWINDOWS_PACKAGES
|
|
@@ -165,6 +157,7 @@ module Beaker
|
|
|
165
157
|
package_list.each do |string|
|
|
166
158
|
alternatives = string.split('|')
|
|
167
159
|
next if alternatives.any? { |pkg| host.check_for_package pkg }
|
|
160
|
+
|
|
168
161
|
install_one_of_packages host, alternatives
|
|
169
162
|
end
|
|
170
163
|
end
|
|
@@ -185,9 +178,9 @@ module Beaker
|
|
|
185
178
|
raise error
|
|
186
179
|
end
|
|
187
180
|
|
|
188
|
-
#Install a set of authorized keys using {HostPrebuiltSteps::ROOT_KEYS_SCRIPT}. This is a
|
|
189
|
-
#convenience method to allow for easy login to hosts after they have been provisioned with
|
|
190
|
-
#Beaker.
|
|
181
|
+
# Install a set of authorized keys using {HostPrebuiltSteps::ROOT_KEYS_SCRIPT}. This is a
|
|
182
|
+
# convenience method to allow for easy login to hosts after they have been provisioned with
|
|
183
|
+
# Beaker.
|
|
191
184
|
# @param [Host, Array<Host>] host One or more hosts to act upon
|
|
192
185
|
# @param [Hash{Symbol=>String}] opts Options to alter execution.
|
|
193
186
|
# @option opts [Beaker::Logger] :logger A {Beaker::Logger} object
|
|
@@ -198,7 +191,7 @@ module Beaker
|
|
|
198
191
|
# when reality dictates otherwise"
|
|
199
192
|
logger = opts[:logger]
|
|
200
193
|
block_on host do |host|
|
|
201
|
-
|
|
194
|
+
logger.notify "Sync root authorized_keys from github on #{host.name}"
|
|
202
195
|
# Allow all exit code, as this operation is unlikely to cause problems if it fails.
|
|
203
196
|
if /solaris|eos/.match?(host['platform'])
|
|
204
197
|
host.exec(Command.new(ROOT_KEYS_SYNC_CMD % "bash"), :accept_all_exit_codes => true)
|
|
@@ -218,124 +211,54 @@ module Beaker
|
|
|
218
211
|
# @param [Host, Array<Host>] hosts One or more hosts to act upon
|
|
219
212
|
def apt_get_update hosts
|
|
220
213
|
block_on hosts do |host|
|
|
221
|
-
if /ubuntu|debian|cumulus/.match?(host[:platform])
|
|
222
|
-
host.exec(Command.new("apt-get update"))
|
|
223
|
-
end
|
|
214
|
+
host.exec(Command.new("apt-get update")) if /ubuntu|debian|cumulus/.match?(host[:platform])
|
|
224
215
|
end
|
|
225
216
|
end
|
|
226
217
|
|
|
227
|
-
#Create a file on host or hosts at the provided file path with the provided file contents.
|
|
218
|
+
# Create a file on host or hosts at the provided file path with the provided file contents.
|
|
228
219
|
# @param [Host, Array<Host>] host One or more hosts to act upon
|
|
229
220
|
# @param [String] file_path The path at which the new file will be created on the host or hosts.
|
|
230
221
|
# @param [String] file_content The contents of the file to be created on the host or hosts.
|
|
231
222
|
def copy_file_to_remote(host, file_path, file_content)
|
|
232
223
|
block_on host do |host|
|
|
233
224
|
Tempfile.open 'beaker' do |tempfile|
|
|
234
|
-
File.open(tempfile.path, 'w') {|file| file.puts file_content }
|
|
225
|
+
File.open(tempfile.path, 'w') { |file| file.puts file_content }
|
|
235
226
|
|
|
236
227
|
host.do_scp_to(tempfile.path, file_path, @options)
|
|
237
228
|
end
|
|
238
229
|
end
|
|
239
230
|
end
|
|
240
231
|
|
|
241
|
-
#
|
|
242
|
-
# the internal Puppet Labs proxy {HostPrebuiltSteps::APT_CFG} proxy.
|
|
243
|
-
# On solaris-11 host or hosts: alter pkg to point to
|
|
244
|
-
# the internal Puppet Labs proxy {HostPrebuiltSteps::IPS_PKG_REPO}.
|
|
245
|
-
#
|
|
246
|
-
# Do nothing for other platform host or hosts.
|
|
247
|
-
#
|
|
248
|
-
# @param [Host, Array<Host>] host One or more hosts to act upon
|
|
249
|
-
# @param [Hash{Symbol=>String}] opts Options to alter execution.
|
|
250
|
-
# @option opts [Beaker::Logger] :logger A {Beaker::Logger} object
|
|
251
|
-
def proxy_config( host, opts )
|
|
252
|
-
logger = opts[:logger]
|
|
253
|
-
block_on host do |host|
|
|
254
|
-
case
|
|
255
|
-
when /ubuntu|debian|cumulus/.match?(host['platform'])
|
|
256
|
-
host.exec(Command.new("if test -f /etc/apt/apt.conf; then mv /etc/apt/apt.conf /etc/apt/apt.conf.bk; fi"))
|
|
257
|
-
copy_file_to_remote(host, '/etc/apt/apt.conf', APT_CFG)
|
|
258
|
-
apt_get_update(host)
|
|
259
|
-
when host['platform'].include?('solaris-11')
|
|
260
|
-
host.exec(Command.new("/usr/bin/pkg unset-publisher solaris || :"))
|
|
261
|
-
host.exec(Command.new("/usr/bin/pkg set-publisher -g %s solaris" % IPS_PKG_REPO))
|
|
262
|
-
else
|
|
263
|
-
logger.debug "#{host}: repo proxy configuration not modified"
|
|
264
|
-
end
|
|
265
|
-
end
|
|
266
|
-
rescue => e
|
|
267
|
-
report_and_raise(logger, e, "proxy_config")
|
|
268
|
-
end
|
|
269
|
-
|
|
270
|
-
#Install EPEL on host or hosts with platform = /el-(6|7)/. Do nothing on host or hosts of other platforms.
|
|
271
|
-
# @param [Host, Array<Host>] host One or more hosts to act upon. Will use individual host epel_url, epel_arch
|
|
272
|
-
# and epel_pkg before using defaults provided in opts.
|
|
273
|
-
# @param [Hash{Symbol=>String}] opts Options to alter execution.
|
|
274
|
-
# @option opts [Boolean] :debug If true, print verbose rpm information when installing EPEL
|
|
275
|
-
# @option opts [Beaker::Logger] :logger A {Beaker::Logger} object
|
|
276
|
-
# @option opts [String] :epel_url Link to download from
|
|
277
|
-
def add_el_extras( host, opts )
|
|
278
|
-
#add_el_extras
|
|
279
|
-
#only supports el-* platforms
|
|
280
|
-
logger = opts[:logger]
|
|
281
|
-
block_on host do |host|
|
|
282
|
-
case
|
|
283
|
-
when el_based?(host) && ['6','7'].include?(host['platform'].version)
|
|
284
|
-
result = host.exec(Command.new('rpm -qa | grep epel-release'), :acceptable_exit_codes => [0,1])
|
|
285
|
-
if result.exit_code == 1
|
|
286
|
-
url_base = opts[:epel_url]
|
|
287
|
-
host.install_package_with_rpm("#{url_base}/epel-release-latest-#{host['platform'].version}.noarch.rpm", '--replacepkgs', { :package_proxy => opts[:package_proxy] })
|
|
288
|
-
#update /etc/yum.repos.d/epel.repo for new baseurl
|
|
289
|
-
host.exec(Command.new("sed -i -e 's;#baseurl.*$;baseurl=#{Regexp.escape("#{url_base}/#{host['platform'].version}")}/\$basearch;' /etc/yum.repos.d/epel.repo"))
|
|
290
|
-
#remove mirrorlist
|
|
291
|
-
host.exec(Command.new("sed -i -e '/mirrorlist/d' /etc/yum.repos.d/epel.repo"))
|
|
292
|
-
host.exec(Command.new('yum clean all && yum makecache'))
|
|
293
|
-
end
|
|
294
|
-
else
|
|
295
|
-
logger.debug "#{host}: package repo configuration not modified"
|
|
296
|
-
end
|
|
297
|
-
end
|
|
298
|
-
rescue => e
|
|
299
|
-
report_and_raise(logger, e, "add_repos")
|
|
300
|
-
end
|
|
301
|
-
|
|
302
|
-
#Determine the domain name of the provided host from its /etc/resolv.conf
|
|
232
|
+
# Determine the domain name of the provided host from its /etc/resolv.conf
|
|
303
233
|
# @param [Host] host the host to act upon
|
|
304
234
|
def get_domain_name(host)
|
|
305
235
|
domain = nil
|
|
306
236
|
search = nil
|
|
307
|
-
if host['platform'].include?('windows')
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
237
|
+
resolv_conf = if host['platform'].include?('windows')
|
|
238
|
+
if host.is_cygwin?
|
|
239
|
+
host.exec(Command.new("cat /cygdrive/c/Windows/System32/drivers/etc/hosts")).stdout
|
|
240
|
+
else
|
|
241
|
+
host.exec(Command.new('type C:\Windows\System32\drivers\etc\hosts')).stdout
|
|
242
|
+
end
|
|
243
|
+
else
|
|
244
|
+
host.exec(Command.new("cat /etc/resolv.conf")).stdout
|
|
245
|
+
end
|
|
246
|
+
resolv_conf.each_line do |line|
|
|
247
|
+
if (match = /^\s*domain\s+(\S+)/.match(line))
|
|
248
|
+
domain = match[1]
|
|
249
|
+
elsif (match = /^\s*search\s+(\S+)/.match(line))
|
|
250
|
+
search = match[1]
|
|
312
251
|
end
|
|
313
|
-
else
|
|
314
|
-
resolv_conf = host.exec(Command.new("cat /etc/resolv.conf")).stdout
|
|
315
252
|
end
|
|
316
|
-
resolv_conf.each_line { |line|
|
|
317
|
-
if line =~ /^\s*domain\s+(\S+)/
|
|
318
|
-
domain = $1
|
|
319
|
-
elsif line =~ /^\s*search\s+(\S+)/
|
|
320
|
-
search = $1
|
|
321
|
-
end
|
|
322
|
-
}
|
|
323
253
|
return_value ||= domain
|
|
324
254
|
return_value ||= search
|
|
325
255
|
|
|
326
|
-
|
|
327
|
-
return_value.gsub(/\.$/, '')
|
|
328
|
-
end
|
|
329
|
-
end
|
|
256
|
+
return unless return_value
|
|
330
257
|
|
|
331
|
-
|
|
332
|
-
# @param [Host] host the host to act upon
|
|
333
|
-
# @deprecated use {Host#get_ip}
|
|
334
|
-
def get_ip(host)
|
|
335
|
-
host.get_ip
|
|
258
|
+
return_value.gsub(/\.$/, '')
|
|
336
259
|
end
|
|
337
260
|
|
|
338
|
-
#Append the provided string to the /etc/hosts file of the provided host
|
|
261
|
+
# Append the provided string to the /etc/hosts file of the provided host
|
|
339
262
|
# @param [Host] host the host to act upon
|
|
340
263
|
# @param [String] etc_hosts The string to append to the /etc/hosts file
|
|
341
264
|
def set_etc_hosts(host, etc_hosts)
|
|
@@ -347,16 +270,16 @@ module Beaker
|
|
|
347
270
|
host.exec(Command.new("echo '#{etc_hosts}' >> /etc/hosts"))
|
|
348
271
|
end
|
|
349
272
|
# AIX must be configured to prefer local DNS over external
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
273
|
+
return unless host['platform'].include?('aix')
|
|
274
|
+
|
|
275
|
+
aix_netsvc = '/etc/netsvc.conf'
|
|
276
|
+
aix_local_resolv = 'hosts = local, bind'
|
|
277
|
+
return if host.exec(Command.new("grep '#{aix_local_resolv}' #{aix_netsvc}"), :accept_all_exit_codes => true).exit_code == 0
|
|
278
|
+
|
|
279
|
+
host.exec(Command.new("echo '#{aix_local_resolv}' >> #{aix_netsvc}"))
|
|
357
280
|
end
|
|
358
281
|
|
|
359
|
-
#Make it possible to log in as root by copying the current users ssh keys to the root account
|
|
282
|
+
# Make it possible to log in as root by copying the current users ssh keys to the root account
|
|
360
283
|
# @param [Host, Array<Host>] host One or more hosts to act upon
|
|
361
284
|
# @param [Hash{Symbol=>String}] opts Options to alter execution.
|
|
362
285
|
# @option opts [Beaker::Logger] :logger A {Beaker::Logger} object
|
|
@@ -379,18 +302,16 @@ module Beaker
|
|
|
379
302
|
# existing destination file.
|
|
380
303
|
host.exec(Command.new("if exist .ssh (xcopy .ssh C:\\Users\\Administrator\\.ssh /s /e /y /i)"))
|
|
381
304
|
elsif host['platform'].include?('osx')
|
|
382
|
-
host.exec(Command.new('sudo cp -r .ssh /var/root/.'), {:pty => true})
|
|
305
|
+
host.exec(Command.new('sudo cp -r .ssh /var/root/.'), { :pty => true })
|
|
383
306
|
elsif /(free|open)bsd/.match?(host['platform']) || host['platform'].include?('solaris-11')
|
|
384
|
-
host.exec(Command.new('sudo cp -r .ssh /root/.'), {:pty => true})
|
|
307
|
+
host.exec(Command.new('sudo cp -r .ssh /root/.'), { :pty => true })
|
|
385
308
|
elsif host['platform'].include?('solaris-10')
|
|
386
|
-
host.exec(Command.new('sudo cp -r .ssh /.'), {:pty => true})
|
|
309
|
+
host.exec(Command.new('sudo cp -r .ssh /.'), { :pty => true })
|
|
387
310
|
else
|
|
388
|
-
host.exec(Command.new('sudo su -c "cp -r .ssh /root/."'), {:pty => true})
|
|
311
|
+
host.exec(Command.new('sudo su -c "cp -r .ssh /root/."'), { :pty => true })
|
|
389
312
|
end
|
|
390
313
|
|
|
391
|
-
if host.selinux_enabled?
|
|
392
|
-
host.exec(Command.new('sudo fixfiles restore /root'))
|
|
393
|
-
end
|
|
314
|
+
host.exec(Command.new('sudo fixfiles restore /root')) if host.selinux_enabled?
|
|
394
315
|
end
|
|
395
316
|
end
|
|
396
317
|
|
|
@@ -422,6 +343,7 @@ module Beaker
|
|
|
422
343
|
logger = opts[:logger]
|
|
423
344
|
hosts.each do |host|
|
|
424
345
|
next if host['platform'].include?('netscaler')
|
|
346
|
+
|
|
425
347
|
logger.notify "Disabling updates.puppetlabs.com by modifying hosts file to resolve updates to 127.0.0.1 on #{host}"
|
|
426
348
|
set_etc_hosts(host, "127.0.0.1\tupdates.puppetlabs.com\n")
|
|
427
349
|
end
|
|
@@ -446,40 +368,40 @@ module Beaker
|
|
|
446
368
|
host.exec(Command.new("sudo sed -i '' 's/#PermitRootLogin no/PermitRootLogin Yes/g' #{ssh_config_file}"))
|
|
447
369
|
host.exec(Command.new("sudo sed -i '' 's/#PermitRootLogin yes/PermitRootLogin Yes/g' #{ssh_config_file}"))
|
|
448
370
|
elsif host['platform'].include?('freebsd')
|
|
449
|
-
host.exec(Command.new("sudo sed -i -e 's/#PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config"), {:pty => true}
|
|
371
|
+
host.exec(Command.new("sudo sed -i -e 's/#PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config"), { :pty => true })
|
|
450
372
|
elsif host['platform'].include?('openbsd')
|
|
451
|
-
host.exec(Command.new("sudo perl -pi -e 's/^PermitRootLogin no/PermitRootLogin yes/' /etc/ssh/sshd_config"), {:pty => true}
|
|
373
|
+
host.exec(Command.new("sudo perl -pi -e 's/^PermitRootLogin no/PermitRootLogin yes/' /etc/ssh/sshd_config"), { :pty => true })
|
|
452
374
|
elsif host['platform'].include?('solaris-10')
|
|
453
|
-
host.exec(Command.new("sudo gsed -i -e 's/#PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config"), {:pty => true}
|
|
375
|
+
host.exec(Command.new("sudo gsed -i -e 's/#PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config"), { :pty => true })
|
|
454
376
|
elsif host['platform'].include?('solaris-11')
|
|
455
|
-
host.exec(Command.new("if grep \"root::::type=role\" /etc/user_attr; then sudo rolemod -K type=normal root; else echo \"root user already type=normal\"; fi"), {:pty => true}
|
|
456
|
-
host.exec(Command.new("sudo gsed -i -e 's/PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config"), {:pty => true}
|
|
377
|
+
host.exec(Command.new("if grep \"root::::type=role\" /etc/user_attr; then sudo rolemod -K type=normal root; else echo \"root user already type=normal\"; fi"), { :pty => true })
|
|
378
|
+
host.exec(Command.new("sudo gsed -i -e 's/PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config"), { :pty => true })
|
|
457
379
|
elsif host['platform'].include?('f5') || host.is_powershell?
|
|
458
|
-
#interacting with f5 should using tmsh
|
|
380
|
+
# interacting with f5 should using tmsh
|
|
459
381
|
logger.warn("Attempting to enable root login non-supported platform: #{host.name}: #{host['platform']}")
|
|
460
382
|
elsif host.is_cygwin?
|
|
461
|
-
host.exec(Command.new("sed -ri 's/^#?PermitRootLogin /PermitRootLogin yes/' /etc/sshd_config"), {:pty => true})
|
|
383
|
+
host.exec(Command.new("sed -ri 's/^#?PermitRootLogin /PermitRootLogin yes/' /etc/sshd_config"), { :pty => true })
|
|
462
384
|
else
|
|
463
|
-
host.exec(Command.new("sudo su -c \"sed -ri 's/^#?PermitRootLogin no|^#?PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config\""), {:pty => true})
|
|
385
|
+
host.exec(Command.new("sudo su -c \"sed -ri 's/^#?PermitRootLogin no|^#?PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config\""), { :pty => true })
|
|
464
386
|
end
|
|
465
|
-
#restart sshd
|
|
387
|
+
# restart sshd
|
|
466
388
|
if /debian|ubuntu|cumulus/.match?(host['platform'])
|
|
467
389
|
host.exec(Command.new("sudo su -c \"service ssh restart\""), { :pty => true })
|
|
468
|
-
elsif /
|
|
390
|
+
elsif /arch|(centos|el|redhat)-[789]|fedora-(1[4-9]|2[0-9]|3[0-9])/.match?(host['platform'])
|
|
469
391
|
host.exec(Command.new("sudo -E systemctl restart sshd.service"), { :pty => true })
|
|
470
392
|
elsif /centos|el-|redhat|fedora|eos/.match?(host['platform'])
|
|
471
|
-
host.exec(Command.new("sudo -E /sbin/service sshd reload"), {:pty => true})
|
|
393
|
+
host.exec(Command.new("sudo -E /sbin/service sshd reload"), { :pty => true })
|
|
472
394
|
elsif /(free|open)bsd/.match?(host['platform'])
|
|
473
395
|
host.exec(Command.new("sudo /etc/rc.d/sshd restart"))
|
|
474
396
|
elsif host['platform'].include?('solaris')
|
|
475
|
-
host.exec(Command.new("sudo -E svcadm restart network/ssh"), {:pty => true}
|
|
397
|
+
host.exec(Command.new("sudo -E svcadm restart network/ssh"), { :pty => true })
|
|
476
398
|
else
|
|
477
399
|
logger.warn("Attempting to update ssh on non-supported platform: #{host.name}: #{host['platform']}")
|
|
478
400
|
end
|
|
479
401
|
end
|
|
480
402
|
end
|
|
481
403
|
|
|
482
|
-
#Disable SELinux on centos, does nothing on other platforms
|
|
404
|
+
# Disable SELinux on centos, does nothing on other platforms
|
|
483
405
|
# @param [Host, Array<Host>] host One or more hosts to act upon
|
|
484
406
|
# @param [Hash{Symbol=>String}] opts Options to alter execution.
|
|
485
407
|
# @option opts [Beaker::Logger] :logger A {Beaker::Logger} object
|
|
@@ -488,29 +410,13 @@ module Beaker
|
|
|
488
410
|
block_on host do |host|
|
|
489
411
|
if /centos|el-|redhat|fedora|eos/.match?(host['platform'])
|
|
490
412
|
logger.debug("Disabling se_linux on #{host.name}")
|
|
491
|
-
host.exec(Command.new("sudo su -c \"setenforce 0\""), {:pty => true})
|
|
413
|
+
host.exec(Command.new("sudo su -c \"setenforce 0\""), { :pty => true })
|
|
492
414
|
else
|
|
493
415
|
logger.warn("Attempting to disable SELinux on non-supported platform: #{host.name}: #{host['platform']}")
|
|
494
416
|
end
|
|
495
417
|
end
|
|
496
418
|
end
|
|
497
419
|
|
|
498
|
-
#Disable iptables on centos, does nothing on other platforms
|
|
499
|
-
# @param [Host, Array<Host>] host One or more hosts to act upon
|
|
500
|
-
# @param [Hash{Symbol=>String}] opts Options to alter execution.
|
|
501
|
-
# @option opts [Beaker::Logger] :logger A {Beaker::Logger} object
|
|
502
|
-
def disable_iptables host, opts
|
|
503
|
-
logger = opts[:logger]
|
|
504
|
-
block_on host do |host|
|
|
505
|
-
if /centos|el-|redhat|fedora|eos/.match?(host['platform'])
|
|
506
|
-
logger.debug("Disabling iptables on #{host.name}")
|
|
507
|
-
host.exec(Command.new("sudo su -c \"/etc/init.d/iptables stop\""), {:pty => true})
|
|
508
|
-
else
|
|
509
|
-
logger.warn("Attempting to disable iptables on non-supported platform: #{host.name}: #{host['platform']}")
|
|
510
|
-
end
|
|
511
|
-
end
|
|
512
|
-
end
|
|
513
|
-
|
|
514
420
|
# Setup files for enabling requests to pass to a proxy server
|
|
515
421
|
# This works for the APT package manager on debian, ubuntu, and cumulus
|
|
516
422
|
# and YUM package manager on el, centos, fedora and redhat.
|
|
@@ -525,15 +431,17 @@ module Beaker
|
|
|
525
431
|
case host['platform']
|
|
526
432
|
when /ubuntu/, /debian/, /cumulus/
|
|
527
433
|
host.exec(Command.new("echo 'Acquire::http::Proxy \"#{opts[:package_proxy]}/\";' >> /etc/apt/apt.conf.d/10proxy"))
|
|
528
|
-
when
|
|
434
|
+
when /^el-/, /centos/, /fedora/, /redhat/, /eos/
|
|
529
435
|
host.exec(Command.new("echo 'proxy=#{opts[:package_proxy]}/' >> /etc/yum.conf"))
|
|
436
|
+
when /solaris-11/
|
|
437
|
+
host.exec(Command.new("/usr/bin/pkg unset-publisher solaris || :"))
|
|
438
|
+
host.exec(Command.new("/usr/bin/pkg set-publisher -g %s solaris" % opts[:package_proxy]))
|
|
530
439
|
else
|
|
531
440
|
logger.debug("Attempting to enable package manager proxy support on non-supported platform: #{host.name}: #{host['platform']}")
|
|
532
441
|
end
|
|
533
442
|
end
|
|
534
443
|
end
|
|
535
444
|
|
|
536
|
-
|
|
537
445
|
# Merge the two provided hashes so that an array of values is created from collisions
|
|
538
446
|
# @param [Hash] h1 The first hash
|
|
539
447
|
# @param [Hash] h2 The second hash
|
|
@@ -545,12 +453,12 @@ module Beaker
|
|
|
545
453
|
# => {:PATH=>["/1st/path", "/2nd/path"]}
|
|
546
454
|
def additive_hash_merge h1, h2
|
|
547
455
|
merged_hash = {}
|
|
548
|
-
normalized_h2 = h2.
|
|
456
|
+
normalized_h2 = h2.each_with_object({}) { |(k, v), h| h[k.to_s.upcase] = v; }
|
|
549
457
|
h1.each_pair do |key, _val|
|
|
550
458
|
normalized_key = key.to_s.upcase
|
|
551
459
|
if normalized_h2.has_key?(normalized_key)
|
|
552
460
|
merged_hash[key] = [h1[key], normalized_h2[normalized_key]]
|
|
553
|
-
merged_hash[key] = merged_hash[key].uniq #remove dupes
|
|
461
|
+
merged_hash[key] = merged_hash[key].uniq # remove dupes
|
|
554
462
|
end
|
|
555
463
|
end
|
|
556
464
|
merged_hash
|
|
@@ -565,9 +473,7 @@ module Beaker
|
|
|
565
473
|
|
|
566
474
|
env.each_key do |key|
|
|
567
475
|
separator = host['pathseparator']
|
|
568
|
-
if key == 'PATH' && (not host.is_powershell?)
|
|
569
|
-
separator = ':'
|
|
570
|
-
end
|
|
476
|
+
separator = ':' if key == 'PATH' && (not host.is_powershell?)
|
|
571
477
|
env[key] = env[key].join(separator)
|
|
572
478
|
end
|
|
573
479
|
env
|
|
@@ -582,7 +488,7 @@ module Beaker
|
|
|
582
488
|
block_on host do |host|
|
|
583
489
|
skip_msg = host.skip_set_env?
|
|
584
490
|
unless skip_msg.nil?
|
|
585
|
-
logger.debug(
|
|
491
|
+
logger.debug(skip_msg)
|
|
586
492
|
next
|
|
587
493
|
end
|
|
588
494
|
|
|
@@ -590,14 +496,12 @@ module Beaker
|
|
|
590
496
|
|
|
591
497
|
logger.debug("setting local environment on #{host.name}")
|
|
592
498
|
|
|
593
|
-
if host['platform'].include?('windows') && host.is_cygwin?
|
|
594
|
-
env['CYGWIN'] = 'nodosfilewarning'
|
|
595
|
-
end
|
|
499
|
+
env['CYGWIN'] = 'nodosfilewarning' if host['platform'].include?('windows') && host.is_cygwin?
|
|
596
500
|
|
|
597
501
|
host.ssh_permit_user_environment
|
|
598
502
|
host.ssh_set_user_environment(env)
|
|
599
503
|
|
|
600
|
-
#close the host to re-establish the connection with the new sshd settings
|
|
504
|
+
# close the host to re-establish the connection with the new sshd settings
|
|
601
505
|
host.close
|
|
602
506
|
|
|
603
507
|
# print out the working env
|
|
@@ -608,17 +512,5 @@ module Beaker
|
|
|
608
512
|
end
|
|
609
513
|
end
|
|
610
514
|
end
|
|
611
|
-
|
|
612
|
-
private
|
|
613
|
-
|
|
614
|
-
# A helper to tell whether a host is el-based
|
|
615
|
-
# @param [Host] host the host to act upon
|
|
616
|
-
#
|
|
617
|
-
# @return [Boolean] if the host is el_based
|
|
618
|
-
def el_based? host
|
|
619
|
-
['centos','redhat','scientific','el','oracle'].include?(host['platform'].variant)
|
|
620
|
-
end
|
|
621
|
-
|
|
622
515
|
end
|
|
623
|
-
|
|
624
516
|
end
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
module Beaker
|
|
2
2
|
class Noop < Beaker::Hypervisor
|
|
3
|
+
def initialize(hosts, options)
|
|
4
|
+
super
|
|
3
5
|
|
|
4
|
-
def initialize(new_hosts, options)
|
|
5
|
-
@options = options
|
|
6
6
|
@logger = options[:logger]
|
|
7
|
-
@hosts = new_hosts
|
|
8
7
|
end
|
|
9
8
|
|
|
10
9
|
def validate
|
|
@@ -26,6 +25,5 @@ module Beaker
|
|
|
26
25
|
def cleanup
|
|
27
26
|
# noop
|
|
28
27
|
end
|
|
29
|
-
|
|
30
28
|
end
|
|
31
29
|
end
|