puppet_litmus 0.25.1 → 0.27.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/exe/matrix_from_metadata_v2 +29 -10
- data/lib/puppet_litmus/inventory_manipulation.rb +1 -1
- data/lib/puppet_litmus/puppet_helpers.rb +18 -12
- data/lib/puppet_litmus/rake_tasks.rb +4 -4
- data/lib/puppet_litmus/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d77bde09896757aa35ff61163febb315e2d50682b1b2dcdfdbc53b77da576c8
|
4
|
+
data.tar.gz: d80089f753244e77bf491e4bc9ac14a42e6ae112a85d4b6f41206c38b22b7a07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31a2ac1b11fb651d06de17648e345fbab6105ceb92ff9da52632bba725f1689a111219040e5dacf25cc775382ea15c3845167318a45a953cfb33ab1ebf509d30
|
7
|
+
data.tar.gz: 108b085470b7d07a438c105871300f9a5a759443592073239c4c4d9c8648207c51774c9689a951ef3adc4b70796cada4f47b4f3263c295fde5aafa99f41ac472
|
data/README.md
CHANGED
@@ -22,6 +22,8 @@ Litmus also facilitates parallel test runs and running tests in isolation. Each
|
|
22
22
|
|
23
23
|
Install Litmus as a gem by running ```gem install puppet_litmus```.
|
24
24
|
|
25
|
+
* Note if you choose to override the `litmus_inventory.yaml` location, please ensure that the directory strutcture you define exists.
|
26
|
+
|
25
27
|
## Documentation
|
26
28
|
|
27
29
|
For documentation, see our [Litmus Docs Site](https://puppetlabs.github.io/litmus/).
|
data/exe/matrix_from_metadata_v2
CHANGED
@@ -34,16 +34,26 @@ DOCKER_PLATFORMS = {
|
|
34
34
|
|
35
35
|
# This table uses the latest version in each collection for accurate
|
36
36
|
# comparison when evaluating puppet requirements from the metadata
|
37
|
-
COLLECTION_TABLE =
|
38
|
-
|
39
|
-
|
40
|
-
|
37
|
+
COLLECTION_TABLE = [
|
38
|
+
{
|
39
|
+
puppet_maj_version: 6,
|
40
|
+
ruby_version: 2.5,
|
41
|
+
},
|
42
|
+
{
|
43
|
+
puppet_maj_version: 7,
|
44
|
+
ruby_version: 2.7,
|
45
|
+
},
|
46
|
+
].freeze
|
41
47
|
|
42
48
|
matrix = {
|
43
49
|
platforms: [],
|
44
50
|
collection: [],
|
45
51
|
}
|
46
52
|
|
53
|
+
spec_matrix = {
|
54
|
+
include: [],
|
55
|
+
}
|
56
|
+
|
47
57
|
metadata = JSON.parse(File.read('metadata.json'))
|
48
58
|
# Set platforms based on declared operating system support
|
49
59
|
metadata['operatingsystem_support'].sort_by { |a| a['operatingsystem'] }.each do |sup|
|
@@ -83,17 +93,20 @@ if metadata.key?('requirements') && metadata['requirements'].length.positive?
|
|
83
93
|
cmp_one, ver_one, cmp_two, ver_two = match.captures
|
84
94
|
reqs = ["#{cmp_one} #{ver_one}", "#{cmp_two} #{ver_two}"]
|
85
95
|
|
86
|
-
COLLECTION_TABLE.each do |
|
87
|
-
|
88
|
-
|
89
|
-
|
96
|
+
COLLECTION_TABLE.each do |collection|
|
97
|
+
# Test against the "largest" puppet version in a collection, e.g. `7.9999` to allow puppet requirements with a non-zero lower bound on minor/patch versions.
|
98
|
+
# This assumes that such a boundary will always allow the latest actually existing puppet version of a release stream, trading off simplicity vs accuracy here.
|
99
|
+
next unless Gem::Requirement.create(reqs).satisfied_by?(Gem::Version.new("#{collection[:puppet_maj_version]}.9999"))
|
100
|
+
|
101
|
+
matrix[:collection] << "puppet#{collection[:puppet_maj_version]}-nightly"
|
102
|
+
spec_matrix[:include] << { puppet_version: "~> #{collection[:puppet_maj_version]}.0", ruby_version: collection[:ruby_version] }
|
90
103
|
end
|
91
104
|
end
|
92
105
|
end
|
93
106
|
|
94
107
|
# Set to defaults (all collections) if no matches are found
|
95
108
|
if matrix[:collection].empty?
|
96
|
-
matrix[:collection] = COLLECTION_TABLE.
|
109
|
+
matrix[:collection] = COLLECTION_TABLE.map { |collection| "puppet#{collection[:puppet_maj_version]}-nightly" }
|
97
110
|
end
|
98
111
|
|
99
112
|
# Just to make sure there aren't any duplicates
|
@@ -101,5 +114,11 @@ matrix[:platforms] = matrix[:platforms].uniq.sort { |a, b| a[:label] <=> b[:labe
|
|
101
114
|
matrix[:collection] = matrix[:collection].uniq.sort
|
102
115
|
|
103
116
|
puts "::set-output name=matrix::#{JSON.generate(matrix)}"
|
117
|
+
puts "::set-output name=spec_matrix::#{JSON.generate(spec_matrix)}"
|
118
|
+
|
119
|
+
acceptance_test_cell_count = matrix[:platforms].length * matrix[:collection].length
|
120
|
+
spec_test_cell_count = spec_matrix[:include].length
|
104
121
|
|
105
|
-
puts "Created matrix with #{
|
122
|
+
puts "Created matrix with #{acceptance_test_cell_count + spec_test_cell_count} cells:"
|
123
|
+
puts " - Acceptance Test Cells: #{acceptance_test_cell_count}"
|
124
|
+
puts " - Spec Test Cells: #{spec_test_cell_count}"
|
@@ -11,7 +11,7 @@ module PuppetLitmus::InventoryManipulation
|
|
11
11
|
def inventory_hash_from_inventory_file(inventory_full_path = nil)
|
12
12
|
require 'yaml'
|
13
13
|
inventory_full_path = if inventory_full_path.nil?
|
14
|
-
|
14
|
+
"#{Dir.pwd}/spec/fixtures/litmus_inventory.yaml"
|
15
15
|
else
|
16
16
|
inventory_full_path
|
17
17
|
end
|
@@ -69,13 +69,19 @@ module PuppetLitmus::PuppetHelpers
|
|
69
69
|
end
|
70
70
|
|
71
71
|
manifest_file_location = opts[:manifest_file_location] || create_manifest_file(manifest)
|
72
|
-
inventory_hash = File.exist?('
|
73
|
-
raise "Target '#{target_node_name}' not found in
|
72
|
+
inventory_hash = File.exist?('spec/fixtures/litmus_inventory.yaml') ? inventory_hash_from_inventory_file : localhost_inventory_hash
|
73
|
+
raise "Target '#{target_node_name}' not found in spec/fixtures/litmus_inventory.yaml" unless target_in_inventory?(inventory_hash, target_node_name)
|
74
74
|
|
75
75
|
span.add_field('litmus.node_name', target_node_name)
|
76
76
|
add_platform_field(inventory_hash, target_node_name)
|
77
77
|
|
78
|
-
|
78
|
+
# Forcibly set the locale of the command
|
79
|
+
locale = if os[:family] != 'windows'
|
80
|
+
'LC_ALL=en_US.UTF-8 '
|
81
|
+
else
|
82
|
+
''
|
83
|
+
end
|
84
|
+
command_to_run = "#{locale}#{opts[:prefix_command]} puppet apply #{manifest_file_location}"
|
79
85
|
command_to_run += ' --trace' if !opts[:trace].nil? && (opts[:trace] == true)
|
80
86
|
command_to_run += " --modulepath #{Dir.pwd}/spec/fixtures/modules" if target_node_name == 'litmus_localhost'
|
81
87
|
command_to_run += " --hiera_config='#{opts[:hiera_config]}'" unless opts[:hiera_config].nil?
|
@@ -207,8 +213,8 @@ module PuppetLitmus::PuppetHelpers
|
|
207
213
|
span.add_field('litmus.opts', opts)
|
208
214
|
|
209
215
|
target_node_name = targeting_localhost? ? 'litmus_localhost' : ENV['TARGET_HOST']
|
210
|
-
inventory_hash = File.exist?('
|
211
|
-
raise "Target '#{target_node_name}' not found in
|
216
|
+
inventory_hash = File.exist?('spec/fixtures/litmus_inventory.yaml') ? inventory_hash_from_inventory_file : localhost_inventory_hash
|
217
|
+
raise "Target '#{target_node_name}' not found in spec/fixtures/litmus_inventory.yaml" unless target_in_inventory?(inventory_hash, target_node_name)
|
212
218
|
|
213
219
|
span.add_field('litmus.node_name', target_node_name)
|
214
220
|
add_platform_field(inventory_hash, target_node_name)
|
@@ -246,8 +252,8 @@ module PuppetLitmus::PuppetHelpers
|
|
246
252
|
span.add_field('litmus.options', options)
|
247
253
|
|
248
254
|
target_node_name = targeting_localhost? ? 'litmus_localhost' : ENV['TARGET_HOST']
|
249
|
-
inventory_hash = File.exist?('
|
250
|
-
raise "Target '#{target_node_name}' not found in
|
255
|
+
inventory_hash = File.exist?('spec/fixtures/litmus_inventory.yaml') ? inventory_hash_from_inventory_file : localhost_inventory_hash
|
256
|
+
raise "Target '#{target_node_name}' not found in spec/fixtures/litmus_inventory.yaml" unless target_in_inventory?(inventory_hash, target_node_name)
|
251
257
|
|
252
258
|
span.add_field('litmus.node_name', target_node_name)
|
253
259
|
add_platform_field(inventory_hash, target_node_name)
|
@@ -300,12 +306,12 @@ module PuppetLitmus::PuppetHelpers
|
|
300
306
|
target_node_name = targeting_localhost? ? 'litmus_localhost' : ENV['TARGET_HOST']
|
301
307
|
inventory_hash = if !opts[:inventory_file].nil? && File.exist?(opts[:inventory_file])
|
302
308
|
inventory_hash_from_inventory_file(opts[:inventory_file])
|
303
|
-
elsif File.exist?('
|
304
|
-
inventory_hash_from_inventory_file('
|
309
|
+
elsif File.exist?('spec/fixtures/litmus_inventory.yaml')
|
310
|
+
inventory_hash_from_inventory_file('spec/fixtures/litmus_inventory.yaml')
|
305
311
|
else
|
306
312
|
localhost_inventory_hash
|
307
313
|
end
|
308
|
-
raise "Target '#{target_node_name}' not found in
|
314
|
+
raise "Target '#{target_node_name}' not found in spec/fixtures/litmus_inventory.yaml" unless target_in_inventory?(inventory_hash, target_node_name)
|
309
315
|
|
310
316
|
span.add_field('litmus.node_name', target_node_name)
|
311
317
|
add_platform_field(inventory_hash, target_node_name)
|
@@ -365,8 +371,8 @@ module PuppetLitmus::PuppetHelpers
|
|
365
371
|
span.add_field('litmus.arguments', arguments)
|
366
372
|
|
367
373
|
target_node_name = targeting_localhost? ? 'litmus_localhost' : ENV['TARGET_HOST']
|
368
|
-
inventory_hash = File.exist?('
|
369
|
-
raise "Target '#{target_node_name}' not found in
|
374
|
+
inventory_hash = File.exist?('spec/fixtures/litmus_inventory.yaml') ? inventory_hash_from_inventory_file : localhost_inventory_hash
|
375
|
+
raise "Target '#{target_node_name}' not found in spec/fixtures/litmus_inventory.yaml" unless target_in_inventory?(inventory_hash, target_node_name)
|
370
376
|
|
371
377
|
span.add_field('litmus.node_name', target_node_name)
|
372
378
|
add_platform_field(inventory_hash, target_node_name)
|
@@ -125,7 +125,7 @@ namespace :litmus do
|
|
125
125
|
|
126
126
|
results = install_agent(args[:collection], targets, inventory_hash)
|
127
127
|
results.each do |result|
|
128
|
-
command_to_run = "bolt task run puppet_agent::install --targets #{result['target']} --inventoryfile
|
128
|
+
command_to_run = "bolt task run puppet_agent::install --targets #{result['target']} --inventoryfile spec/fixtures/litmus_inventory.yaml --modulepath #{DEFAULT_CONFIG_DATA['modulepath']}"
|
129
129
|
raise "Failed on #{result['target']}\n#{result}\ntry running '#{command_to_run}'" if result['status'] != 'success'
|
130
130
|
|
131
131
|
# validate successful install
|
@@ -157,7 +157,7 @@ namespace :litmus do
|
|
157
157
|
end
|
158
158
|
|
159
159
|
# update the inventory with the puppet-agent feature set per node
|
160
|
-
write_to_inventory_file(inventory_hash, '
|
160
|
+
write_to_inventory_file(inventory_hash, 'spec/fixtures/litmus_inventory.yaml')
|
161
161
|
end
|
162
162
|
|
163
163
|
# Add a given feature to a selection of nodes
|
@@ -182,7 +182,7 @@ namespace :litmus do
|
|
182
182
|
inventory_hash = add_feature_to_node(inventory_hash, args[:added_feature], target)
|
183
183
|
end
|
184
184
|
|
185
|
-
write_to_inventory_file(inventory_hash, '
|
185
|
+
write_to_inventory_file(inventory_hash, 'spec/fixtures/litmus_inventory.yaml')
|
186
186
|
|
187
187
|
puts 'Feature added'
|
188
188
|
end
|
@@ -336,7 +336,7 @@ namespace :litmus do
|
|
336
336
|
|
337
337
|
namespace :acceptance do
|
338
338
|
require 'rspec/core/rake_task'
|
339
|
-
if File.file?('
|
339
|
+
if File.file?('spec/fixtures/litmus_inventory.yaml')
|
340
340
|
inventory_hash = inventory_hash_from_inventory_file
|
341
341
|
targets = find_targets(inventory_hash, nil)
|
342
342
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet_litmus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.27.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bolt
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: 2.0.1
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: 4.0.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: 2.0.1
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: 4.0.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: puppet-modulebuilder
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -211,7 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
211
211
|
- !ruby/object:Gem::Version
|
212
212
|
version: '0'
|
213
213
|
requirements: []
|
214
|
-
rubygems_version: 3.
|
214
|
+
rubygems_version: 3.1.4
|
215
215
|
signing_key:
|
216
216
|
specification_version: 4
|
217
217
|
summary: Providing a simple command line tool for puppet content creators, to enable
|