beaker-hostgenerator 3.3.0 → 3.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 960e75775e75d711fd5bc8ac6e631bc72b6ea681e5201f7ba2c90df7a622c11b
4
- data.tar.gz: 9eb29be0b7d998a687eb139174d9fe2dc81e8800e6e101911b0bc9c6ff4246f6
3
+ metadata.gz: 3d684b7c52b23c91818f1c412732a5804a971086dc4ea96e3bc17291a6af736e
4
+ data.tar.gz: 367d300c983a2c19ac39363c0ee03ec18c69c12e6322dff265b876f396a9b65a
5
5
  SHA512:
6
- metadata.gz: 69ec59ae41a7785e9db639a851a374483967e89d360e18411f565bffd6b69403c45fa594e1d52ef9e2aee77b092980f5b209de0b8c7db013be0702e021c47a43
7
- data.tar.gz: 8829f4b6717249bf052a1462fc37379fd7638e9a11b64b033e89ea5ffa3c2d09546c142603190536b16558a98197d8c5c8feb3455d4e84fcf1d163a18cf049f9
6
+ metadata.gz: 1f89e7e60e9ffa3b538698f7fcce73b87fab82be0f723f6a8da3a2344ec1ed6cc87c553ef6dd3d8b7ddc48840f5161098b4b019d74fdfa4ad6ea41dfc55469ed
7
+ data.tar.gz: 35d714392a9e7f9a2fa56643d1fd3755b986bd48024c3b156b6c96c7055d167173876cdad75d755807835e1b5e05d675e7b514bf7104bcd2faae8cce2cb3d0bc
@@ -15,7 +15,7 @@ jobs:
15
15
  name: Build the gem
16
16
  runs-on: ubuntu-24.04
17
17
  steps:
18
- - uses: actions/checkout@v5
18
+ - uses: actions/checkout@v6
19
19
  - name: Install Ruby
20
20
  uses: ruby/setup-ruby@v1
21
21
  with:
@@ -24,7 +24,7 @@ jobs:
24
24
  shell: bash
25
25
  run: gem build --verbose *.gemspec
26
26
  - name: Upload gem to GitHub cache
27
- uses: actions/upload-artifact@v4
27
+ uses: actions/upload-artifact@v7
28
28
  with:
29
29
  name: gem-artifact
30
30
  path: '*.gem'
@@ -39,7 +39,7 @@ jobs:
39
39
  contents: write # clone repo and create release
40
40
  steps:
41
41
  - name: Download gem from GitHub cache
42
- uses: actions/download-artifact@v5
42
+ uses: actions/download-artifact@v8
43
43
  with:
44
44
  name: gem-artifact
45
45
  - name: Create Release
@@ -56,7 +56,7 @@ jobs:
56
56
  packages: write # publish to rubygems.pkg.github.com
57
57
  steps:
58
58
  - name: Download gem from GitHub cache
59
- uses: actions/download-artifact@v5
59
+ uses: actions/download-artifact@v8
60
60
  with:
61
61
  name: gem-artifact
62
62
  - name: Publish gem to GitHub packages
@@ -73,7 +73,7 @@ jobs:
73
73
  id-token: write # rubygems.org authentication
74
74
  steps:
75
75
  - name: Download gem from GitHub cache
76
- uses: actions/download-artifact@v5
76
+ uses: actions/download-artifact@v8
77
77
  with:
78
78
  name: gem-artifact
79
79
  - uses: rubygems/configure-rubygems-credentials@v1.0.0
@@ -92,7 +92,7 @@ jobs:
92
92
  - release-to-rubygems
93
93
  steps:
94
94
  - name: Download gem from GitHub cache
95
- uses: actions/download-artifact@v5
95
+ uses: actions/download-artifact@v8
96
96
  with:
97
97
  name: gem-artifact
98
98
  - name: Install Ruby
@@ -15,16 +15,16 @@ jobs:
15
15
  outputs:
16
16
  ruby: ${{ steps.ruby.outputs.versions }}
17
17
  steps:
18
- - uses: actions/checkout@v5
19
- - name: Install Ruby 3.4
18
+ - uses: actions/checkout@v6
19
+ - name: Install Ruby 4.0
20
20
  uses: ruby/setup-ruby@v1
21
21
  with:
22
- ruby-version: '3.4'
22
+ ruby-version: '4.0'
23
23
  bundler-cache: true
24
24
  - name: Run RuboCop
25
25
  run: bundle exec rake rubocop
26
26
  - id: ruby
27
- uses: voxpupuli/ruby-version@v1
27
+ uses: voxpupuli/ruby-version@v2
28
28
 
29
29
  test:
30
30
  name: "Ruby ${{ matrix.ruby }}"
@@ -35,7 +35,7 @@ jobs:
35
35
  matrix:
36
36
  ruby: ${{ fromJSON(needs.rubocop_and_matrix.outputs.ruby) }}
37
37
  steps:
38
- - uses: actions/checkout@v5
38
+ - uses: actions/checkout@v6
39
39
  - name: Setup ruby
40
40
  uses: ruby/setup-ruby@v1
41
41
  with:
data/.rubocop.yml CHANGED
@@ -5,6 +5,3 @@ inherit_gem:
5
5
 
6
6
  Style/GuardClause:
7
7
  Enabled: False
8
-
9
- AllCops:
10
- TargetRubyVersion: 3.2
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config --no-auto-gen-timestamp`
3
- # using RuboCop version 1.75.8.
3
+ # using RuboCop version 1.85.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -60,7 +60,7 @@ Naming/HeredocDelimiterNaming:
60
60
  # ForbiddenPrefixes: is_, has_, have_, does_
61
61
  # AllowedMethods: is_a?
62
62
  # MethodDefinitionMacros: define_method, define_singleton_method
63
- Naming/PredicateName:
63
+ Naming/PredicatePrefix:
64
64
  Exclude:
65
65
  - 'spec/**/*'
66
66
  - 'lib/beaker-hostgenerator/parser.rb'
@@ -100,9 +100,10 @@ RSpec/DescribedClass:
100
100
  RSpec/ExampleLength:
101
101
  Max: 35
102
102
 
103
- # Offense count: 7
104
- RSpec/MultipleExpectations:
105
- Max: 4
103
+ # Offense count: 1
104
+ RSpec/LeakyLocalVariable:
105
+ Exclude:
106
+ - 'spec/beaker-hostgenerator/generator_spec.rb'
106
107
 
107
108
  # Offense count: 2
108
109
  # Configuration parameters: AllowSubject.
@@ -200,6 +201,13 @@ Style/MutableConstant:
200
201
  - 'lib/beaker-hostgenerator/version.rb'
201
202
  - 'spec/helpers.rb'
202
203
 
204
+ # Offense count: 2
205
+ # Configuration parameters: AllowedClasses.
206
+ Style/OneClassPerFile:
207
+ Exclude:
208
+ - 'spec/helpers.rb'
209
+ - 'test/util/generator_helpers.rb'
210
+
203
211
  # Offense count: 1
204
212
  Style/OpenStructUse:
205
213
  Exclude:
@@ -232,7 +240,7 @@ Style/StringConcatenation:
232
240
 
233
241
  # Offense count: 2
234
242
  # This cop supports safe autocorrection (--autocorrect).
235
- # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns, SplitStrings.
243
+ # Configuration parameters: AllowHeredoc, AllowURI, AllowQualifiedName, URISchemes, AllowRBSInlineAnnotation, AllowCopDirectives, AllowedPatterns, SplitStrings.
236
244
  # URISchemes: http, https
237
245
  Layout/LineLength:
238
246
  Max: 168
data/CHANGELOG.md CHANGED
@@ -2,6 +2,34 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [3.5.0](https://github.com/voxpupuli/beaker-hostgenerator/tree/3.5.0) (2026-03-18)
6
+
7
+ [Full Changelog](https://github.com/voxpupuli/beaker-hostgenerator/compare/3.4.0...3.5.0)
8
+
9
+ **Implemented enhancements:**
10
+
11
+ - Add Lima hypervisor support with template and arch support on qemu [\#452](https://github.com/voxpupuli/beaker-hostgenerator/pull/452) ([Valantin](https://github.com/Valantin))
12
+ - Pull CentOS vagrant boxes from the registry [\#451](https://github.com/voxpupuli/beaker-hostgenerator/pull/451) ([silug](https://github.com/silug))
13
+
14
+ **Fixed bugs:**
15
+
16
+ - Correct non-stream CentOS boxes [\#448](https://github.com/voxpupuli/beaker-hostgenerator/pull/448) ([ekohl](https://github.com/ekohl))
17
+
18
+ ## [3.4.0](https://github.com/voxpupuli/beaker-hostgenerator/tree/3.4.0) (2025-12-27)
19
+
20
+ [Full Changelog](https://github.com/voxpupuli/beaker-hostgenerator/compare/3.3.0...3.4.0)
21
+
22
+ **Implemented enhancements:**
23
+
24
+ - Add Ruby 4.0 support [\#445](https://github.com/voxpupuli/beaker-hostgenerator/pull/445) ([bastelfreak](https://github.com/bastelfreak))
25
+ - Add Amazonlinux 2023 support [\#440](https://github.com/voxpupuli/beaker-hostgenerator/pull/440) ([bastelfreak](https://github.com/bastelfreak))
26
+ - Use a loop for SLES [\#433](https://github.com/voxpupuli/beaker-hostgenerator/pull/433) ([traylenator](https://github.com/traylenator))
27
+ - Generate Rocky, Alma and RedHat dynamically [\#432](https://github.com/voxpupuli/beaker-hostgenerator/pull/432) ([traylenator](https://github.com/traylenator))
28
+
29
+ **Merged pull requests:**
30
+
31
+ - Remove debug statement [\#434](https://github.com/voxpupuli/beaker-hostgenerator/pull/434) ([ekohl](https://github.com/ekohl))
32
+
5
33
  ## [3.3.0](https://github.com/voxpupuli/beaker-hostgenerator/tree/3.3.0) (2025-08-19)
6
34
 
7
35
  [Full Changelog](https://github.com/voxpupuli/beaker-hostgenerator/compare/3.2.1...3.3.0)
@@ -837,7 +865,7 @@ All notable changes to this project will be documented in this file.
837
865
 
838
866
  **Merged pull requests:**
839
867
 
840
- - \(QENG-7134\) Individualize cisco IOS platforms [\#153](https://github.com/voxpupuli/beaker-hostgenerator/pull/153) ([smcelmurry](https://github.com/smcelmurry))
868
+ - \(QENG-7134\) Individualize cisco IOS platforms [\#153](https://github.com/voxpupuli/beaker-hostgenerator/pull/153) ([junebug-spencer](https://github.com/junebug-spencer))
841
869
 
842
870
  ## [1.1.27](https://github.com/voxpupuli/beaker-hostgenerator/tree/1.1.27) (2019-04-25)
843
871
 
@@ -23,12 +23,12 @@ Gem::Specification.new do |s|
23
23
 
24
24
  # Testing dependencies
25
25
  s.add_development_dependency 'fakefs', '>= 0.6', '< 4.0'
26
- s.add_development_dependency 'minitest', '~> 5.18'
26
+ s.add_development_dependency 'minitest', '>= 5.18', '< 7'
27
27
  s.add_development_dependency 'pry', '~> 0.10'
28
28
  s.add_development_dependency 'rake', '~> 13.0'
29
29
  s.add_development_dependency 'rspec', '~> 3.0'
30
30
  s.add_development_dependency 'rspec-its', '>= 1.3.1', '< 3'
31
- s.add_development_dependency 'voxpupuli-rubocop', '~> 4.2.0'
31
+ s.add_development_dependency 'voxpupuli-rubocop', '~> 5.2.0'
32
32
 
33
33
  # Run time dependencies
34
34
  s.add_dependency 'deep_merge', '~> 1.0'
@@ -123,6 +123,14 @@ module BeakerHostGenerator
123
123
  'template' => 'amazon-7-arm64',
124
124
  },
125
125
  },
126
+ 'amazon2023-64' => {
127
+ general: {
128
+ 'platform' => 'el-9-x86_64',
129
+ },
130
+ docker: {
131
+ 'image' => 'amazonlinux:2023',
132
+ },
133
+ },
126
134
  'archlinuxrolling-64' => {
127
135
  general: {
128
136
  'platform' => 'archlinux-rolling-x64',
@@ -134,11 +142,6 @@ module BeakerHostGenerator
134
142
  'image' => 'archlinux/archlinux',
135
143
  },
136
144
  },
137
- 'redhat7-64' => {
138
- general: {
139
- 'platform' => 'el-7-x86_64',
140
- },
141
- },
142
145
  'redhatfips7-64' => {
143
146
  general: {
144
147
  'platform' => 'el-7-x86_64',
@@ -148,35 +151,6 @@ module BeakerHostGenerator
148
151
  'template' => 'redhat-fips-7-x86_64',
149
152
  },
150
153
  },
151
- 'redhat7-POWER' => {
152
- general: {
153
- 'platform' => 'el-7-ppc64le',
154
- },
155
- abs: {
156
- 'template' => 'redhat-7.3-power8',
157
- },
158
- },
159
- 'redhat7-S390X' => {
160
- general: {
161
- 'platform' => 'el-7-s390x',
162
- },
163
- },
164
- 'redhat7-AARCH64' => {
165
- general: {
166
- 'platform' => 'el-7-aarch64',
167
- },
168
- abs: {
169
- 'template' => 'centos-7-arm64',
170
- },
171
- vmpooler: {
172
- 'template' => 'redhat-7-x86_64',
173
- },
174
- },
175
- 'redhat8-64' => {
176
- general: {
177
- 'platform' => 'el-8-x86_64',
178
- },
179
- },
180
154
  'redhatfips8-64' => {
181
155
  general: {
182
156
  'platform' => 'el-8-x86_64',
@@ -186,30 +160,6 @@ module BeakerHostGenerator
186
160
  'template' => 'redhat-fips-8-x86_64',
187
161
  },
188
162
  },
189
- 'redhat8-AARCH64' => {
190
- general: {
191
- 'platform' => 'el-8-aarch64',
192
- },
193
- abs: {
194
- 'template' => 'redhat-8-arm64',
195
- },
196
- vmpooler: {
197
- 'template' => 'redhat-8-x86_64',
198
- },
199
- },
200
- 'redhat8-POWER' => {
201
- general: {
202
- 'platform' => 'el-8-ppc64le',
203
- },
204
- abs: {
205
- 'template' => 'redhat-8-power8',
206
- },
207
- },
208
- 'redhat9-64' => {
209
- general: {
210
- 'platform' => 'el-9-x86_64',
211
- },
212
- },
213
163
  'redhatfips9-64' => {
214
164
  general: {
215
165
  'platform' => 'el-9-x86_64',
@@ -219,174 +169,12 @@ module BeakerHostGenerator
219
169
  'template' => 'redhat-fips-9-x86_64',
220
170
  },
221
171
  },
222
- 'redhat9-AARCH64' => {
223
- general: {
224
- 'platform' => 'el-9-aarch64',
225
- },
226
- abs: {
227
- 'template' => 'redhat-9-arm64',
228
- },
229
- vmpooler: {
230
- 'template' => 'redhat-9-arm64',
231
- },
232
- },
233
- 'redhat10-64' => {
234
- general: {
235
- 'platform' => 'el-10-x86_64',
236
- },
237
- },
238
- 'redhat10-AARCH64' => {
239
- general: {
240
- 'platform' => 'el-10-aarch64',
241
- },
242
- abs: {
243
- 'template' => 'redhat-10-arm64',
244
- },
245
- vmpooler: {
246
- 'template' => 'redhat-10-arm64',
247
- },
248
- },
249
- 'rocky8-64' => {
250
- general: {
251
- 'platform' => 'el-8-x86_64',
252
- },
253
- },
254
- 'rocky9-64' => {
255
- general: {
256
- 'platform' => 'el-9-x86_64',
257
- },
258
- },
259
- 'rocky9-AARCH64' => {
260
- general: {
261
- 'platform' => 'el-9-aarch64',
262
- },
263
- abs: {
264
- 'template' => 'rocky-9-arm64',
265
- },
266
- vmpooler: {
267
- 'template' => 'rocky-9-arm64',
268
- },
269
- },
270
- 'rocky10-64' => {
271
- general: {
272
- 'platform' => 'el-10-x86_64',
273
- },
274
- },
275
- 'rocky10-AARCH64' => {
276
- general: {
277
- 'platform' => 'el-10-aarch64',
278
- },
279
- abs: {
280
- 'template' => 'rocky-10-arm64',
281
- },
282
- vmpooler: {
283
- 'template' => 'rocky-10-arm64',
284
- },
285
- },
286
- 'almalinux8-64' => {
287
- general: {
288
- 'platform' => 'el-8-x86_64',
289
- },
290
- },
291
- 'almalinux9-64' => {
292
- general: {
293
- 'platform' => 'el-9-x86_64',
294
- },
295
- },
296
- 'almalinux9-AARCH64' => {
297
- general: {
298
- 'platform' => 'el-9-aarch64',
299
- },
300
- abs: {
301
- 'template' => 'almalinux-9-arm64',
302
- },
303
- vmpooler: {
304
- 'template' => 'almalinux-9-arm64',
305
- },
306
- },
307
- 'almalinux10-64' => {
308
- general: {
309
- 'platform' => 'el-10-x86_64',
310
- },
311
- },
312
- 'almalinux10-AARCH64' => {
313
- general: {
314
- 'platform' => 'el-10-aarch64',
315
- },
316
- abs: {
317
- 'template' => 'almalinux-10-arm64',
318
- },
319
- vmpooler: {
320
- 'template' => 'almalinux-10-arm64',
321
- },
322
- },
323
- 'redhat9-POWER' => {
324
- general: {
325
- 'platform' => 'el-9-ppc64le',
326
- },
327
- abs: {
328
- 'template' => 'redhat-9-power9',
329
- },
330
- },
331
- 'oracle9-AARCH64' => {
332
- general: {
333
- 'platform' => 'el-9-aarch64',
334
- },
335
- abs: {
336
- 'template' => 'oracle-9-arm64',
337
- },
338
- vmpooler: {
339
- 'template' => 'oracle-9-arm64',
340
- },
341
- },
342
- 'sles11-32' => {
343
- general: {
344
- 'platform' => 'sles-11-i386',
345
- },
346
- vmpooler: {
347
- 'template' => 'sles-11-i386',
348
- },
349
- },
350
- 'sles11-64' => {
351
- general: {
352
- 'platform' => 'sles-11-x86_64',
353
- },
354
- vmpooler: {
355
- 'template' => 'sles-11-x86_64',
356
- },
357
- },
358
- 'sles11-S390X' => {
359
- general: {
360
- 'platform' => 'sles-11-s390x',
361
- },
362
- },
363
- 'sles12-64' => {
364
- general: {
365
- 'platform' => 'sles-12-x86_64',
366
- },
367
- vmpooler: {
368
- 'template' => 'sles-12-x86_64',
369
- },
370
- },
371
- 'sles12-S390X' => {
372
- general: {
373
- 'platform' => 'sles-12-s390x',
374
- },
375
- },
376
- 'sles12-POWER' => {
172
+ 'redhat7-POWER' => {
377
173
  general: {
378
- 'platform' => 'sles-12-ppc64le',
174
+ 'platform' => 'el-7-ppc64le',
379
175
  },
380
176
  abs: {
381
- 'template' => 'sles-12-power8',
382
- },
383
- },
384
- 'sles15-64' => {
385
- general: {
386
- 'platform' => 'sles-15-x86_64',
387
- },
388
- vmpooler: {
389
- 'template' => 'sles-15-x86_64',
177
+ 'template' => 'redhat-7.3-power8', # special case ?
390
178
  },
391
179
  },
392
180
  'windows2008-64' => {
@@ -932,11 +720,45 @@ module BeakerHostGenerator
932
720
  # AIX
933
721
  yield %w[aix73-POWER aix-7.3-power]
934
722
 
723
+ # SLES
724
+ [11, 12, 15].each do |release|
725
+ yield ["sles#{release}-32", "sles-#{release}-i386"] if release == 11
726
+ yield ["sles#{release}-64", "sles-#{release}-x86_64"]
727
+ yield ["sles#{release}-S390X", "sles-#{release}-s390x"]
728
+ yield ["sles#{release}-POWER", "sles-#{release}-ppc64le"] if release >= 12
729
+ end
730
+
935
731
  # CentOS
936
732
  (7..10).each do |release|
937
733
  yield ["centos#{release}-64", "el-#{release}-x86_64"]
938
734
  end
939
735
 
736
+ # AlmaLinux
737
+ (8..10).each do |release|
738
+ yield ["almalinux#{release}-64", "el-#{release}-x86_64"]
739
+ yield ["almalinux#{release}-AARCH64", "el-#{release}-aarch64"] if release >= 9
740
+ end
741
+
742
+ # RedHat
743
+ (7..10).each do |release|
744
+ yield ["redhat#{release}-64", "el-#{release}-x86_64"]
745
+ yield ["redhat#{release}-AARCH64", "el-#{release}-aarch64"]
746
+ yield ["redhat#{release}-POWER", "el-#{release}-ppc64le"] if release <= 9
747
+ yield ["redhat#{release}-S390X", "el-#{release}-s390x"] if release == 7
748
+ end
749
+
750
+ # Rocky
751
+ (8..10).each do |release|
752
+ yield ["rocky#{release}-64", "el-#{release}-x86_64"]
753
+ yield ["rocky#{release}-AARCH64", "el-#{release}-aarch64"] if release >= 9
754
+ end
755
+
756
+ # Oracle
757
+ (7..10).each do |release|
758
+ yield ["oracle#{release}-64", "el-#{release}-x86_64"]
759
+ yield ["oracle#{release}-AARCH64", "el-#{release}-aarch64"] if release == 9
760
+ end
761
+
940
762
  # Debian
941
763
  (10..13).each do |release|
942
764
  yield ["debian#{release}-32", "debian-#{release}-i386"] if release < 11
@@ -987,10 +809,6 @@ module BeakerHostGenerator
987
809
  yield %w[amazonfips2023-64 amazonfips-2023-x86_64]
988
810
  # Azure Linux
989
811
  yield %w[azure3-64 azure-3-x86_64]
990
- # Oracle / OracleLinux
991
- (7..10).each do |release|
992
- yield ["oracle#{release}-64", "el-#{release}-x86_64"]
993
- end
994
812
 
995
813
  # Scientific Linux
996
814
  yield ['scientific7-64', 'el-7-x86_64']
@@ -24,7 +24,26 @@ module BeakerHostGenerator
24
24
 
25
25
  case node_info['ostype']
26
26
  when /^(almalinux|centos|oracle|redhat|rocky|scientific)/
27
- base_config['template'] ||= base_config['platform']&.gsub(/^el/, ::Regexp.last_match(1))
27
+ os = Regexp.last_match(1)
28
+ arch = case node_info['bits']
29
+ when '64'
30
+ 'x86_64'
31
+ when 'AARCH64'
32
+ 'arm64'
33
+ when 'POWER'
34
+ "power#{node_info['ostype'].sub(os, '')}"
35
+ end
36
+ base_config['template'] ||= "#{node_info['ostype'].sub(os, "#{os}-")}-#{arch}" if arch
37
+
38
+ when /^(sles)/
39
+ os = Regexp.last_match(1)
40
+ version = node_info['ostype'].sub(os, '')
41
+ arch = case node_info['bits']
42
+ when 'POWER'
43
+ 'power8'
44
+ end
45
+ base_config['template'] ||= "#{os}-#{version}-#{arch}" if arch
46
+
28
47
  when /^aix/, /^fedora/, /^opensuse/, /^panos/
29
48
  base_config['template'] ||= base_config['platform']
30
49
  when /^(debian|ubuntu|amazon(fips)?)/
@@ -0,0 +1,83 @@
1
+ require 'beaker-hostgenerator/data'
2
+ require 'beaker-hostgenerator/hypervisor'
3
+
4
+ module BeakerHostGenerator
5
+ module Hypervisor
6
+ # Implementation of the Lima hypervisor interface to generate host configurations
7
+ # for nodes that use Lima as their hypervisor.
8
+ class Lima < BeakerHostGenerator::Hypervisor::Interface
9
+ include BeakerHostGenerator::Data
10
+
11
+ def generate_node(node_info, base_config, bhg_version)
12
+ # Generate the Lima template URL based on the OS type
13
+ template = get_template(node_info['ostype'])
14
+ arch = case node_info['bits']
15
+ when '64'
16
+ 'x86_64'
17
+ when 'AARCH64'
18
+ 'aarch64'
19
+ end
20
+
21
+ base_config['lima'] = {
22
+ 'config' => {
23
+ 'arch' => arch,
24
+ 'vmType' => 'qemu',
25
+ 'base' => [template],
26
+ },
27
+ }
28
+
29
+ base_generate_node(node_info, base_config, bhg_version, :lima)
30
+ end
31
+
32
+ private
33
+
34
+ def get_template(ostype)
35
+ case ostype
36
+ # Ubuntu - use ubuntu-lts for LTS releases
37
+ when /^ubuntu(\d+)$/
38
+ version = Regexp.last_match(1)
39
+ "template:ubuntu-#{version[0, 2]}.#{version[2, 2]}"
40
+
41
+ # Debian
42
+ when /^debian(\d+)$/
43
+ version = Regexp.last_match(1)
44
+ "template:debian-#{version}"
45
+
46
+ # CentOS and variants
47
+ when /^centos(\d+)$/
48
+ version = Regexp.last_match(1)
49
+ (version.to_i == 7) ? "template:centos-#{version}" : "template:centos-stream-#{version}"
50
+
51
+ # AlmaLinux
52
+ when /^almalinux(\d+)$/
53
+ version = Regexp.last_match(1)
54
+ "template:almalinux-#{version}"
55
+
56
+ # Rocky Linux
57
+ when /^rocky(\d+)$/
58
+ version = Regexp.last_match(1)
59
+ "template:rocky-#{version}"
60
+
61
+ # Oracle Linux
62
+ when /^oracle(\d+)$/
63
+ version = Regexp.last_match(1)
64
+ "template:oraclelinux-#{version}"
65
+
66
+ # Fedora
67
+ when /^fedora(\d+)$/
68
+ version = Regexp.last_match(1)
69
+ "template:fedora-#{version}"
70
+
71
+ # OpenSUSE
72
+ when /^opensuse(\d+)$/
73
+ version = Regexp.last_match(1)
74
+ "template:opensuse-leap-#{version}"
75
+
76
+ # Default fallback - use ostype as-is
77
+ else
78
+ "template:#{ostype}"
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -33,12 +33,7 @@ module BeakerHostGenerator
33
33
  end
34
34
  when /^centos(\d+)-64/
35
35
  version = Regexp.last_match(1)
36
- if version.to_i >= 8
37
- base_config['box'] = "centos/stream#{version}"
38
- base_config['box_url'] = "https://cloud.centos.org/centos/#{version}-stream/x86_64/images/CentOS-Stream-Vagrant-#{version}-latest.x86_64.vagrant-libvirt.box"
39
- else
40
- base_config = "centos/#{version}"
41
- end
36
+ base_config['box'] = (version.to_i >= 8) ? "centos/stream#{version}" : "centos/#{version}"
42
37
  end
43
38
 
44
39
  # We don't use this by default
@@ -19,7 +19,35 @@ module BeakerHostGenerator
19
19
 
20
20
  case node_info['ostype']
21
21
  when /^(almalinux|centos|oracle|redhat|rocky|scientific)/
22
- base_config['template'] ||= base_config['platform']&.gsub(/^el/, ::Regexp.last_match(1))
22
+ os = Regexp.last_match(1)
23
+ arch = case node_info['bits']
24
+ when '64'
25
+ 'x86_64'
26
+ when 'AARCH64'
27
+ case node_info['ostype'].sub(os, '')
28
+ when '7', '8'
29
+ 'x86_64'
30
+ else
31
+ 'arm64'
32
+ end
33
+ when 'POWER'
34
+ 'ppc64le'
35
+ when 'S390X'
36
+ 's390x'
37
+ end
38
+ base_config['template'] ||= "#{node_info['ostype'].sub(os, "#{os}-")}-#{arch}" if arch
39
+
40
+ when /^(sles)/
41
+ os = Regexp.last_match(1)
42
+ version = node_info['ostype'].sub(os, '')
43
+ arch = case node_info['bits']
44
+ when '64'
45
+ 'x86_64'
46
+ when '32'
47
+ 'i386'
48
+ end
49
+ base_config['template'] ||= "#{os}-#{version}-#{arch}" if arch
50
+
23
51
  when /^fedora/, /^opensuse/, /^panos/
24
52
  base_config['template'] ||= base_config['platform']
25
53
  when /^(debian|ubuntu|vro)/
@@ -46,6 +46,7 @@ module BeakerHostGenerator
46
46
  'container_swarm' => BeakerHostGenerator::Hypervisor::Docker,
47
47
  'docker' => BeakerHostGenerator::Hypervisor::Docker,
48
48
  'hcloud' => BeakerHostGenerator::Hypervisor::Hcloud,
49
+ 'lima' => BeakerHostGenerator::Hypervisor::Lima,
49
50
  'vagrant' => BeakerHostGenerator::Hypervisor::Vagrant,
50
51
  'vagrant_libvirt' => BeakerHostGenerator::Hypervisor::Vagrant,
51
52
  'vmpooler' => BeakerHostGenerator::Hypervisor::Vmpooler,
@@ -118,3 +119,4 @@ require 'beaker-hostgenerator/hypervisor/vagrant'
118
119
  require 'beaker-hostgenerator/hypervisor/docker'
119
120
  require 'beaker-hostgenerator/hypervisor/abs'
120
121
  require 'beaker-hostgenerator/hypervisor/hcloud'
122
+ require 'beaker-hostgenerator/hypervisor/lima'
@@ -1,5 +1,5 @@
1
1
  module BeakerHostGenerator
2
2
  module Version
3
- STRING = '3.3.0'
3
+ STRING = '3.5.0'
4
4
  end
5
5
  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: 3.3.0
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Branan Purvine-Riley
@@ -36,16 +36,22 @@ dependencies:
36
36
  name: minitest
37
37
  requirement: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '5.18'
42
+ - - "<"
43
+ - !ruby/object:Gem::Version
44
+ version: '7'
42
45
  type: :development
43
46
  prerelease: false
44
47
  version_requirements: !ruby/object:Gem::Requirement
45
48
  requirements:
46
- - - "~>"
49
+ - - ">="
47
50
  - !ruby/object:Gem::Version
48
51
  version: '5.18'
52
+ - - "<"
53
+ - !ruby/object:Gem::Version
54
+ version: '7'
49
55
  - !ruby/object:Gem::Dependency
50
56
  name: pry
51
57
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +120,14 @@ dependencies:
114
120
  requirements:
115
121
  - - "~>"
116
122
  - !ruby/object:Gem::Version
117
- version: 4.2.0
123
+ version: 5.2.0
118
124
  type: :development
119
125
  prerelease: false
120
126
  version_requirements: !ruby/object:Gem::Requirement
121
127
  requirements:
122
128
  - - "~>"
123
129
  - !ruby/object:Gem::Version
124
- version: 4.2.0
130
+ version: 5.2.0
125
131
  - !ruby/object:Gem::Dependency
126
132
  name: deep_merge
127
133
  requirement: !ruby/object:Gem::Requirement
@@ -175,6 +181,7 @@ files:
175
181
  - lib/beaker-hostgenerator/hypervisor/abs.rb
176
182
  - lib/beaker-hostgenerator/hypervisor/docker.rb
177
183
  - lib/beaker-hostgenerator/hypervisor/hcloud.rb
184
+ - lib/beaker-hostgenerator/hypervisor/lima.rb
178
185
  - lib/beaker-hostgenerator/hypervisor/unknown.rb
179
186
  - lib/beaker-hostgenerator/hypervisor/vagrant.rb
180
187
  - lib/beaker-hostgenerator/hypervisor/vmpooler.rb
@@ -200,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
207
  - !ruby/object:Gem::Version
201
208
  version: '0'
202
209
  requirements: []
203
- rubygems_version: 3.6.9
210
+ rubygems_version: 4.0.6
204
211
  specification_version: 4
205
212
  summary: Beaker Host Generator Utility
206
213
  test_files: []