puppet 5.5.17-x64-mingw32 → 5.5.22-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 +1 -1
- data/Gemfile +4 -5
- data/Gemfile.lock +59 -55
- 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 +54 -8
- data/install.rb +6 -6
- data/lib/puppet.rb +5 -2
- data/lib/puppet/agent.rb +5 -13
- data/lib/puppet/application.rb +1 -1
- data/lib/puppet/application/agent.rb +3 -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/filebucket.rb +13 -0
- data/lib/puppet/application/lookup.rb +1 -1
- data/lib/puppet/application/script.rb +2 -2
- data/lib/puppet/configurer.rb +106 -31
- data/lib/puppet/configurer/downloader.rb +33 -16
- data/lib/puppet/daemon.rb +1 -1
- data/lib/puppet/defaults.rb +86 -40
- data/lib/puppet/error.rb +9 -1
- data/lib/puppet/external/nagios/base.rb +1 -1
- data/lib/puppet/face/ca.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/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- 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/file_system/uniquefile.rb +4 -0
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/functions/epp.rb +4 -4
- data/lib/puppet/functions/inline_epp.rb +5 -5
- data/lib/puppet/functions/new.rb +8 -3
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/step.rb +1 -1
- 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 +6 -5
- data/lib/puppet/indirector/catalog/compiler.rb +8 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +6 -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_tool/applications/builder.rb +1 -1
- 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 +13 -12
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/connection.rb +14 -12
- data/lib/puppet/network/http/pool.rb +7 -1
- data/lib/puppet/network/http/rack/rest.rb +2 -2
- data/lib/puppet/network/http/site.rb +1 -1
- data/lib/puppet/network/resolver.rb +2 -2
- data/lib/puppet/node/environment.rb +11 -3
- data/lib/puppet/parser/ast.rb +1 -1
- data/lib/puppet/parser/ast/resourceparam.rb +1 -1
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
- data/lib/puppet/parser/environment_compiler.rb +3 -0
- data/lib/puppet/parser/functions.rb +14 -10
- data/lib/puppet/parser/functions/epp.rb +3 -3
- data/lib/puppet/parser/functions/inline_epp.rb +5 -5
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- 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/evaluator_impl.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/issues.rb +5 -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 -48
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- data/lib/puppet/pops/types/string_converter.rb +10 -10
- data/lib/puppet/pops/types/type_calculator.rb +24 -0
- data/lib/puppet/pops/types/types.rb +3 -3
- data/lib/puppet/pops/validation/checker4_0.rb +29 -15
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec.rb +6 -2
- data/lib/puppet/provider/group/groupadd.rb +19 -19
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/mailalias/aliases.rb +1 -1
- data/lib/puppet/provider/mount.rb +1 -1
- data/lib/puppet/provider/mount/parsed.rb +8 -8
- data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
- data/lib/puppet/provider/nameservice/pw.rb +2 -2
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +14 -3
- data/lib/puppet/provider/package/dnfmodule.rb +141 -0
- data/lib/puppet/provider/package/dpkg.rb +16 -18
- data/lib/puppet/provider/package/fink.rb +20 -3
- data/lib/puppet/provider/package/gem.rb +4 -2
- data/lib/puppet/provider/package/openbsd.rb +14 -2
- data/lib/puppet/provider/package/pip.rb +37 -10
- data/lib/puppet/provider/package/pkg.rb +18 -5
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +16 -4
- data/lib/puppet/provider/package/portage.rb +4 -4
- data/lib/puppet/provider/package/puppet_gem.rb +5 -0
- data/lib/puppet/provider/package/rpm.rb +6 -6
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +28 -20
- data/lib/puppet/provider/package/zypper.rb +1 -0
- data/lib/puppet/provider/package_targetable.rb +5 -4
- data/lib/puppet/provider/parsedfile.rb +1 -1
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +3 -3
- data/lib/puppet/provider/selmodule/semodule.rb +43 -26
- 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 +31 -13
- data/lib/puppet/provider/user/directoryservice.rb +31 -6
- 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 +39 -20
- data/lib/puppet/provider/user/windows_adsi.rb +4 -5
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
- data/lib/puppet/reference/indirection.rb +2 -2
- data/lib/puppet/reference/metaparameter.rb +1 -3
- data/lib/puppet/reference/providers.rb +1 -1
- 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/resource/type.rb +10 -1
- data/lib/puppet/settings.rb +3 -3
- data/lib/puppet/settings/environment_conf.rb +1 -0
- data/lib/puppet/ssl/certificate.rb +2 -1
- data/lib/puppet/ssl/certificate_authority.rb +6 -5
- data/lib/puppet/ssl/certificate_authority/interface.rb +1 -1
- data/lib/puppet/ssl/certificate_factory.rb +2 -2
- data/lib/puppet/ssl/host.rb +3 -3
- data/lib/puppet/ssl/oids.rb +1 -1
- data/lib/puppet/test/test_helper.rb +20 -12
- data/lib/puppet/transaction/report.rb +1 -1
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/type.rb +8 -4
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/exec.rb +7 -3
- data/lib/puppet/type/file.rb +14 -2
- data/lib/puppet/type/file/data_sync.rb +5 -1
- data/lib/puppet/type/group.rb +4 -2
- data/lib/puppet/type/interface.rb +1 -1
- data/lib/puppet/type/notify.rb +3 -2
- data/lib/puppet/type/package.rb +97 -8
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/selboolean.rb +17 -3
- data/lib/puppet/type/service.rb +2 -8
- data/lib/puppet/type/user.rb +5 -9
- data/lib/puppet/util.rb +35 -12
- data/lib/puppet/util/autoload.rb +9 -7
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +8 -14
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/log.rb +1 -1
- data/lib/puppet/util/log/destinations.rb +3 -12
- data/lib/puppet/util/logging.rb +30 -18
- data/lib/puppet/util/metric.rb +2 -2
- data/lib/puppet/util/monkey_patches.rb +1 -1
- data/lib/puppet/util/nagios_maker.rb +2 -2
- data/lib/puppet/util/network_device/cisco/device.rb +1 -1
- data/lib/puppet/util/network_device/cisco/interface.rb +2 -2
- data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
- data/lib/puppet/util/pidlock.rb +12 -6
- data/lib/puppet/util/plist.rb +6 -0
- 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 +60 -30
- data/lib/puppet/util/windows/api_types.rb +45 -32
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +16 -15
- data/lib/puppet/util/windows/registry.rb +17 -15
- data/lib/puppet/util/windows/security.rb +1 -0
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/vendor.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +2 -2
- data/locales/puppet.pot +362 -318
- data/man/man5/puppet.conf.5 +39 -9
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-ca.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-cert.8 +1 -1
- data/man/man8/puppet-certificate.8 +1 -1
- data/man/man8/puppet-certificate_request.8 +1 -1
- data/man/man8/puppet-certificate_revocation_list.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 +16 -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-master.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-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/provider/mailalias/aliases/test1 +1 -0
- data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +19 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
- data/spec/integration/configurer_spec.rb +66 -0
- data/spec/integration/data_binding_spec.rb +1 -0
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/faces/plugin_spec.rb +29 -47
- data/spec/integration/indirector/facts/facter_spec.rb +4 -0
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/notify_spec.rb +46 -0
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/unit/agent_spec.rb +34 -26
- data/spec/unit/application/apply_spec.rb +2 -12
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +0 -4
- data/spec/unit/configurer_spec.rb +430 -415
- data/spec/unit/daemon_spec.rb +0 -1
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_system/uniquefile_spec.rb +11 -0
- data/spec/unit/forge/forge_spec.rb +1 -3
- data/spec/unit/forge/repository_spec.rb +1 -3
- data/spec/unit/indirector/catalog/compiler_spec.rb +45 -26
- data/spec/unit/indirector/resource/ral_spec.rb +4 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/connection_spec.rb +43 -1
- data/spec/unit/network/http/pool_spec.rb +32 -0
- data/spec/unit/node_spec.rb +7 -4
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
- data/spec/unit/provider/exec_spec.rb +209 -0
- data/spec/unit/provider/group/groupadd_spec.rb +30 -1
- data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
- data/spec/unit/provider/package/aix_spec.rb +29 -0
- data/spec/unit/provider/package/apt_spec.rb +13 -2
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +247 -0
- data/spec/unit/provider/package/dpkg_spec.rb +35 -7
- data/spec/unit/provider/package/openbsd_spec.rb +17 -0
- data/spec/unit/provider/package/pip_spec.rb +93 -22
- data/spec/unit/provider/package/pkg_spec.rb +13 -1
- data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
- data/spec/unit/provider/package/pkgng_spec.rb +36 -0
- data/spec/unit/provider/package/portage_spec.rb +4 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
- data/spec/unit/provider/package/yum_spec.rb +90 -0
- data/spec/unit/provider/package/zypper_spec.rb +13 -0
- data/spec/unit/provider/package_targetable_spec.rb +60 -0
- data/spec/unit/provider/selmodule_spec.rb +118 -47
- 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 +109 -36
- data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
- data/spec/unit/provider/user/hpux_spec.rb +2 -2
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +81 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
- data/spec/unit/puppet_pal_2pec.rb +3 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +2 -3
- data/spec/unit/ssl/certificate_spec.rb +7 -0
- data/spec/unit/ssl/host_spec.rb +2 -0
- data/spec/unit/test/test_helper_spec.rb +17 -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 +8 -0
- data/spec/unit/type/selboolean_spec.rb +4 -6
- data/spec/unit/type/service_spec.rb +9 -8
- data/spec/unit/type/user_spec.rb +19 -13
- data/spec/unit/util/execution_spec.rb +16 -0
- data/spec/unit/util/http_proxy_spec.rb +97 -0
- data/spec/unit/util/log/destinations_spec.rb +2 -26
- data/spec/unit/util/log_spec.rb +0 -138
- data/spec/unit/util/logging_spec.rb +200 -0
- data/spec/unit/util/pidlock_spec.rb +67 -40
- data/spec/unit/util/plist_spec.rb +20 -0
- data/spec/unit/util/windows/adsi_spec.rb +55 -4
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/tasks/manpages.rake +1 -0
- metadata +16 -7
- data/lib/puppet/pops/loader/null_loader.rb +0 -60
- data/locales/ja/puppet.po +0 -12114
- data/spec/integration/test/test_helper_spec.rb +0 -31
data/lib/puppet.rb
CHANGED
@@ -22,6 +22,7 @@ require 'puppet/external/pson/common'
|
|
22
22
|
require 'puppet/external/pson/version'
|
23
23
|
require 'puppet/external/pson/pure'
|
24
24
|
require 'puppet/gettext/config'
|
25
|
+
require 'puppet/defaults'
|
25
26
|
|
26
27
|
|
27
28
|
#------------------------------------------------------------
|
@@ -87,6 +88,7 @@ module Puppet
|
|
87
88
|
|
88
89
|
# Store a new default value.
|
89
90
|
def self.define_settings(section, hash)
|
91
|
+
Puppet.deprecation_warning('The method Puppet.define_settings is deprecated and will be removed in a future release')
|
90
92
|
@@settings.define_settings(section, hash)
|
91
93
|
end
|
92
94
|
|
@@ -121,8 +123,9 @@ module Puppet
|
|
121
123
|
Puppet::Util::RunMode[@@settings.preferred_run_mode]
|
122
124
|
end
|
123
125
|
|
124
|
-
#
|
125
|
-
|
126
|
+
# Modify the settings with defaults defined in `initialize_default_settings` method in puppet/defaults.rb. This can
|
127
|
+
# be used in the initialization of new Puppet::Settings objects in the puppetserver project.
|
128
|
+
Puppet.initialize_default_settings!(settings)
|
126
129
|
|
127
130
|
# Now that settings are loaded we have the code loaded to be able to issue
|
128
131
|
# deprecation warnings. Warn if we're on a deprecated ruby version.
|
data/lib/puppet/agent.rb
CHANGED
@@ -61,15 +61,15 @@ class Puppet::Agent
|
|
61
61
|
end
|
62
62
|
rescue Puppet::LockError
|
63
63
|
Puppet.notice _("Run of %{client_class} already in progress; skipping (%{lockfile_path} exists)") % { client_class: client_class, lockfile_path: lockfile_path }
|
64
|
-
|
64
|
+
nil
|
65
65
|
rescue RunTimeoutError => detail
|
66
66
|
Puppet.log_exception(detail, _("Execution of %{client_class} did not complete within %{runtimeout} seconds and was terminated.") %
|
67
67
|
{client_class: client_class,
|
68
68
|
runtimeout: Puppet[:runtimeout]})
|
69
|
-
|
69
|
+
nil
|
70
70
|
rescue StandardError => detail
|
71
71
|
Puppet.log_exception(detail, _("Could not run %{client_class}: %{detail}") % { client_class: client_class, detail: detail })
|
72
|
-
|
72
|
+
nil
|
73
73
|
end
|
74
74
|
end
|
75
75
|
end
|
@@ -95,11 +95,9 @@ class Puppet::Agent
|
|
95
95
|
atForkHandler.child
|
96
96
|
$0 = _("puppet agent: applying configuration")
|
97
97
|
begin
|
98
|
-
exit(yield)
|
99
|
-
rescue SystemExit
|
100
|
-
exit(-1)
|
98
|
+
exit(yield || 1)
|
101
99
|
rescue NoMemoryError
|
102
|
-
exit(
|
100
|
+
exit(254)
|
103
101
|
end
|
104
102
|
end
|
105
103
|
ensure
|
@@ -107,12 +105,6 @@ class Puppet::Agent
|
|
107
105
|
end
|
108
106
|
|
109
107
|
exit_code = Process.waitpid2(child_pid)
|
110
|
-
case exit_code[1].exitstatus
|
111
|
-
when -1
|
112
|
-
raise SystemExit
|
113
|
-
when -2
|
114
|
-
raise NoMemoryError
|
115
|
-
end
|
116
108
|
exit_code[1].exitstatus
|
117
109
|
end
|
118
110
|
|
data/lib/puppet/application.rb
CHANGED
@@ -183,7 +183,7 @@ class Application
|
|
183
183
|
|
184
184
|
# used to declare code that handle an option
|
185
185
|
def option(*options, &block)
|
186
|
-
long = options.find { |opt| opt =~ /^--/ }.gsub(/^--(?:\[no-\])?([^ =]+).*$/, '\1' ).
|
186
|
+
long = options.find { |opt| opt =~ /^--/ }.gsub(/^--(?:\[no-\])?([^ =]+).*$/, '\1' ).tr('-','_')
|
187
187
|
fname = "handle_#{long}".intern
|
188
188
|
if (block_given?)
|
189
189
|
define_method(fname, &block)
|
@@ -245,7 +245,9 @@ generated by running puppet agent with '--genconfig'.
|
|
245
245
|
|
246
246
|
* --job-id:
|
247
247
|
Attach the specified job id to the catalog request and the report used for
|
248
|
-
this agent run. This option only works when '--onetime' is used.
|
248
|
+
this agent run. This option only works when '--onetime' is used. When using
|
249
|
+
Puppet Enterprise this flag should not be used as the orchestrator sets the
|
250
|
+
job-id for you and it must be unique.
|
249
251
|
|
250
252
|
* --logdest:
|
251
253
|
Where to send log messages. Choose between 'syslog' (the POSIX syslog
|
@@ -260,8 +260,8 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
260
260
|
catalog =
|
261
261
|
begin
|
262
262
|
Puppet::Resource::Catalog.indirection.find(node.name, :use_node => node)
|
263
|
-
rescue Puppet::
|
264
|
-
# already logged and handled by the compiler
|
263
|
+
rescue Puppet::Error
|
264
|
+
# already logged and handled by the compiler, including Puppet::ParseErrorWithIssue
|
265
265
|
exit(1)
|
266
266
|
end
|
267
267
|
|
@@ -64,9 +64,7 @@ class TypeDoc
|
|
64
64
|
|
65
65
|
def list_types
|
66
66
|
puts "These are the types known to puppet:\n"
|
67
|
-
@types.keys.
|
68
|
-
a.to_s <=> b.to_s
|
69
|
-
}.each do |name|
|
67
|
+
@types.keys.sort_by(&:to_s).each do |name|
|
70
68
|
type = @types[name]
|
71
69
|
s = type.doc.gsub(/\s+/, " ")
|
72
70
|
n = s.index(". ")
|
@@ -149,18 +147,14 @@ class TypeDoc
|
|
149
147
|
end
|
150
148
|
|
151
149
|
def format_providers(type)
|
152
|
-
type.providers.
|
153
|
-
a.to_s <=> b.to_s
|
154
|
-
}.each { |prov|
|
150
|
+
type.providers.sort_by(&:to_s).each { |prov|
|
155
151
|
puts "\n- **#{prov}**"
|
156
152
|
puts @format.wrap(type.provider(prov).doc, :indent => 4, :scrub => true)
|
157
153
|
}
|
158
154
|
end
|
159
155
|
|
160
156
|
def list_providers(type)
|
161
|
-
list = type.providers.
|
162
|
-
a.to_s <=> b.to_s
|
163
|
-
}.join(", ")
|
157
|
+
list = type.providers.sort_by(&:to_s).join(", ")
|
164
158
|
puts @format.wrap(list, :indent => 4)
|
165
159
|
end
|
166
160
|
|
@@ -154,7 +154,7 @@ HELP
|
|
154
154
|
with_contents = options[:references].length <= 1
|
155
155
|
exit_code = 0
|
156
156
|
require 'puppet/util/reference'
|
157
|
-
options[:references].
|
157
|
+
options[:references].sort_by(&:to_s).each do |name|
|
158
158
|
raise _("Could not find reference %{name}") % { name: name } unless section = Puppet::Util::Reference.reference(name)
|
159
159
|
|
160
160
|
begin
|
@@ -69,6 +69,19 @@ running as a user with valid Puppet certificates. Alternatively, you can
|
|
69
69
|
use your local file bucket by specifying '--local', or by specifying
|
70
70
|
'--bucket' with a local path.
|
71
71
|
|
72
|
+
> **Note**: Enabling and using the backup option, and by extension the
|
73
|
+
filebucket resource, requires appropriate planning and management to ensure
|
74
|
+
that sufficient disk space is available for the file backups. Generally, you
|
75
|
+
can implement this using one of the following two options:
|
76
|
+
- Use a `find` command and `crontab` entry to retain only the last X days
|
77
|
+
of file backups. For example:
|
78
|
+
|
79
|
+
```shell
|
80
|
+
find /opt/puppetlabs/server/data/puppetserver/bucket -type f -mtime +45 -atime +45 -print0 | xargs -0 rm
|
81
|
+
```
|
82
|
+
|
83
|
+
- Restrict the directory to a maximum size after which the oldest items are removed.
|
84
|
+
|
72
85
|
|
73
86
|
OPTIONS
|
74
87
|
-------
|
@@ -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
|
@@ -209,8 +209,8 @@ Copyright (c) 2017 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
209
209
|
|
210
210
|
compiler.compile()
|
211
211
|
|
212
|
-
rescue Puppet::
|
213
|
-
# already logged and handled by the compiler
|
212
|
+
rescue Puppet::Error
|
213
|
+
# already logged and handled by the compiler, including Puppet::ParseErrorWithIssue
|
214
214
|
exit(1)
|
215
215
|
end
|
216
216
|
|
data/lib/puppet/configurer.rb
CHANGED
@@ -58,6 +58,7 @@ class Puppet::Configurer
|
|
58
58
|
def initialize(transaction_uuid = nil, job_id = nil)
|
59
59
|
@running = false
|
60
60
|
@splayed = false
|
61
|
+
@pluginsync_failed = false
|
61
62
|
@cached_catalog_status = 'not_used'
|
62
63
|
@environment = Puppet[:environment]
|
63
64
|
@transaction_uuid = transaction_uuid || SecureRandom.uuid
|
@@ -70,8 +71,16 @@ class Puppet::Configurer
|
|
70
71
|
# Get the remote catalog, yo. Returns nil if no catalog can be found.
|
71
72
|
def retrieve_catalog(query_options)
|
72
73
|
query_options ||= {}
|
73
|
-
if
|
74
|
-
|
74
|
+
if Puppet[:use_cached_catalog] || @pluginsync_failed
|
75
|
+
result = retrieve_catalog_from_cache(query_options)
|
76
|
+
end
|
77
|
+
|
78
|
+
if result
|
79
|
+
if Puppet[:use_cached_catalog]
|
80
|
+
@cached_catalog_status = 'explicitly_requested'
|
81
|
+
elsif @pluginsync_failed
|
82
|
+
@cached_catalog_status = 'on_failure'
|
83
|
+
end
|
75
84
|
|
76
85
|
Puppet.info _("Using cached catalog from environment '%{environment}'") % { environment: result.environment }
|
77
86
|
else
|
@@ -144,9 +153,10 @@ class Puppet::Configurer
|
|
144
153
|
facts_hash
|
145
154
|
end
|
146
155
|
|
147
|
-
def prepare_and_retrieve_catalog(options, query_options)
|
156
|
+
def prepare_and_retrieve_catalog(cached_catalog, options, query_options)
|
148
157
|
# set report host name now that we have the fact
|
149
158
|
options[:report].host = Puppet[:node_name_value]
|
159
|
+
|
150
160
|
query_options[:transaction_uuid] = @transaction_uuid
|
151
161
|
query_options[:job_id] = @job_id
|
152
162
|
query_options[:static_catalog] = @static_catalog
|
@@ -156,24 +166,19 @@ class Puppet::Configurer
|
|
156
166
|
query_options[:checksum_type] = @checksum_type.join('.')
|
157
167
|
|
158
168
|
# apply passes in ral catalog
|
159
|
-
catalog = options
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
Puppet.err _("Could not retrieve catalog; skipping run")
|
167
|
-
nil
|
169
|
+
catalog = cached_catalog || options[:catalog]
|
170
|
+
unless catalog
|
171
|
+
# retrieve_catalog returns resource catalog
|
172
|
+
catalog = retrieve_catalog(query_options)
|
173
|
+
Puppet.err _("Could not retrieve catalog; skipping run") unless catalog
|
174
|
+
end
|
175
|
+
catalog
|
168
176
|
end
|
169
177
|
|
170
178
|
def prepare_and_retrieve_catalog_from_cache(options = {})
|
171
179
|
result = retrieve_catalog_from_cache({:transaction_uuid => @transaction_uuid, :static_catalog => @static_catalog})
|
172
|
-
if result
|
173
|
-
|
174
|
-
return convert_catalog(result, @duration, options)
|
175
|
-
end
|
176
|
-
nil
|
180
|
+
Puppet.info _("Using cached catalog from environment '%{catalog_env}'") % { catalog_env: result.environment } if result
|
181
|
+
result
|
177
182
|
end
|
178
183
|
|
179
184
|
# Apply supplied catalog and return associated application report
|
@@ -251,13 +256,12 @@ class Puppet::Configurer
|
|
251
256
|
Puppet::GettextConfig.reset_text_domain('agent')
|
252
257
|
Puppet::ModuleTranslations.load_from_vardir(Puppet[:vardir])
|
253
258
|
|
254
|
-
if
|
255
|
-
options[:catalog] = catalog
|
259
|
+
if cached_catalog = prepare_and_retrieve_catalog_from_cache(options)
|
256
260
|
@cached_catalog_status = 'explicitly_requested'
|
257
261
|
|
258
|
-
if @environment !=
|
259
|
-
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:
|
260
|
-
@environment =
|
262
|
+
if @environment != cached_catalog.environment && !Puppet[:strict_environment_mode]
|
263
|
+
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 }
|
264
|
+
@environment = cached_catalog.environment
|
261
265
|
end
|
262
266
|
|
263
267
|
report.environment = @environment
|
@@ -278,7 +282,7 @@ class Puppet::Configurer
|
|
278
282
|
configured_environment = Puppet[:environment] if Puppet.settings.set_by_config?(:environment)
|
279
283
|
|
280
284
|
# We only need to find out the environment to run in if we don't already have a catalog
|
281
|
-
unless (options[:catalog] || Puppet[:strict_environment_mode])
|
285
|
+
unless (cached_catalog || options[:catalog] || Puppet[:strict_environment_mode])
|
282
286
|
begin
|
283
287
|
node = nil
|
284
288
|
node_retr_time = thinmark do
|
@@ -329,7 +333,7 @@ class Puppet::Configurer
|
|
329
333
|
query_options = get_facts(options) unless query_options
|
330
334
|
query_options[:configured_environment] = configured_environment
|
331
335
|
|
332
|
-
unless catalog = prepare_and_retrieve_catalog(options, query_options)
|
336
|
+
unless catalog = prepare_and_retrieve_catalog(cached_catalog, options, query_options)
|
333
337
|
return nil
|
334
338
|
end
|
335
339
|
|
@@ -354,16 +358,37 @@ class Puppet::Configurer
|
|
354
358
|
query_options = get_facts(options)
|
355
359
|
query_options[:configured_environment] = configured_environment
|
356
360
|
|
357
|
-
|
361
|
+
# if we get here, ignore the cached catalog
|
362
|
+
return nil unless catalog = prepare_and_retrieve_catalog(nil, options, query_options)
|
358
363
|
tries += 1
|
359
364
|
end
|
360
365
|
|
366
|
+
# now that environment has converged, convert resource catalog into ral catalog
|
367
|
+
# unless we were given a RAL catalog
|
368
|
+
if !cached_catalog && options[:catalog]
|
369
|
+
ral_catalog = options[:catalog]
|
370
|
+
else
|
371
|
+
# REMIND @duration is the time spent loading the last catalog, and doesn't
|
372
|
+
# account for things like we failed to download and fell back to the cache
|
373
|
+
ral_catalog = convert_catalog(catalog, @duration, options)
|
374
|
+
|
375
|
+
# If not noop, commit the cached resource catalog (not ral catalog). Ideally
|
376
|
+
# we'd just copy the downloaded response body, instead of serializing the
|
377
|
+
# in-memory catalog, but that's hard due to the indirector.
|
378
|
+
indirection = Puppet::Resource::Catalog.indirection
|
379
|
+
if !Puppet[:noop] && indirection.cache?
|
380
|
+
request = indirection.request(:save, nil, catalog, environment: Puppet::Node::Environment.remote(catalog.environment))
|
381
|
+
Puppet.info("Caching catalog for #{request.key}")
|
382
|
+
indirection.cache.save(request)
|
383
|
+
end
|
384
|
+
end
|
385
|
+
|
361
386
|
execute_prerun_command or return nil
|
362
387
|
|
363
|
-
options[:report].code_id =
|
364
|
-
options[:report].catalog_uuid =
|
388
|
+
options[:report].code_id = ral_catalog.code_id
|
389
|
+
options[:report].catalog_uuid = ral_catalog.catalog_uuid
|
365
390
|
options[:report].cached_catalog_status = @cached_catalog_status
|
366
|
-
apply_catalog(
|
391
|
+
apply_catalog(ral_catalog, options)
|
367
392
|
true
|
368
393
|
rescue => detail
|
369
394
|
Puppet.log_exception(detail, _("Failed to apply catalog: %{detail}") % { detail: detail })
|
@@ -372,6 +397,14 @@ class Puppet::Configurer
|
|
372
397
|
execute_postrun_command or return nil
|
373
398
|
end
|
374
399
|
ensure
|
400
|
+
if Puppet[:resubmit_facts]
|
401
|
+
# TODO: Should mark the report as "failed" if an error occurs and
|
402
|
+
# resubmit_facts returns false. There is currently no API for this.
|
403
|
+
resubmit_facts_time = thinmark { resubmit_facts }
|
404
|
+
|
405
|
+
report.add_times(:resubmit_facts, resubmit_facts_time)
|
406
|
+
end
|
407
|
+
|
375
408
|
report.cached_catalog_status ||= @cached_catalog_status
|
376
409
|
report.add_times(:total, Time.now - start)
|
377
410
|
report.finalize_report
|
@@ -418,6 +451,40 @@ class Puppet::Configurer
|
|
418
451
|
Puppet.log_exception(detail, _("Could not save last run local report: %{detail}") % { detail: detail })
|
419
452
|
end
|
420
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
|
+
|
421
488
|
private
|
422
489
|
|
423
490
|
def execute_from_setting(setting)
|
@@ -456,8 +523,8 @@ class Puppet::Configurer
|
|
456
523
|
Puppet[:node_name_value],
|
457
524
|
query_options.merge(
|
458
525
|
:ignore_cache => true,
|
459
|
-
#
|
460
|
-
:ignore_cache_save =>
|
526
|
+
# don't update cache until after environment converges
|
527
|
+
:ignore_cache_save => true,
|
461
528
|
:environment => Puppet::Node::Environment.remote(@environment),
|
462
529
|
:fail_on_404 => true
|
463
530
|
)
|
@@ -470,6 +537,14 @@ class Puppet::Configurer
|
|
470
537
|
end
|
471
538
|
|
472
539
|
def download_plugins(remote_environment_for_plugins)
|
473
|
-
|
540
|
+
begin
|
541
|
+
@handler.download_plugins(remote_environment_for_plugins)
|
542
|
+
rescue Puppet::Error => detail
|
543
|
+
if !Puppet[:ignore_plugin_errors] && Puppet[:usecacheonfailure]
|
544
|
+
@pluginsync_failed = true
|
545
|
+
else
|
546
|
+
raise detail
|
547
|
+
end
|
548
|
+
end
|
474
549
|
end
|
475
550
|
end
|
@@ -11,32 +11,53 @@ class Puppet::Configurer::Downloader
|
|
11
11
|
files = []
|
12
12
|
begin
|
13
13
|
catalog.apply do |trans|
|
14
|
+
unless Puppet[:ignore_plugin_errors]
|
15
|
+
# Propagate the first failure associated with the transaction. The any_failed?
|
16
|
+
# method returns the first resource status that failed or nil, not a boolean.
|
17
|
+
first_failure = trans.any_failed?
|
18
|
+
if first_failure
|
19
|
+
event = (first_failure.events || []).first
|
20
|
+
detail = event ? event.message : 'unknown'
|
21
|
+
raise Puppet::Error.new(_("Failed to retrieve %{name}: %{detail}") % { name: name, detail: detail })
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
14
25
|
trans.changed?.each do |resource|
|
15
26
|
yield resource if block_given?
|
16
27
|
files << resource[:path]
|
17
28
|
end
|
18
29
|
end
|
19
30
|
rescue Puppet::Error => detail
|
20
|
-
Puppet
|
31
|
+
if Puppet[:ignore_plugin_errors]
|
32
|
+
Puppet.log_exception(detail, _("Could not retrieve %{name}: %{detail}") % { name: name, detail: detail })
|
33
|
+
else
|
34
|
+
raise detail
|
35
|
+
end
|
21
36
|
end
|
22
37
|
files
|
23
38
|
end
|
24
39
|
|
25
40
|
def initialize(name, path, source, ignore = nil, environment = nil, source_permissions = :ignore)
|
26
41
|
@name, @path, @source, @ignore, @environment, @source_permissions = name, path, source, ignore, environment, source_permissions
|
27
|
-
end
|
28
42
|
|
29
|
-
def catalog
|
30
|
-
catalog = Puppet::Resource::Catalog.new("PluginSync", @environment)
|
31
|
-
catalog.host_config = false
|
32
|
-
catalog.add_resource(file)
|
33
|
-
catalog
|
34
43
|
end
|
35
44
|
|
36
45
|
def file
|
37
|
-
|
38
|
-
|
39
|
-
|
46
|
+
unless @file
|
47
|
+
args = default_arguments.merge(:path => path, :source => source)
|
48
|
+
args[:ignore] = ignore.split if ignore
|
49
|
+
@file = Puppet::Type.type(:file).new(args)
|
50
|
+
end
|
51
|
+
@file
|
52
|
+
end
|
53
|
+
|
54
|
+
def catalog
|
55
|
+
unless @catalog
|
56
|
+
@catalog = Puppet::Resource::Catalog.new("PluginSync", @environment)
|
57
|
+
@catalog.host_config = false
|
58
|
+
@catalog.add_resource(file)
|
59
|
+
end
|
60
|
+
@catalog
|
40
61
|
end
|
41
62
|
|
42
63
|
private
|
@@ -55,12 +76,8 @@ class Puppet::Configurer::Downloader
|
|
55
76
|
:noop => false
|
56
77
|
}
|
57
78
|
if !Puppet.features.microsoft_windows?
|
58
|
-
defargs.
|
59
|
-
|
60
|
-
:owner => Process.uid,
|
61
|
-
:group => Process.gid
|
62
|
-
}
|
63
|
-
)
|
79
|
+
defargs[:owner] = Process.uid
|
80
|
+
defargs[:group] = Process.gid
|
64
81
|
end
|
65
82
|
return defargs
|
66
83
|
end
|