beaker 2.18.0 → 2.19.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 +8 -8
- data/HISTORY.md +699 -2
- data/acceptance/lib/beaker/acceptance/install_utils.rb +58 -0
- data/acceptance/pre_suite/puppet_gem/install.rb +1 -8
- data/acceptance/pre_suite/puppet_git/install.rb +6 -65
- data/acceptance/pre_suite/puppet_pkg/install.rb +1 -1
- data/acceptance/tests/foss_utils/clone_git_repo_on.rb +49 -0
- data/beaker.gemspec +2 -0
- data/lib/beaker/command.rb +1 -1
- data/lib/beaker/dsl/helpers/puppet_helpers.rb +8 -6
- data/lib/beaker/dsl/helpers/web_helpers.rb +2 -1
- data/lib/beaker/dsl/install_utils/aio_defaults.rb +0 -3
- data/lib/beaker/dsl/install_utils/foss_defaults.rb +19 -0
- data/lib/beaker/dsl/install_utils/foss_utils.rb +164 -67
- data/lib/beaker/dsl/install_utils/pe_defaults.rb +9 -11
- data/lib/beaker/dsl/install_utils/pe_utils.rb +48 -64
- data/lib/beaker/dsl/install_utils/puppet_utils.rb +43 -0
- data/lib/beaker/dsl/install_utils/windows_utils.rb +144 -0
- data/lib/beaker/dsl/roles.rb +20 -3
- data/lib/beaker/dsl/structure.rb +14 -3
- data/lib/beaker/host/freebsd/pkg.rb +18 -0
- data/lib/beaker/host/freebsd.rb +2 -0
- data/lib/beaker/host/unix/exec.rb +3 -3
- data/lib/beaker/host/unix/pkg.rb +37 -0
- data/lib/beaker/host/windows/exec.rb +3 -0
- data/lib/beaker/host.rb +38 -9
- data/lib/beaker/host_prebuilt_steps.rb +21 -11
- data/lib/beaker/hypervisor/aws_sdk.rb +22 -18
- data/lib/beaker/hypervisor/docker.rb +7 -0
- data/lib/beaker/hypervisor/openstack.rb +1 -0
- data/lib/beaker/hypervisor/vagrant_virtualbox.rb +10 -5
- data/lib/beaker/hypervisor/vmpooler.rb +4 -0
- data/lib/beaker/logger.rb +12 -1
- data/lib/beaker/options/command_line_parser.rb +9 -0
- data/lib/beaker/options/options_hash.rb +3 -296
- data/lib/beaker/options/parser.rb +12 -0
- data/lib/beaker/options/presets.rb +0 -1
- data/lib/beaker/platform.rb +3 -1
- data/lib/beaker/ssh_connection.rb +48 -23
- data/lib/beaker/test_case.rb +1 -1
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/dsl/helpers/puppet_helpers_spec.rb +0 -1
- data/spec/beaker/dsl/helpers/web_helpers_spec.rb +10 -1
- data/spec/beaker/dsl/install_utils/foss_utils_spec.rb +247 -49
- data/spec/beaker/dsl/install_utils/pe_utils_spec.rb +116 -26
- data/spec/beaker/dsl/install_utils/puppet_utils_spec.rb +57 -0
- data/spec/beaker/dsl/install_utils/windows_utils_spec.rb +132 -0
- data/spec/beaker/dsl/roles_spec.rb +36 -5
- data/spec/beaker/dsl/structure_spec.rb +9 -2
- data/spec/beaker/host/unix/pkg_spec.rb +26 -6
- data/spec/beaker/host_prebuilt_steps_spec.rb +3 -2
- data/spec/beaker/host_spec.rb +24 -6
- data/spec/beaker/hypervisor/aixer_spec.rb +1 -1
- data/spec/beaker/hypervisor/aws_sdk_spec.rb +595 -58
- data/spec/beaker/hypervisor/docker_spec.rb +2 -1
- data/spec/beaker/hypervisor/solaris_spec.rb +1 -0
- data/spec/beaker/hypervisor/vagrant_spec.rb +20 -5
- data/spec/beaker/hypervisor/vagrant_virtualbox_spec.rb +1 -1
- data/spec/beaker/logger_spec.rb +39 -0
- data/spec/beaker/options/command_line_parser_spec.rb +2 -2
- data/spec/beaker/options/options_hash_spec.rb +1 -102
- data/spec/beaker/options/parser_spec.rb +19 -0
- data/spec/beaker/options/pe_version_scaper_spec.rb +11 -1
- data/spec/beaker/options/presets_spec.rb +8 -0
- data/spec/beaker/ssh_connection_spec.rb +39 -21
- data/spec/helpers.rb +9 -3
- data/spec/mocks.rb +2 -0
- metadata +35 -11
- data/lib/beaker/answers/version20.rb +0 -120
- data/lib/beaker/answers/version28.rb +0 -121
- data/lib/beaker/answers/version30.rb +0 -227
- data/lib/beaker/answers/version32.rb +0 -44
- data/lib/beaker/answers/version34.rb +0 -51
- data/lib/beaker/answers/version38.rb +0 -29
- data/lib/beaker/answers/version40.rb +0 -44
- data/lib/beaker/answers.rb +0 -143
- data/spec/beaker/answers_spec.rb +0 -547
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
require 'beaker/answers/version34'
|
|
2
|
-
|
|
3
|
-
module Beaker
|
|
4
|
-
# This class provides answer file information for PE version 4.0
|
|
5
|
-
#
|
|
6
|
-
# @api private
|
|
7
|
-
class Version38 < Version34
|
|
8
|
-
def generate_answers
|
|
9
|
-
masterless = @options[:masterless]
|
|
10
|
-
return super if masterless
|
|
11
|
-
|
|
12
|
-
the_answers = super
|
|
13
|
-
|
|
14
|
-
# add new answers
|
|
15
|
-
exit_for_nc_migrate = answer_for(@options, :q_exit_for_nc_migrate, 'n')
|
|
16
|
-
enable_future_parser = answer_for(@options, :q_enable_future_parser, 'n')
|
|
17
|
-
|
|
18
|
-
the_answers.map do |key, value|
|
|
19
|
-
# there may not be answers in the case of a windows host
|
|
20
|
-
if the_answers[key]
|
|
21
|
-
the_answers[key][:q_exit_for_nc_migrate] = exit_for_nc_migrate
|
|
22
|
-
the_answers[key][:q_enable_future_parser] = enable_future_parser
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
return the_answers
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
require 'beaker/answers/version38'
|
|
2
|
-
|
|
3
|
-
module Beaker
|
|
4
|
-
# This class provides answer file information for PE version 4.0
|
|
5
|
-
#
|
|
6
|
-
# @api private
|
|
7
|
-
class Version40 < Version38
|
|
8
|
-
def generate_answers
|
|
9
|
-
masterless = @options[:masterless]
|
|
10
|
-
return super if masterless
|
|
11
|
-
|
|
12
|
-
master = only_host_with_role(@hosts, 'master')
|
|
13
|
-
|
|
14
|
-
the_answers = super
|
|
15
|
-
|
|
16
|
-
# remove some old answers
|
|
17
|
-
# - q_puppet_cloud_install
|
|
18
|
-
# - q_puppet_enterpriseconsole_database_name
|
|
19
|
-
# - q_puppet_enterpriseconsole_database_password
|
|
20
|
-
# - q_puppet_enterpriseconsole_database_user
|
|
21
|
-
|
|
22
|
-
the_answers.map do |vm, as|
|
|
23
|
-
if as
|
|
24
|
-
as.delete_if do |key, value|
|
|
25
|
-
key =~ /q_puppet_cloud_install/
|
|
26
|
-
#to be deleted in the future
|
|
27
|
-
#|q_puppet_enterpriseconsole_database_name|q_puppet_enterpriseconsole_database_password|q_puppet_enterpriseconsole_database_user/
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# add some new answers
|
|
33
|
-
update_server_host = answer_for(@options, :q_update_server_host, master.to_s)
|
|
34
|
-
install_update_server = answer_for(@options, :q_install_update_server, 'y')
|
|
35
|
-
|
|
36
|
-
the_answers.map do |key, value|
|
|
37
|
-
the_answers[key][:q_update_server_host] = update_server_host if the_answers[key]
|
|
38
|
-
end
|
|
39
|
-
the_answers[master.name][:q_install_update_server] = install_update_server
|
|
40
|
-
|
|
41
|
-
return the_answers
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
data/lib/beaker/answers.rb
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
module Beaker
|
|
2
|
-
# This class provides methods for generating PE answer file
|
|
3
|
-
# information.
|
|
4
|
-
class Answers
|
|
5
|
-
|
|
6
|
-
DEFAULT_ANSWERS = Beaker::Options::OptionsHash.new.merge({
|
|
7
|
-
:q_puppet_enterpriseconsole_auth_user_email => 'admin@example.com',
|
|
8
|
-
:q_puppet_enterpriseconsole_auth_password => '~!@#$%^*-/ aZ',
|
|
9
|
-
:q_puppet_enterpriseconsole_smtp_port => 25,
|
|
10
|
-
:q_puppet_enterpriseconsole_smtp_use_tls => 'n',
|
|
11
|
-
:q_verify_packages => 'y',
|
|
12
|
-
:q_puppetdb_password => '~!@#$%^*-/ aZ',
|
|
13
|
-
:q_puppetmaster_enterpriseconsole_port => 443,
|
|
14
|
-
:q_puppet_enterpriseconsole_auth_database_name => 'console_auth',
|
|
15
|
-
:q_puppet_enterpriseconsole_auth_database_user => 'mYu7hu3r',
|
|
16
|
-
:q_puppet_enterpriseconsole_database_name => 'console',
|
|
17
|
-
:q_puppet_enterpriseconsole_database_user => 'mYc0nS03u3r',
|
|
18
|
-
:q_database_root_password => '=ZYdjiP3jCwV5eo9s1MBd',
|
|
19
|
-
:q_database_root_user => 'pe-postgres',
|
|
20
|
-
:q_database_export_dir => '/tmp',
|
|
21
|
-
:q_puppetdb_database_name => 'pe-puppetdb',
|
|
22
|
-
:q_puppetdb_database_user => 'mYpdBu3r',
|
|
23
|
-
:q_database_port => 5432,
|
|
24
|
-
:q_puppetdb_port => 8081,
|
|
25
|
-
:q_classifier_database_user => 'DFGhjlkj',
|
|
26
|
-
:q_database_name => 'pe-classifier',
|
|
27
|
-
:q_classifier_database_password => '~!@#$%^*-/ aZ',
|
|
28
|
-
:q_activity_database_user => 'adsfglkj',
|
|
29
|
-
:q_activity_database_name => 'pe-activity',
|
|
30
|
-
:q_activity_database_password => '~!@#$%^*-/ aZ',
|
|
31
|
-
:q_rbac_database_user => 'RbhNBklm',
|
|
32
|
-
:q_rbac_database_name => 'pe-rbac',
|
|
33
|
-
:q_rbac_database_password => '~!@#$%^*-/ aZ',
|
|
34
|
-
:q_install_update_server => 'y',
|
|
35
|
-
:q_exit_for_nc_migrate => 'n',
|
|
36
|
-
:q_enable_future_parser => 'n',
|
|
37
|
-
:q_pe_check_for_updates => 'n',
|
|
38
|
-
})
|
|
39
|
-
|
|
40
|
-
# When given a Puppet Enterprise version, a list of hosts and other
|
|
41
|
-
# qualifying data this method will return the appropriate object that can be used
|
|
42
|
-
# to generate answer file data.
|
|
43
|
-
#
|
|
44
|
-
# @param [String] version Puppet Enterprise version to generate answer data for
|
|
45
|
-
# @param [Array<Beaker::Host>] hosts An array of host objects.
|
|
46
|
-
# @param [Hash] options options for answer files
|
|
47
|
-
# @option options [Symbol] :type Should be one of :upgrade or :install.
|
|
48
|
-
# @return [Hash] A hash (keyed from hosts) containing hashes of answer file
|
|
49
|
-
# data.
|
|
50
|
-
def self.create version, hosts, options
|
|
51
|
-
case version
|
|
52
|
-
when /\A(4\.0|2015)/
|
|
53
|
-
return Version40.new(version, hosts, options)
|
|
54
|
-
when /\A3\.99/
|
|
55
|
-
return Version40.new(version, hosts, options)
|
|
56
|
-
when /\A3\.8/
|
|
57
|
-
return Version38.new(version, hosts, options)
|
|
58
|
-
when /\A3\.7/
|
|
59
|
-
return Version34.new(version, hosts, options)
|
|
60
|
-
when /\A3\.4/
|
|
61
|
-
return Version34.new(version, hosts, options)
|
|
62
|
-
when /\A3\.[2-3]/
|
|
63
|
-
return Version32.new(version, hosts, options)
|
|
64
|
-
when /\A3\.1/
|
|
65
|
-
return Version30.new(version, hosts, options)
|
|
66
|
-
when /\A3\.0/
|
|
67
|
-
return Version30.new(version, hosts, options)
|
|
68
|
-
when /\A2\.8/
|
|
69
|
-
return Version28.new(version, hosts, options)
|
|
70
|
-
when /\A2\.0/
|
|
71
|
-
return Version20.new(version, hosts, options)
|
|
72
|
-
else
|
|
73
|
-
raise NotImplementedError, "Don't know how to generate answers for #{version}"
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# The answer value for a provided question. Use the user answer when available, otherwise return the default
|
|
78
|
-
# @param [Hash] options options for answer file
|
|
79
|
-
# @option options [Symbol] :answer Contains a hash of user provided question name and answer value pairs.
|
|
80
|
-
# @param [String] default Should there be no user value for the provided question name return this default
|
|
81
|
-
# @return [String] The answer value
|
|
82
|
-
def answer_for(options, q, default = nil)
|
|
83
|
-
answer = DEFAULT_ANSWERS[q]
|
|
84
|
-
# check to see if there is a value for this in the provided options
|
|
85
|
-
if options[:answers] && options[:answers][q]
|
|
86
|
-
answer = options[:answers][q]
|
|
87
|
-
end
|
|
88
|
-
# use the default if we don't have anything
|
|
89
|
-
if not answer
|
|
90
|
-
answer = default
|
|
91
|
-
end
|
|
92
|
-
answer
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
# When given a Puppet Enterprise version, a list of hosts and other
|
|
96
|
-
# qualifying data this method will return a hash (keyed from the hosts)
|
|
97
|
-
# of default Puppet Enterprise answer file data hashes.
|
|
98
|
-
#
|
|
99
|
-
# @param [String] version Puppet Enterprise version to generate answer data for
|
|
100
|
-
# @param [Array<Beaker::Host>] hosts An array of host objects.
|
|
101
|
-
# @param [Hash] options options for answer files
|
|
102
|
-
# @option options [Symbol] :type Should be one of :upgrade or :install.
|
|
103
|
-
# @return [Hash] A hash (keyed from hosts) containing hashes of answer file
|
|
104
|
-
# data.
|
|
105
|
-
def initialize(version, hosts, options)
|
|
106
|
-
@version = version
|
|
107
|
-
@hosts = hosts
|
|
108
|
-
@options = options
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
# Generate the answers hash based upon version, host and option information
|
|
112
|
-
def generate_answers
|
|
113
|
-
raise "This should be handled by subclasses!"
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
# Access the answers hash for this version, host and option information. If the answers
|
|
117
|
-
# have not yet been calculated, generate them.
|
|
118
|
-
# @return [Hash] A hash of answers keyed by host.name
|
|
119
|
-
def answers
|
|
120
|
-
@answers ||= generate_answers
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
# This converts a data hash provided by answers, and returns a Puppet
|
|
124
|
-
# Enterprise compatible answer file ready for use.
|
|
125
|
-
#
|
|
126
|
-
# @param [Beaker::Host] host Host object in question to generate the answer
|
|
127
|
-
# file for.
|
|
128
|
-
# @return [String] a string of answers
|
|
129
|
-
# @example Generating an answer file for a series of hosts
|
|
130
|
-
# hosts.each do |host|
|
|
131
|
-
# answers = Beaker::Answers.new("2.0", hosts, "master")
|
|
132
|
-
# create_remote_file host, "/mypath/answer", answers.answer_string(host, answers)
|
|
133
|
-
# end
|
|
134
|
-
def answer_string(host)
|
|
135
|
-
answers[host.name].map { |k,v| "#{k}=#{v}" }.join("\n")
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
[ 'version40', 'version34', 'version32', 'version30', 'version28', 'version20' ].each do |lib|
|
|
141
|
-
require "beaker/answers/#{lib}"
|
|
142
|
-
end
|
|
143
|
-
end
|