puppet 6.4.4-x86-mingw32 → 6.4.5-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +1 -1
- data/Gemfile +4 -4
- data/Gemfile.lock +38 -32
- data/ext/build_defaults.yaml +1 -0
- data/ext/cert_inspector +3 -3
- data/ext/puppet-test +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +4 -4
- data/ext/windows/service/daemon.rb +38 -8
- data/install.rb +6 -6
- data/lib/puppet/application.rb +1 -1
- data/lib/puppet/application/apply.rb +2 -2
- data/lib/puppet/application/describe.rb +3 -9
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/lookup.rb +1 -1
- data/lib/puppet/application/script.rb +2 -2
- data/lib/puppet/application/ssl.rb +4 -1
- data/lib/puppet/configurer.rb +86 -30
- data/lib/puppet/configurer/downloader.rb +2 -6
- data/lib/puppet/defaults.rb +32 -6
- data/lib/puppet/error.rb +9 -1
- data/lib/puppet/face/module/list.rb +5 -5
- data/lib/puppet/face/module/search.rb +1 -1
- data/lib/puppet/face/module/uninstall.rb +1 -1
- data/lib/puppet/face/module/upgrade.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_system.rb +0 -8
- data/lib/puppet/file_system/memory_file.rb +1 -1
- data/lib/puppet/file_system/posix.rb +3 -2
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/functions.rb +1 -2
- data/lib/puppet/functions/camelcase.rb +2 -2
- data/lib/puppet/functions/epp.rb +4 -4
- data/lib/puppet/functions/find_file.rb +9 -9
- data/lib/puppet/functions/inline_epp.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +1 -1
- data/lib/puppet/graph/rb_tree_map.rb +2 -2
- data/lib/puppet/graph/simple_graph.rb +4 -3
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +2 -0
- data/lib/puppet/indirector/resource/ral.rb +1 -3
- data/lib/puppet/indirector/resource/validator.rb +1 -1
- data/lib/puppet/interface.rb +2 -1
- data/lib/puppet/loaders.rb +0 -1
- data/lib/puppet/metatype/manager.rb +1 -1
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/module/task.rb +20 -4
- data/lib/puppet/module_tool/applications/installer.rb +1 -1
- data/lib/puppet/module_tool/applications/uninstaller.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/module_tool/shared_behaviors.rb +4 -4
- data/lib/puppet/module_tool/tar/mini.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +12 -11
- data/lib/puppet/network/http/connection.rb +10 -12
- data/lib/puppet/network/http/pool.rb +2 -0
- data/lib/puppet/network/http/site.rb +1 -1
- data/lib/puppet/network/resolver.rb +2 -2
- data/lib/puppet/node/environment.rb +4 -2
- data/lib/puppet/pal/pal_impl.rb +2 -2
- data/lib/puppet/parser/ast.rb +1 -1
- data/lib/puppet/parser/ast/resourceparam.rb +1 -1
- data/lib/puppet/parser/functions.rb +1 -1
- data/lib/puppet/parser/functions/epp.rb +3 -3
- data/lib/puppet/parser/functions/inline_epp.rb +5 -5
- data/lib/puppet/parser/scope.rb +8 -7
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
- data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
- data/lib/puppet/pops/loader/task_instantiator.rb +4 -0
- data/lib/puppet/pops/loaders.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +1 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/merge_strategy.rb +22 -18
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
- data/lib/puppet/pops/parser/locator.rb +1 -1
- data/lib/puppet/pops/parser/pn_parser.rb +17 -16
- data/lib/puppet/pops/puppet_stack.rb +51 -49
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
- data/lib/puppet/pops/types/string_converter.rb +10 -10
- data/lib/puppet/pops/types/types.rb +3 -3
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/provider/exec.rb +6 -2
- data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
- data/lib/puppet/provider/nameservice/pw.rb +2 -2
- data/lib/puppet/provider/package/apt.rb +5 -1
- data/lib/puppet/provider/package/dnfmodule.rb +87 -0
- data/lib/puppet/provider/package/dpkg.rb +34 -18
- data/lib/puppet/provider/package/openbsd.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +34 -9
- data/lib/puppet/provider/package/portage.rb +4 -4
- data/lib/puppet/provider/package/rpm.rb +5 -5
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/package_targetable.rb +5 -4
- data/lib/puppet/provider/parsedfile.rb +1 -1
- data/lib/puppet/provider/service/daemontools.rb +9 -9
- data/lib/puppet/provider/service/openbsd.rb +1 -1
- data/lib/puppet/provider/service/rcng.rb +2 -2
- data/lib/puppet/provider/service/runit.rb +2 -8
- data/lib/puppet/provider/service/systemd.rb +9 -9
- data/lib/puppet/provider/user/directoryservice.rb +1 -1
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +22 -13
- data/lib/puppet/provider/user/windows_adsi.rb +4 -5
- data/lib/puppet/reference/indirection.rb +2 -2
- data/lib/puppet/reference/metaparameter.rb +1 -3
- data/lib/puppet/reference/providers.rb +1 -3
- data/lib/puppet/reference/type.rb +3 -9
- data/lib/puppet/reports.rb +1 -1
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/settings.rb +3 -3
- data/lib/puppet/settings/environment_conf.rb +1 -0
- data/lib/puppet/ssl/host.rb +1 -1
- data/lib/puppet/ssl/oids.rb +1 -1
- data/lib/puppet/transaction.rb +33 -11
- data/lib/puppet/transaction/report.rb +1 -1
- data/lib/puppet/type.rb +2 -4
- data/lib/puppet/type/exec.rb +7 -3
- data/lib/puppet/type/file.rb +1 -2
- data/lib/puppet/type/file/data_sync.rb +5 -1
- data/lib/puppet/type/group.rb +4 -2
- data/lib/puppet/type/notify.rb +3 -2
- data/lib/puppet/type/package.rb +10 -3
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/service.rb +1 -1
- data/lib/puppet/type/user.rb +4 -2
- data/lib/puppet/util.rb +35 -12
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +8 -14
- data/lib/puppet/util/log.rb +2 -2
- data/lib/puppet/util/log/destinations.rb +2 -2
- data/lib/puppet/util/logging.rb +32 -20
- data/lib/puppet/util/metric.rb +2 -2
- data/lib/puppet/util/provider_features.rb +2 -4
- data/lib/puppet/util/rdoc.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/selinux.rb +3 -1
- data/lib/puppet/util/windows/adsi.rb +48 -18
- data/lib/puppet/util/windows/registry.rb +7 -5
- data/lib/puppet/vendor.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509/cert_provider.rb +13 -6
- data/locales/puppet.pot +199 -159
- data/man/man5/puppet.conf.5 +35 -5
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list-installed.txt +11 -0
- data/spec/integration/configurer_spec.rb +52 -0
- data/spec/integration/type/notify_spec.rb +46 -0
- data/spec/lib/puppet/certificate_factory.rb +2 -2
- data/spec/spec_helper.rb +28 -0
- data/spec/unit/application/ssl_spec.rb +4 -7
- data/spec/unit/configurer_spec.rb +394 -398
- data/spec/unit/defaults_spec.rb +4 -4
- data/spec/unit/forge/forge_spec.rb +1 -3
- data/spec/unit/forge/repository_spec.rb +1 -3
- data/spec/unit/indirector/resource/ral_spec.rb +4 -4
- data/spec/unit/network/http/connection_spec.rb +119 -145
- data/spec/unit/parser/scope_spec.rb +10 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
- data/spec/unit/pops/loaders/module_loaders_spec.rb +37 -0
- data/spec/unit/provider/exec_spec.rb +209 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +186 -0
- data/spec/unit/provider/package/dpkg_spec.rb +238 -78
- data/spec/unit/provider/package/pip_spec.rb +51 -6
- data/spec/unit/provider/package/portage_spec.rb +4 -4
- data/spec/unit/provider/package_targetable_spec.rb +60 -0
- data/spec/unit/provider/service/daemontools_spec.rb +24 -0
- data/spec/unit/provider/service/runit_spec.rb +24 -0
- data/spec/unit/provider/service/systemd_spec.rb +25 -25
- data/spec/unit/provider/user/hpux_spec.rb +2 -2
- data/spec/unit/provider/user/useradd_spec.rb +46 -0
- data/spec/unit/ssl/host_spec.rb +0 -5
- data/spec/unit/ssl/state_machine_spec.rb +0 -6
- data/spec/unit/transaction_spec.rb +46 -0
- data/spec/unit/type/exec_spec.rb +6 -12
- data/spec/unit/type/file/content_spec.rb +9 -3
- data/spec/unit/type/file_spec.rb +9 -4
- data/spec/unit/type/package_spec.rb +5 -0
- data/spec/unit/util/execution_spec.rb +16 -0
- data/spec/unit/util/http_proxy_spec.rb +118 -27
- data/spec/unit/util/log/destinations_spec.rb +7 -3
- data/spec/unit/util/log_spec.rb +0 -138
- data/spec/unit/util/logging_spec.rb +200 -0
- data/spec/unit/util/windows/adsi_spec.rb +51 -0
- data/spec/unit/x509/cert_provider_spec.rb +24 -4
- data/tasks/manpages.rake +1 -0
- metadata +12 -10
- data/lib/puppet/pops/loader/null_loader.rb +0 -60
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +0 -24
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +0 -24
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +0 -24
@@ -155,7 +155,7 @@ HELP
|
|
155
155
|
with_contents = options[:references].length <= 1
|
156
156
|
exit_code = 0
|
157
157
|
require 'puppet/util/reference'
|
158
|
-
options[:references].
|
158
|
+
options[:references].sort_by(&:to_s).each do |name|
|
159
159
|
raise _("Could not find reference %{name}") % { name: name } unless section = Puppet::Util::Reference.reference(name)
|
160
160
|
|
161
161
|
begin
|
@@ -283,7 +283,7 @@ Copyright (c) 2015 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
283
283
|
'merge_hash_arrays' => !options[:merge_hash_arrays].nil?}
|
284
284
|
|
285
285
|
if options[:prefix]
|
286
|
-
merge_options
|
286
|
+
merge_options['knockout_prefix'] = options[:prefix]
|
287
287
|
end
|
288
288
|
|
289
289
|
else
|
@@ -212,8 +212,8 @@ Copyright (c) 2017 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
212
212
|
|
213
213
|
compiler.compile()
|
214
214
|
|
215
|
-
rescue Puppet::
|
216
|
-
# already logged and handled by the compiler
|
215
|
+
rescue Puppet::Error
|
216
|
+
# already logged and handled by the compiler, including Puppet::ParseErrorWithIssue
|
217
217
|
exit(1)
|
218
218
|
end
|
219
219
|
|
@@ -249,7 +249,10 @@ END
|
|
249
249
|
'certificate' => Puppet[:hostcert],
|
250
250
|
'private key password file' => Puppet[:passfile]
|
251
251
|
}
|
252
|
-
|
252
|
+
if options[:localca]
|
253
|
+
paths['local CA certificate'] = Puppet[:localcacert]
|
254
|
+
paths['local CRL'] = Puppet[:hostcrl]
|
255
|
+
end
|
253
256
|
paths.each_pair do |label, path|
|
254
257
|
if Puppet::FileSystem.exist?(path)
|
255
258
|
Puppet::FileSystem.unlink(path)
|
data/lib/puppet/configurer.rb
CHANGED
@@ -148,9 +148,10 @@ class Puppet::Configurer
|
|
148
148
|
facts_hash
|
149
149
|
end
|
150
150
|
|
151
|
-
def prepare_and_retrieve_catalog(options, query_options)
|
151
|
+
def prepare_and_retrieve_catalog(cached_catalog, options, query_options)
|
152
152
|
# set report host name now that we have the fact
|
153
153
|
options[:report].host = Puppet[:node_name_value]
|
154
|
+
|
154
155
|
query_options[:transaction_uuid] = @transaction_uuid
|
155
156
|
query_options[:job_id] = @job_id
|
156
157
|
query_options[:static_catalog] = @static_catalog
|
@@ -160,26 +161,19 @@ class Puppet::Configurer
|
|
160
161
|
query_options[:checksum_type] = @checksum_type.join('.')
|
161
162
|
|
162
163
|
# apply passes in ral catalog
|
163
|
-
catalog = options
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
Puppet.err _("Could not retrieve catalog; skipping run")
|
171
|
-
nil
|
164
|
+
catalog = cached_catalog || options[:catalog]
|
165
|
+
unless catalog
|
166
|
+
# retrieve_catalog returns resource catalog
|
167
|
+
catalog = retrieve_catalog(query_options)
|
168
|
+
Puppet.err _("Could not retrieve catalog; skipping run") unless catalog
|
169
|
+
end
|
170
|
+
catalog
|
172
171
|
end
|
173
172
|
|
174
173
|
def prepare_and_retrieve_catalog_from_cache(options = {})
|
175
174
|
result = retrieve_catalog_from_cache({:transaction_uuid => @transaction_uuid, :static_catalog => @static_catalog})
|
176
|
-
if result
|
177
|
-
|
178
|
-
# get facts now so that the convert_catalog method can resolve deferred values
|
179
|
-
get_facts(options)
|
180
|
-
return convert_catalog(result, @duration, options)
|
181
|
-
end
|
182
|
-
nil
|
175
|
+
Puppet.info _("Using cached catalog from environment '%{catalog_env}'") % { catalog_env: result.environment } if result
|
176
|
+
result
|
183
177
|
end
|
184
178
|
|
185
179
|
# Apply supplied catalog and return associated application report
|
@@ -257,13 +251,12 @@ class Puppet::Configurer
|
|
257
251
|
Puppet::GettextConfig.reset_text_domain('agent')
|
258
252
|
Puppet::ModuleTranslations.load_from_vardir(Puppet[:vardir])
|
259
253
|
|
260
|
-
if
|
261
|
-
options[:catalog] = catalog
|
254
|
+
if cached_catalog = prepare_and_retrieve_catalog_from_cache(options)
|
262
255
|
@cached_catalog_status = 'explicitly_requested'
|
263
256
|
|
264
|
-
if @environment !=
|
265
|
-
Puppet.notice _("Local environment: '%{local_env}' doesn't match the environment of the cached catalog '%{catalog_env}', switching agent to '%{catalog_env}'.") % { local_env: @environment, catalog_env:
|
266
|
-
@environment =
|
257
|
+
if @environment != cached_catalog.environment && !Puppet[:strict_environment_mode]
|
258
|
+
Puppet.notice _("Local environment: '%{local_env}' doesn't match the environment of the cached catalog '%{catalog_env}', switching agent to '%{catalog_env}'.") % { local_env: @environment, catalog_env: cached_catalog.environment }
|
259
|
+
@environment = cached_catalog.environment
|
267
260
|
end
|
268
261
|
|
269
262
|
report.environment = @environment
|
@@ -284,7 +277,7 @@ class Puppet::Configurer
|
|
284
277
|
configured_environment = Puppet[:environment] if Puppet.settings.set_by_config?(:environment)
|
285
278
|
|
286
279
|
# We only need to find out the environment to run in if we don't already have a catalog
|
287
|
-
unless (options[:catalog] || Puppet[:strict_environment_mode])
|
280
|
+
unless (cached_catalog || options[:catalog] || Puppet[:strict_environment_mode])
|
288
281
|
begin
|
289
282
|
node = nil
|
290
283
|
node_retr_time = thinmark do
|
@@ -339,7 +332,7 @@ class Puppet::Configurer
|
|
339
332
|
query_options[:configured_environment] = configured_environment
|
340
333
|
options[:convert_for_node] = node
|
341
334
|
|
342
|
-
unless catalog = prepare_and_retrieve_catalog(options, query_options)
|
335
|
+
unless catalog = prepare_and_retrieve_catalog(cached_catalog, options, query_options)
|
343
336
|
return nil
|
344
337
|
end
|
345
338
|
|
@@ -364,16 +357,37 @@ class Puppet::Configurer
|
|
364
357
|
query_options = get_facts(options)
|
365
358
|
query_options[:configured_environment] = configured_environment
|
366
359
|
|
367
|
-
|
360
|
+
# if we get here, ignore the cached catalog
|
361
|
+
return nil unless catalog = prepare_and_retrieve_catalog(nil, options, query_options)
|
368
362
|
tries += 1
|
369
363
|
end
|
370
364
|
|
365
|
+
# now that environment has converged, convert resource catalog into ral catalog
|
366
|
+
# unless we were given a RAL catalog
|
367
|
+
if !cached_catalog && options[:catalog]
|
368
|
+
ral_catalog = options[:catalog]
|
369
|
+
else
|
370
|
+
# REMIND @duration is the time spent loading the last catalog, and doesn't
|
371
|
+
# account for things like we failed to download and fell back to the cache
|
372
|
+
ral_catalog = convert_catalog(catalog, @duration, options)
|
373
|
+
|
374
|
+
# If not noop, commit the cached resource catalog (not ral catalog). Ideally
|
375
|
+
# we'd just copy the downloaded response body, instead of serializing the
|
376
|
+
# in-memory catalog, but that's hard due to the indirector.
|
377
|
+
indirection = Puppet::Resource::Catalog.indirection
|
378
|
+
if !Puppet[:noop] && indirection.cache?
|
379
|
+
request = indirection.request(:save, nil, catalog, environment: Puppet::Node::Environment.remote(catalog.environment))
|
380
|
+
Puppet.info("Caching catalog for #{request.key}")
|
381
|
+
indirection.cache.save(request)
|
382
|
+
end
|
383
|
+
end
|
384
|
+
|
371
385
|
execute_prerun_command or return nil
|
372
386
|
|
373
|
-
options[:report].code_id =
|
374
|
-
options[:report].catalog_uuid =
|
387
|
+
options[:report].code_id = ral_catalog.code_id
|
388
|
+
options[:report].catalog_uuid = ral_catalog.catalog_uuid
|
375
389
|
options[:report].cached_catalog_status = @cached_catalog_status
|
376
|
-
apply_catalog(
|
390
|
+
apply_catalog(ral_catalog, options)
|
377
391
|
true
|
378
392
|
rescue => detail
|
379
393
|
Puppet.log_exception(detail, _("Failed to apply catalog: %{detail}") % { detail: detail })
|
@@ -382,6 +396,14 @@ class Puppet::Configurer
|
|
382
396
|
execute_postrun_command or return nil
|
383
397
|
end
|
384
398
|
ensure
|
399
|
+
if Puppet[:resubmit_facts]
|
400
|
+
# TODO: Should mark the report as "failed" if an error occurs and
|
401
|
+
# resubmit_facts returns false. There is currently no API for this.
|
402
|
+
resubmit_facts_time = thinmark { resubmit_facts }
|
403
|
+
|
404
|
+
report.add_times(:resubmit_facts, resubmit_facts_time)
|
405
|
+
end
|
406
|
+
|
385
407
|
report.cached_catalog_status ||= @cached_catalog_status
|
386
408
|
report.add_times(:total, Time.now - start)
|
387
409
|
report.finalize_report
|
@@ -429,6 +451,40 @@ class Puppet::Configurer
|
|
429
451
|
Puppet.log_exception(detail, _("Could not save last run local report: %{detail}") % { detail: detail })
|
430
452
|
end
|
431
453
|
|
454
|
+
# Submit updated facts to the Puppet Server
|
455
|
+
#
|
456
|
+
# This method will clear all current fact values, load a fresh set of
|
457
|
+
# fact data, and then submit it to the Puppet Server.
|
458
|
+
#
|
459
|
+
# @return [true] If fact submission succeeds.
|
460
|
+
# @return [false] If an exception is raised during fact generation or
|
461
|
+
# submission.
|
462
|
+
def resubmit_facts
|
463
|
+
::Facter.clear
|
464
|
+
facts = find_facts
|
465
|
+
|
466
|
+
saved_fact_terminus = Puppet::Node::Facts.indirection.terminus_class
|
467
|
+
begin
|
468
|
+
Puppet::Node::Facts.indirection.terminus_class = :rest
|
469
|
+
|
470
|
+
server = Puppet::Node::Facts::Rest.server
|
471
|
+
Puppet.info(_("Uploading facts for %{node} to %{server}") % {
|
472
|
+
node: facts.name,
|
473
|
+
server: server})
|
474
|
+
|
475
|
+
Puppet::Node::Facts.indirection.save(facts, nil, :environment => Puppet::Node::Environment.remote(@environment))
|
476
|
+
|
477
|
+
return true
|
478
|
+
ensure
|
479
|
+
Puppet::Node::Facts.indirection.terminus_class = saved_fact_terminus
|
480
|
+
end
|
481
|
+
rescue => detail
|
482
|
+
Puppet.log_exception(detail, _("Failed to submit facts: %{detail}") %
|
483
|
+
{ detail: detail })
|
484
|
+
|
485
|
+
return false
|
486
|
+
end
|
487
|
+
|
432
488
|
private
|
433
489
|
|
434
490
|
def execute_from_setting(setting)
|
@@ -467,8 +523,8 @@ class Puppet::Configurer
|
|
467
523
|
Puppet[:node_name_value],
|
468
524
|
query_options.merge(
|
469
525
|
:ignore_cache => true,
|
470
|
-
#
|
471
|
-
:ignore_cache_save =>
|
526
|
+
# don't update cache until after environment converges
|
527
|
+
:ignore_cache_save => true,
|
472
528
|
:environment => Puppet::Node::Environment.remote(@environment),
|
473
529
|
:fail_on_404 => true
|
474
530
|
)
|
@@ -55,12 +55,8 @@ class Puppet::Configurer::Downloader
|
|
55
55
|
:noop => false
|
56
56
|
}
|
57
57
|
if !Puppet::Util::Platform.windows?
|
58
|
-
defargs.
|
59
|
-
|
60
|
-
:owner => Process.uid,
|
61
|
-
:group => Process.gid
|
62
|
-
}
|
63
|
-
)
|
58
|
+
defargs[:owner] = Process.uid
|
59
|
+
defargs[:group] = Process.gid
|
64
60
|
end
|
65
61
|
return defargs
|
66
62
|
end
|
data/lib/puppet/defaults.rb
CHANGED
@@ -35,7 +35,7 @@ module Puppet
|
|
35
35
|
def self.default_basemodulepath
|
36
36
|
if Puppet::Util::Platform.windows?
|
37
37
|
path = ['$codedir/modules']
|
38
|
-
installdir =
|
38
|
+
installdir = ENV["FACTER_env_windows_installdir"]
|
39
39
|
if installdir
|
40
40
|
path << "#{installdir}/puppet/modules"
|
41
41
|
end
|
@@ -47,7 +47,7 @@ module Puppet
|
|
47
47
|
|
48
48
|
def self.default_vendormoduledir
|
49
49
|
if Puppet::Util::Platform.windows?
|
50
|
-
installdir =
|
50
|
+
installdir = ENV["FACTER_env_windows_installdir"]
|
51
51
|
if installdir
|
52
52
|
"#{installdir}\\puppet\\vendor_modules"
|
53
53
|
else
|
@@ -154,6 +154,19 @@ module Puppet
|
|
154
154
|
end
|
155
155
|
end
|
156
156
|
},
|
157
|
+
:merge_dependency_warnings => {
|
158
|
+
:default => false,
|
159
|
+
:type => :boolean,
|
160
|
+
:desc => "Whether to merge class-level dependency failure warnings.
|
161
|
+
|
162
|
+
When a class has a failed dependency, every resource in the class
|
163
|
+
generates a notice level message about the dependency failure,
|
164
|
+
and a warning level message about skipping the resource.
|
165
|
+
|
166
|
+
If true, all messages caused by a class dependency failure are merged
|
167
|
+
into one message associated with the class.
|
168
|
+
",
|
169
|
+
},
|
157
170
|
:strict => {
|
158
171
|
:default => :warning,
|
159
172
|
:type => :symbolic_enum,
|
@@ -206,12 +219,19 @@ module Puppet
|
|
206
219
|
:trace => {
|
207
220
|
:default => false,
|
208
221
|
:type => :boolean,
|
209
|
-
:desc => "Whether to print stack traces on some errors
|
222
|
+
:desc => "Whether to print stack traces on some errors. Will print
|
223
|
+
internal Ruby stack trace interleaved with Puppet function frames.",
|
210
224
|
:hook => proc do |value|
|
211
225
|
# Enable or disable Facter's trace option too
|
212
226
|
Facter.trace(value) if Facter.respond_to? :trace
|
213
227
|
end
|
214
228
|
},
|
229
|
+
:puppet_trace => {
|
230
|
+
:default => false,
|
231
|
+
:type => :boolean,
|
232
|
+
:desc => "Whether to print the Puppet stack trace on some errors.
|
233
|
+
This is a noop if `trace` is also set.",
|
234
|
+
},
|
215
235
|
:profile => {
|
216
236
|
:default => false,
|
217
237
|
:type => :boolean,
|
@@ -546,9 +566,10 @@ module Puppet
|
|
546
566
|
},
|
547
567
|
:http_proxy_host => {
|
548
568
|
:default => "none",
|
549
|
-
:desc => "The HTTP proxy host to use for outgoing connections.
|
569
|
+
:desc => "The HTTP proxy host to use for outgoing connections. The proxy will be bypassed if
|
570
|
+
the server's hostname matches the NO_PROXY environment variable or `no_proxy` setting. Note: You
|
550
571
|
may need to use a FQDN for the server hostname when using a proxy. Environment variable
|
551
|
-
http_proxy or HTTP_PROXY will override this value",
|
572
|
+
http_proxy or HTTP_PROXY will override this value. ",
|
552
573
|
},
|
553
574
|
:http_proxy_port => {
|
554
575
|
:default => 3128,
|
@@ -574,7 +595,7 @@ module Puppet
|
|
574
595
|
},
|
575
596
|
:no_proxy => {
|
576
597
|
:default => "localhost, 127.0.0.1",
|
577
|
-
:desc => "List of domain names that should not go through `http_proxy_host`. Environment variable no_proxy or NO_PROXY will override this value.",
|
598
|
+
:desc => "List of host or domain names that should not go through `http_proxy_host`. Environment variable no_proxy or NO_PROXY will override this value. Names can be specified as an FQDN `host.example.com`, wildcard `*.example.com`, dotted domain `.example.com`, or suffix `example.com`.",
|
578
599
|
},
|
579
600
|
:http_keepalive_timeout => {
|
580
601
|
:default => "4s",
|
@@ -1660,6 +1681,11 @@ EOT
|
|
1660
1681
|
:type => :boolean,
|
1661
1682
|
:desc => "Whether to send reports after every transaction.",
|
1662
1683
|
},
|
1684
|
+
:resubmit_facts => {
|
1685
|
+
:default => false,
|
1686
|
+
:type => :boolean,
|
1687
|
+
:desc => "Whether to send updated facts after every transaction.",
|
1688
|
+
},
|
1663
1689
|
:lastrunfile => {
|
1664
1690
|
:default => "$statedir/last_run_summary.yaml",
|
1665
1691
|
:type => :file,
|
data/lib/puppet/error.rb
CHANGED
@@ -12,7 +12,7 @@ module Puppet
|
|
12
12
|
# This module implements logging with a filename and line number. Use this
|
13
13
|
# for errors that need to report a location in a non-ruby file that we
|
14
14
|
# parse.
|
15
|
-
attr_accessor :line, :file, :pos
|
15
|
+
attr_accessor :line, :file, :pos, :puppetstack
|
16
16
|
|
17
17
|
# May be called with 3 arguments for message, file, line, and exception, or
|
18
18
|
# 4 args including the position on the line.
|
@@ -22,10 +22,18 @@ module Puppet
|
|
22
22
|
original = pos
|
23
23
|
pos = nil
|
24
24
|
end
|
25
|
+
|
25
26
|
super(message, original)
|
27
|
+
|
26
28
|
@file = file unless (file.is_a?(String) && file.empty?)
|
27
29
|
@line = line
|
28
30
|
@pos = pos
|
31
|
+
|
32
|
+
if original && original.respond_to?(:puppetstack)
|
33
|
+
@puppetstack = original.puppetstack
|
34
|
+
else
|
35
|
+
@puppetstack = Puppet::Pops::PuppetStack.stacktrace()
|
36
|
+
end
|
29
37
|
end
|
30
38
|
|
31
39
|
def to_s
|
@@ -123,10 +123,10 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
123
123
|
unmet_grouped.each do |type, deps|
|
124
124
|
unless deps.empty?
|
125
125
|
unmet_grouped[type].sort_by { |dep| dep[:name] }.each do |dep|
|
126
|
-
dep_name = dep[:name].
|
126
|
+
dep_name = dep[:name].tr('/', '-')
|
127
127
|
installed_version = dep[:mod_details][:installed_version]
|
128
128
|
version_constraint = dep[:version_constraint]
|
129
|
-
parent_name = dep[:parent][:name].
|
129
|
+
parent_name = dep[:parent][:name].tr('/', '-')
|
130
130
|
parent_version = dep[:parent][:version]
|
131
131
|
|
132
132
|
msg = _("'%{parent_name}' (%{parent_version}) requires '%{dependency_name}' (%{dependency_version})") % { parent_name: parent_name, parent_version: parent_version, dependency_name: dep_name, dependency_version: version_constraint }
|
@@ -146,7 +146,7 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
146
146
|
error_display_order.each do |type|
|
147
147
|
unless @unmet_deps[type].empty?
|
148
148
|
@unmet_deps[type].keys.sort.each do |dep|
|
149
|
-
name = dep.
|
149
|
+
name = dep.tr('/', '-')
|
150
150
|
errors = @unmet_deps[type][dep][:errors]
|
151
151
|
version = @unmet_deps[type][dep][:version]
|
152
152
|
|
@@ -214,7 +214,7 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
214
214
|
dep[:reason] == :missing
|
215
215
|
end
|
216
216
|
missing_deps.map do |mis_mod|
|
217
|
-
str = "#{colorize(:bg_red, _('UNMET DEPENDENCY'))} #{mis_mod[:name].
|
217
|
+
str = "#{colorize(:bg_red, _('UNMET DEPENDENCY'))} #{mis_mod[:name].tr('/', '-')} "
|
218
218
|
str << "(#{colorize(:cyan, mis_mod[:version_constraint])})"
|
219
219
|
node[:dependencies] << { :text => str }
|
220
220
|
end
|
@@ -239,7 +239,7 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
239
239
|
#
|
240
240
|
def list_build_node(mod, parent, params)
|
241
241
|
str = ''
|
242
|
-
str << (mod.forge_name ? mod.forge_name.
|
242
|
+
str << (mod.forge_name ? mod.forge_name.tr('/', '-') : mod.name)
|
243
243
|
str << ' (' + colorize(:cyan, mod.version ? "v#{mod.version}" : '???') + ')'
|
244
244
|
|
245
245
|
unless File.dirname(mod.path) == params[:path]
|
@@ -81,7 +81,7 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
81
81
|
|
82
82
|
highlight = proc do |s|
|
83
83
|
s = s.gsub(term, colorize(:green, term))
|
84
|
-
s = s.gsub(term.
|
84
|
+
s = s.gsub(term.tr('/', '-'), colorize(:green, term.tr('/', '-'))) if term =~ /\//
|
85
85
|
s = s.gsub(' DEPRECATED', colorize(:red, ' DEPRECATED'))
|
86
86
|
s
|
87
87
|
end
|
@@ -63,7 +63,7 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
63
63
|
end
|
64
64
|
|
65
65
|
when_invoked do |name, options|
|
66
|
-
name = name.
|
66
|
+
name = name.tr('/', '-')
|
67
67
|
Puppet.notice _("Preparing to upgrade '%{name}' ...") % { name: name }
|
68
68
|
Puppet::ModuleTool.set_option_defaults options
|
69
69
|
Puppet::ModuleTool::Applications::Upgrader.new(name, options).run
|
@@ -40,7 +40,7 @@ class Puppet::FileServing::HttpMetadata < Puppet::FileServing::Metadata
|
|
40
40
|
[ @checksum_type, :md5, :sha256, :sha384, :sha512, :sha224, :mtime ].each do |type|
|
41
41
|
@checksum_type = type
|
42
42
|
@checksum = @checksums[type]
|
43
|
-
|
43
|
+
break if @checksum
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
data/lib/puppet/file_system.rb
CHANGED
@@ -92,14 +92,6 @@ module Puppet::FileSystem
|
|
92
92
|
@impl.path_string(@impl.basename(assert_path(path)))
|
93
93
|
end
|
94
94
|
|
95
|
-
# @return [Integer] the size of the file
|
96
|
-
#
|
97
|
-
# @api public
|
98
|
-
#
|
99
|
-
def self.size(path)
|
100
|
-
@impl.size(assert_path(path))
|
101
|
-
end
|
102
|
-
|
103
95
|
# Allows exclusive updates to a file to be made by excluding concurrent
|
104
96
|
# access using flock. This means that if the file is on a filesystem that
|
105
97
|
# does not support flock, this method will provide no protection.
|