puppet_litmus 1.0.2 → 1.0.3

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: d2693612b3ed4ca88a6ea03742ea115b658d888635f7302a9b8ee36d447d8994
4
- data.tar.gz: 0a2826a635e4ae9619de7a8b7c138506924896fc2ee7d297c78a5b430890150b
3
+ metadata.gz: f42320bf296d7e6efb9370a3e39b775a868417f9dc337aa7c5dee5052b055c6f
4
+ data.tar.gz: 607ab4fe445eb6f8b29d758212e84065b3e15b0273af85debec7676ea70c9115
5
5
  SHA512:
6
- metadata.gz: 3b842feacbc47aa91f9b2f8aee6a81e37f7f58a06b73560ba4b5e61a0a798db4558b51823832a585233e224da8f594de0cb06f38cd1a3e25da83866687210975
7
- data.tar.gz: baf2be2e9f64f2c0f8e60807494d109b82ce86bafaa33f2b1b46ecb9ad30a11393972b2fbad069528a9d8fe7dc3516afa0eb8cf90f443e1d210f93ba10942168
6
+ metadata.gz: 6abadc5c20561dd3f0db0b0bfcd96b55ba0df2e2fdfa97576fb48caabe538287ccb86750264fe10c0831b23e20f89d34946d4df2dd3cdf2e1e0adccb7d3f6538
7
+ data.tar.gz: f500ac82345c2c05abddf4e50d8c3492e37ef711b5c20a14fcda8d16ad6d5cecb13b64b43d343bd9e11eba242d80ef9584fa73f60fb36329c1b078d3c72f86bd
@@ -323,35 +323,9 @@ module PuppetLitmus::InventoryManipulation
323
323
  # @param inventory_hash [Hash] hash of the inventory.yaml file
324
324
  # @param node_name [String] node of nodes to limit the search for the node_name in
325
325
  def add_platform_field(inventory_hash, node_name)
326
- facts = begin
327
- facts_from_node(inventory_hash, node_name)
328
- rescue StandardError => e
329
- warn e
330
- {}
331
- end
332
- Honeycomb.current_span.add_field('litmus.platform', facts&.dig('platform'))
333
- end
334
-
335
- # Add platform custom information field to the current span for each node being targeted.
336
- # If more than one node is being targeted, each node will be given a separate custom field.
337
- #
338
- # @param span [Honeycomb::Span] The current span
339
- # @param target_node_names [Array[String]] Nodes being targeted
340
- # @param inventory_hash [Hash] Hash of the inventory.yaml file
341
- def add_node_fields_to_span(span, target_node_names, inventory_hash)
342
- node_counter = 1
343
- Array(target_node_names).each do |target_name|
344
- name_field = 'litmus.node_name'
345
- platform_field = 'litmus.platform'
346
-
347
- name_field = "#{name_field}_#{node_counter}"
348
- platform_field = "#{platform_field}_#{node_counter}"
349
- span.add_field(name_field, target_name)
350
- if target_in_inventory?(inventory_hash, target_name)
351
- facts = facts_from_node(inventory_hash, target_name)
352
- span.add_field(platform_field, facts&.dig('platform')) unless facts.nil?
353
- end
354
- node_counter += 1
355
- end
326
+ facts_from_node(inventory_hash, node_name)
327
+ rescue StandardError => e
328
+ warn e
329
+ {}
356
330
  end
357
331
  end
@@ -19,12 +19,9 @@ module PuppetLitmus::PuppetHelpers
19
19
  # :noop [Boolean] run puppet apply with the noop flag.
20
20
  # @return [Boolean] The result of the 2 apply manifests.
21
21
  def idempotent_apply(manifest, opts = {})
22
- Honeycomb.start_span(name: 'litmus.idempotent_apply') do |span|
23
- ENV['HONEYCOMB_TRACE'] = span.to_trace_header
24
- manifest_file_location = create_manifest_file(manifest)
25
- apply_manifest(nil, **opts, catch_failures: true, manifest_file_location: manifest_file_location)
26
- apply_manifest(nil, **opts, catch_changes: true, manifest_file_location: manifest_file_location)
27
- end
22
+ manifest_file_location = create_manifest_file(manifest)
23
+ apply_manifest(nil, **opts, catch_failures: true, manifest_file_location: manifest_file_location)
24
+ apply_manifest(nil, **opts, catch_changes: true, manifest_file_location: manifest_file_location)
28
25
  end
29
26
 
30
27
  # Applies a manifest. returning the result of that apply. Mimics the apply_manifest from beaker
@@ -49,99 +46,85 @@ module PuppetLitmus::PuppetHelpers
49
46
  # @yieldreturn [Block] this method will yield to a block of code passed by the caller; this can be used for additional validation, etc.
50
47
  # @return [Object] A result object from the apply.
51
48
  def apply_manifest(manifest, opts = {})
52
- Honeycomb.start_span(name: 'litmus.apply_manifest') do |span|
53
- ENV['HONEYCOMB_TRACE'] = span.to_trace_header
54
- span.add_field('litmus.manifest', manifest)
55
- span.add_field('litmus.opts', opts)
56
-
57
- target_node_name = targeting_localhost? ? 'litmus_localhost' : ENV.fetch('TARGET_HOST', nil)
58
- raise 'manifest and manifest_file_location in the opts hash are mutually exclusive arguments, pick one' if !manifest.nil? && !opts[:manifest_file_location].nil?
59
- raise 'please pass a manifest or the manifest_file_location in the opts hash' if (manifest.nil? || manifest == '') && opts[:manifest_file_location].nil?
60
- raise 'please specify only one of `catch_changes`, `expect_changes`, `catch_failures` or `expect_failures`' if
61
- [opts[:catch_changes], opts[:expect_changes], opts[:catch_failures], opts[:expect_failures]].compact.length > 1
62
-
63
- opts = { trace: true }.merge(opts)
64
-
65
- if opts[:catch_changes]
66
- use_detailed_exit_codes = true
67
- acceptable_exit_codes = [0]
68
- elsif opts[:catch_failures]
69
- use_detailed_exit_codes = true
70
- acceptable_exit_codes = [0, 2]
71
- elsif opts[:expect_failures]
72
- use_detailed_exit_codes = true
73
- acceptable_exit_codes = [1, 4, 6]
74
- elsif opts[:expect_changes]
75
- use_detailed_exit_codes = true
76
- acceptable_exit_codes = [2]
77
- else
78
- use_detailed_exit_codes = false
79
- acceptable_exit_codes = [0]
80
- end
49
+ target_node_name = targeting_localhost? ? 'litmus_localhost' : ENV.fetch('TARGET_HOST', nil)
50
+ raise 'manifest and manifest_file_location in the opts hash are mutually exclusive arguments, pick one' if !manifest.nil? && !opts[:manifest_file_location].nil?
51
+ raise 'please pass a manifest or the manifest_file_location in the opts hash' if (manifest.nil? || manifest == '') && opts[:manifest_file_location].nil?
52
+ raise 'please specify only one of `catch_changes`, `expect_changes`, `catch_failures` or `expect_failures`' if
53
+ [opts[:catch_changes], opts[:expect_changes], opts[:catch_failures], opts[:expect_failures]].compact.length > 1
54
+
55
+ opts = { trace: true }.merge(opts)
56
+
57
+ if opts[:catch_changes]
58
+ use_detailed_exit_codes = true
59
+ acceptable_exit_codes = [0]
60
+ elsif opts[:catch_failures]
61
+ use_detailed_exit_codes = true
62
+ acceptable_exit_codes = [0, 2]
63
+ elsif opts[:expect_failures]
64
+ use_detailed_exit_codes = true
65
+ acceptable_exit_codes = [1, 4, 6]
66
+ elsif opts[:expect_changes]
67
+ use_detailed_exit_codes = true
68
+ acceptable_exit_codes = [2]
69
+ else
70
+ use_detailed_exit_codes = false
71
+ acceptable_exit_codes = [0]
72
+ end
81
73
 
82
- manifest_file_location = opts[:manifest_file_location] || create_manifest_file(manifest)
83
- inventory_hash = File.exist?('spec/fixtures/litmus_inventory.yaml') ? inventory_hash_from_inventory_file : localhost_inventory_hash
74
+ manifest_file_location = opts[:manifest_file_location] || create_manifest_file(manifest)
75
+ inventory_hash = File.exist?('spec/fixtures/litmus_inventory.yaml') ? inventory_hash_from_inventory_file : localhost_inventory_hash
84
76
 
85
- target_option = opts['targets'] || opts[:targets]
86
- if target_option.nil?
87
- raise "Target '#{target_node_name}' not found in spec/fixtures/litmus_inventory.yaml" unless target_in_inventory?(inventory_hash, target_node_name)
88
- else
89
- target_node_name = search_for_target(target_option, inventory_hash)
90
- end
77
+ target_option = opts['targets'] || opts[:targets]
78
+ if target_option.nil?
79
+ raise "Target '#{target_node_name}' not found in spec/fixtures/litmus_inventory.yaml" unless target_in_inventory?(inventory_hash, target_node_name)
80
+ else
81
+ target_node_name = search_for_target(target_option, inventory_hash)
82
+ end
91
83
 
92
- add_node_fields_to_span(span, target_node_name, inventory_hash)
93
-
94
- # Forcibly set the locale of the command
95
- locale = if os[:family] == 'windows'
96
- ''
97
- else
98
- 'LC_ALL=en_US.UTF-8 '
99
- end
100
- command_to_run = "#{locale}#{opts[:prefix_command]} puppet apply #{manifest_file_location}"
101
- command_to_run += ' --trace' if !opts[:trace].nil? && (opts[:trace] == true)
102
- command_to_run += " --modulepath #{Dir.pwd}/spec/fixtures/modules" if target_node_name == 'litmus_localhost'
103
- command_to_run += " --hiera_config='#{opts[:hiera_config]}'" unless opts[:hiera_config].nil?
104
- command_to_run += ' --debug' if !opts[:debug].nil? && (opts[:debug] == true)
105
- command_to_run += ' --noop' if !opts[:noop].nil? && (opts[:noop] == true)
106
- command_to_run += ' --detailed-exitcodes' if use_detailed_exit_codes == true
107
-
108
- span.add_field('litmus.target_node_name', target_node_name)
109
-
110
- if os[:family] == 'windows'
111
- # IAC-1365 - Workaround for BOLT-1535 and bolt issue #1650
112
- command_to_run = "try { #{command_to_run}; exit $LASTEXITCODE } catch { write-error $_ ; exit 1 }"
113
- span.add_field('litmus.command_to_run', command_to_run)
114
- bolt_result = Tempfile.open(['temp', '.ps1']) do |script|
115
- script.write(command_to_run)
116
- script.close
117
- run_script(script.path, target_node_name, [], options: {}, config: nil, inventory: inventory_hash)
118
- end
119
- else
120
- span.add_field('litmus.command_to_run', command_to_run)
121
- bolt_result = run_command(command_to_run, target_node_name, config: nil, inventory: inventory_hash)
122
- end
123
- span.add_field('litmus.bolt_result', bolt_result)
124
- result = OpenStruct.new(exit_code: bolt_result.first['value']['exit_code'],
125
- stdout: bolt_result.first['value']['stdout'],
126
- stderr: bolt_result.first['value']['stderr'])
127
- span.add_field('litmus.result', result.to_h)
128
-
129
- status = result.exit_code
130
- if opts[:catch_changes] && !acceptable_exit_codes.include?(status)
131
- report_puppet_apply_change(command_to_run, bolt_result)
132
- elsif !acceptable_exit_codes.include?(status)
133
- report_puppet_apply_error(command_to_run, bolt_result, acceptable_exit_codes)
84
+ # Forcibly set the locale of the command
85
+ locale = if os[:family] == 'windows'
86
+ ''
87
+ else
88
+ 'LC_ALL=en_US.UTF-8 '
89
+ end
90
+ command_to_run = "#{locale}#{opts[:prefix_command]} puppet apply #{manifest_file_location}"
91
+ command_to_run += ' --trace' if !opts[:trace].nil? && (opts[:trace] == true)
92
+ command_to_run += " --modulepath #{Dir.pwd}/spec/fixtures/modules" if target_node_name == 'litmus_localhost'
93
+ command_to_run += " --hiera_config='#{opts[:hiera_config]}'" unless opts[:hiera_config].nil?
94
+ command_to_run += ' --debug' if !opts[:debug].nil? && (opts[:debug] == true)
95
+ command_to_run += ' --noop' if !opts[:noop].nil? && (opts[:noop] == true)
96
+ command_to_run += ' --detailed-exitcodes' if use_detailed_exit_codes == true
97
+
98
+ if os[:family] == 'windows'
99
+ # IAC-1365 - Workaround for BOLT-1535 and bolt issue #1650
100
+ command_to_run = "try { #{command_to_run}; exit $LASTEXITCODE } catch { write-error $_ ; exit 1 }"
101
+ bolt_result = Tempfile.open(['temp', '.ps1']) do |script|
102
+ script.write(command_to_run)
103
+ script.close
104
+ run_script(script.path, target_node_name, [], options: {}, config: nil, inventory: inventory_hash)
134
105
  end
106
+ else
107
+ bolt_result = run_command(command_to_run, target_node_name, config: nil, inventory: inventory_hash)
108
+ end
109
+ result = OpenStruct.new(exit_code: bolt_result.first['value']['exit_code'],
110
+ stdout: bolt_result.first['value']['stdout'],
111
+ stderr: bolt_result.first['value']['stderr'])
112
+
113
+ status = result.exit_code
114
+ if opts[:catch_changes] && !acceptable_exit_codes.include?(status)
115
+ report_puppet_apply_change(command_to_run, bolt_result)
116
+ elsif !acceptable_exit_codes.include?(status)
117
+ report_puppet_apply_error(command_to_run, bolt_result, acceptable_exit_codes)
118
+ end
135
119
 
136
- yield result if block_given?
120
+ yield result if block_given?
137
121
 
138
- if ENV['RSPEC_DEBUG']
139
- puts "apply manifest succeded\n #{command_to_run}\n======\nwith status #{result.exit_code}"
140
- puts result.stderr
141
- puts result.stdout
142
- end
143
- result
122
+ if ENV['RSPEC_DEBUG']
123
+ puts "apply manifest succeded\n #{command_to_run}\n======\nwith status #{result.exit_code}"
124
+ puts result.stderr
125
+ puts result.stdout
144
126
  end
127
+ result
145
128
  end
146
129
 
147
130
  # Creates a manifest file locally in a temp location, if its a remote target copy it to there.
@@ -149,36 +132,27 @@ module PuppetLitmus::PuppetHelpers
149
132
  # @param manifest [String] puppet manifest code.
150
133
  # @return [String] The path to the location of the manifest.
151
134
  def create_manifest_file(manifest, opts = {})
152
- Honeycomb.start_span(name: 'litmus.create_manifest_file') do |span|
153
- ENV['HONEYCOMB_TRACE'] = span.to_trace_header
154
- span.add_field('litmus.manifest', manifest)
155
-
156
- require 'tmpdir'
157
- target_node_name = ENV.fetch('TARGET_HOST', nil)
158
- tmp_filename = File.join(Dir.tmpdir, "manifest_#{Time.now.strftime('%Y%m%d')}_#{Process.pid}_#{rand(0x100000000).to_s(36)}.pp")
159
- manifest_file = File.open(tmp_filename, 'w')
160
- manifest_file.write(manifest)
161
- manifest_file.close
162
- if target_node_name.nil? || target_node_name == 'localhost'
163
- # no need to transfer
164
- manifest_file_location = manifest_file.path
165
- else
166
- # transfer to TARGET_HOST
167
- inventory_hash = inventory_hash_from_inventory_file
168
- target_option = opts['targets'] || opts[:targets]
169
- target_node_name = search_for_target(target_option, inventory_hash) unless target_option.nil?
170
- add_node_fields_to_span(span, target_node_name, inventory_hash)
171
-
172
- manifest_file_location = File.basename(manifest_file)
173
- bolt_result = upload_file(manifest_file.path, manifest_file_location, target_node_name, options: {}, config: nil, inventory: inventory_hash)
174
- span.add_field('litmus.bolt_result', bolt_result)
175
- raise bolt_result.first['value'].to_s unless bolt_result.first['status'] == 'success'
176
- end
177
-
178
- span.add_field('litmus.manifest_file_location', manifest_file_location)
135
+ require 'tmpdir'
136
+ target_node_name = ENV.fetch('TARGET_HOST', nil)
137
+ tmp_filename = File.join(Dir.tmpdir, "manifest_#{Time.now.strftime('%Y%m%d')}_#{Process.pid}_#{rand(0x100000000).to_s(36)}.pp")
138
+ manifest_file = File.open(tmp_filename, 'w')
139
+ manifest_file.write(manifest)
140
+ manifest_file.close
141
+ if target_node_name.nil? || target_node_name == 'localhost'
142
+ # no need to transfer
143
+ manifest_file_location = manifest_file.path
144
+ else
145
+ # transfer to TARGET_HOST
146
+ inventory_hash = inventory_hash_from_inventory_file
147
+ target_option = opts['targets'] || opts[:targets]
148
+ target_node_name = search_for_target(target_option, inventory_hash) unless target_option.nil?
179
149
 
180
- manifest_file_location
150
+ manifest_file_location = File.basename(manifest_file)
151
+ bolt_result = upload_file(manifest_file.path, manifest_file_location, target_node_name, options: {}, config: nil, inventory: inventory_hash)
152
+ raise bolt_result.first['value'].to_s unless bolt_result.first['status'] == 'success'
181
153
  end
154
+
155
+ manifest_file_location
182
156
  end
183
157
 
184
158
  # Writes a string variable to a file on a target node at a specified path.
@@ -187,35 +161,27 @@ module PuppetLitmus::PuppetHelpers
187
161
  # @param destination [String] The path on the target node to write the file.
188
162
  # @return [Bool] Success. The file was succesfully writtne on the target.
189
163
  def write_file(content, destination, opts = {})
190
- Honeycomb.start_span(name: 'litmus.write_file') do |span|
191
- ENV['HONEYCOMB_TRACE'] = span.to_trace_header
192
- span.add_field('litmus.destination', destination)
193
-
194
- require 'tmpdir'
195
- inventory_hash = inventory_hash_from_inventory_file
196
- target_node_name = ENV.fetch('TARGET_HOST', nil)
197
- target_option = opts['targets'] || opts[:targets]
198
- target_node_name = search_for_target(target_option, inventory_hash) unless target_option.nil?
199
-
200
- Tempfile.create('litmus') do |tmp_file|
201
- tmp_file.write(content)
202
- tmp_file.flush
203
- if target_node_name.nil? || target_node_name == 'localhost'
204
- require 'fileutils'
205
- # no need to transfer
206
- FileUtils.cp(tmp_file.path, destination)
207
- else
208
- # transfer to TARGET_HOST
209
- add_node_fields_to_span(span, target_node_name, inventory_hash)
210
-
211
- bolt_result = upload_file(tmp_file.path, destination, target_node_name, options: {}, config: nil, inventory: inventory_hash)
212
- span.add_field('litmus.bolt_result.file_upload', bolt_result)
213
- raise bolt_result.first['value'].to_s unless bolt_result.first['status'] == 'success'
214
- end
164
+ require 'tmpdir'
165
+ inventory_hash = inventory_hash_from_inventory_file
166
+ target_node_name = ENV.fetch('TARGET_HOST', nil)
167
+ target_option = opts['targets'] || opts[:targets]
168
+ target_node_name = search_for_target(target_option, inventory_hash) unless target_option.nil?
169
+
170
+ Tempfile.create('litmus') do |tmp_file|
171
+ tmp_file.write(content)
172
+ tmp_file.flush
173
+ if target_node_name.nil? || target_node_name == 'localhost'
174
+ require 'fileutils'
175
+ # no need to transfer
176
+ FileUtils.cp(tmp_file.path, destination)
177
+ else
178
+ # transfer to TARGET_HOST
179
+ bolt_result = upload_file(tmp_file.path, destination, target_node_name, options: {}, config: nil, inventory: inventory_hash)
180
+ raise bolt_result.first['value'].to_s unless bolt_result.first['status'] == 'success'
215
181
  end
216
-
217
- true
218
182
  end
183
+
184
+ true
219
185
  end
220
186
 
221
187
  # Runs a command against the target system
@@ -225,36 +191,26 @@ module PuppetLitmus::PuppetHelpers
225
191
  # @yieldreturn [Block] this method will yield to a block of code passed by the caller; this can be used for additional validation, etc.
226
192
  # @return [Object] A result object from the command.
227
193
  def run_shell(command_to_run, opts = {})
228
- Honeycomb.start_span(name: 'litmus.run_shell') do |span|
229
- ENV['HONEYCOMB_TRACE'] = span.to_trace_header
230
- span.add_field('litmus.command_to_run', command_to_run)
231
- span.add_field('litmus.opts', opts)
232
-
233
- inventory_hash = File.exist?('spec/fixtures/litmus_inventory.yaml') ? inventory_hash_from_inventory_file : localhost_inventory_hash
194
+ inventory_hash = File.exist?('spec/fixtures/litmus_inventory.yaml') ? inventory_hash_from_inventory_file : localhost_inventory_hash
234
195
 
235
- target_option = opts['targets'] || opts[:targets]
236
- if target_option.nil?
237
- target_node_name = targeting_localhost? ? 'litmus_localhost' : ENV.fetch('TARGET_HOST', nil)
238
- raise "Target '#{target_node_name}' not found in spec/fixtures/litmus_inventory.yaml" unless target_in_inventory?(inventory_hash, target_node_name)
239
- else
240
- target_node_name = search_for_target(target_option, inventory_hash)
241
- end
242
-
243
- add_node_fields_to_span(span, target_node_name, inventory_hash)
196
+ target_option = opts['targets'] || opts[:targets]
197
+ if target_option.nil?
198
+ target_node_name = targeting_localhost? ? 'litmus_localhost' : ENV.fetch('TARGET_HOST', nil)
199
+ raise "Target '#{target_node_name}' not found in spec/fixtures/litmus_inventory.yaml" unless target_in_inventory?(inventory_hash, target_node_name)
200
+ else
201
+ target_node_name = search_for_target(target_option, inventory_hash)
202
+ end
244
203
 
245
- bolt_result = run_command(command_to_run, target_node_name, config: nil, inventory: inventory_hash)
246
- span.add_field('litmus.bolt_result', bolt_result)
204
+ bolt_result = run_command(command_to_run, target_node_name, config: nil, inventory: inventory_hash)
247
205
 
248
- raise "shell failed\n`#{command_to_run}`\n======\n#{bolt_result}" if bolt_result.first['value']['exit_code'] != 0 && opts[:expect_failures] != true
206
+ raise "shell failed\n`#{command_to_run}`\n======\n#{bolt_result}" if bolt_result.first['value']['exit_code'] != 0 && opts[:expect_failures] != true
249
207
 
250
- result = OpenStruct.new(exit_code: bolt_result.first['value']['exit_code'],
251
- exit_status: bolt_result.first['value']['exit_code'],
252
- stdout: bolt_result.first['value']['stdout'],
253
- stderr: bolt_result.first['value']['stderr'])
254
- span.add_field('litmus.result', result.to_h)
255
- yield result if block_given?
256
- result
257
- end
208
+ result = OpenStruct.new(exit_code: bolt_result.first['value']['exit_code'],
209
+ exit_status: bolt_result.first['value']['exit_code'],
210
+ stdout: bolt_result.first['value']['stdout'],
211
+ stderr: bolt_result.first['value']['stderr'])
212
+ yield result if block_given?
213
+ result
258
214
  end
259
215
 
260
216
  # Copies file to the target, using its respective transport
@@ -265,51 +221,36 @@ module PuppetLitmus::PuppetHelpers
265
221
  # @yieldreturn [Block] this method will yield to a block of code passed by the caller; this can be used for additional validation, etc.
266
222
  # @return [Object] A result object from the command.
267
223
  def bolt_upload_file(source, destination, opts = {}, options = {})
268
- Honeycomb.start_span(name: 'litmus.bolt_upload_file') do |span|
269
- ENV['HONEYCOMB_TRACE'] = span.to_trace_header
270
- span.add_field('litmus.source', source)
271
- span.add_field('litmus.destination', destination)
272
- span.add_field('litmus.opts', opts)
273
- span.add_field('litmus.options', options)
274
-
275
- inventory_hash = File.exist?('spec/fixtures/litmus_inventory.yaml') ? inventory_hash_from_inventory_file : localhost_inventory_hash
276
- target_option = opts['targets'] || opts[:targets]
277
- if target_option.nil?
278
- target_node_name = targeting_localhost? ? 'litmus_localhost' : ENV.fetch('TARGET_HOST', nil)
279
- raise "Target '#{target_node_name}' not found in spec/fixtures/litmus_inventory.yaml" unless target_in_inventory?(inventory_hash, target_node_name)
280
- else
281
- target_node_name = search_for_target(target_option, inventory_hash)
282
- end
283
-
284
- add_node_fields_to_span(span, target_node_name, inventory_hash)
285
-
286
- bolt_result = upload_file(source, destination, target_node_name, options: options, config: nil, inventory: inventory_hash)
287
- span.add_field('litmus.bolt_result', bolt_result)
224
+ inventory_hash = File.exist?('spec/fixtures/litmus_inventory.yaml') ? inventory_hash_from_inventory_file : localhost_inventory_hash
225
+ target_option = opts['targets'] || opts[:targets]
226
+ if target_option.nil?
227
+ target_node_name = targeting_localhost? ? 'litmus_localhost' : ENV.fetch('TARGET_HOST', nil)
228
+ raise "Target '#{target_node_name}' not found in spec/fixtures/litmus_inventory.yaml" unless target_in_inventory?(inventory_hash, target_node_name)
229
+ else
230
+ target_node_name = search_for_target(target_option, inventory_hash)
231
+ end
288
232
 
289
- result_obj = {
290
- exit_code: 0,
291
- stdout: bolt_result.first['value']['_output'],
292
- stderr: nil,
293
- result: bolt_result.first['value']
294
- }
233
+ bolt_result = upload_file(source, destination, target_node_name, options: options, config: nil, inventory: inventory_hash)
295
234
 
296
- if bolt_result.first['status'] != 'success'
297
- if opts[:expect_failures] != true
298
- span.add_field('litmus_uploadfilefailure', bolt_result)
299
- raise "upload file failed\n======\n#{bolt_result}"
300
- end
235
+ result_obj = {
236
+ exit_code: 0,
237
+ stdout: bolt_result.first['value']['_output'],
238
+ stderr: nil,
239
+ result: bolt_result.first['value']
240
+ }
301
241
 
302
- result_obj[:exit_code] = 255
303
- result_obj[:stderr] = bolt_result.first['value']['_error']['msg']
304
- end
242
+ if bolt_result.first['status'] != 'success'
243
+ raise "upload file failed\n======\n#{bolt_result}" if opts[:expect_failures] != true
305
244
 
306
- result = OpenStruct.new(exit_code: result_obj[:exit_code],
307
- stdout: result_obj[:stdout],
308
- stderr: result_obj[:stderr])
309
- span.add_field('litmus.result', result.to_h)
310
- yield result if block_given?
311
- result
245
+ result_obj[:exit_code] = 255
246
+ result_obj[:stderr] = bolt_result.first['value']['_error']['msg']
312
247
  end
248
+
249
+ result = OpenStruct.new(exit_code: result_obj[:exit_code],
250
+ stdout: result_obj[:stdout],
251
+ stderr: result_obj[:stderr])
252
+ yield result if block_given?
253
+ result
313
254
  end
314
255
 
315
256
  # Runs a task against the target system.
@@ -321,69 +262,56 @@ module PuppetLitmus::PuppetHelpers
321
262
  # :inventory_file [String] path to the inventory file to use with the task.
322
263
  # @return [Object] A result object from the task.The values available are stdout, stderr and result.
323
264
  def run_bolt_task(task_name, params = {}, opts = {})
324
- Honeycomb.start_span(name: 'litmus.run_task') do |span|
325
- ENV['HONEYCOMB_TRACE'] = span.to_trace_header
326
- span.add_field('litmus.task_name', task_name)
327
- span.add_field('litmus.params', params)
328
- span.add_field('litmus.opts', opts)
329
-
330
- config_data = { 'modulepath' => File.join(Dir.pwd, 'spec', 'fixtures', 'modules') }
331
- target_node_name = targeting_localhost? ? 'litmus_localhost' : ENV.fetch('TARGET_HOST', nil)
332
- inventory_hash = if !opts[:inventory_file].nil? && File.exist?(opts[:inventory_file])
333
- inventory_hash_from_inventory_file(opts[:inventory_file])
334
- elsif File.exist?('spec/fixtures/litmus_inventory.yaml')
335
- inventory_hash_from_inventory_file('spec/fixtures/litmus_inventory.yaml')
336
- else
337
- localhost_inventory_hash
338
- end
339
-
340
- target_option = opts['targets'] || opts[:targets]
341
- if target_option.nil?
342
- raise "Target '#{target_node_name}' not found in spec/fixtures/litmus_inventory.yaml" unless target_in_inventory?(inventory_hash, target_node_name)
343
- else
344
- target_node_name = search_for_target(target_option, inventory_hash)
345
- end
346
-
347
- add_node_fields_to_span(span, target_node_name, inventory_hash)
348
-
349
- bolt_result = run_task(task_name, target_node_name, params, config: config_data, inventory: inventory_hash)
350
- result_obj = {
351
- exit_code: 0,
352
- stdout: nil,
353
- stderr: nil,
354
- result: bolt_result.first['value']
355
- }
356
-
357
- if bolt_result.first['status'] == 'success'
358
- # stdout returns unstructured data if structured data is not available
359
- result_obj[:stdout] = if bolt_result.first['value']['_output'].nil?
360
- bolt_result.first['value'].to_s
361
- else
362
- bolt_result.first['value']['_output']
363
- end
364
-
365
- else
366
- if opts[:expect_failures] != true
367
- span.add_field('litmus_runtaskfailure', bolt_result)
368
- raise "task failed\n`#{task_name}`\n======\n#{bolt_result}"
369
- end
370
-
371
- result_obj[:exit_code] = if bolt_result.first['value']['_error']['details'].nil?
372
- 255
373
- else
374
- bolt_result.first['value']['_error']['details'].fetch('exitcode', 255)
375
- end
376
- result_obj[:stderr] = bolt_result.first['value']['_error']['msg']
377
- end
265
+ config_data = { 'modulepath' => File.join(Dir.pwd, 'spec', 'fixtures', 'modules') }
266
+ target_node_name = targeting_localhost? ? 'litmus_localhost' : ENV.fetch('TARGET_HOST', nil)
267
+ inventory_hash = if !opts[:inventory_file].nil? && File.exist?(opts[:inventory_file])
268
+ inventory_hash_from_inventory_file(opts[:inventory_file])
269
+ elsif File.exist?('spec/fixtures/litmus_inventory.yaml')
270
+ inventory_hash_from_inventory_file('spec/fixtures/litmus_inventory.yaml')
271
+ else
272
+ localhost_inventory_hash
273
+ end
274
+
275
+ target_option = opts['targets'] || opts[:targets]
276
+ if target_option.nil?
277
+ raise "Target '#{target_node_name}' not found in spec/fixtures/litmus_inventory.yaml" unless target_in_inventory?(inventory_hash, target_node_name)
278
+ else
279
+ target_node_name = search_for_target(target_option, inventory_hash)
280
+ end
378
281
 
379
- result = OpenStruct.new(exit_code: result_obj[:exit_code],
380
- stdout: result_obj[:stdout],
381
- stderr: result_obj[:stderr],
382
- result: result_obj[:result])
383
- yield result if block_given?
384
- span.add_field('litmus.result', result.to_h)
385
- result
282
+ bolt_result = run_task(task_name, target_node_name, params, config: config_data, inventory: inventory_hash)
283
+ result_obj = {
284
+ exit_code: 0,
285
+ stdout: nil,
286
+ stderr: nil,
287
+ result: bolt_result.first['value']
288
+ }
289
+
290
+ if bolt_result.first['status'] == 'success'
291
+ # stdout returns unstructured data if structured data is not available
292
+ result_obj[:stdout] = if bolt_result.first['value']['_output'].nil?
293
+ bolt_result.first['value'].to_s
294
+ else
295
+ bolt_result.first['value']['_output']
296
+ end
297
+
298
+ else
299
+ raise "task failed\n`#{task_name}`\n======\n#{bolt_result}" if opts[:expect_failures] != true
300
+
301
+ result_obj[:exit_code] = if bolt_result.first['value']['_error']['details'].nil?
302
+ 255
303
+ else
304
+ bolt_result.first['value']['_error']['details'].fetch('exitcode', 255)
305
+ end
306
+ result_obj[:stderr] = bolt_result.first['value']['_error']['msg']
386
307
  end
308
+
309
+ result = OpenStruct.new(exit_code: result_obj[:exit_code],
310
+ stdout: result_obj[:stdout],
311
+ stderr: result_obj[:stderr],
312
+ result: result_obj[:result])
313
+ yield result if block_given?
314
+ result
387
315
  end
388
316
 
389
317
  # Runs a script against the target system.
@@ -394,37 +322,24 @@ module PuppetLitmus::PuppetHelpers
394
322
  # @yieldreturn [Block] this method will yield to a block of code passed by the caller; this can be used for additional validation, etc.
395
323
  # @return [Object] A result object from the script run.
396
324
  def bolt_run_script(script, opts = {}, arguments: [])
397
- Honeycomb.start_span(name: 'litmus.bolt_run_script') do |span|
398
- ENV['HONEYCOMB_TRACE'] = span.to_trace_header
399
- span.add_field('litmus.script', script)
400
- span.add_field('litmus.opts', opts)
401
- span.add_field('litmus.arguments', arguments)
402
-
403
- target_node_name = targeting_localhost? ? 'litmus_localhost' : ENV.fetch('TARGET_HOST', nil)
404
- inventory_hash = File.exist?('spec/fixtures/litmus_inventory.yaml') ? inventory_hash_from_inventory_file : localhost_inventory_hash
405
- target_option = opts['targets'] || opts[:targets]
406
- if target_option.nil?
407
- raise "Target '#{target_node_name}' not found in spec/fixtures/litmus_inventory.yaml" unless target_in_inventory?(inventory_hash, target_node_name)
408
- else
409
- target_node_name = search_for_target(target_option, inventory_hash)
410
- end
325
+ target_node_name = targeting_localhost? ? 'litmus_localhost' : ENV.fetch('TARGET_HOST', nil)
326
+ inventory_hash = File.exist?('spec/fixtures/litmus_inventory.yaml') ? inventory_hash_from_inventory_file : localhost_inventory_hash
327
+ target_option = opts['targets'] || opts[:targets]
328
+ if target_option.nil?
329
+ raise "Target '#{target_node_name}' not found in spec/fixtures/litmus_inventory.yaml" unless target_in_inventory?(inventory_hash, target_node_name)
330
+ else
331
+ target_node_name = search_for_target(target_option, inventory_hash)
332
+ end
411
333
 
412
- add_node_fields_to_span(span, target_node_name, inventory_hash)
334
+ bolt_result = run_script(script, target_node_name, arguments, options: opts, config: nil, inventory: inventory_hash)
413
335
 
414
- bolt_result = run_script(script, target_node_name, arguments, options: opts, config: nil, inventory: inventory_hash)
336
+ raise "script run failed\n`#{script}`\n======\n#{bolt_result}" if bolt_result.first['value']['exit_code'] != 0 && opts[:expect_failures] != true
415
337
 
416
- if bolt_result.first['value']['exit_code'] != 0 && opts[:expect_failures] != true
417
- span.add_field('litmus_runscriptfailure', bolt_result)
418
- raise "script run failed\n`#{script}`\n======\n#{bolt_result}"
419
- end
420
-
421
- result = OpenStruct.new(exit_code: bolt_result.first['value']['exit_code'],
422
- stdout: bolt_result.first['value']['stdout'],
423
- stderr: bolt_result.first['value']['stderr'])
424
- yield result if block_given?
425
- span.add_field('litmus.result', result.to_h)
426
- result
427
- end
338
+ result = OpenStruct.new(exit_code: bolt_result.first['value']['exit_code'],
339
+ stdout: bolt_result.first['value']['stdout'],
340
+ stderr: bolt_result.first['value']['stderr'])
341
+ yield result if block_given?
342
+ result
428
343
  end
429
344
 
430
345
  # Determines if the current execution is targeting localhost or not
@@ -1,53 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'bolt_spec/run'
4
- require 'honeycomb-beeline'
5
4
  require 'puppet_litmus/version'
6
- Honeycomb.configure do |config|
7
- # override client if no configuration is provided, so that the pesky libhoney warning about lack of configuration is not shown
8
- config.client = Libhoney::NullClient.new unless ENV['HONEYCOMB_WRITEKEY'] && ENV['HONEYCOMB_DATASET']
9
- end
10
- process_span = Honeycomb.start_span(name: "litmus: #{([$PROGRAM_NAME] + ($ARGV || [])).join(' ')}", serialized_trace: ENV.fetch('HONEYCOMB_TRACE', nil))
11
- ENV['HONEYCOMB_TRACE'] = process_span.to_trace_header
12
- Honeycomb.add_field_to_trace('litmus.pid', Process.pid)
13
- if defined? PuppetLitmus::VERSION
14
- Honeycomb.add_field_to_trace('litmus.version', PuppetLitmus::VERSION)
15
- else
16
- Honeycomb.add_field_to_trace('litmus.version', 'undefined')
17
- end
18
- if ENV['CI'] == 'true' && ENV['TRAVIS'] == 'true'
19
- Honeycomb.add_field_to_trace('module_name', ENV.fetch('TRAVIS_REPO_SLUG', nil))
20
- Honeycomb.add_field_to_trace('ci.provider', 'travis')
21
- Honeycomb.add_field_to_trace('ci.build_id', ENV.fetch('TRAVIS_BUILD_ID', nil))
22
- Honeycomb.add_field_to_trace('ci.build_url', ENV.fetch('TRAVIS_BUILD_WEB_URL', nil))
23
- Honeycomb.add_field_to_trace('ci.job_url', ENV.fetch('TRAVIS_JOB_WEB_URL', nil))
24
- Honeycomb.add_field_to_trace('ci.commit_message', ENV.fetch('TRAVIS_COMMIT_MESSAGE', nil))
25
- Honeycomb.add_field_to_trace('ci.sha', ENV['TRAVIS_PULL_REQUEST_SHA'] || ENV.fetch('TRAVIS_COMMIT', nil))
26
- elsif ENV['CI'] == 'True' && ENV['APPVEYOR'] == 'True'
27
- Honeycomb.add_field_to_trace('module_name', ENV.fetch('APPVEYOR_PROJECT_SLUG', nil))
28
- Honeycomb.add_field_to_trace('ci.provider', 'appveyor')
29
- Honeycomb.add_field_to_trace('ci.build_id', ENV.fetch('APPVEYOR_BUILD_ID', nil))
30
- Honeycomb.add_field_to_trace('ci.build_url', "https://ci.appveyor.com/project/#{ENV.fetch('APPVEYOR_REPO_NAME', nil)}/builds/#{ENV.fetch('APPVEYOR_BUILD_ID', nil)}")
31
- Honeycomb.add_field_to_trace('ci.job_url', "https://ci.appveyor.com/project/#{ENV.fetch('APPVEYOR_REPO_NAME', nil)}/build/job/#{ENV.fetch('APPVEYOR_JOB_ID', nil)}")
32
- Honeycomb.add_field_to_trace('ci.commit_message', ENV.fetch('APPVEYOR_REPO_COMMIT_MESSAGE', nil))
33
- Honeycomb.add_field_to_trace('ci.sha', ENV['APPVEYOR_PULL_REQUEST_HEAD_COMMIT'] || ENV.fetch('APPVEYOR_REPO_COMMIT', nil))
34
- elsif ENV['GITHUB_ACTIONS'] == 'true'
35
- Honeycomb.add_field_to_trace('module_name', ENV.fetch('GITHUB_REPOSITORY', nil))
36
- Honeycomb.add_field_to_trace('ci.provider', 'github')
37
- Honeycomb.add_field_to_trace('ci.build_id', ENV.fetch('GITHUB_RUN_ID', nil))
38
- Honeycomb.add_field_to_trace('ci.build_url', "https://github.com/#{ENV.fetch('GITHUB_REPOSITORY', nil)}/actions/runs/#{ENV.fetch('GITHUB_RUN_ID', nil)}")
39
- Honeycomb.add_field_to_trace('ci.sha', ENV.fetch('GITHUB_SHA', nil))
40
- end
41
- at_exit do
42
- if $ERROR_INFO.is_a?(SystemExit)
43
- process_span.add_field('process.exit_code', $ERROR_INFO.status)
44
- elsif $ERROR_INFO
45
- process_span.add_field('process.exit_code', $ERROR_INFO.class.name)
46
- else
47
- process_span.add_field('process.exit_code', 'unknown')
48
- end
49
- process_span.send
50
- end
51
5
 
52
6
  # helper methods for the litmus rake tasks
53
7
  module PuppetLitmus::RakeHelper
@@ -100,18 +54,13 @@ module PuppetLitmus::RakeHelper
100
54
  # @param command [String] command to execute.
101
55
  # @return [Object] the standard out stream.
102
56
  def run_local_command(command)
103
- Honeycomb.start_span(name: 'litmus.run_local_command') do |span|
104
- ENV['HONEYCOMB_TRACE'] = span.to_trace_header
105
- span.add_field('litmus.command', command)
57
+ require 'open3'
58
+ stdout, stderr, status = Open3.capture3(command)
59
+ error_message = "Attempted to run\ncommand:'#{command}'\nstdout:#{stdout}\nstderr:#{stderr}"
106
60
 
107
- require 'open3'
108
- stdout, stderr, status = Open3.capture3(command)
109
- error_message = "Attempted to run\ncommand:'#{command}'\nstdout:#{stdout}\nstderr:#{stderr}"
61
+ raise error_message unless status.to_i.zero?
110
62
 
111
- raise error_message unless status.to_i.zero?
112
-
113
- stdout
114
- end
63
+ stdout
115
64
  end
116
65
 
117
66
  def provision(provisioner, platform, inventory_vars)
@@ -122,24 +71,11 @@ module PuppetLitmus::RakeHelper
122
71
  params = { 'action' => 'provision', 'platform' => platform, 'inventory' => Dir.pwd }
123
72
  params['vars'] = inventory_vars unless inventory_vars.nil?
124
73
 
125
- Honeycomb.add_field_to_trace('litmus.provisioner', provisioner)
126
- Honeycomb.start_span(name: 'litmus.provision') do |span|
127
- ENV['HONEYCOMB_TRACE'] = span.to_trace_header
128
- span.add_field('litmus.platform', platform)
129
-
130
- task_name = provisioner_task(provisioner)
131
- span.add_field('litmus.task_name', task_name)
132
- span.add_field('litmus.params', params)
133
- span.add_field('litmus.config', DEFAULT_CONFIG_DATA)
134
-
135
- bolt_result = run_task(task_name, 'localhost', params, config: DEFAULT_CONFIG_DATA, inventory: nil)
136
- span.add_field('litmus.result', bolt_result)
137
- span.add_field('litmus.node_name', bolt_result&.first&.dig('value', 'node_name'))
74
+ task_name = provisioner_task(provisioner)
75
+ bolt_result = run_task(task_name, 'localhost', params, config: DEFAULT_CONFIG_DATA, inventory: nil)
76
+ raise_bolt_errors(bolt_result, "provisioning of #{platform} failed.")
138
77
 
139
- raise_bolt_errors(bolt_result, "provisioning of #{platform} failed.")
140
-
141
- bolt_result
142
- end
78
+ bolt_result
143
79
  end
144
80
 
145
81
  def provision_list(provision_hash, key)
@@ -149,7 +85,6 @@ module PuppetLitmus::RakeHelper
149
85
  provision_hash[key]['params']&.each { |k, value| ENV[k.upcase] = value.to_s }
150
86
  results = []
151
87
 
152
- Honeycomb.current_span.add_field('litmus.images', provision_hash[key]['images'])
153
88
  provision_hash[key]['images'].each do |image|
154
89
  results << provision(provisioner, image, inventory_vars)
155
90
  end
@@ -157,73 +92,57 @@ module PuppetLitmus::RakeHelper
157
92
  end
158
93
 
159
94
  def tear_down_nodes(targets, inventory_hash)
160
- Honeycomb.start_span(name: 'litmus.tear_down_nodes') do |span|
161
- ENV['HONEYCOMB_TRACE'] = span.to_trace_header
162
- span.add_field('litmus.targets', targets)
163
-
164
- include ::BoltSpec::Run
165
- config_data = { 'modulepath' => File.join(Dir.pwd, 'spec', 'fixtures', 'modules') }
166
- raise "the provision module was not found in #{config_data['modulepath']}, please amend the .fixtures.yml file" unless File.directory?(File.join(config_data['modulepath'], 'provision'))
167
-
168
- results = {}
169
- targets.each do |node_name|
170
- next if node_name == 'litmus_localhost'
171
-
172
- result = tear_down(node_name, inventory_hash)
173
- # Some provisioners tear_down targets that were created as a batch job.
174
- # These provisioners should return the list of additional targets
175
- # removed so that we do not attempt to process them.
176
- if result != [] && result[0]['value'].key?('removed')
177
- removed_targets = result[0]['value']['removed']
178
- result[0]['value'].delete('removed')
179
- removed_targets.each do |removed_target|
180
- targets.delete(removed_target)
181
- results[removed_target] = result
182
- end
95
+ include ::BoltSpec::Run
96
+ config_data = { 'modulepath' => File.join(Dir.pwd, 'spec', 'fixtures', 'modules') }
97
+ raise "the provision module was not found in #{config_data['modulepath']}, please amend the .fixtures.yml file" unless File.directory?(File.join(config_data['modulepath'], 'provision'))
98
+
99
+ results = {}
100
+ targets.each do |node_name|
101
+ next if node_name == 'litmus_localhost'
102
+
103
+ result = tear_down(node_name, inventory_hash)
104
+ # Some provisioners tear_down targets that were created as a batch job.
105
+ # These provisioners should return the list of additional targets
106
+ # removed so that we do not attempt to process them.
107
+ if result != [] && result[0]['value'].key?('removed')
108
+ removed_targets = result[0]['value']['removed']
109
+ result[0]['value'].delete('removed')
110
+ removed_targets.each do |removed_target|
111
+ targets.delete(removed_target)
112
+ results[removed_target] = result
183
113
  end
184
-
185
- results[node_name] = result unless result == []
186
114
  end
187
- results
115
+
116
+ results[node_name] = result unless result == []
188
117
  end
118
+ results
189
119
  end
190
120
 
191
121
  def tear_down(node_name, inventory_hash)
192
- Honeycomb.start_span(name: 'litmus.tear_down') do |span|
193
- ENV['HONEYCOMB_TRACE'] = span.to_trace_header
194
- # how do we know what provisioner to use
195
-
196
- span.add_field('litmus.node_name', node_name)
197
- add_platform_field(inventory_hash, node_name)
198
-
199
- params = { 'action' => 'tear_down', 'node_name' => node_name, 'inventory' => Dir.pwd }
200
- node_facts = facts_from_node(inventory_hash, node_name)
201
- bolt_result = run_task(provisioner_task(node_facts['provisioner']), 'localhost', params, config: DEFAULT_CONFIG_DATA, inventory: nil)
202
- raise_bolt_errors(bolt_result, "tear_down of #{node_name} failed.")
203
- bolt_result
204
- end
122
+ # how do we know what provisioner to use
123
+ add_platform_field(inventory_hash, node_name)
124
+
125
+ params = { 'action' => 'tear_down', 'node_name' => node_name, 'inventory' => Dir.pwd }
126
+ node_facts = facts_from_node(inventory_hash, node_name)
127
+ bolt_result = run_task(provisioner_task(node_facts['provisioner']), 'localhost', params, config: DEFAULT_CONFIG_DATA, inventory: nil)
128
+ raise_bolt_errors(bolt_result, "tear_down of #{node_name} failed.")
129
+ bolt_result
205
130
  end
206
131
 
207
132
  def install_agent(collection, targets, inventory_hash)
208
- Honeycomb.start_span(name: 'litmus.install_agent') do |span|
209
- ENV['HONEYCOMB_TRACE'] = span.to_trace_header
210
- span.add_field('litmus.collection', collection)
211
- span.add_field('litmus.targets', targets)
212
-
213
- include ::BoltSpec::Run
214
- params = if collection.nil?
215
- {}
216
- else
217
- { 'collection' => collection }
218
- end
219
- raise "puppet_agent was not found in #{DEFAULT_CONFIG_DATA['modulepath']}, please amend the .fixtures.yml file" \
220
- unless File.directory?(File.join(DEFAULT_CONFIG_DATA['modulepath'], 'puppet_agent'))
221
-
222
- # using boltspec, when the runner is called it changes the inventory_hash dropping the version field. The clone works around this
223
- bolt_result = run_task('puppet_agent::install', targets, params, config: DEFAULT_CONFIG_DATA, inventory: inventory_hash.clone)
224
- raise_bolt_errors(bolt_result, 'Installation of agent failed.')
225
- bolt_result
226
- end
133
+ include ::BoltSpec::Run
134
+ params = if collection.nil?
135
+ {}
136
+ else
137
+ { 'collection' => collection }
138
+ end
139
+ raise "puppet_agent was not found in #{DEFAULT_CONFIG_DATA['modulepath']}, please amend the .fixtures.yml file" \
140
+ unless File.directory?(File.join(DEFAULT_CONFIG_DATA['modulepath'], 'puppet_agent'))
141
+
142
+ # using boltspec, when the runner is called it changes the inventory_hash dropping the version field. The clone works around this
143
+ bolt_result = run_task('puppet_agent::install', targets, params, config: DEFAULT_CONFIG_DATA, inventory: inventory_hash.clone)
144
+ raise_bolt_errors(bolt_result, 'Installation of agent failed.')
145
+ bolt_result
227
146
  end
228
147
 
229
148
  def configure_path(inventory_hash)
@@ -297,32 +216,24 @@ module PuppetLitmus::RakeHelper
297
216
  # @param ignore_dependencies [Boolean] flag used to ignore module dependencies defaults to false.
298
217
  # @return a bolt result
299
218
  def install_module(inventory_hash, target_node_name, module_tar, module_repository = nil, ignore_dependencies = false) # rubocop:disable Style/OptionalBooleanParameter
300
- Honeycomb.start_span(name: 'install_module') do |span|
301
- ENV['HONEYCOMB_TRACE'] = span.to_trace_header
302
- span.add_field('litmus.target_node_name', target_node_name)
303
- span.add_field('litmus.module_tar', module_tar)
304
-
305
- # make sure the module to install is not installed
306
- # otherwise `puppet module install` might silently skip it
307
- module_name = File.basename(module_tar, '.tar.gz').split('-', 3)[0..1].join('-')
308
- uninstall_module(inventory_hash.clone, target_node_name, module_name, force: true)
309
-
310
- include ::BoltSpec::Run
311
-
312
- target_nodes = find_targets(inventory_hash, target_node_name)
313
- span.add_field('litmus.target_nodes', target_nodes)
314
- bolt_result = upload_file(module_tar, File.basename(module_tar), target_nodes, options: {}, config: nil, inventory: inventory_hash.clone)
315
- raise_bolt_errors(bolt_result, 'Failed to upload module.')
316
-
317
- module_repository_opts = "--module_repository '#{module_repository}'" unless module_repository.nil?
318
- install_module_command = "puppet module install #{module_repository_opts} #{File.basename(module_tar)}"
319
- install_module_command += ' --ignore-dependencies --force' if ignore_dependencies.to_s.casecmp('true').zero?
320
- span.add_field('litmus.install_module_command', install_module_command)
321
-
322
- bolt_result = run_command(install_module_command, target_nodes, config: nil, inventory: inventory_hash.clone)
323
- raise_bolt_errors(bolt_result, "Installation of package #{File.basename(module_tar)} failed.")
324
- bolt_result
325
- end
219
+ # make sure the module to install is not installed
220
+ # otherwise `puppet module install` might silently skip it
221
+ module_name = File.basename(module_tar, '.tar.gz').split('-', 3)[0..1].join('-')
222
+ uninstall_module(inventory_hash.clone, target_node_name, module_name, force: true)
223
+
224
+ include ::BoltSpec::Run
225
+
226
+ target_nodes = find_targets(inventory_hash, target_node_name)
227
+ bolt_result = upload_file(module_tar, File.basename(module_tar), target_nodes, options: {}, config: nil, inventory: inventory_hash.clone)
228
+ raise_bolt_errors(bolt_result, 'Failed to upload module.')
229
+
230
+ module_repository_opts = "--module_repository '#{module_repository}'" unless module_repository.nil?
231
+ install_module_command = "puppet module install #{module_repository_opts} #{File.basename(module_tar)}"
232
+ install_module_command += ' --ignore-dependencies --force' if ignore_dependencies.to_s.casecmp('true').zero?
233
+
234
+ bolt_result = run_command(install_module_command, target_nodes, config: nil, inventory: inventory_hash.clone)
235
+ raise_bolt_errors(bolt_result, "Installation of package #{File.basename(module_tar)} failed.")
236
+ bolt_result
326
237
  end
327
238
 
328
239
  def metadata_module_name
@@ -353,33 +264,23 @@ module PuppetLitmus::RakeHelper
353
264
  end
354
265
 
355
266
  def check_connectivity?(inventory_hash, target_node_name)
356
- Honeycomb.start_span(name: 'litmus.check_connectivity') do |span|
357
- ENV['HONEYCOMB_TRACE'] = span.to_trace_header
358
- # if we're only checking connectivity for a single node
359
- if target_node_name
360
- span.add_field('litmus.target_node_name', target_node_name)
361
- add_platform_field(inventory_hash, target_node_name)
362
- end
267
+ # if we're only checking connectivity for a single node
268
+ add_platform_field(inventory_hash, target_node_name) if target_node_name
363
269
 
364
- include ::BoltSpec::Run
365
- target_nodes = find_targets(inventory_hash, target_node_name)
366
- puts "Checking connectivity for #{target_nodes.inspect}"
367
- span.add_field('litmus.target_nodes', target_nodes)
368
-
369
- results = run_command('cd .', target_nodes, config: nil, inventory: inventory_hash)
370
- span.add_field('litmus.bolt_result', results)
371
- failed = []
372
- results.reject { |r| r['status'] == 'success' }.each do |result|
373
- puts "Failure connecting to #{result['target']}:\n#{result.inspect}"
374
- failed.push(result['target'])
375
- end
376
- span.add_field('litmus.connectivity_success', results.select { |r| r['status'] == 'success' })
377
- span.add_field('litmus.connectivity_failure', results.reject { |r| r['status'] == 'success' })
378
- raise "Connectivity has failed on: #{failed}" unless failed.empty?
270
+ include ::BoltSpec::Run
271
+ target_nodes = find_targets(inventory_hash, target_node_name)
272
+ puts "Checking connectivity for #{target_nodes.inspect}"
379
273
 
380
- puts 'Connectivity check PASSED.'
381
- true
274
+ results = run_command('cd .', target_nodes, config: nil, inventory: inventory_hash)
275
+ failed = []
276
+ results.reject { |r| r['status'] == 'success' }.each do |result|
277
+ puts "Failure connecting to #{result['target']}:\n#{result.inspect}"
278
+ failed.push(result['target'])
382
279
  end
280
+ raise "Connectivity has failed on: #{failed}" unless failed.empty?
281
+
282
+ puts 'Connectivity check PASSED.'
283
+ true
383
284
  end
384
285
 
385
286
  def provisioner_task(provisioner)
@@ -90,11 +90,8 @@ namespace :litmus do
90
90
  results.first['value']['target_names'] || [] # provision_service multi-node provisioning
91
91
  end
92
92
  target_names.each do |target|
93
- Honeycomb.start_span(name: 'litmus.provision.check_connectivity') do |span|
94
- span.add_field('target_name', target)
95
- with_retries do
96
- check_connectivity?(inventory_hash_from_inventory_file, target)
97
- end
93
+ with_retries do
94
+ check_connectivity?(inventory_hash_from_inventory_file, target)
98
95
  end
99
96
  end
100
97
  ensure
@@ -355,7 +352,7 @@ namespace :litmus do
355
352
  payloads = []
356
353
  # Generate list of targets to provision
357
354
  targets.each do |target|
358
- test = "bundle exec rspec ./spec/acceptance #{tag_value} --format progress --require rspec_honeycomb_formatter --format RSpecHoneycombFormatter"
355
+ test = "bundle exec rspec ./spec/acceptance #{tag_value} --format progress"
359
356
  title = "#{target}, #{facts_from_node(inventory_hash, target)['platform']}"
360
357
  options = {
361
358
  env: {
@@ -386,7 +383,6 @@ namespace :litmus do
386
383
  at_exit { exit! }
387
384
 
388
385
  env = options[:env].nil? ? {} : options[:env]
389
- env['HONEYCOMB_TRACE'] = Honeycomb.current_span.to_trace_header
390
386
  stdout, stderr, status = Open3.capture3(env, test)
391
387
  ["\n================\n#{title}\n", stdout, stderr, status]
392
388
  end
@@ -404,7 +400,6 @@ namespace :litmus do
404
400
  spinners = TTY::Spinner::Multi.new("[:spinner] Running against #{targets.size} targets.")
405
401
  payloads.each do |title, test, options|
406
402
  env = options[:env].nil? ? {} : options[:env]
407
- env['HONEYCOMB_TRACE'] = Honeycomb.current_span.to_trace_header
408
403
  spinners.register("[:spinner] #{title}") do |sp|
409
404
  stdout, stderr, status = Open3.capture3(env, test)
410
405
  if status.to_i.zero?
@@ -2,5 +2,5 @@
2
2
 
3
3
  # version of this gem
4
4
  module PuppetLitmus
5
- VERSION = '1.0.2'
5
+ VERSION = '1.0.3'
6
6
  end
@@ -41,7 +41,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
41
41
  it 'passes the --hiera_config flag if the :hiera_config opt is specified' do
42
42
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(false)
43
43
  expect(self).to receive(:target_in_inventory?).and_return(true)
44
- expect(self).to receive(:target_in_inventory?).and_return(true)
45
44
  expect(self).to receive(:create_manifest_file).with(manifest).and_return('/bla.pp')
46
45
  expect(self).to receive(:run_command).with(command, 'litmus_localhost', config: nil, inventory: localhost_inventory_hash).and_return(result)
47
46
  apply_manifest(manifest, hiera_config: '/hiera.yaml')
@@ -61,7 +60,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
61
60
  it 'uses detailed-exitcodes with expect_failures' do
62
61
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(false)
63
62
  expect(self).to receive(:target_in_inventory?).and_return(true)
64
- expect(self).to receive(:target_in_inventory?).and_return(true)
65
63
  expect(self).to receive(:create_manifest_file).with(manifest).and_return('/bla.pp')
66
64
  expect(self).to receive(:run_command).with(command, 'litmus_localhost', config: nil, inventory: localhost_inventory_hash).and_return(result)
67
65
  expect { apply_manifest(manifest, expect_failures: true) }.to raise_error(RuntimeError)
@@ -70,7 +68,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
70
68
  it 'uses detailed-exitcodes with catch_failures' do
71
69
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(false)
72
70
  expect(self).to receive(:target_in_inventory?).and_return(true)
73
- expect(self).to receive(:target_in_inventory?).and_return(true)
74
71
  expect(self).to receive(:create_manifest_file).with(manifest).and_return('/bla.pp')
75
72
  expect(self).to receive(:run_command).with(command, 'litmus_localhost', config: nil, inventory: localhost_inventory_hash).and_return(result)
76
73
  apply_manifest(manifest, catch_failures: true)
@@ -79,7 +76,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
79
76
  it 'uses detailed-exitcodes with expect_changes' do
80
77
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(false)
81
78
  expect(self).to receive(:target_in_inventory?).and_return(true)
82
- expect(self).to receive(:target_in_inventory?).and_return(true)
83
79
  expect(self).to receive(:create_manifest_file).with(manifest).and_return('/bla.pp')
84
80
  expect(self).to receive(:run_command).with(command, 'litmus_localhost', config: nil, inventory: localhost_inventory_hash).and_return(result)
85
81
  expect { apply_manifest(manifest, expect_changes: true) }.to raise_error(RuntimeError)
@@ -88,7 +84,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
88
84
  it 'uses detailed-exitcodes with catch_changes' do
89
85
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(false)
90
86
  expect(self).to receive(:target_in_inventory?).and_return(true)
91
- expect(self).to receive(:target_in_inventory?).and_return(true)
92
87
  expect(self).to receive(:create_manifest_file).with(manifest).and_return('/bla.pp')
93
88
  expect(self).to receive(:run_command).with(command, 'litmus_localhost', config: nil, inventory: localhost_inventory_hash).and_return(result)
94
89
  apply_manifest(manifest, catch_changes: true)
@@ -114,7 +109,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
114
109
  stub_const('ENV', ENV.to_hash.merge('TARGET_HOST' => 'localhost'))
115
110
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(false)
116
111
  expect(self).to receive(:target_in_inventory?).and_return(true)
117
- expect(self).to receive(:target_in_inventory?).and_return(true)
118
112
  expect(self).to receive(:run_command).with(command_to_run, 'litmus_localhost', config: nil, inventory: localhost_inventory_hash).and_return(result)
119
113
  expect { run_shell(command_to_run) }.not_to raise_error
120
114
  end
@@ -126,7 +120,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
126
120
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(true)
127
121
  expect(self).to receive(:inventory_hash_from_inventory_file).and_return(inventory_hash)
128
122
  expect(self).to receive(:target_in_inventory?).and_return(true)
129
- expect(self).to receive(:target_in_inventory?).and_return(true)
130
123
  expect(self).to receive(:run_command).with(command_to_run, 'some.host', config: nil, inventory: inventory_hash).and_return(result)
131
124
  expect { run_shell(command_to_run) }.not_to raise_error
132
125
  end
@@ -152,7 +145,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
152
145
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(true)
153
146
  expect(self).to receive(:inventory_hash_from_inventory_file).and_return(inventory_hash)
154
147
  expect(self).to receive(:target_in_inventory?).and_return(true)
155
- expect(self).to receive(:target_in_inventory?).and_return(true)
156
148
  expect(self).to receive(:upload_file).with(local, remote, 'some.host', options: {}, config: nil, inventory: inventory_hash).and_return(result_success)
157
149
  expect { bolt_upload_file(local, remote) }.not_to raise_error
158
150
  end
@@ -162,7 +154,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
162
154
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(false)
163
155
  expect(self).not_to receive(:inventory_hash_from_inventory_file)
164
156
  expect(self).to receive(:target_in_inventory?).and_return(true)
165
- expect(self).to receive(:target_in_inventory?).and_return(true)
166
157
  expect(self).to receive(:upload_file).with(local, remote, 'litmus_localhost', options: {}, config: nil, inventory: localhost_inventory_hash).and_return(result_success)
167
158
  expect { bolt_upload_file(local, remote) }.not_to raise_error
168
159
  end
@@ -174,7 +165,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
174
165
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(true)
175
166
  expect(self).to receive(:inventory_hash_from_inventory_file).and_return(inventory_hash)
176
167
  expect(self).to receive(:target_in_inventory?).and_return(true)
177
- expect(self).to receive(:target_in_inventory?).and_return(true)
178
168
  expect(self).to receive(:upload_file).with(local, remote, 'some.host', options: {}, config: nil, inventory: inventory_hash).and_return(result_failure)
179
169
  expect { bolt_upload_file(local, remote) }.to raise_error(RuntimeError, /upload file failed/)
180
170
  end
@@ -184,7 +174,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
184
174
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(true)
185
175
  expect(self).to receive(:inventory_hash_from_inventory_file).and_return(inventory_hash)
186
176
  expect(self).to receive(:target_in_inventory?).and_return(true)
187
- expect(self).to receive(:target_in_inventory?).and_return(true)
188
177
  expect(self).to receive(:upload_file).with(local, remote, 'some.host', options: {}, config: nil, inventory: inventory_hash).and_return(result_failure)
189
178
  method_result = bolt_upload_file(local, remote, expect_failures: true)
190
179
  expect(method_result.exit_code).to be(255)
@@ -207,7 +196,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
207
196
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(false)
208
197
  expect(self).not_to receive(:inventory_hash_from_inventory_file)
209
198
  expect(self).to receive(:target_in_inventory?).and_return(true)
210
- expect(self).to receive(:target_in_inventory?).and_return(true)
211
199
  expect(self).to receive(:run_script).with(script, 'litmus_localhost', [], options: {}, config: nil, inventory: localhost_inventory_hash).and_return(result)
212
200
  expect { bolt_run_script(script) }.not_to raise_error
213
201
  end
@@ -219,7 +207,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
219
207
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(true)
220
208
  expect(self).to receive(:inventory_hash_from_inventory_file).and_return(inventory_hash)
221
209
  expect(self).to receive(:target_in_inventory?).and_return(true)
222
- expect(self).to receive(:target_in_inventory?).and_return(true)
223
210
  expect(self).to receive(:run_script).with(script, 'some.host', [], options: {}, config: nil, inventory: inventory_hash).and_return(result)
224
211
  expect { bolt_run_script(script) }.not_to raise_error
225
212
  end
@@ -231,7 +218,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
231
218
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(false)
232
219
  expect(self).not_to receive(:inventory_hash_from_inventory_file)
233
220
  expect(self).to receive(:target_in_inventory?).and_return(true)
234
- expect(self).to receive(:target_in_inventory?).and_return(true)
235
221
  expect(self).to receive(:run_script).with(script, 'litmus_localhost', ['doot'], options: {}, config: nil, inventory: localhost_inventory_hash).and_return(result)
236
222
  expect { bolt_run_script(script, arguments: ['doot']) }.not_to raise_error
237
223
  end
@@ -259,7 +245,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
259
245
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(true)
260
246
  expect(self).to receive(:inventory_hash_from_inventory_file).and_return(inventory_hash)
261
247
  expect(self).to receive(:target_in_inventory?).and_return(true)
262
- expect(self).to receive(:target_in_inventory?).and_return(true)
263
248
  expect(self).to receive(:run_task).with(task_name, 'some.host', params, config: config_data, inventory: inventory_hash).and_return(result_unstructured_task_success)
264
249
  expect { run_bolt_task(task_name, params, opts: {}) }.not_to raise_error
265
250
  end
@@ -269,7 +254,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
269
254
  expect(File).to receive(:exist?).with('jim.yaml').and_return(true)
270
255
  expect(self).to receive(:inventory_hash_from_inventory_file).and_return(inventory_hash)
271
256
  expect(self).to receive(:target_in_inventory?).and_return(true)
272
- expect(self).to receive(:target_in_inventory?).and_return(true)
273
257
  expect(self).to receive(:run_task).with(task_name, 'some.host', params, config: config_data, inventory: inventory_hash).and_return(result_unstructured_task_success)
274
258
  expect { run_bolt_task(task_name, params, inventory_file: 'jim.yaml') }.not_to raise_error
275
259
  end
@@ -279,7 +263,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
279
263
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(true)
280
264
  expect(self).to receive(:inventory_hash_from_inventory_file).and_return(inventory_hash)
281
265
  expect(self).to receive(:target_in_inventory?).and_return(true)
282
- expect(self).to receive(:target_in_inventory?).and_return(true)
283
266
  expect(self).to receive(:run_task).with(task_name, 'some.host', params, config: config_data, inventory: inventory_hash).and_return(result_unstructured_task_success)
284
267
  method_result = run_bolt_task(task_name, params, opts: {})
285
268
  expect(method_result.stdout).to eq('SUCCESS!')
@@ -290,7 +273,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
290
273
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(true)
291
274
  expect(self).to receive(:inventory_hash_from_inventory_file).and_return(inventory_hash)
292
275
  expect(self).to receive(:target_in_inventory?).and_return(true)
293
- expect(self).to receive(:target_in_inventory?).and_return(true)
294
276
  expect(self).to receive(:run_task).with(task_name, 'some.host', params, config: config_data, inventory: inventory_hash).and_return(result_structured_task_success)
295
277
  method_result = run_bolt_task(task_name, params, opts: {})
296
278
  expect(method_result.stdout).to eq('{"key1"=>"foo", "key2"=>"bar"}')
@@ -305,7 +287,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
305
287
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(true)
306
288
  expect(self).to receive(:inventory_hash_from_inventory_file).and_return(inventory_hash)
307
289
  expect(self).to receive(:target_in_inventory?).and_return(true)
308
- expect(self).to receive(:target_in_inventory?).and_return(true)
309
290
  expect(self).to receive(:run_task).with(task_name, 'some.host', params, config: config_data, inventory: inventory_hash).and_return(result_failure)
310
291
  expect { run_bolt_task(task_name, params, opts: {}) }.to raise_error(RuntimeError, /task failed/)
311
292
  end
@@ -315,7 +296,6 @@ RSpec.describe PuppetLitmus::PuppetHelpers do
315
296
  expect(File).to receive(:exist?).with('spec/fixtures/litmus_inventory.yaml').and_return(true)
316
297
  expect(self).to receive(:inventory_hash_from_inventory_file).and_return(inventory_hash)
317
298
  expect(self).to receive(:target_in_inventory?).and_return(true)
318
- expect(self).to receive(:target_in_inventory?).and_return(true)
319
299
  expect(self).to receive(:run_task).with(task_name, 'some.host', params, config: config_data, inventory: inventory_hash).and_return(result_failure)
320
300
  method_result = run_bolt_task(task_name, params, expect_failures: true)
321
301
  expect(method_result.exit_code).to be(123)
@@ -78,7 +78,7 @@ describe 'litmus rake tasks' do
78
78
  allow_any_instance_of(PuppetLitmus::InventoryManipulation).to receive(:inventory_hash_from_inventory_file).with(any_args).and_return({})
79
79
  allow_any_instance_of(PuppetLitmus::RakeHelper).to receive(:check_connectivity?).with(any_args).and_return(true)
80
80
 
81
- expect { Rake::Task['litmus:provision'].invoke('docker', 'centos:7') }.to output(expected_output).to_stdout
81
+ expect { Rake::Task['litmus:provision'].invoke('docker', 'centos:7') }.to output(/#{expected_output}/).to_stdout
82
82
  end
83
83
  end
84
84
 
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: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet, Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-25 00:00:00.000000000 Z
11
+ date: 2023-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bolt
@@ -44,20 +44,6 @@ dependencies:
44
44
  - - "<"
45
45
  - !ruby/object:Gem::Version
46
46
  version: 3.0.0
47
- - !ruby/object:Gem::Dependency
48
- name: honeycomb-beeline
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
47
  - !ruby/object:Gem::Dependency
62
48
  name: parallel
63
49
  requirement: !ruby/object:Gem::Requirement
@@ -114,20 +100,6 @@ dependencies:
114
100
  - - ">="
115
101
  - !ruby/object:Gem::Version
116
102
  version: '0'
117
- - !ruby/object:Gem::Dependency
118
- name: rspec_honeycomb_formatter
119
- requirement: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: '0'
124
- type: :runtime
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- version: '0'
131
103
  - !ruby/object:Gem::Dependency
132
104
  name: tty-spinner
133
105
  requirement: !ruby/object:Gem::Requirement