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.
Files changed (77) hide show
  1. checksums.yaml +8 -8
  2. data/HISTORY.md +699 -2
  3. data/acceptance/lib/beaker/acceptance/install_utils.rb +58 -0
  4. data/acceptance/pre_suite/puppet_gem/install.rb +1 -8
  5. data/acceptance/pre_suite/puppet_git/install.rb +6 -65
  6. data/acceptance/pre_suite/puppet_pkg/install.rb +1 -1
  7. data/acceptance/tests/foss_utils/clone_git_repo_on.rb +49 -0
  8. data/beaker.gemspec +2 -0
  9. data/lib/beaker/command.rb +1 -1
  10. data/lib/beaker/dsl/helpers/puppet_helpers.rb +8 -6
  11. data/lib/beaker/dsl/helpers/web_helpers.rb +2 -1
  12. data/lib/beaker/dsl/install_utils/aio_defaults.rb +0 -3
  13. data/lib/beaker/dsl/install_utils/foss_defaults.rb +19 -0
  14. data/lib/beaker/dsl/install_utils/foss_utils.rb +164 -67
  15. data/lib/beaker/dsl/install_utils/pe_defaults.rb +9 -11
  16. data/lib/beaker/dsl/install_utils/pe_utils.rb +48 -64
  17. data/lib/beaker/dsl/install_utils/puppet_utils.rb +43 -0
  18. data/lib/beaker/dsl/install_utils/windows_utils.rb +144 -0
  19. data/lib/beaker/dsl/roles.rb +20 -3
  20. data/lib/beaker/dsl/structure.rb +14 -3
  21. data/lib/beaker/host/freebsd/pkg.rb +18 -0
  22. data/lib/beaker/host/freebsd.rb +2 -0
  23. data/lib/beaker/host/unix/exec.rb +3 -3
  24. data/lib/beaker/host/unix/pkg.rb +37 -0
  25. data/lib/beaker/host/windows/exec.rb +3 -0
  26. data/lib/beaker/host.rb +38 -9
  27. data/lib/beaker/host_prebuilt_steps.rb +21 -11
  28. data/lib/beaker/hypervisor/aws_sdk.rb +22 -18
  29. data/lib/beaker/hypervisor/docker.rb +7 -0
  30. data/lib/beaker/hypervisor/openstack.rb +1 -0
  31. data/lib/beaker/hypervisor/vagrant_virtualbox.rb +10 -5
  32. data/lib/beaker/hypervisor/vmpooler.rb +4 -0
  33. data/lib/beaker/logger.rb +12 -1
  34. data/lib/beaker/options/command_line_parser.rb +9 -0
  35. data/lib/beaker/options/options_hash.rb +3 -296
  36. data/lib/beaker/options/parser.rb +12 -0
  37. data/lib/beaker/options/presets.rb +0 -1
  38. data/lib/beaker/platform.rb +3 -1
  39. data/lib/beaker/ssh_connection.rb +48 -23
  40. data/lib/beaker/test_case.rb +1 -1
  41. data/lib/beaker/version.rb +1 -1
  42. data/spec/beaker/dsl/helpers/puppet_helpers_spec.rb +0 -1
  43. data/spec/beaker/dsl/helpers/web_helpers_spec.rb +10 -1
  44. data/spec/beaker/dsl/install_utils/foss_utils_spec.rb +247 -49
  45. data/spec/beaker/dsl/install_utils/pe_utils_spec.rb +116 -26
  46. data/spec/beaker/dsl/install_utils/puppet_utils_spec.rb +57 -0
  47. data/spec/beaker/dsl/install_utils/windows_utils_spec.rb +132 -0
  48. data/spec/beaker/dsl/roles_spec.rb +36 -5
  49. data/spec/beaker/dsl/structure_spec.rb +9 -2
  50. data/spec/beaker/host/unix/pkg_spec.rb +26 -6
  51. data/spec/beaker/host_prebuilt_steps_spec.rb +3 -2
  52. data/spec/beaker/host_spec.rb +24 -6
  53. data/spec/beaker/hypervisor/aixer_spec.rb +1 -1
  54. data/spec/beaker/hypervisor/aws_sdk_spec.rb +595 -58
  55. data/spec/beaker/hypervisor/docker_spec.rb +2 -1
  56. data/spec/beaker/hypervisor/solaris_spec.rb +1 -0
  57. data/spec/beaker/hypervisor/vagrant_spec.rb +20 -5
  58. data/spec/beaker/hypervisor/vagrant_virtualbox_spec.rb +1 -1
  59. data/spec/beaker/logger_spec.rb +39 -0
  60. data/spec/beaker/options/command_line_parser_spec.rb +2 -2
  61. data/spec/beaker/options/options_hash_spec.rb +1 -102
  62. data/spec/beaker/options/parser_spec.rb +19 -0
  63. data/spec/beaker/options/pe_version_scaper_spec.rb +11 -1
  64. data/spec/beaker/options/presets_spec.rb +8 -0
  65. data/spec/beaker/ssh_connection_spec.rb +39 -21
  66. data/spec/helpers.rb +9 -3
  67. data/spec/mocks.rb +2 -0
  68. metadata +35 -11
  69. data/lib/beaker/answers/version20.rb +0 -120
  70. data/lib/beaker/answers/version28.rb +0 -121
  71. data/lib/beaker/answers/version30.rb +0 -227
  72. data/lib/beaker/answers/version32.rb +0 -44
  73. data/lib/beaker/answers/version34.rb +0 -51
  74. data/lib/beaker/answers/version38.rb +0 -29
  75. data/lib/beaker/answers/version40.rb +0 -44
  76. data/lib/beaker/answers.rb +0 -143
  77. 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
@@ -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