openbolt 5.0.0.rc1 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/Puppetfile +18 -12
  3. data/bolt-modules/boltlib/lib/puppet/functions/apply_prep.rb +5 -3
  4. data/bolt-modules/boltlib/lib/puppet/functions/download_file.rb +1 -0
  5. data/bolt-modules/boltlib/lib/puppet/functions/get_resources.rb +2 -0
  6. data/bolt-modules/boltlib/lib/puppet/functions/puppetdb_command.rb +1 -1
  7. data/bolt-modules/boltlib/lib/puppet/functions/run_container.rb +2 -2
  8. data/bolt-modules/boltlib/lib/puppet/functions/run_script.rb +1 -0
  9. data/bolt-modules/boltlib/lib/puppet/functions/set_resources.rb +2 -2
  10. data/bolt-modules/boltlib/lib/puppet/functions/upload_file.rb +1 -0
  11. data/bolt-modules/boltlib/lib/puppet/functions/wait.rb +1 -1
  12. data/bolt-modules/boltlib/lib/puppet/functions/wait_until_available.rb +1 -0
  13. data/bolt-modules/ctrl/lib/puppet/functions/ctrl/do_until.rb +1 -0
  14. data/lib/bolt/analytics.rb +1 -1
  15. data/lib/bolt/application.rb +17 -22
  16. data/lib/bolt/applicator.rb +4 -0
  17. data/lib/bolt/bolt_option_parser.rb +10 -8
  18. data/lib/bolt/cli.rb +7 -6
  19. data/lib/bolt/config/options.rb +59 -67
  20. data/lib/bolt/config/transport/base.rb +1 -0
  21. data/lib/bolt/config/transport/options.rb +59 -59
  22. data/lib/bolt/config.rb +8 -6
  23. data/lib/bolt/executor.rb +9 -24
  24. data/lib/bolt/fiber_executor.rb +3 -1
  25. data/lib/bolt/inventory/group.rb +3 -0
  26. data/lib/bolt/inventory/inventory.rb +2 -0
  27. data/lib/bolt/inventory/options.rb +7 -7
  28. data/lib/bolt/inventory/target.rb +3 -2
  29. data/lib/bolt/inventory.rb +1 -0
  30. data/lib/bolt/logger.rb +2 -0
  31. data/lib/bolt/module.rb +1 -0
  32. data/lib/bolt/module_installer/puppetfile.rb +4 -4
  33. data/lib/bolt/module_installer/resolver.rb +2 -2
  34. data/lib/bolt/module_installer/specs/forge_spec.rb +4 -4
  35. data/lib/bolt/module_installer/specs/git_spec.rb +6 -6
  36. data/lib/bolt/module_installer/specs/id/gitclone.rb +1 -0
  37. data/lib/bolt/module_installer/specs/id/github.rb +2 -1
  38. data/lib/bolt/module_installer/specs/id/gitlab.rb +2 -1
  39. data/lib/bolt/module_installer.rb +3 -1
  40. data/lib/bolt/outputter/human.rb +9 -4
  41. data/lib/bolt/outputter/rainbow.rb +1 -0
  42. data/lib/bolt/pal/yaml_plan/parameter.rb +2 -2
  43. data/lib/bolt/pal/yaml_plan/step/resources.rb +1 -1
  44. data/lib/bolt/pal.rb +7 -4
  45. data/lib/bolt/plan_creator.rb +5 -4
  46. data/lib/bolt/plugin/cache.rb +2 -0
  47. data/lib/bolt/plugin/module.rb +7 -0
  48. data/lib/bolt/plugin/puppet_connect_data.rb +1 -0
  49. data/lib/bolt/plugin/task.rb +3 -0
  50. data/lib/bolt/plugin.rb +4 -0
  51. data/lib/bolt/project.rb +3 -3
  52. data/lib/bolt/project_manager/config_migrator.rb +3 -3
  53. data/lib/bolt/project_manager/inventory_migrator.rb +1 -1
  54. data/lib/bolt/project_manager/module_migrator.rb +7 -6
  55. data/lib/bolt/project_manager.rb +11 -11
  56. data/lib/bolt/puppetdb/config.rb +4 -0
  57. data/lib/bolt/puppetdb/instance.rb +1 -0
  58. data/lib/bolt/rerun.rb +1 -0
  59. data/lib/bolt/resource_instance.rb +1 -1
  60. data/lib/bolt/result.rb +2 -1
  61. data/lib/bolt/shell/bash.rb +2 -1
  62. data/lib/bolt/shell/powershell.rb +4 -3
  63. data/lib/bolt/shell.rb +1 -1
  64. data/lib/bolt/task/run.rb +1 -0
  65. data/lib/bolt/task.rb +3 -0
  66. data/lib/bolt/transport/docker/connection.rb +2 -0
  67. data/lib/bolt/transport/jail/connection.rb +2 -0
  68. data/lib/bolt/transport/lxd/connection.rb +2 -0
  69. data/lib/bolt/transport/lxd.rb +1 -1
  70. data/lib/bolt/transport/podman/connection.rb +2 -0
  71. data/lib/bolt/transport/remote.rb +1 -0
  72. data/lib/bolt/transport/ssh/connection.rb +1 -1
  73. data/lib/bolt/transport/winrm/connection.rb +4 -3
  74. data/lib/bolt/util/format.rb +1 -0
  75. data/lib/bolt/util.rb +7 -4
  76. data/lib/bolt/validator.rb +1 -1
  77. data/lib/bolt/version.rb +1 -1
  78. data/lib/bolt_spec/plans/action_stubs.rb +5 -0
  79. data/lib/bolt_spec/plans/mock_executor.rb +2 -4
  80. data/libexec/apply_catalog.rb +2 -1
  81. data/libexec/custom_facts.rb +1 -1
  82. data/libexec/query_resources.rb +1 -1
  83. metadata +63 -77
  84. data/lib/bolt/config/transport/orch.rb +0 -41
  85. data/lib/bolt/transport/orch/connection.rb +0 -111
  86. data/lib/bolt/transport/orch.rb +0 -271
  87. data/lib/bolt_server/acl.rb +0 -39
  88. data/lib/bolt_server/base_config.rb +0 -112
  89. data/lib/bolt_server/config.rb +0 -64
  90. data/lib/bolt_server/file_cache.rb +0 -200
  91. data/lib/bolt_server/request_error.rb +0 -11
  92. data/lib/bolt_server/schemas/action-check_node_connections.json +0 -14
  93. data/lib/bolt_server/schemas/action-run_command.json +0 -12
  94. data/lib/bolt_server/schemas/action-run_script.json +0 -47
  95. data/lib/bolt_server/schemas/action-run_task.json +0 -20
  96. data/lib/bolt_server/schemas/action-upload_file.json +0 -47
  97. data/lib/bolt_server/schemas/partials/target-any.json +0 -10
  98. data/lib/bolt_server/schemas/partials/target-ssh.json +0 -88
  99. data/lib/bolt_server/schemas/partials/target-winrm.json +0 -67
  100. data/lib/bolt_server/schemas/partials/task.json +0 -94
  101. data/lib/bolt_server/schemas/transport-ssh.json +0 -25
  102. data/lib/bolt_server/schemas/transport-winrm.json +0 -19
  103. data/lib/bolt_server/transport_app.rb +0 -554
@@ -172,7 +172,7 @@ module Bolt
172
172
  private def plugin_reference?(value, plugin_supported)
173
173
  if value.is_a?(Hash) && value.key?('_plugin')
174
174
  unless plugin_supported
175
- @errors << "Value at '#{path}' is a plugin reference, which is unsupported at "\
175
+ @errors << "Value at '#{path}' is a plugin reference, which is unsupported at " \
176
176
  "this location"
177
177
  end
178
178
 
data/lib/bolt/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bolt
4
- VERSION = '5.0.0.rc1'
4
+ VERSION = '5.1.0'
5
5
  end
@@ -103,6 +103,7 @@ module BoltSpec
103
103
  unless result_set.is_a?(Bolt::ResultSet)
104
104
  raise "Return block for #{object} did not return a Bolt::ResultSet"
105
105
  end
106
+
106
107
  result_set
107
108
  end
108
109
 
@@ -110,6 +111,7 @@ module BoltSpec
110
111
  unless plan_result.is_a?(Bolt::PlanResult)
111
112
  raise "Return block for #{plan_clj.closure_name} did not return a Bolt::PlanResult"
112
113
  end
114
+
113
115
  plan_result
114
116
  end
115
117
 
@@ -144,6 +146,7 @@ module BoltSpec
144
146
 
145
147
  def return(&block)
146
148
  raise "Cannot set return values and return block." if @data_set
149
+
147
150
  @return_block = block
148
151
  self
149
152
  end
@@ -153,12 +156,14 @@ module BoltSpec
153
156
  def return_for_targets(data)
154
157
  data.each_with_object(@data) do |(target, result), hsh|
155
158
  raise "Mocked results must be hashes: #{target}: #{result}" unless result.is_a? Hash
159
+
156
160
  # set the inventory from the BoltSpec::Plans, otherwise if we try to convert
157
161
  # this target to a string, it will fail to string conversion because the
158
162
  # inventory is nil
159
163
  hsh[target] = result_for(Bolt::Target.new(target, @inventory), **Bolt::Util.walk_keys(result, &:to_sym))
160
164
  end
161
165
  raise "Cannot set return values and return block." if @return_block
166
+
162
167
  @data_set = true
163
168
  self
164
169
  end
@@ -251,11 +251,13 @@ module BoltSpec
251
251
 
252
252
  def queue_execute(targets)
253
253
  raise "Unexpected call to apply(#{targets})" unless @allow_apply
254
+
254
255
  targets
255
256
  end
256
257
 
257
258
  def await_results(promises)
258
259
  raise "Unexpected call to apply(#{targets})" unless @allow_apply
260
+
259
261
  Bolt::ResultSet.new(promises.map { |target| Bolt::ApplyResult.new(target) })
260
262
  end
261
263
  # End Apply mocking
@@ -329,8 +331,6 @@ module BoltSpec
329
331
 
330
332
  def batch_execute(_targets); end
331
333
 
332
- def finish_plan(_plan_result); end
333
-
334
334
  def handle_event(_event); end
335
335
 
336
336
  def prompt(_prompt, _options); end
@@ -349,8 +349,6 @@ module BoltSpec
349
349
 
350
350
  def shutdown; end
351
351
 
352
- def start_plan(_plan_context); end
353
-
354
352
  def subscribe(_subscriber, _types = nil); end
355
353
 
356
354
  def unsubscribe(_subscriber, _types = nil); end
@@ -57,6 +57,7 @@ begin
57
57
  # explicitly packaged plugins should take precedence
58
58
  args['bolt_builtin_content'].each do |builtin_dir|
59
59
  next unless Dir.exist?(builtin_dir)
60
+
60
61
  Dir.foreach(builtin_dir) do |dir|
61
62
  unless ['.', '..'].include? dir
62
63
  full_path = File.join(builtin_dir, dir, 'lib')
@@ -74,7 +75,7 @@ begin
74
75
  begin
75
76
  require 'puppet/resource_api/transport'
76
77
  rescue LoadError
77
- msg = "Could not load 'puppet/resource_api/transport', puppet-resource_api "\
78
+ msg = "Could not load 'puppet/resource_api/transport', puppet-resource_api " \
78
79
  "gem version 1.8.0 or greater is required on the proxy target"
79
80
  puts msg
80
81
  exit 1
@@ -39,7 +39,7 @@ Dir.mktmpdir do |puppet_root|
39
39
  begin
40
40
  require 'puppet/resource_api/transport'
41
41
  rescue LoadError
42
- msg = "Could not load 'puppet/resource_api/transport', puppet-resource_api "\
42
+ msg = "Could not load 'puppet/resource_api/transport', puppet-resource_api " \
43
43
  "gem version 1.8.0 or greater is required on the proxy target"
44
44
  puts msg
45
45
  exit 1
@@ -46,7 +46,7 @@ Dir.mktmpdir do |puppet_root|
46
46
  begin
47
47
  require 'puppet/resource_api/transport'
48
48
  rescue LoadError
49
- msg = "Could not load 'puppet/resource_api/transport', puppet-resource_api "\
49
+ msg = "Could not load 'puppet/resource_api/transport', puppet-resource_api " \
50
50
  "gem version 1.8.0 or greater is required on the proxy target"
51
51
  puts msg
52
52
  exit 1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openbolt
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0.rc1
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OpenVox Project
@@ -89,32 +89,38 @@ dependencies:
89
89
  name: hiera-eyaml
90
90
  requirement: !ruby/object:Gem::Requirement
91
91
  requirements:
92
- - - "~>"
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: 3.0.0
95
+ - - "<"
93
96
  - !ruby/object:Gem::Version
94
- version: '3'
97
+ version: 5.0.0
95
98
  type: :runtime
96
99
  prerelease: false
97
100
  version_requirements: !ruby/object:Gem::Requirement
98
101
  requirements:
99
- - - "~>"
102
+ - - ">="
100
103
  - !ruby/object:Gem::Version
101
- version: '3'
104
+ version: 3.0.0
105
+ - - "<"
106
+ - !ruby/object:Gem::Version
107
+ version: 5.0.0
102
108
  - !ruby/object:Gem::Dependency
103
- name: jwt
109
+ name: json
104
110
  requirement: !ruby/object:Gem::Requirement
105
111
  requirements:
106
112
  - - "~>"
107
113
  - !ruby/object:Gem::Version
108
- version: '2.2'
114
+ version: '2.12'
109
115
  type: :runtime
110
116
  prerelease: false
111
117
  version_requirements: !ruby/object:Gem::Requirement
112
118
  requirements:
113
119
  - - "~>"
114
120
  - !ruby/object:Gem::Version
115
- version: '2.2'
121
+ version: '2.12'
116
122
  - !ruby/object:Gem::Dependency
117
- name: logging
123
+ name: jwt
118
124
  requirement: !ruby/object:Gem::Requirement
119
125
  requirements:
120
126
  - - "~>"
@@ -128,19 +134,19 @@ dependencies:
128
134
  - !ruby/object:Gem::Version
129
135
  version: '2.2'
130
136
  - !ruby/object:Gem::Dependency
131
- name: minitar
137
+ name: logging
132
138
  requirement: !ruby/object:Gem::Requirement
133
139
  requirements:
134
140
  - - "~>"
135
141
  - !ruby/object:Gem::Version
136
- version: '0.6'
142
+ version: '2.2'
137
143
  type: :runtime
138
144
  prerelease: false
139
145
  version_requirements: !ruby/object:Gem::Requirement
140
146
  requirements:
141
147
  - - "~>"
142
148
  - !ruby/object:Gem::Version
143
- version: '0.6'
149
+ version: '2.2'
144
150
  - !ruby/object:Gem::Dependency
145
151
  name: net-scp
146
152
  requirement: !ruby/object:Gem::Requirement
@@ -196,33 +202,39 @@ dependencies:
196
202
  - !ruby/object:Gem::Version
197
203
  version: '0.5'
198
204
  - !ruby/object:Gem::Dependency
199
- name: orchestrator_client
205
+ name: openvox
200
206
  requirement: !ruby/object:Gem::Requirement
201
207
  requirements:
202
208
  - - "~>"
203
209
  - !ruby/object:Gem::Version
204
- version: '0.7'
210
+ version: '8.0'
205
211
  type: :runtime
206
212
  prerelease: false
207
213
  version_requirements: !ruby/object:Gem::Requirement
208
214
  requirements:
209
215
  - - "~>"
210
216
  - !ruby/object:Gem::Version
211
- version: '0.7'
217
+ version: '8.0'
212
218
  - !ruby/object:Gem::Dependency
213
- name: puppet
219
+ name: openvox-strings
214
220
  requirement: !ruby/object:Gem::Requirement
215
221
  requirements:
216
222
  - - ">="
217
223
  - !ruby/object:Gem::Version
218
- version: 6.18.0
224
+ version: '5.0'
225
+ - - "<"
226
+ - !ruby/object:Gem::Version
227
+ version: '7'
219
228
  type: :runtime
220
229
  prerelease: false
221
230
  version_requirements: !ruby/object:Gem::Requirement
222
231
  requirements:
223
232
  - - ">="
224
233
  - !ruby/object:Gem::Version
225
- version: 6.18.0
234
+ version: '5.0'
235
+ - - "<"
236
+ - !ruby/object:Gem::Version
237
+ version: '7'
226
238
  - !ruby/object:Gem::Dependency
227
239
  name: puppetfile-resolver
228
240
  requirement: !ruby/object:Gem::Requirement
@@ -257,26 +269,6 @@ dependencies:
257
269
  - - ">="
258
270
  - !ruby/object:Gem::Version
259
271
  version: 1.8.1
260
- - !ruby/object:Gem::Dependency
261
- name: puppet-strings
262
- requirement: !ruby/object:Gem::Requirement
263
- requirements:
264
- - - ">="
265
- - !ruby/object:Gem::Version
266
- version: 2.3.0
267
- - - "<"
268
- - !ruby/object:Gem::Version
269
- version: '5.0'
270
- type: :runtime
271
- prerelease: false
272
- version_requirements: !ruby/object:Gem::Requirement
273
- requirements:
274
- - - ">="
275
- - !ruby/object:Gem::Version
276
- version: 2.3.0
277
- - - "<"
278
- - !ruby/object:Gem::Version
279
- version: '5.0'
280
272
  - !ruby/object:Gem::Dependency
281
273
  name: r10k
282
274
  requirement: !ruby/object:Gem::Requirement
@@ -286,7 +278,7 @@ dependencies:
286
278
  version: '3.10'
287
279
  - - "<"
288
280
  - !ruby/object:Gem::Version
289
- version: '5'
281
+ version: '6'
290
282
  type: :runtime
291
283
  prerelease: false
292
284
  version_requirements: !ruby/object:Gem::Requirement
@@ -296,7 +288,7 @@ dependencies:
296
288
  version: '3.10'
297
289
  - - "<"
298
290
  - !ruby/object:Gem::Version
299
- version: '5'
291
+ version: '6'
300
292
  - !ruby/object:Gem::Dependency
301
293
  name: ruby_smb
302
294
  requirement: !ruby/object:Gem::Requirement
@@ -388,65 +380,79 @@ dependencies:
388
380
  - !ruby/object:Gem::Version
389
381
  version: '9'
390
382
  - !ruby/object:Gem::Dependency
391
- name: puppetlabs_spec_helper
383
+ name: rake
392
384
  requirement: !ruby/object:Gem::Requirement
393
385
  requirements:
394
386
  - - ">="
395
387
  - !ruby/object:Gem::Version
396
- version: '5.0'
388
+ version: '12.0'
397
389
  - - "<"
398
390
  - !ruby/object:Gem::Version
399
- version: '8'
391
+ version: '14'
400
392
  type: :development
401
393
  prerelease: false
402
394
  version_requirements: !ruby/object:Gem::Requirement
403
395
  requirements:
404
396
  - - ">="
405
397
  - !ruby/object:Gem::Version
406
- version: '5.0'
398
+ version: '12.0'
407
399
  - - "<"
408
400
  - !ruby/object:Gem::Version
409
- version: '8'
401
+ version: '14'
410
402
  - !ruby/object:Gem::Dependency
411
- name: rake
403
+ name: rspec
412
404
  requirement: !ruby/object:Gem::Requirement
413
405
  requirements:
414
406
  - - ">="
415
407
  - !ruby/object:Gem::Version
416
- version: '12.0'
408
+ version: '3.0'
417
409
  - - "<"
418
410
  - !ruby/object:Gem::Version
419
- version: '14'
411
+ version: '4'
420
412
  type: :development
421
413
  prerelease: false
422
414
  version_requirements: !ruby/object:Gem::Requirement
423
415
  requirements:
424
416
  - - ">="
425
417
  - !ruby/object:Gem::Version
426
- version: '12.0'
418
+ version: '3.0'
427
419
  - - "<"
428
420
  - !ruby/object:Gem::Version
429
- version: '14'
421
+ version: '4'
430
422
  - !ruby/object:Gem::Dependency
431
- name: rspec
423
+ name: voxpupuli-rubocop
424
+ requirement: !ruby/object:Gem::Requirement
425
+ requirements:
426
+ - - "~>"
427
+ - !ruby/object:Gem::Version
428
+ version: 5.0.0
429
+ type: :development
430
+ prerelease: false
431
+ version_requirements: !ruby/object:Gem::Requirement
432
+ requirements:
433
+ - - "~>"
434
+ - !ruby/object:Gem::Version
435
+ version: 5.0.0
436
+ - !ruby/object:Gem::Dependency
437
+ name: minitar
432
438
  requirement: !ruby/object:Gem::Requirement
433
439
  requirements:
434
440
  - - ">="
435
441
  - !ruby/object:Gem::Version
436
- version: '3.0'
442
+ version: '0.6'
437
443
  - - "<"
438
444
  - !ruby/object:Gem::Version
439
- version: '4'
440
- type: :development
445
+ version: '2.0'
446
+ type: :runtime
441
447
  prerelease: false
442
448
  version_requirements: !ruby/object:Gem::Requirement
443
449
  requirements:
444
450
  - - ">="
445
451
  - !ruby/object:Gem::Version
446
- version: '3.0'
452
+ version: '0.6'
447
453
  - - "<"
448
454
  - !ruby/object:Gem::Version
449
- version: '4'
455
+ version: '2.0'
450
456
  description: Execute commands remotely over SSH and WinRM
451
457
  email:
452
458
  - openvox@voxpupuli.org
@@ -549,7 +555,6 @@ files:
549
555
  - lib/bolt/config/transport/local.rb
550
556
  - lib/bolt/config/transport/lxd.rb
551
557
  - lib/bolt/config/transport/options.rb
552
- - lib/bolt/config/transport/orch.rb
553
558
  - lib/bolt/config/transport/podman.rb
554
559
  - lib/bolt/config/transport/remote.rb
555
560
  - lib/bolt/config/transport/ssh.rb
@@ -649,8 +654,6 @@ files:
649
654
  - lib/bolt/transport/local/connection.rb
650
655
  - lib/bolt/transport/lxd.rb
651
656
  - lib/bolt/transport/lxd/connection.rb
652
- - lib/bolt/transport/orch.rb
653
- - lib/bolt/transport/orch/connection.rb
654
657
  - lib/bolt/transport/podman.rb
655
658
  - lib/bolt/transport/podman/connection.rb
656
659
  - lib/bolt/transport/remote.rb
@@ -665,23 +668,6 @@ files:
665
668
  - lib/bolt/util/puppet_log_level.rb
666
669
  - lib/bolt/validator.rb
667
670
  - lib/bolt/version.rb
668
- - lib/bolt_server/acl.rb
669
- - lib/bolt_server/base_config.rb
670
- - lib/bolt_server/config.rb
671
- - lib/bolt_server/file_cache.rb
672
- - lib/bolt_server/request_error.rb
673
- - lib/bolt_server/schemas/action-check_node_connections.json
674
- - lib/bolt_server/schemas/action-run_command.json
675
- - lib/bolt_server/schemas/action-run_script.json
676
- - lib/bolt_server/schemas/action-run_task.json
677
- - lib/bolt_server/schemas/action-upload_file.json
678
- - lib/bolt_server/schemas/partials/target-any.json
679
- - lib/bolt_server/schemas/partials/target-ssh.json
680
- - lib/bolt_server/schemas/partials/target-winrm.json
681
- - lib/bolt_server/schemas/partials/task.json
682
- - lib/bolt_server/schemas/transport-ssh.json
683
- - lib/bolt_server/schemas/transport-winrm.json
684
- - lib/bolt_server/transport_app.rb
685
671
  - lib/bolt_spec/bolt_context.rb
686
672
  - lib/bolt_spec/plans.rb
687
673
  - lib/bolt_spec/plans/action_stubs.rb
@@ -729,7 +715,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
729
715
  - !ruby/object:Gem::Version
730
716
  version: '0'
731
717
  requirements: []
732
- rubygems_version: 3.6.7
718
+ rubygems_version: 3.6.9
733
719
  specification_version: 4
734
720
  summary: Execute commands remotely over SSH and WinRM
735
721
  test_files: []
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../../bolt/error'
4
- require_relative '../../../bolt/config/transport/base'
5
-
6
- module Bolt
7
- class Config
8
- module Transport
9
- class Orch < Base
10
- OPTIONS = %w[
11
- cacert
12
- host
13
- job-poll-interval
14
- job-poll-timeout
15
- read-timeout
16
- service-url
17
- task-environment
18
- token-file
19
- ].freeze
20
-
21
- DEFAULTS = {
22
- "task-environment" => "production"
23
- }.freeze
24
-
25
- private def validate
26
- super
27
-
28
- if @config['cacert']
29
- @config['cacert'] = File.expand_path(@config['cacert'], @project)
30
- Bolt::Util.validate_file('cacert', @config['cacert'])
31
- end
32
-
33
- if @config['token-file']
34
- @config['token-file'] = File.expand_path(@config['token-file'], @project)
35
- Bolt::Util.validate_file('token-file', @config['token-file'])
36
- end
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,111 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Bolt
4
- module Transport
5
- class Orch < Base
6
- class Connection
7
- attr_reader :logger, :key
8
-
9
- CONTEXT_KEYS = Set.new(%i[plan_name description params sensitive]).freeze
10
-
11
- def self.get_key(opts)
12
- [
13
- opts['service-url'],
14
- opts['task-environment'],
15
- opts['token-file']
16
- ].join('-')
17
- end
18
-
19
- def initialize(opts, plan_context, logger)
20
- require 'addressable/uri'
21
-
22
- @logger = logger
23
- @key = self.class.get_key(opts)
24
- client_opts = opts.slice('token-file', 'cacert', 'job-poll-interval', 'job-poll-timeout', 'read-timeout')
25
-
26
- if opts['service-url']
27
- uri = Addressable::URI.parse(opts['service-url'])
28
- uri&.port ||= 8143
29
- client_opts['service-url'] = uri.to_s
30
- end
31
-
32
- client_opts['User-Agent'] = "Bolt/#{VERSION}"
33
-
34
- %w[token-file cacert].each do |f|
35
- client_opts[f] = File.expand_path(client_opts[f]) if client_opts[f]
36
- end
37
- logger.debug("Creating orchestrator client for #{client_opts}")
38
- @client = OrchestratorClient.new(client_opts, true)
39
- @plan_context = plan_context
40
- @plan_job = start_plan(@plan_context)
41
- logger.debug("Started plan #{@plan_job}")
42
- @environment = opts["task-environment"]
43
- end
44
-
45
- def start_plan(plan_context)
46
- if plan_context
47
- begin
48
- opts = plan_context.select { |k, _| CONTEXT_KEYS.include? k }
49
- opts[:params] = opts[:params].reject { |k, _| plan_context[:sensitive].include?(k) }
50
- @client.command.plan_start(opts)['name']
51
- rescue OrchestratorClient::ApiError => e
52
- if e.code == '404'
53
- @logger.debug("Orchestrator #{key} does not support plans")
54
- else
55
- @logger.error("Failed to start a plan with orchestrator #{key}: #{e.message}")
56
- end
57
- nil
58
- end
59
- end
60
- end
61
-
62
- def finish_plan(plan_result)
63
- if @plan_job
64
- @client.command.plan_finish(
65
- plan_job: @plan_job,
66
- result: plan_result.value || '',
67
- status: plan_result.status
68
- )
69
- end
70
- end
71
-
72
- def get_certnames(targets)
73
- targets.map { |t| t.host || t.name }
74
- end
75
-
76
- def build_request(targets, task, arguments, description = nil)
77
- body = { task: task.name,
78
- environment: @environment,
79
- noop: arguments['_noop'],
80
- params: arguments.reject { |k, _| k.start_with?('_') },
81
- scope: {
82
- nodes: get_certnames(targets)
83
- } }
84
- body[:description] = description if description
85
- body[:plan_job] = @plan_job if @plan_job
86
- body
87
- end
88
-
89
- def run_task(targets, task, arguments, options)
90
- body = build_request(targets, task, arguments, options[:description])
91
- @client.run_task(body)
92
- rescue OrchestratorClient::ApiError => e
93
- if e.data['kind'] == 'puppetlabs.orchestrator/plan-already-finished'
94
- @logger.debug("Retrying the task")
95
- # Instead of recursing, just retry once
96
- @plan_job = start_plan(@plan_context)
97
- # Rebuild the request with the new plan job ID
98
- body = build_request(targets, task, arguments, options[:description])
99
- @client.run_task(body)
100
- else
101
- raise e
102
- end
103
- end
104
-
105
- def query_inventory(targets)
106
- @client.post('inventory', nodes: get_certnames(targets))
107
- end
108
- end
109
- end
110
- end
111
- end