puppet 6.4.5-x64-mingw32 → 6.5.0-x64-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 +10 -10
- data/Gemfile +6 -6
- data/Gemfile.lock +46 -52
- data/ext/build_defaults.yaml +0 -1
- data/ext/project_data.yaml +3 -3
- data/ext/regexp_nodes/regexp_nodes.rb +4 -4
- data/ext/solaris/smf/puppet.xml +0 -2
- data/ext/windows/eventlog/Rakefile +32 -0
- data/ext/windows/eventlog/puppetres.dll +0 -0
- data/ext/windows/eventlog/puppetres.mc +18 -0
- data/ext/windows/service/daemon.rb +8 -38
- data/install.rb +24 -6
- data/lib/puppet.rb +3 -1
- data/lib/puppet/application.rb +1 -1
- data/lib/puppet/application/agent.rb +11 -34
- data/lib/puppet/application/apply.rb +6 -6
- data/lib/puppet/application/describe.rb +9 -3
- data/lib/puppet/application/device.rb +4 -14
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/lookup.rb +2 -2
- data/lib/puppet/application/resource.rb +4 -4
- data/lib/puppet/application/script.rb +2 -2
- data/lib/puppet/application/ssl.rb +10 -9
- data/lib/puppet/configurer.rb +30 -86
- data/lib/puppet/configurer/downloader.rb +6 -2
- data/lib/puppet/defaults.rb +50 -44
- data/lib/puppet/error.rb +14 -9
- data/lib/puppet/face/catalog.rb +20 -1
- data/lib/puppet/face/config.rb +48 -10
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/face/help.rb +1 -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/face/parser.rb +48 -9
- data/lib/puppet/face/plugin.rb +2 -9
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_system.rb +12 -2
- data/lib/puppet/file_system/file_impl.rb +6 -3
- data/lib/puppet/file_system/memory_file.rb +1 -1
- data/lib/puppet/file_system/posix.rb +2 -3
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/functions.rb +2 -1
- 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/functions/regsubst.rb +6 -8
- 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 +3 -4
- data/lib/puppet/indirector/catalog/compiler.rb +5 -11
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +0 -2
- data/lib/puppet/indirector/resource/ral.rb +3 -1
- data/lib/puppet/indirector/resource/validator.rb +1 -1
- data/lib/puppet/interface.rb +1 -2
- data/lib/puppet/loaders.rb +1 -0
- data/lib/puppet/metatype/manager.rb +1 -1
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/module/task.rb +4 -20
- 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 +2 -12
- data/lib/puppet/network/http/api/indirected_routes.rb +11 -12
- data/lib/puppet/network/http/connection.rb +12 -10
- data/lib/puppet/network/http/factory.rb +11 -1
- data/lib/puppet/network/http/pool.rb +0 -2
- data/lib/puppet/network/http/site.rb +1 -1
- data/lib/puppet/network/resolver.rb +2 -2
- data/lib/puppet/node/environment.rb +2 -4
- 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/fail.rb +8 -1
- data/lib/puppet/parser/functions/inline_epp.rb +5 -5
- data/lib/puppet/parser/scope.rb +7 -8
- 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 +2 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
- data/lib/puppet/pops/loader/null_loader.rb +60 -0
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -4
- data/lib/puppet/pops/loader/task_instantiator.rb +0 -4
- data/lib/puppet/pops/loaders.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +0 -1
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/merge_strategy.rb +18 -22
- 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 +16 -17
- data/lib/puppet/pops/puppet_stack.rb +49 -51
- 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 +6 -5
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/provider/exec.rb +2 -6
- data/lib/puppet/provider/file/posix.rb +0 -5
- data/lib/puppet/provider/nameservice.rb +3 -10
- data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
- data/lib/puppet/provider/nameservice/pw.rb +2 -2
- data/lib/puppet/provider/package.rb +0 -2
- data/lib/puppet/provider/package/apt.rb +1 -5
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +18 -34
- data/lib/puppet/provider/package/openbsd.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +13 -37
- data/lib/puppet/provider/package/portage.rb +4 -4
- data/lib/puppet/provider/package/puppet_gem.rb +1 -1
- data/lib/puppet/provider/package/rpm.rb +18 -56
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +5 -9
- data/lib/puppet/provider/package_targetable.rb +4 -7
- data/lib/puppet/provider/parsedfile.rb +1 -1
- data/lib/puppet/provider/service/daemontools.rb +9 -9
- data/lib/puppet/provider/service/launchd.rb +5 -20
- 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 +8 -2
- data/lib/puppet/provider/service/systemd.rb +19 -14
- data/lib/puppet/provider/service/windows.rb +0 -8
- data/lib/puppet/provider/user/directoryservice.rb +1 -1
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/pw.rb +3 -12
- data/lib/puppet/provider/user/user_role_add.rb +1 -5
- data/lib/puppet/provider/user/useradd.rb +20 -45
- data/lib/puppet/provider/user/windows_adsi.rb +5 -4
- data/lib/puppet/reference/configuration.rb +3 -3
- data/lib/puppet/reference/indirection.rb +2 -2
- data/lib/puppet/reference/metaparameter.rb +3 -1
- data/lib/puppet/reference/providers.rb +3 -1
- data/lib/puppet/reference/type.rb +9 -3
- data/lib/puppet/reports.rb +1 -1
- data/lib/puppet/resource.rb +1 -18
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/rest/routes.rb +30 -17
- data/lib/puppet/settings.rb +3 -43
- data/lib/puppet/settings/environment_conf.rb +0 -1
- data/lib/puppet/ssl/certificate_request.rb +12 -2
- data/lib/puppet/ssl/host.rb +2 -2
- data/lib/puppet/ssl/oids.rb +1 -1
- data/lib/puppet/ssl/ssl_provider.rb +11 -5
- data/lib/puppet/ssl/state_machine.rb +102 -98
- data/lib/puppet/test/test_helper.rb +1 -0
- data/lib/puppet/transaction.rb +11 -33
- data/lib/puppet/transaction/report.rb +1 -1
- data/lib/puppet/type.rb +4 -2
- data/lib/puppet/type/exec.rb +17 -23
- data/lib/puppet/type/file.rb +39 -11
- data/lib/puppet/type/file/data_sync.rb +1 -5
- data/lib/puppet/type/group.rb +2 -4
- data/lib/puppet/type/notify.rb +3 -4
- data/lib/puppet/type/package.rb +3 -20
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/service.rb +3 -8
- data/lib/puppet/type/user.rb +2 -4
- data/lib/puppet/util.rb +29 -39
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/execution.rb +3 -4
- data/lib/puppet/util/http_proxy.rb +19 -27
- data/lib/puppet/util/log.rb +2 -2
- data/lib/puppet/util/log/destinations.rb +2 -2
- data/lib/puppet/util/logging.rb +20 -32
- data/lib/puppet/util/metric.rb +2 -2
- data/lib/puppet/util/monkey_patches.rb +33 -0
- data/lib/puppet/util/pidlock.rb +2 -3
- data/lib/puppet/util/provider_features.rb +4 -2
- 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 +2 -8
- data/lib/puppet/util/skip_tags.rb +4 -0
- data/lib/puppet/util/windows/adsi.rb +18 -48
- data/lib/puppet/util/windows/process.rb +8 -8
- data/lib/puppet/util/windows/registry.rb +5 -7
- data/lib/puppet/util/windows/security.rb +0 -2
- data/lib/puppet/util/windows/service.rb +4 -149
- data/lib/puppet/util/windows/sid.rb +0 -1
- data/lib/puppet/vendor.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509/cert_provider.rb +81 -24
- data/locales/puppet.pot +462 -482
- data/man/man5/puppet.conf.5 +43 -44
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +3 -3
- data/man/man8/puppet-catalog.8 +31 -3
- 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 +3 -3
- data/spec/fixtures/ssl/127.0.0.1-key.pem +56 -56
- data/spec/fixtures/ssl/127.0.0.1.pem +27 -27
- data/spec/fixtures/ssl/bad-basic-constraints.pem +32 -32
- data/spec/fixtures/ssl/bad-int-basic-constraints.pem +30 -30
- data/spec/fixtures/ssl/ca.pem +30 -30
- data/spec/fixtures/ssl/crl.pem +15 -15
- data/spec/fixtures/ssl/ec-key.pem +18 -0
- data/spec/fixtures/ssl/ec.pem +40 -0
- data/spec/fixtures/ssl/encrypted-ec-key.pem +21 -0
- data/spec/fixtures/ssl/encrypted-key.pem +57 -57
- data/spec/fixtures/ssl/intermediate-agent-crl.pem +16 -16
- data/spec/fixtures/ssl/intermediate-agent.pem +33 -33
- data/spec/fixtures/ssl/intermediate-crl.pem +17 -17
- data/spec/fixtures/ssl/intermediate.pem +31 -31
- data/spec/fixtures/ssl/pluto-key.pem +56 -56
- data/spec/fixtures/ssl/pluto.pem +28 -28
- data/spec/fixtures/ssl/request-key.pem +56 -56
- data/spec/fixtures/ssl/request.pem +24 -24
- data/spec/fixtures/ssl/revoked-key.pem +56 -56
- data/spec/fixtures/ssl/revoked.pem +25 -25
- data/spec/fixtures/ssl/signed-key.pem +56 -56
- data/spec/fixtures/ssl/signed.pem +25 -25
- data/spec/fixtures/ssl/tampered-cert.pem +27 -27
- data/spec/fixtures/ssl/tampered-csr.pem +24 -24
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/func_with_syntax_error.rb +9 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +24 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +24 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +24 -0
- data/spec/integration/configurer_spec.rb +0 -52
- data/spec/integration/provider/service/init_spec.rb +1 -0
- data/spec/integration/provider/service/systemd_spec.rb +5 -8
- data/spec/integration/type/file_spec.rb +38 -28
- data/spec/integration/util/execution_spec.rb +0 -27
- data/spec/lib/puppet/certificate_factory.rb +2 -2
- data/spec/lib/puppet/test_ca.rb +17 -4
- data/spec/lib/puppet_spec/fixtures.rb +4 -0
- data/spec/spec_helper.rb +0 -28
- data/spec/unit/application/agent_spec.rb +34 -67
- data/spec/unit/application/device_spec.rb +1 -27
- data/spec/unit/application/ssl_spec.rb +60 -35
- data/spec/unit/configurer_spec.rb +399 -395
- data/spec/unit/defaults_spec.rb +4 -4
- data/spec/unit/face/facts_spec.rb +0 -9
- data/spec/unit/face/parser_spec.rb +69 -22
- data/spec/unit/face/plugin_spec.rb +0 -8
- data/spec/unit/file_system_spec.rb +30 -1
- data/spec/unit/forge/forge_spec.rb +3 -1
- data/spec/unit/forge/repository_spec.rb +3 -1
- data/spec/unit/indirector/catalog/compiler_spec.rb +5 -62
- data/spec/unit/indirector/resource/ral_spec.rb +4 -4
- data/spec/unit/module_tool/tar/mini_spec.rb +1 -1
- data/spec/unit/network/http/api/indirected_routes_spec.rb +10 -25
- data/spec/unit/network/http/connection_spec.rb +145 -119
- data/spec/unit/network/http/factory_spec.rb +5 -27
- data/spec/unit/parser/scope_spec.rb +0 -10
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +3 -8
- data/spec/unit/pops/loaders/loaders_spec.rb +4 -0
- data/spec/unit/pops/loaders/module_loaders_spec.rb +0 -37
- data/spec/unit/pops/types/types_spec.rb +27 -0
- data/spec/unit/provider/exec_spec.rb +0 -209
- data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
- data/spec/unit/provider/package/dnf_spec.rb +0 -7
- data/spec/unit/provider/package/dpkg_spec.rb +80 -240
- data/spec/unit/provider/package/pip_spec.rb +8 -61
- data/spec/unit/provider/package/portage_spec.rb +4 -4
- data/spec/unit/provider/package/rpm_spec.rb +16 -150
- data/spec/unit/provider/package/yum_spec.rb +0 -7
- data/spec/unit/provider/service/daemontools_spec.rb +0 -24
- data/spec/unit/provider/service/launchd_spec.rb +0 -28
- data/spec/unit/provider/service/runit_spec.rb +0 -24
- data/spec/unit/provider/service/systemd_spec.rb +25 -39
- data/spec/unit/provider/service/windows_spec.rb +0 -20
- data/spec/unit/provider/user/hpux_spec.rb +2 -2
- data/spec/unit/provider/user/pw_spec.rb +0 -37
- data/spec/unit/provider/user/useradd_spec.rb +0 -88
- data/spec/unit/resource_spec.rb +1 -26
- data/spec/unit/ssl/host_spec.rb +5 -0
- data/spec/unit/ssl/ssl_provider_spec.rb +36 -11
- data/spec/unit/ssl/state_machine_spec.rb +233 -158
- data/spec/unit/transaction_spec.rb +0 -64
- data/spec/unit/type/exec_spec.rb +12 -15
- data/spec/unit/type/file/content_spec.rb +3 -9
- data/spec/unit/type/file/source_spec.rb +4 -4
- data/spec/unit/type/file_spec.rb +15 -11
- data/spec/unit/type/package_spec.rb +0 -5
- data/spec/unit/type/schedule_spec.rb +1 -3
- data/spec/unit/type/service_spec.rb +0 -16
- data/spec/unit/util/execution_spec.rb +0 -16
- data/spec/unit/util/http_proxy_spec.rb +21 -151
- data/spec/unit/util/ldap/manager_spec.rb +0 -15
- data/spec/unit/util/log/destinations_spec.rb +3 -7
- data/spec/unit/util/log_spec.rb +138 -0
- data/spec/unit/util/logging_spec.rb +0 -200
- data/spec/unit/util/pidlock_spec.rb +0 -26
- data/spec/unit/util/skip_tags_spec.rb +14 -0
- data/spec/unit/util/windows/adsi_spec.rb +0 -51
- data/spec/unit/util/windows/service_spec.rb +0 -9
- data/spec/unit/util_spec.rb +10 -0
- data/spec/unit/x509/cert_provider_spec.rb +82 -43
- data/tasks/generate_cert_fixtures.rake +13 -1
- data/tasks/manpages.rake +0 -1
- metadata +28 -22
- data/ext/cert_inspector +0 -140
- data/ext/envpuppet +0 -139
- data/ext/envpuppet.bat +0 -14
- data/ext/puppet-test +0 -476
- data/ext/pure_ruby_dsl/dsl_test.rb +0 -7
- data/ext/upload_facts.rb +0 -119
- data/lib/puppet/provider/package/dnfmodule.rb +0 -87
- data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list-installed.txt +0 -11
- data/spec/integration/type/notify_spec.rb +0 -46
- data/spec/unit/provider/package/dnfmodule_spec.rb +0 -186
- data/spec/unit/provider/package_targetable_spec.rb +0 -60
data/lib/puppet/transaction.rb
CHANGED
@@ -57,11 +57,7 @@ class Puppet::Transaction
|
|
57
57
|
|
58
58
|
@prefetch_failed_providers = Hash.new { |h,k| h[k] = {} }
|
59
59
|
|
60
|
-
# With merge_dependency_warnings, notify and warn about class dependency failures ... just once per class. TJK 2019-09-09
|
61
|
-
@merge_dependency_warnings = Puppet[:merge_dependency_warnings]
|
62
60
|
@failed_dependencies_already_notified = Set.new()
|
63
|
-
@failed_class_dependencies_already_notified = Set.new()
|
64
|
-
@failed_class_dependencies_already_warned = Set.new()
|
65
61
|
end
|
66
62
|
|
67
63
|
# Invoke the pre_run_check hook in every resource in the catalog.
|
@@ -291,25 +287,15 @@ class Puppet::Transaction
|
|
291
287
|
# explosion of edges, we also ended up reporting failures for containers
|
292
288
|
# like class and stage. This is undesirable; while just skipping the
|
293
289
|
# output isn't perfect, it is RC-safe. --daniel 2011-06-07
|
294
|
-
|
295
|
-
|
290
|
+
suppress_report = (resource.class == Puppet::Type.type(:whit))
|
291
|
+
|
296
292
|
s = resource_status(resource)
|
297
293
|
if s && s.dependency_failed?
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
class_dependencies_to_be_notified.each do |dep_ref|
|
304
|
-
resource.notice _("Class dependency %{dep} has failures: %{status}") % { dep: dep_ref, status: resource_status(dep_ref).failed }
|
305
|
-
end
|
306
|
-
@failed_class_dependencies_already_notified.merge(class_dependencies_to_be_notified)
|
307
|
-
else
|
308
|
-
unless @merge_dependency_warnings || is_puppet_class
|
309
|
-
s.failed_dependencies.find_all { |d| !(@failed_dependencies_already_notified.include?(d.ref)) }.each do |dep|
|
310
|
-
resource.notice _("Dependency %{dep} has failures: %{status}") % { dep: dep, status: resource_status(dep).failed }
|
311
|
-
@failed_dependencies_already_notified.add(dep.ref)
|
312
|
-
end
|
294
|
+
# See above. --daniel 2011-06-06
|
295
|
+
unless suppress_report then
|
296
|
+
s.failed_dependencies.find_all { |d| !(@failed_dependencies_already_notified.include?(d.ref)) }.each do |dep|
|
297
|
+
resource.notice _("Dependency %{dep} has failures: %{status}") % { dep: dep, status: resource_status(dep).failed }
|
298
|
+
@failed_dependencies_already_notified.add(dep.ref)
|
313
299
|
end
|
314
300
|
end
|
315
301
|
end
|
@@ -409,19 +395,11 @@ class Puppet::Transaction
|
|
409
395
|
# explosion of edges, we also ended up reporting failures for containers
|
410
396
|
# like class and stage. This is undesirable; while just skipping the
|
411
397
|
# output isn't perfect, it is RC-safe. --daniel 2011-06-07
|
412
|
-
|
413
|
-
|
414
|
-
if @merge_dependency_warnings && resource.parent && failed_dependencies?(resource.parent)
|
415
|
-
ps = resource_status(resource.parent)
|
416
|
-
ps.failed_dependencies.find_all { |d| !(@failed_class_dependencies_already_warned.include?(d.ref)) }.each do |dep|
|
417
|
-
resource.parent.warning _("Skipping resources in class because of failed class dependencies")
|
418
|
-
@failed_class_dependencies_already_warned.add(dep.ref)
|
419
|
-
end
|
420
|
-
else
|
421
|
-
resource.warning _("Skipping because of failed dependencies")
|
422
|
-
end
|
398
|
+
unless resource.class == Puppet::Type.type(:whit) then
|
399
|
+
resource.warning _("Skipping because of failed dependencies")
|
423
400
|
end
|
424
|
-
elsif resource_status(resource).failed? &&
|
401
|
+
elsif resource_status(resource).failed? &&
|
402
|
+
@prefetch_failed_providers[resource.type][resource.provider.class.name]
|
425
403
|
#Do not try to evaluate a resource with a known failed provider
|
426
404
|
resource.warning _("Skipping because provider prefetch failed")
|
427
405
|
elsif resource.virtual?
|
@@ -346,7 +346,7 @@ class Puppet::Transaction::Report
|
|
346
346
|
report = raw_summary
|
347
347
|
|
348
348
|
ret = ""
|
349
|
-
report.keys.
|
349
|
+
report.keys.sort { |a,b| a.to_s <=> b.to_s }.each do |key|
|
350
350
|
ret += "#{Puppet::Util::Metric.labelize(key)}:\n"
|
351
351
|
|
352
352
|
report[key].keys.sort { |a,b|
|
data/lib/puppet/type.rb
CHANGED
@@ -1454,7 +1454,7 @@ class Type
|
|
1454
1454
|
}
|
1455
1455
|
|
1456
1456
|
Tags are useful for things like applying a subset of a host's configuration
|
1457
|
-
with [the `tags` setting](
|
1457
|
+
with [the `tags` setting](/puppet/latest/configuration.html#tags)
|
1458
1458
|
(e.g. `puppet agent --test --tags bootstrap`)."
|
1459
1459
|
|
1460
1460
|
munge do |tags|
|
@@ -1916,7 +1916,9 @@ end
|
|
1916
1916
|
# Since we're mixing @doc with text from other sources, we must normalize
|
1917
1917
|
# its indentation with scrub. But we don't need to manually scrub the
|
1918
1918
|
# provider's doc string, since markdown_definitionlist sanitizes its inputs.
|
1919
|
-
scrub(@doc) + "Available providers are:\n\n" + parenttype.providers.
|
1919
|
+
scrub(@doc) + "Available providers are:\n\n" + parenttype.providers.sort { |a,b|
|
1920
|
+
a.to_s <=> b.to_s
|
1921
|
+
}.collect { |i|
|
1920
1922
|
markdown_definitionlist( i, scrub(parenttype().provider(i).doc) )
|
1921
1923
|
}.join
|
1922
1924
|
end
|
data/lib/puppet/type/exec.rb
CHANGED
@@ -23,6 +23,9 @@ module Puppet
|
|
23
23
|
consider developing a custom resource type instead, as it will be much
|
24
24
|
more predictable and maintainable.
|
25
25
|
|
26
|
+
**Duplication:** Even though `command` is the namevar, Puppet allows
|
27
|
+
multiple `exec` resources with the same `command` value.
|
28
|
+
|
26
29
|
**Refresh:** `exec` resources can respond to refresh events (via
|
27
30
|
`notify`, `subscribe`, or the `~>` arrow). The refresh behavior of execs
|
28
31
|
is non-standard, and can be affected by the `refresh` and
|
@@ -150,13 +153,9 @@ module Puppet
|
|
150
153
|
end
|
151
154
|
end
|
152
155
|
unless log == :false
|
153
|
-
|
154
|
-
self.send(log,
|
155
|
-
|
156
|
-
@output.split(/\n/).each { |line|
|
157
|
-
self.send(log, line)
|
158
|
-
}
|
159
|
-
end
|
156
|
+
@output.split(/\n/).each { |line|
|
157
|
+
self.send(log, line)
|
158
|
+
}
|
160
159
|
end
|
161
160
|
end
|
162
161
|
|
@@ -180,7 +179,10 @@ module Puppet
|
|
180
179
|
succeeds, any output produced will be logged at the instance's
|
181
180
|
normal log level (usually `notice`), but if the command fails
|
182
181
|
(meaning its return code does not match the specified code) then
|
183
|
-
any output is logged at the `err` log level.
|
182
|
+
any output is logged at the `err` log level.
|
183
|
+
|
184
|
+
Multiple `exec` resources can use the same `command` value; Puppet
|
185
|
+
only uses the resource title to ensure `exec`s are unique."
|
184
186
|
|
185
187
|
validate do |command|
|
186
188
|
raise ArgumentError, _("Command must be a String, got value of class %{klass}") % { klass: command.class } unless command.is_a? String
|
@@ -461,13 +463,9 @@ module Puppet
|
|
461
463
|
return false
|
462
464
|
end
|
463
465
|
|
464
|
-
|
465
|
-
self.debug(
|
466
|
-
|
467
|
-
output.split(/\n/).each { |line|
|
468
|
-
self.debug(line)
|
469
|
-
}
|
470
|
-
end
|
466
|
+
output.split(/\n/).each { |line|
|
467
|
+
self.debug(line)
|
468
|
+
}
|
471
469
|
|
472
470
|
status.exitstatus != 0
|
473
471
|
end
|
@@ -517,13 +515,9 @@ module Puppet
|
|
517
515
|
return false
|
518
516
|
end
|
519
517
|
|
520
|
-
|
521
|
-
self.debug(
|
522
|
-
|
523
|
-
output.split(/\n/).each { |line|
|
524
|
-
self.debug(line)
|
525
|
-
}
|
526
|
-
end
|
518
|
+
output.split(/\n/).each { |line|
|
519
|
+
self.debug(line)
|
520
|
+
}
|
527
521
|
|
528
522
|
status.exitstatus == 0
|
529
523
|
end
|
@@ -640,7 +634,7 @@ module Puppet
|
|
640
634
|
sensitive = false
|
641
635
|
parameters_to_check = [:command, :unless, :onlyif]
|
642
636
|
|
643
|
-
parameters_to_check.each do |p|
|
637
|
+
parameters_to_check.each do |p|
|
644
638
|
if sensitive_parameters.include?(p)
|
645
639
|
sensitive_parameters.delete(p)
|
646
640
|
sensitive = true
|
data/lib/puppet/type/file.rb
CHANGED
@@ -32,9 +32,9 @@ Puppet::Type.newtype(:file) do
|
|
32
32
|
**Autorequires:** If Puppet is managing the user or group that owns a
|
33
33
|
file, the file resource will autorequire them. If Puppet is managing any
|
34
34
|
parent directories of a file, the file resource autorequires them.
|
35
|
-
|
36
|
-
Warning: Enabling `recurse` on directories containing large numbers of
|
37
|
-
files slows agent runs. To manage file attributes for many files,
|
35
|
+
|
36
|
+
Warning: Enabling `recurse` on directories containing large numbers of
|
37
|
+
files slows agent runs. To manage file attributes for many files,
|
38
38
|
consider using alternative methods such as the `chmod_r`, `chown_r`,
|
39
39
|
or `recursive_file_permissions` modules from the Forge."
|
40
40
|
|
@@ -298,6 +298,30 @@ Puppet::Type.newtype(:file) do
|
|
298
298
|
defaultto :true
|
299
299
|
end
|
300
300
|
|
301
|
+
newparam(:staging_location) do
|
302
|
+
desc "When rendering a file first render it to this location. The default
|
303
|
+
location is the same path as the desired location with a unique filename.
|
304
|
+
This parameter is useful in conjuction with validate_cmd to test a
|
305
|
+
file before moving the file to it's final location.
|
306
|
+
WARNING: File replacement is only guaranteed to be atomic if the staging
|
307
|
+
location is on the same filesystem as the final location."
|
308
|
+
|
309
|
+
validate do |value|
|
310
|
+
unless Puppet::Util.absolute_path?(value)
|
311
|
+
fail Puppet::Error, "File paths must be fully qualified, not '#{value}'"
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
315
|
+
munge do |value|
|
316
|
+
if value.start_with?('//') and ::File.basename(value) == "/"
|
317
|
+
# This is a UNC path pointing to a share, so don't add a trailing slash
|
318
|
+
::File.expand_path(value)
|
319
|
+
else
|
320
|
+
::File.join(::File.split(::File.expand_path(value)))
|
321
|
+
end
|
322
|
+
end
|
323
|
+
end
|
324
|
+
|
301
325
|
newparam(:validate_cmd) do
|
302
326
|
desc "A command for validating the file's syntax before replacing it. If
|
303
327
|
Puppet would need to rewrite a file due to new `source` or `content`, it
|
@@ -577,7 +601,8 @@ Puppet::Type.newtype(:file) do
|
|
577
601
|
# remote system.
|
578
602
|
mark_children_for_purging(children) if self.purge?
|
579
603
|
|
580
|
-
|
604
|
+
# REVISIT: sort_by is more efficient?
|
605
|
+
result = children.values.sort { |a, b| a[:path] <=> b[:path] }
|
581
606
|
remove_less_specific_files(result)
|
582
607
|
end
|
583
608
|
|
@@ -861,7 +886,16 @@ Puppet::Type.newtype(:file) do
|
|
861
886
|
mode_int = mode ? symbolic_mode_to_int(mode, Puppet::Util::DEFAULT_POSIX_MODE) : nil
|
862
887
|
|
863
888
|
if write_temporary_file?
|
864
|
-
|
889
|
+
if self[:validate_cmd]
|
890
|
+
validate_callback = proc { |path|
|
891
|
+
output = Puppet::Util::Execution.execute(self[:validate_cmd].gsub(self[:validate_replacement], path), :failonfail => true, :combine => true)
|
892
|
+
output.split(/\n/).each { |line|
|
893
|
+
self.debug(line)
|
894
|
+
}
|
895
|
+
}
|
896
|
+
end
|
897
|
+
|
898
|
+
Puppet::Util.replace_file(self[:path], mode_int, staging_location: self[:staging_location], validate_callback: validate_callback) do |file|
|
865
899
|
file.binmode
|
866
900
|
devfail 'a property should have been provided if write_temporary_file? returned true' if property.nil?
|
867
901
|
content_checksum = property.write(file)
|
@@ -879,12 +913,6 @@ Puppet::Type.newtype(:file) do
|
|
879
913
|
end
|
880
914
|
|
881
915
|
fail_if_checksum_is_wrong(file.path, content_checksum) if validate_checksum?
|
882
|
-
if self[:validate_cmd]
|
883
|
-
output = Puppet::Util::Execution.execute(self[:validate_cmd].gsub(self[:validate_replacement], file.path), :failonfail => true, :combine => true)
|
884
|
-
output.split(/\n/).each { |line|
|
885
|
-
self.debug(line)
|
886
|
-
}
|
887
|
-
end
|
888
916
|
end
|
889
917
|
else
|
890
918
|
umask = mode ? 000 : 022
|
@@ -42,11 +42,7 @@ module Puppet
|
|
42
42
|
send resource[:loglevel], "[diff redacted]"
|
43
43
|
else
|
44
44
|
write_temporarily(param) do |path|
|
45
|
-
|
46
|
-
if diff_output.encoding == Encoding::BINARY || !diff_output.valid_encoding?
|
47
|
-
diff_output = "Binary files #{resource[:path]} and #{path} differ"
|
48
|
-
end
|
49
|
-
send resource[:loglevel], "\n" + diff_output
|
45
|
+
send resource[:loglevel], "\n" + diff(resource[:path], path)
|
50
46
|
end
|
51
47
|
end
|
52
48
|
end
|
data/lib/puppet/type/group.rb
CHANGED
@@ -175,8 +175,7 @@ module Puppet
|
|
175
175
|
end
|
176
176
|
|
177
177
|
newparam(:ia_load_module, :required_features => :manages_aix_lam) do
|
178
|
-
desc "The name of the I&A module to use to manage this
|
179
|
-
This should be set to `files` if managing local groups."
|
178
|
+
desc "The name of the I&A module to use to manage this user"
|
180
179
|
end
|
181
180
|
|
182
181
|
newproperty(:attributes, :parent => Puppet::Property::KeyValue, :required_features => :manages_aix_lam) do
|
@@ -217,8 +216,7 @@ module Puppet
|
|
217
216
|
:required_features => :libuser,
|
218
217
|
:parent => Puppet::Parameter::Boolean) do
|
219
218
|
desc "Forces the management of local accounts when accounts are also
|
220
|
-
being managed by some other NSS
|
221
|
-
`ia_load_module` parameter."
|
219
|
+
being managed by some other NSS"
|
222
220
|
defaultto false
|
223
221
|
end
|
224
222
|
|
data/lib/puppet/type/notify.rb
CHANGED
@@ -4,19 +4,18 @@
|
|
4
4
|
|
5
5
|
module Puppet
|
6
6
|
Type.newtype(:notify) do
|
7
|
-
@doc = "Sends an arbitrary message to the agent run-time log."
|
7
|
+
@doc = "Sends an arbitrary message to the agent run-time log. It's important to note that the notify resource type is not idempotent. As a result, notifications are shown as a change on every Puppet run."
|
8
8
|
|
9
9
|
apply_to_all
|
10
10
|
|
11
11
|
newproperty(:message, :idempotent => false) do
|
12
12
|
desc "The message to be sent to the log."
|
13
13
|
def sync
|
14
|
-
message = @sensitive ? 'Sensitive [value redacted]' : self.should
|
15
14
|
case @resource["withpath"]
|
16
15
|
when :true
|
17
|
-
send(@resource[:loglevel],
|
16
|
+
send(@resource[:loglevel], self.should)
|
18
17
|
else
|
19
|
-
Puppet.send(@resource[:loglevel],
|
18
|
+
Puppet.send(@resource[:loglevel], self.should)
|
20
19
|
end
|
21
20
|
return
|
22
21
|
end
|
data/lib/puppet/type/package.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# Define the different packaging systems. Each package system is implemented
|
3
2
|
# in a module, which then gets used to individually extend each package object.
|
4
3
|
# This allows packages to exist on the same machine using different packaging
|
@@ -57,7 +56,6 @@ module Puppet
|
|
57
56
|
a user or another package. Held is considered a superset of
|
58
57
|
installed.",
|
59
58
|
:methods => [:hold]
|
60
|
-
feature :install_only, "The provider accepts options to only install packages never update (kernels, etc.)"
|
61
59
|
feature :install_options, "The provider accepts options to be
|
62
60
|
passed to the installer command."
|
63
61
|
feature :uninstall_options, "The provider accepts options to be
|
@@ -485,16 +483,8 @@ module Puppet
|
|
485
483
|
end
|
486
484
|
|
487
485
|
newparam(:flavor) do
|
488
|
-
desc "OpenBSD
|
489
|
-
|
490
|
-
end
|
491
|
-
|
492
|
-
newparam(:install_only, :boolean => false, :parent => Puppet::Parameter::Boolean, :required_features => :install_only) do
|
493
|
-
desc <<-EOT
|
494
|
-
It should be set for packages that should only ever be installed,
|
495
|
-
never updated. Kernels in particular fall into this category.
|
496
|
-
EOT
|
497
|
-
defaultto false
|
486
|
+
desc "OpenBSD supports 'flavors', which are further specifications for
|
487
|
+
which type of package you want."
|
498
488
|
end
|
499
489
|
|
500
490
|
newparam(:install_options, :parent => Puppet::Parameter::PackageOptions, :required_features => :install_options) do
|
@@ -548,14 +538,7 @@ module Puppet
|
|
548
538
|
newparam(:allow_virtual, :boolean => true, :parent => Puppet::Parameter::Boolean, :required_features => :virtual_packages) do
|
549
539
|
desc 'Specifies if virtual package names are allowed for install and uninstall.'
|
550
540
|
|
551
|
-
defaultto
|
552
|
-
provider_class = provider.class
|
553
|
-
if provider_class.respond_to?(:defaultto_allow_virtual)
|
554
|
-
provider_class.defaultto_allow_virtual
|
555
|
-
else
|
556
|
-
true
|
557
|
-
end
|
558
|
-
end
|
541
|
+
defaultto true
|
559
542
|
end
|
560
543
|
|
561
544
|
autorequire(:file) do
|
data/lib/puppet/type/schedule.rb
CHANGED
data/lib/puppet/type/service.rb
CHANGED
@@ -75,11 +75,6 @@ module Puppet
|
|
75
75
|
provider.enabled?
|
76
76
|
end
|
77
77
|
|
78
|
-
# This only works on Windows systems.
|
79
|
-
newvalue(:delayed, :event => :service_delayed_start) do
|
80
|
-
provider.delayed_start
|
81
|
-
end
|
82
|
-
|
83
78
|
# This only makes sense on systemd systems. Static services cannot be enabled
|
84
79
|
# or disabled manually.
|
85
80
|
def insync?(current)
|
@@ -92,8 +87,8 @@ module Puppet
|
|
92
87
|
end
|
93
88
|
|
94
89
|
validate do |value|
|
95
|
-
if
|
96
|
-
raise Puppet::Error.new(_("Setting enable to
|
90
|
+
if value == :manual && !Puppet::Util::Platform.windows?
|
91
|
+
raise Puppet::Error.new(_("Setting enable to manual is only supported on Microsoft Windows."))
|
97
92
|
end
|
98
93
|
end
|
99
94
|
end
|
@@ -230,7 +225,7 @@ module Puppet
|
|
230
225
|
desc "The control variable used to manage services (originally for HP-UX).
|
231
226
|
Defaults to the upcased service name plus `START` replacing dots with
|
232
227
|
underscores, for those providers that support the `controllable` feature."
|
233
|
-
defaultto { resource.name.
|
228
|
+
defaultto { resource.name.gsub(".","_").upcase + "_START" if resource.provider.controllable? }
|
234
229
|
end
|
235
230
|
|
236
231
|
newparam :hasrestart do
|
data/lib/puppet/type/user.rb
CHANGED
@@ -614,8 +614,7 @@ module Puppet
|
|
614
614
|
end
|
615
615
|
|
616
616
|
newparam(:ia_load_module, :required_features => :manages_aix_lam) do
|
617
|
-
desc "The name of the I&A module to use to manage this user.
|
618
|
-
This should be set to `files` if managing local users."
|
617
|
+
desc "The name of the I&A module to use to manage this user."
|
619
618
|
end
|
620
619
|
|
621
620
|
newproperty(:attributes, :parent => Puppet::Property::KeyValue, :required_features => :manages_aix_lam) do
|
@@ -679,8 +678,7 @@ module Puppet
|
|
679
678
|
:required_features => :libuser,
|
680
679
|
:parent => Puppet::Parameter::Boolean) do
|
681
680
|
desc "Forces the management of local accounts when accounts are also
|
682
|
-
being managed by some other NSS
|
683
|
-
`ia_load_module` parameter."
|
681
|
+
being managed by some other NSS"
|
684
682
|
defaultto false
|
685
683
|
end
|
686
684
|
|
data/lib/puppet/util.rb
CHANGED
@@ -322,7 +322,7 @@ module Util
|
|
322
322
|
params = { :scheme => 'file' }
|
323
323
|
|
324
324
|
if Puppet::Util::Platform.windows?
|
325
|
-
path = path.
|
325
|
+
path = path.gsub(/\\/, '/')
|
326
326
|
|
327
327
|
if unc = /^\/\/([^\/]+)(\/.+)/.match(path)
|
328
328
|
params[:host] = unc[1]
|
@@ -523,44 +523,21 @@ module Util
|
|
523
523
|
|
524
524
|
module_function :thinmark
|
525
525
|
|
526
|
-
PUPPET_STACK_INSERTION_FRAME = /.*puppet_stack\.rb.*in.*`stack'/
|
527
|
-
|
528
526
|
# utility method to get the current call stack and format it to a human-readable string (which some IDEs/editors
|
529
527
|
# will recognize as links to the line numbers in the trace)
|
530
|
-
def self.pretty_backtrace(backtrace = caller(1)
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
primary_stack.flat_map do |frame|
|
540
|
-
frame = format_puppetstack_frame(frame) if frame.is_a?(Array)
|
541
|
-
primary_frame = resolve_stackframe(frame)
|
542
|
-
|
543
|
-
if primary_frame =~ PUPPET_STACK_INSERTION_FRAME && !puppetstack.empty?
|
544
|
-
[resolve_stackframe(format_puppetstack_frame(puppetstack.shift)),
|
545
|
-
primary_frame]
|
528
|
+
def self.pretty_backtrace(backtrace = caller(1))
|
529
|
+
backtrace.collect do |line|
|
530
|
+
_, path, rest = /^(.*):(\d+.*)$/.match(line).to_a
|
531
|
+
# If the path doesn't exist - like in one test, and like could happen in
|
532
|
+
# the world - we should just tolerate it and carry on. --daniel 2012-09-05
|
533
|
+
# Also, if we don't match, just include the whole line.
|
534
|
+
if path
|
535
|
+
path = Pathname(path).realpath rescue path
|
536
|
+
"#{path}:#{rest}"
|
546
537
|
else
|
547
|
-
|
538
|
+
line
|
548
539
|
end
|
549
|
-
end
|
550
|
-
end
|
551
|
-
|
552
|
-
def self.resolve_stackframe(frame)
|
553
|
-
_, path, rest = /^(.*):(\d+.*)$/.match(frame).to_a
|
554
|
-
if path
|
555
|
-
path = Pathname(path).realpath rescue path
|
556
|
-
"#{path}:#{rest}"
|
557
|
-
else
|
558
|
-
frame
|
559
|
-
end
|
560
|
-
end
|
561
|
-
|
562
|
-
def self.format_puppetstack_frame(file_and_lineno)
|
563
|
-
file_and_lineno.join(':')
|
540
|
+
end.join("\n")
|
564
541
|
end
|
565
542
|
|
566
543
|
# Replace a file, securely. This takes a block, and passes it the file
|
@@ -574,7 +551,7 @@ module Util
|
|
574
551
|
# preserved. This works hard to avoid loss of any metadata, but will result
|
575
552
|
# in an inode change for the file.
|
576
553
|
#
|
577
|
-
# Arguments: `filename`, `default_mode`
|
554
|
+
# Arguments: `filename`, `default_mode`, `staging_location`
|
578
555
|
#
|
579
556
|
# The filename is the file we are going to replace.
|
580
557
|
#
|
@@ -582,11 +559,14 @@ module Util
|
|
582
559
|
# exist; if the file is present we copy the existing mode/owner/group values
|
583
560
|
# across. The default_mode can be expressed as an octal integer, a numeric string (ie '0664')
|
584
561
|
# or a symbolic file mode.
|
562
|
+
#
|
563
|
+
# The staging_location is a location to render the temporary file before
|
564
|
+
# moving the file to it's final location.
|
585
565
|
|
586
566
|
DEFAULT_POSIX_MODE = 0644
|
587
567
|
DEFAULT_WINDOWS_MODE = nil
|
588
568
|
|
589
|
-
def replace_file(file, default_mode, &block)
|
569
|
+
def replace_file(file, default_mode, staging_location: nil, validate_callback: nil, &block)
|
590
570
|
raise Puppet::DevError, _("replace_file requires a block") unless block_given?
|
591
571
|
|
592
572
|
if default_mode
|
@@ -604,9 +584,15 @@ module Util
|
|
604
584
|
end
|
605
585
|
|
606
586
|
begin
|
607
|
-
file
|
587
|
+
file = Puppet::FileSystem.pathname(file)
|
588
|
+
|
608
589
|
# encoding for Uniquefile is not important here because the caller writes to it as it sees fit
|
609
|
-
|
590
|
+
if staging_location
|
591
|
+
tempfile = Puppet::FileSystem::Uniquefile.new(Puppet::FileSystem.basename_string(file), staging_location)
|
592
|
+
else
|
593
|
+
tempfile = Puppet::FileSystem::Uniquefile.new(Puppet::FileSystem.basename_string(file), Puppet::FileSystem.dir_string(file))
|
594
|
+
end
|
595
|
+
|
610
596
|
|
611
597
|
effective_mode =
|
612
598
|
if !Puppet::Util::Platform.windows?
|
@@ -646,6 +632,10 @@ module Util
|
|
646
632
|
|
647
633
|
tempfile.close
|
648
634
|
|
635
|
+
if validate_callback
|
636
|
+
validate_callback.call(tempfile.path)
|
637
|
+
end
|
638
|
+
|
649
639
|
if Puppet::Util::Platform.windows?
|
650
640
|
# Windows ReplaceFile needs a file to exist, so touch handles this
|
651
641
|
if !Puppet::FileSystem.exist?(file)
|