beaker-hostgenerator 2.1.0 → 2.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/release.yml +1 -1
- data/.github/workflows/test.yml +1 -1
- data/.rubocop.yml +4 -27
- data/.rubocop_todo.yml +24 -376
- data/CHANGELOG.md +23 -0
- data/Gemfile +6 -11
- data/Rakefile +8 -8
- data/beaker-hostgenerator.gemspec +15 -19
- data/lib/beaker-hostgenerator/cli.rb +44 -46
- data/lib/beaker-hostgenerator/data.rb +951 -1153
- data/lib/beaker-hostgenerator/generator.rb +18 -18
- data/lib/beaker-hostgenerator/hypervisor/abs.rb +1 -1
- data/lib/beaker-hostgenerator/hypervisor/docker.rb +56 -13
- data/lib/beaker-hostgenerator/hypervisor/hcloud.rb +8 -8
- data/lib/beaker-hostgenerator/hypervisor/unknown.rb +1 -1
- data/lib/beaker-hostgenerator/hypervisor/vagrant.rb +8 -8
- data/lib/beaker-hostgenerator/hypervisor/vmpooler.rb +7 -8
- data/lib/beaker-hostgenerator/hypervisor.rb +4 -4
- data/lib/beaker-hostgenerator/parser.rb +27 -42
- data/lib/beaker-hostgenerator/roles.rb +3 -4
- data/lib/beaker-hostgenerator/util.rb +4 -6
- data/lib/beaker-hostgenerator/version.rb +1 -1
- data/lib/beaker-hostgenerator.rb +3 -3
- metadata +11 -39
@@ -29,9 +29,7 @@ module BeakerHostGenerator
|
|
29
29
|
|
30
30
|
tokens.each do |token|
|
31
31
|
if is_ostype_token?(token, bhg_version)
|
32
|
-
if nodeid[ostype] == 1 and ostype
|
33
|
-
raise "Error: no nodes generated for #{ostype}"
|
34
|
-
end
|
32
|
+
raise "Error: no nodes generated for #{ostype}" if nodeid[ostype] == 1 and !ostype.nil?
|
35
33
|
|
36
34
|
ostype = token
|
37
35
|
next
|
@@ -52,7 +50,7 @@ module BeakerHostGenerator
|
|
52
50
|
# Delegate to the hypervisor
|
53
51
|
hypervisor = BeakerHostGenerator::Hypervisor.create(node_info, options)
|
54
52
|
host_config = hypervisor.generate_node(node_info, host_config, bhg_version)
|
55
|
-
config['CONFIG'].deeper_merge!(hypervisor.global_config
|
53
|
+
config['CONFIG'].deeper_merge!(hypervisor.global_config)
|
56
54
|
|
57
55
|
# Merge in any arbitrary key-value host settings. Treat the 'hostname'
|
58
56
|
# setting specially, and don't merge it in as an arbitrary setting.
|
@@ -61,7 +59,7 @@ module BeakerHostGenerator
|
|
61
59
|
arbitrary_settings.has_key?('hostname')
|
62
60
|
host_config.merge!(arbitrary_settings)
|
63
61
|
|
64
|
-
if PE_USE_WIN32 && ostype =~ /windows/ && node_info['bits'] ==
|
62
|
+
if PE_USE_WIN32 && ostype =~ /windows/ && node_info['bits'] == '64'
|
65
63
|
host_config['ruby_arch'] = 'x86'
|
66
64
|
host_config['install_32'] = true
|
67
65
|
end
|
@@ -77,9 +75,7 @@ module BeakerHostGenerator
|
|
77
75
|
decoded = prepare(options[:global_config])
|
78
76
|
# Support for strings without '{}' was introduced, so just double
|
79
77
|
# check here to ensure that we pass in values surrounded by '{}'.
|
80
|
-
|
81
|
-
decoded = "{#{decoded}}"
|
82
|
-
end
|
78
|
+
decoded = "{#{decoded}}" unless decoded.start_with?('{')
|
83
79
|
global_config = settings_string_to_map(decoded)
|
84
80
|
config['CONFIG'].deeper_merge!(global_config)
|
85
81
|
end
|
@@ -87,7 +83,7 @@ module BeakerHostGenerator
|
|
87
83
|
# Munge non-string scalar values into proper data types
|
88
84
|
unstringify_values!(config)
|
89
85
|
|
90
|
-
|
86
|
+
config
|
91
87
|
end
|
92
88
|
|
93
89
|
def get_host_roles(node_info)
|
@@ -101,22 +97,22 @@ module BeakerHostGenerator
|
|
101
97
|
roles << role
|
102
98
|
end
|
103
99
|
|
104
|
-
|
100
|
+
roles
|
105
101
|
end
|
106
102
|
|
107
103
|
private
|
108
104
|
|
109
105
|
def generate_host_roles!(host_config, node_info, options)
|
110
|
-
if
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
106
|
+
host_config['roles'] = if options[:disable_default_role]
|
107
|
+
[]
|
108
|
+
else
|
109
|
+
['agent']
|
110
|
+
end
|
115
111
|
|
116
112
|
host_config['roles'].concat get_host_roles(node_info)
|
117
113
|
host_config['roles'].uniq!
|
118
114
|
|
119
|
-
|
115
|
+
unless options[:disable_role_config]
|
120
116
|
host_config['roles'].each do |role|
|
121
117
|
host_config.deeper_merge! get_role_config(role)
|
122
118
|
end
|
@@ -145,12 +141,16 @@ module BeakerHostGenerator
|
|
145
141
|
# converted to true/false.
|
146
142
|
# The only valid boolean-strings are "true" and "false".
|
147
143
|
def unstringify_value(value)
|
148
|
-
result =
|
144
|
+
result = begin
|
145
|
+
Integer(value)
|
146
|
+
rescue StandardError
|
147
|
+
value
|
148
|
+
end
|
149
149
|
if value == 'true'
|
150
150
|
result = true
|
151
151
|
elsif value == 'false'
|
152
152
|
result = false
|
153
|
-
elsif value.
|
153
|
+
elsif value.is_a?(Array)
|
154
154
|
value.each_with_index do |v, i|
|
155
155
|
result[i] = unstringify_value(v)
|
156
156
|
end
|
@@ -24,7 +24,7 @@ module BeakerHostGenerator
|
|
24
24
|
|
25
25
|
case node_info['ostype']
|
26
26
|
when /^(almalinux|centos|redhat|rocky)/
|
27
|
-
base_config['template'] ||= base_config['platform'].gsub(/^el/,
|
27
|
+
base_config['template'] ||= base_config['platform'].gsub(/^el/, ::Regexp.last_match(1))
|
28
28
|
when /^fedora/
|
29
29
|
base_config['template'] ||= base_config['platform']
|
30
30
|
when /^ubuntu/
|
@@ -9,35 +9,78 @@ module BeakerHostGenerator
|
|
9
9
|
|
10
10
|
def generate_node(node_info, base_config, bhg_version)
|
11
11
|
base_config['docker_cmd'] = ['/sbin/init']
|
12
|
-
|
13
|
-
|
12
|
+
|
13
|
+
ostype = node_info['ostype']
|
14
|
+
|
15
|
+
if (commands = image_commands(ostype))
|
16
|
+
base_config['docker_image_commands'] = commands
|
17
|
+
end
|
18
|
+
|
19
|
+
base_config['image'] = image(ostype)
|
20
|
+
base_config['image'].prepend('amd64/') if node_info['bits'] == '64' && !base_config['image'].start_with?('quay.io/')
|
21
|
+
|
22
|
+
base_generate_node(node_info, base_config, bhg_version, :docker)
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def image(ostype)
|
28
|
+
image = ostype.sub(/(\d)/, ':\1')
|
29
|
+
|
30
|
+
case ostype
|
31
|
+
when /^centos/
|
32
|
+
version = ostype.delete_prefix('centos')
|
33
|
+
tag = (version.to_i >= 8) ? "stream#{version}" : "centos#{version}"
|
34
|
+
image = "quay.io/centos/centos:#{tag}"
|
14
35
|
when /^oracle/
|
15
|
-
|
36
|
+
image.sub!(/\w+/, 'oraclelinux')
|
16
37
|
when /^opensuse/
|
17
|
-
|
38
|
+
image.sub!(/(\w+)/, '\1/leap')
|
18
39
|
when /^ubuntu/
|
19
|
-
|
40
|
+
image.sub!(/(\d{2})/, '\1.')
|
20
41
|
when /^rocky/
|
21
|
-
|
42
|
+
image.sub!(/(\w+)/, 'rockylinux')
|
22
43
|
when /^alma/
|
23
|
-
|
44
|
+
image.sub!(/(\w+)/, 'almalinux')
|
24
45
|
end
|
25
46
|
|
26
|
-
|
27
|
-
|
28
|
-
end
|
47
|
+
image
|
48
|
+
end
|
29
49
|
|
30
|
-
|
50
|
+
def image_commands(ostype)
|
51
|
+
case ostype
|
52
|
+
when /^(almalinux|centos|rocky)/
|
53
|
+
[
|
54
|
+
'cp /bin/true /sbin/agetty',
|
55
|
+
el_package_install_command(ostype.delete_prefix(Regexp.last_match(1)).to_i),
|
56
|
+
]
|
57
|
+
when /^debian/
|
58
|
+
[
|
59
|
+
'cp /bin/true /sbin/agetty',
|
60
|
+
'rm -f /usr/sbin/policy-rc.d',
|
61
|
+
'apt-get update && apt-get install -y cron locales-all net-tools wget gnupg',
|
62
|
+
]
|
63
|
+
when /^opensuse/
|
64
|
+
[
|
65
|
+
'cp /bin/true /sbin/agetty',
|
66
|
+
'zypper install -y cron iproute2 tar wget which',
|
67
|
+
]
|
31
68
|
when /^ubuntu/
|
32
|
-
|
69
|
+
[
|
33
70
|
'cp /bin/true /sbin/agetty',
|
34
71
|
'apt-get install -y net-tools wget locales iproute2 gnupg',
|
35
72
|
'locale-gen en_US.UTF-8',
|
36
73
|
'echo LANG=en_US.UTF-8 > /etc/default/locale',
|
37
74
|
]
|
38
75
|
end
|
76
|
+
end
|
39
77
|
|
40
|
-
|
78
|
+
def el_package_install_command(version)
|
79
|
+
if version >= 8
|
80
|
+
'dnf install -y crontabs initscripts iproute openssl wget which glibc-langpack-en hostname'
|
81
|
+
else
|
82
|
+
'yum intall -y crontabs initscripts iproute openssl wget which sysvinit-tools tar ss'
|
83
|
+
end
|
41
84
|
end
|
42
85
|
end
|
43
86
|
end
|
@@ -11,14 +11,14 @@ module BeakerHostGenerator
|
|
11
11
|
# ostype is ubuntu2204, debian10, rocky9
|
12
12
|
os, version = node_info['ostype'].split(/(\D+)/).reject!(&:empty?)
|
13
13
|
base_config['image'] = case os
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
when 'ubuntu'
|
15
|
+
"#{os}-#{version[0, 2]}.#{version[2, 2]}"
|
16
|
+
when 'centos'
|
17
|
+
(version.to_i == 7) ? "#{os}-#{version}" : "#{os}-stream-#{version}"
|
18
|
+
else
|
19
|
+
"#{os}-#{version}"
|
20
|
+
end
|
21
|
+
base_generate_node(node_info, base_config, bhg_version, :hcloud)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -7,7 +7,7 @@ module BeakerHostGenerator::Hypervisor
|
|
7
7
|
include BeakerHostGenerator::Data
|
8
8
|
|
9
9
|
def generate_node(node_info, base_config, bhg_version)
|
10
|
-
|
10
|
+
base_generate_node(node_info, base_config, bhg_version, :general)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -8,18 +8,18 @@ module BeakerHostGenerator
|
|
8
8
|
include BeakerHostGenerator::Data
|
9
9
|
|
10
10
|
def generate_node(node_info, base_config, bhg_version)
|
11
|
-
if node_info['ostype'] =~ /^centos/
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
11
|
+
base_config['box'] = if node_info['ostype'] =~ /^centos/
|
12
|
+
node_info['ostype'].sub(/(\d)/, '/\1')
|
13
|
+
elsif node_info['ostype'] =~ /^fedora/
|
14
|
+
node_info['ostype'].sub(/(\d)/, '/\1') + '-cloud-base'
|
15
|
+
else
|
16
|
+
"generic/#{node_info['ostype']}"
|
17
|
+
end
|
18
18
|
|
19
19
|
# We don't use this by default
|
20
20
|
base_config['synced_folder'] = 'disabled'
|
21
21
|
|
22
|
-
|
22
|
+
base_generate_node(node_info, base_config, bhg_version, :vagrant)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -18,24 +18,23 @@ module BeakerHostGenerator
|
|
18
18
|
base_config = base_generate_node(node_info, base_config, bhg_version, :vmpooler)
|
19
19
|
|
20
20
|
case node_info['ostype']
|
21
|
-
when /^(almalinux|centos|redhat|rocky)/
|
22
|
-
base_config['template'] ||= base_config['platform'].gsub(/^el/,
|
23
|
-
when /^fedora/
|
21
|
+
when /^(almalinux|centos|oracle|redhat|rocky|scientific)/
|
22
|
+
base_config['template'] ||= base_config['platform'].gsub(/^el/, ::Regexp.last_match(1))
|
23
|
+
when /^fedora/, /^opensuse/, /^panos/
|
24
24
|
base_config['template'] ||= base_config['platform']
|
25
|
-
when /^ubuntu/
|
25
|
+
when /^(debian|ubuntu)/
|
26
|
+
os = Regexp.last_match(1)
|
26
27
|
arch = case node_info['bits']
|
27
28
|
when '64'
|
28
29
|
'x86_64'
|
29
30
|
when '32'
|
30
31
|
'i386'
|
31
|
-
else
|
32
|
-
nil
|
33
32
|
end
|
34
33
|
|
35
|
-
base_config['template'] ||= "#{node_info['ostype'].sub(
|
34
|
+
base_config['template'] ||= "#{node_info['ostype'].sub(os, "#{os}-")}-#{arch}" if arch
|
36
35
|
end
|
37
36
|
|
38
|
-
|
37
|
+
base_config
|
39
38
|
end
|
40
39
|
end
|
41
40
|
end
|
@@ -37,7 +37,7 @@ module BeakerHostGenerator
|
|
37
37
|
#
|
38
38
|
# @returns [Hash{String=>Hypervisor::Interface}] A map of hypervisor names
|
39
39
|
# and their implementations.
|
40
|
-
def self.builtin_hypervisors
|
40
|
+
def self.builtin_hypervisors
|
41
41
|
{
|
42
42
|
'vmpooler' => BeakerHostGenerator::Hypervisor::Vmpooler,
|
43
43
|
'vagrant' => BeakerHostGenerator::Hypervisor::Vagrant,
|
@@ -60,7 +60,7 @@ module BeakerHostGenerator
|
|
60
60
|
# This will only be called if the hypervisor is used for a node, in which
|
61
61
|
# case the returned map will be merged in with global configuration from
|
62
62
|
# other hypervisors.
|
63
|
-
def global_config
|
63
|
+
def global_config
|
64
64
|
{}
|
65
65
|
end
|
66
66
|
|
@@ -84,7 +84,7 @@ module BeakerHostGenerator
|
|
84
84
|
#
|
85
85
|
# @param [Integer] bhg_version The version of OS info to use when building
|
86
86
|
# up the node definition.
|
87
|
-
def generate_node(
|
87
|
+
def generate_node(_node_info, _base_config, _bhg_version)
|
88
88
|
raise "Method 'generate_node' not implemented!"
|
89
89
|
end
|
90
90
|
|
@@ -98,7 +98,7 @@ module BeakerHostGenerator
|
|
98
98
|
|
99
99
|
base_config['hypervisor'] = @name
|
100
100
|
|
101
|
-
|
101
|
+
base_config
|
102
102
|
end
|
103
103
|
end
|
104
104
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'beaker-hostgenerator/data'
|
2
2
|
require 'beaker-hostgenerator/exceptions'
|
3
3
|
require 'cgi'
|
4
|
+
require 'strscan'
|
4
5
|
|
5
6
|
module BeakerHostGenerator
|
6
7
|
# Functions for parsing the raw user input host layout string and turning
|
@@ -62,7 +63,7 @@ module BeakerHostGenerator
|
|
62
63
|
# * agent
|
63
64
|
# * database
|
64
65
|
#
|
65
|
-
NODE_REGEX = /\A(?<bits>[A-Z0-9]+|\d+)((?<arbitrary_roles>([[:lower:]_]
|
66
|
+
NODE_REGEX = /\A(?<bits>[A-Z0-9]+|\d+)((?<arbitrary_roles>([[:lower:]_]*|,)*)\.)?(?<roles>[uacldfm]*)(?<host_settings>\{[[:print:]]*\})?\Z/
|
66
67
|
|
67
68
|
module_function
|
68
69
|
|
@@ -137,13 +138,7 @@ module BeakerHostGenerator
|
|
137
138
|
# @param [Integer] bhg_version The version of OS info to use when testing
|
138
139
|
# for whether the token represent an OS platform.
|
139
140
|
def is_ostype_token?(token, bhg_version)
|
140
|
-
BeakerHostGenerator::Data.get_platforms(bhg_version).
|
141
|
-
ostype = platform.split('-')[0]
|
142
|
-
if ostype == token
|
143
|
-
return true
|
144
|
-
end
|
145
|
-
end
|
146
|
-
return false
|
141
|
+
BeakerHostGenerator::Data.get_platforms(bhg_version).any? { |platform| platform.split('-')[0] == token }
|
147
142
|
end
|
148
143
|
|
149
144
|
# Converts a string token that represents a node (and not an OS type) into
|
@@ -168,28 +163,20 @@ module BeakerHostGenerator
|
|
168
163
|
node_info = NODE_REGEX.match(token)
|
169
164
|
|
170
165
|
if node_info
|
171
|
-
node_info =
|
166
|
+
node_info = node_info.names.zip(node_info.captures).to_h
|
172
167
|
else
|
173
168
|
raise BeakerHostGenerator::Exceptions::InvalidNodeSpecError.new,
|
174
169
|
"Invalid node_info token: #{token}"
|
175
170
|
end
|
171
|
+
node_info['arbitrary_roles'] = if node_info['arbitrary_roles']
|
172
|
+
node_info['arbitrary_roles'].split(',') || ''
|
173
|
+
else
|
174
|
+
# Default to empty list to avoid having to check for nil elsewhere
|
175
|
+
[]
|
176
|
+
end
|
177
|
+
node_info['host_settings'] = node_info['host_settings'] ? settings_string_to_map(node_info['host_settings']) : {}
|
176
178
|
|
177
|
-
|
178
|
-
node_info['arbitrary_roles'] =
|
179
|
-
node_info['arbitrary_roles'].split(',') || ''
|
180
|
-
else
|
181
|
-
# Default to empty list to avoid having to check for nil elsewhere
|
182
|
-
node_info['arbitrary_roles'] = []
|
183
|
-
end
|
184
|
-
|
185
|
-
if node_info['host_settings']
|
186
|
-
node_info['host_settings'] =
|
187
|
-
settings_string_to_map(node_info['host_settings'])
|
188
|
-
else
|
189
|
-
node_info['host_settings'] = {}
|
190
|
-
end
|
191
|
-
|
192
|
-
return node_info
|
179
|
+
node_info
|
193
180
|
end
|
194
181
|
|
195
182
|
# Transforms the arbitrary host settings map from a string representation
|
@@ -228,7 +215,7 @@ module BeakerHostGenerator
|
|
228
215
|
|
229
216
|
break if blob.nil?
|
230
217
|
|
231
|
-
if stringscan.pos
|
218
|
+
if stringscan.pos == 1
|
232
219
|
object = {}
|
233
220
|
object_depth.push(object)
|
234
221
|
next
|
@@ -251,7 +238,7 @@ module BeakerHostGenerator
|
|
251
238
|
next
|
252
239
|
end
|
253
240
|
|
254
|
-
if
|
241
|
+
if [']', '}'].include?(blob)
|
255
242
|
object_depth.pop
|
256
243
|
current_depth = current_depth.pred
|
257
244
|
next
|
@@ -263,11 +250,11 @@ module BeakerHostGenerator
|
|
263
250
|
if blob[-2] == '='
|
264
251
|
raise Beaker::HostGenerator::Exceptions::InvalidNodeSpecError unless blob.end_with?('{', '[')
|
265
252
|
|
266
|
-
if blob[-1] == '{'
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
253
|
+
current_object[blob[0..-3]] = if blob[-1] == '{'
|
254
|
+
{}
|
255
|
+
else
|
256
|
+
[]
|
257
|
+
end
|
271
258
|
object_depth.push(current_object[blob[0..-3]])
|
272
259
|
current_depth = current_depth.next
|
273
260
|
next
|
@@ -288,9 +275,7 @@ module BeakerHostGenerator
|
|
288
275
|
next
|
289
276
|
end
|
290
277
|
|
291
|
-
if blob == ','
|
292
|
-
next
|
293
|
-
end
|
278
|
+
next if blob == ','
|
294
279
|
|
295
280
|
if blob[-1] == ','
|
296
281
|
if current_type == Hash
|
@@ -308,18 +293,18 @@ module BeakerHostGenerator
|
|
308
293
|
end
|
309
294
|
end
|
310
295
|
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
296
|
+
next unless blob[-1] == ']'
|
297
|
+
|
298
|
+
current_object.push(blob[0..-2])
|
299
|
+
object_depth.pop
|
300
|
+
current_depth = current_depth.pred
|
301
|
+
next
|
317
302
|
end
|
318
303
|
|
319
304
|
object
|
320
305
|
rescue Exception
|
321
306
|
raise BeakerHostGenerator::Exceptions::InvalidNodeSpecError,
|
322
|
-
|
307
|
+
"Malformed host settings: #{host_settings}"
|
323
308
|
end
|
324
309
|
end
|
325
310
|
end
|
@@ -11,10 +11,9 @@ module BeakerHostGenerator
|
|
11
11
|
}
|
12
12
|
|
13
13
|
CM_CONFIG = { 'main' => {
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
}
|
14
|
+
'dns_alt_names' => 'puppet',
|
15
|
+
'environmentpath' => '/etc/puppetlabs/puppet/environments',
|
16
|
+
} }
|
18
17
|
|
19
18
|
ROLE_CONFIG = {
|
20
19
|
'compile_master' => CM_CONFIG,
|
@@ -7,7 +7,7 @@ module BeakerHostGenerator
|
|
7
7
|
module Utils
|
8
8
|
module_function
|
9
9
|
|
10
|
-
def pe_dir(version,
|
10
|
+
def pe_dir(version, _family = nil)
|
11
11
|
BeakerHostGenerator::Data.pe_dir(version)
|
12
12
|
end
|
13
13
|
|
@@ -15,7 +15,7 @@ module BeakerHostGenerator
|
|
15
15
|
vmpooler_hypervisor = BeakerHostGenerator::Hypervisor::Vmpooler.new
|
16
16
|
config = {}
|
17
17
|
config.deeper_merge! BeakerHostGenerator::Data.BASE_CONFIG
|
18
|
-
config['CONFIG'].deeper_merge! vmpooler_hypervisor.global_config
|
18
|
+
config['CONFIG'].deeper_merge! vmpooler_hypervisor.global_config
|
19
19
|
|
20
20
|
hosts.each do |host|
|
21
21
|
config['HOSTS'][host.node_name] = {
|
@@ -25,12 +25,10 @@ module BeakerHostGenerator
|
|
25
25
|
}
|
26
26
|
end
|
27
27
|
|
28
|
-
File.
|
29
|
-
file.write(config.to_yaml)
|
30
|
-
end
|
28
|
+
File.write(path, config.to_yaml)
|
31
29
|
end
|
32
30
|
|
33
|
-
def get_platforms(
|
31
|
+
def get_platforms(_hypervisor_type = 'vmpooler', bhg_version = 0)
|
34
32
|
BeakerHostGenerator::Data.get_platforms(bhg_version)
|
35
33
|
end
|
36
34
|
|
data/lib/beaker-hostgenerator.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Load libraries.
|
2
2
|
|
3
3
|
module BeakerHostGenerator
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
require 'beaker-hostgenerator/cli'
|
5
|
+
require 'beaker-hostgenerator/data'
|
6
|
+
require 'beaker-hostgenerator/generator'
|
7
7
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaker-hostgenerator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Branan Purvine-Riley
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2023-
|
14
|
+
date: 2023-07-27 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: fakefs
|
@@ -37,16 +37,16 @@ dependencies:
|
|
37
37
|
name: minitest
|
38
38
|
requirement: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- - "
|
40
|
+
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
42
|
+
version: '5.18'
|
43
43
|
type: :development
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- - "
|
47
|
+
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '
|
49
|
+
version: '5.18'
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
51
|
name: pry
|
52
52
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,44 +93,16 @@ dependencies:
|
|
93
93
|
name: rspec-its
|
94
94
|
requirement: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
|
-
- - "
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: '0'
|
99
|
-
type: :development
|
100
|
-
prerelease: false
|
101
|
-
version_requirements: !ruby/object:Gem::Requirement
|
102
|
-
requirements:
|
103
|
-
- - ">="
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version: '0'
|
106
|
-
- !ruby/object:Gem::Dependency
|
107
|
-
name: thin
|
108
|
-
requirement: !ruby/object:Gem::Requirement
|
109
|
-
requirements:
|
110
|
-
- - ">="
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: '0'
|
113
|
-
type: :development
|
114
|
-
prerelease: false
|
115
|
-
version_requirements: !ruby/object:Gem::Requirement
|
116
|
-
requirements:
|
117
|
-
- - ">="
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
version: '0'
|
120
|
-
- !ruby/object:Gem::Dependency
|
121
|
-
name: yard
|
122
|
-
requirement: !ruby/object:Gem::Requirement
|
123
|
-
requirements:
|
124
|
-
- - ">="
|
96
|
+
- - "~>"
|
125
97
|
- !ruby/object:Gem::Version
|
126
|
-
version: '
|
98
|
+
version: '1.3'
|
127
99
|
type: :development
|
128
100
|
prerelease: false
|
129
101
|
version_requirements: !ruby/object:Gem::Requirement
|
130
102
|
requirements:
|
131
|
-
- - "
|
103
|
+
- - "~>"
|
132
104
|
- !ruby/object:Gem::Version
|
133
|
-
version: '
|
105
|
+
version: '1.3'
|
134
106
|
- !ruby/object:Gem::Dependency
|
135
107
|
name: deep_merge
|
136
108
|
requirement: !ruby/object:Gem::Requirement
|
@@ -193,7 +165,7 @@ files:
|
|
193
165
|
- lib/beaker-hostgenerator/version.rb
|
194
166
|
homepage: https://github.com/puppetlabs/beaker-hostgenerator
|
195
167
|
licenses:
|
196
|
-
-
|
168
|
+
- Apache-2.0
|
197
169
|
metadata: {}
|
198
170
|
post_install_message:
|
199
171
|
rdoc_options: []
|