puppet 6.22.1-x86-mingw32 → 6.25.1-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +5 -5
- data/Gemfile +2 -2
- data/Gemfile.lock +20 -20
- data/README.md +4 -4
- data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
- data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
- data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
- data/{ext → examples/enc}/regexp_nodes/regexp_nodes.rb +0 -0
- data/{ext → examples}/nagios/check_puppet.rb +2 -2
- data/ext/README.md +13 -0
- data/ext/osx/puppet.plist +2 -0
- data/ext/project_data.yaml +1 -0
- data/lib/puppet/application/agent.rb +16 -5
- data/lib/puppet/application/apply.rb +22 -3
- data/lib/puppet/application/device.rb +2 -1
- data/lib/puppet/application/filebucket.rb +1 -0
- data/lib/puppet/application/resource.rb +32 -16
- data/lib/puppet/application/script.rb +2 -1
- data/lib/puppet/application/ssl.rb +1 -0
- data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
- data/lib/puppet/configurer/downloader.rb +2 -1
- data/lib/puppet/configurer.rb +144 -56
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/defaults.rb +47 -33
- data/lib/puppet/environments.rb +75 -25
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/face/help/action.erb +1 -0
- data/lib/puppet/face/help/face.erb +1 -0
- data/lib/puppet/face/node/clean.rb +11 -0
- data/lib/puppet/facter_impl.rb +96 -0
- data/lib/puppet/file_serving/configuration/parser.rb +2 -0
- data/lib/puppet/file_serving/configuration.rb +3 -0
- data/lib/puppet/file_serving/fileset.rb +14 -2
- data/lib/puppet/file_serving/mount/file.rb +4 -4
- data/lib/puppet/file_serving/mount/scripts.rb +24 -0
- data/lib/puppet/file_system/file_impl.rb +3 -1
- data/lib/puppet/file_system/windows.rb +2 -2
- data/lib/puppet/forge.rb +4 -4
- data/lib/puppet/functions/all.rb +1 -1
- data/lib/puppet/functions/camelcase.rb +1 -1
- data/lib/puppet/functions/capitalize.rb +2 -2
- data/lib/puppet/functions/downcase.rb +2 -2
- data/lib/puppet/functions/empty.rb +8 -0
- data/lib/puppet/functions/find_template.rb +2 -2
- data/lib/puppet/functions/get.rb +5 -5
- data/lib/puppet/functions/group_by.rb +13 -5
- data/lib/puppet/functions/lest.rb +1 -1
- data/lib/puppet/functions/new.rb +100 -100
- data/lib/puppet/functions/partition.rb +4 -4
- data/lib/puppet/functions/require.rb +5 -5
- data/lib/puppet/functions/sort.rb +3 -3
- data/lib/puppet/functions/strftime.rb +1 -0
- data/lib/puppet/functions/tree_each.rb +7 -9
- data/lib/puppet/functions/type.rb +4 -4
- data/lib/puppet/functions/unwrap.rb +17 -2
- data/lib/puppet/functions/upcase.rb +2 -2
- data/lib/puppet/http/client.rb +1 -1
- data/lib/puppet/http/redirector.rb +5 -0
- data/lib/puppet/http/resolver/server_list.rb +15 -4
- data/lib/puppet/http/service/compiler.rb +75 -1
- data/lib/puppet/http/service/file_server.rb +2 -1
- data/lib/puppet/indirector/catalog/compiler.rb +25 -6
- data/lib/puppet/indirector/catalog/rest.rb +1 -0
- data/lib/puppet/indirector/facts/facter.rb +6 -6
- data/lib/puppet/indirector/file_metadata/rest.rb +1 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/resource/ral.rb +6 -1
- data/lib/puppet/indirector/terminus.rb +4 -0
- data/lib/puppet/interface/documentation.rb +1 -0
- data/lib/puppet/module/plan.rb +0 -1
- data/lib/puppet/module/task.rb +1 -1
- data/lib/puppet/module.rb +1 -0
- data/lib/puppet/module_tool/applications/installer.rb +12 -4
- data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
- data/lib/puppet/module_tool/errors/shared.rb +17 -0
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/node/environment.rb +10 -11
- data/lib/puppet/pal/pal_impl.rb +1 -1
- data/lib/puppet/parser/functions/fqdn_rand.rb +14 -6
- data/lib/puppet/parser/resource.rb +1 -1
- data/lib/puppet/parser/scope.rb +1 -0
- data/lib/puppet/parser/templatewrapper.rb +1 -0
- data/lib/puppet/pops/evaluator/closure.rb +7 -5
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +1 -0
- data/lib/puppet/pops/lookup/lookup_adapter.rb +3 -2
- data/lib/puppet/pops/model/ast.rb +1 -0
- data/lib/puppet/pops/model/factory.rb +2 -1
- data/lib/puppet/pops/parser/eparser.rb +201 -201
- data/lib/puppet/pops/parser/lexer2.rb +92 -91
- data/lib/puppet/pops/parser/slurp_support.rb +1 -0
- data/lib/puppet/pops/serialization/to_data_converter.rb +18 -6
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
- data/lib/puppet/pops/types/p_sem_ver_type.rb +8 -2
- data/lib/puppet/pops/types/p_sensitive_type.rb +10 -0
- data/lib/puppet/pops/types/type_formatter.rb +4 -3
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/provider/aix_object.rb +1 -1
- data/lib/puppet/provider/exec/posix.rb +16 -4
- data/lib/puppet/provider/group/groupadd.rb +5 -2
- data/lib/puppet/provider/package/nim.rb +11 -6
- data/lib/puppet/provider/package/pip.rb +15 -3
- data/lib/puppet/provider/package/pkg.rb +19 -2
- data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +3 -0
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/init.rb +5 -5
- data/lib/puppet/provider/service/launchd.rb +2 -2
- data/lib/puppet/provider/service/redhat.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +15 -5
- data/lib/puppet/provider/service/upstart.rb +5 -5
- data/lib/puppet/provider/service/windows.rb +38 -0
- data/lib/puppet/provider/user/aix.rb +44 -1
- data/lib/puppet/provider/user/directoryservice.rb +26 -13
- data/lib/puppet/provider/user/useradd.rb +72 -16
- data/lib/puppet/provider.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/providers.rb +2 -2
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/resource/type_collection.rb +1 -0
- data/lib/puppet/resource.rb +38 -5
- data/lib/puppet/runtime.rb +11 -1
- data/lib/puppet/settings.rb +32 -9
- data/lib/puppet/test/test_helper.rb +4 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/persistence.rb +11 -1
- data/lib/puppet/transaction/report.rb +15 -1
- data/lib/puppet/type/exec.rb +35 -5
- data/lib/puppet/type/file/mode.rb +6 -0
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file.rb +25 -7
- data/lib/puppet/type/filebucket.rb +3 -3
- data/lib/puppet/type/group.rb +0 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/service.rb +26 -41
- data/lib/puppet/type/tidy.rb +22 -3
- data/lib/puppet/type/user.rb +38 -21
- data/lib/puppet/type.rb +1 -1
- data/lib/puppet/util/command_line.rb +1 -1
- data/lib/puppet/util/filetype.rb +2 -2
- data/lib/puppet/util/json.rb +3 -0
- data/lib/puppet/util/log.rb +1 -2
- data/lib/puppet/util/logging.rb +1 -25
- data/lib/puppet/util/pidlock.rb +1 -1
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
- data/lib/puppet/util/selinux.rb +30 -4
- data/lib/puppet/util/suidmanager.rb +1 -2
- data/lib/puppet/util/symbolic_file_mode.rb +29 -17
- data/lib/puppet/util/tagging.rb +1 -0
- data/lib/puppet/util/windows/service.rb +0 -5
- data/lib/puppet/util/windows/sid.rb +3 -1
- data/lib/puppet/util/windows/user.rb +0 -2
- data/lib/puppet/util/windows.rb +3 -0
- data/lib/puppet/util.rb +4 -3
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +5 -9
- data/locales/puppet.pot +408 -364
- data/man/man5/puppet.conf.5 +303 -275
- data/man/man8/puppet-agent.8 +4 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +9 -9
- 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 +8 -8
- 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 +7 -7
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +3 -3
- data/man/man8/puppet-node.8 +5 -5
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +5 -5
- 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 +4 -4
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +2 -1
- data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +25 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
- data/spec/fixtures/ssl/127.0.0.1-key.pem +107 -57
- data/spec/fixtures/ssl/127.0.0.1.pem +52 -31
- data/spec/fixtures/ssl/bad-basic-constraints.pem +57 -35
- data/spec/fixtures/ssl/bad-int-basic-constraints.pem +57 -35
- data/spec/fixtures/ssl/ca.pem +57 -35
- data/spec/fixtures/ssl/crl.pem +28 -18
- data/spec/fixtures/ssl/ec-key.pem +11 -11
- data/spec/fixtures/ssl/ec.pem +33 -24
- data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
- data/spec/fixtures/ssl/encrypted-key.pem +108 -58
- data/spec/fixtures/ssl/intermediate-agent-crl.pem +28 -19
- data/spec/fixtures/ssl/intermediate-agent.pem +57 -36
- data/spec/fixtures/ssl/intermediate-crl.pem +31 -21
- data/spec/fixtures/ssl/intermediate.pem +57 -36
- data/spec/fixtures/ssl/oid-key.pem +117 -0
- data/spec/fixtures/ssl/oid.pem +69 -0
- data/spec/fixtures/ssl/pluto-key.pem +107 -57
- data/spec/fixtures/ssl/pluto.pem +52 -30
- data/spec/fixtures/ssl/request-key.pem +107 -57
- data/spec/fixtures/ssl/request.pem +47 -26
- data/spec/fixtures/ssl/revoked-key.pem +107 -57
- data/spec/fixtures/ssl/revoked.pem +52 -30
- data/spec/fixtures/ssl/signed-key.pem +107 -57
- data/spec/fixtures/ssl/signed.pem +52 -30
- data/spec/fixtures/ssl/tampered-cert.pem +52 -30
- data/spec/fixtures/ssl/tampered-csr.pem +47 -26
- data/spec/fixtures/ssl/trusted_oid_mapping.yaml +5 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +107 -57
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +50 -29
- data/spec/fixtures/ssl/unknown-ca-key.pem +107 -57
- data/spec/fixtures/ssl/unknown-ca.pem +55 -33
- data/spec/integration/application/agent_spec.rb +141 -37
- data/spec/integration/application/filebucket_spec.rb +16 -0
- data/spec/integration/application/module_spec.rb +21 -0
- data/spec/integration/application/resource_spec.rb +64 -0
- data/spec/integration/application/ssl_spec.rb +20 -0
- data/spec/integration/configurer_spec.rb +18 -2
- data/spec/integration/environments/settings_interpolation_spec.rb +0 -4
- data/spec/integration/indirector/facts/facter_spec.rb +93 -39
- data/spec/integration/l10n/compiler_spec.rb +37 -0
- data/spec/integration/parser/pcore_resource_spec.rb +10 -0
- data/spec/integration/transaction/report_spec.rb +1 -1
- data/spec/integration/type/exec_spec.rb +70 -45
- data/spec/integration/type/file_spec.rb +2 -2
- data/spec/integration/type/package_spec.rb +6 -6
- data/spec/integration/util/rdoc/parser_spec.rb +1 -1
- data/spec/integration/util/windows/process_spec.rb +1 -9
- data/spec/lib/puppet/test_ca.rb +7 -2
- data/spec/lib/puppet_spec/modules.rb +13 -2
- data/spec/lib/puppet_spec/puppetserver.rb +15 -0
- data/spec/lib/puppet_spec/settings.rb +1 -0
- data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
- data/spec/shared_contexts/l10n.rb +27 -0
- data/spec/spec_helper.rb +1 -10
- data/spec/unit/application/agent_spec.rb +7 -2
- data/spec/unit/application/apply_spec.rb +76 -56
- data/spec/unit/application/resource_spec.rb +29 -0
- data/spec/unit/configurer/downloader_spec.rb +6 -0
- data/spec/unit/configurer_spec.rb +256 -57
- data/spec/unit/defaults_spec.rb +1 -0
- data/spec/unit/environments_spec.rb +184 -0
- data/spec/unit/facter_impl_spec.rb +31 -0
- data/spec/unit/file_bucket/dipper_spec.rb +2 -2
- data/spec/unit/file_serving/configuration/parser_spec.rb +23 -0
- data/spec/unit/file_serving/configuration_spec.rb +14 -4
- data/spec/unit/file_serving/fileset_spec.rb +60 -0
- data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
- data/spec/unit/file_system_spec.rb +13 -0
- data/spec/unit/functions/assert_type_spec.rb +1 -1
- data/spec/unit/functions/empty_spec.rb +10 -0
- data/spec/unit/functions/logging_spec.rb +1 -0
- data/spec/unit/functions/lookup_spec.rb +64 -0
- data/spec/unit/functions/unwrap_spec.rb +8 -0
- data/spec/unit/functions4_spec.rb +2 -2
- data/spec/unit/gettext/config_spec.rb +12 -0
- data/spec/unit/http/client_spec.rb +58 -1
- data/spec/unit/http/service/compiler_spec.rb +131 -0
- data/spec/unit/indirector/catalog/compiler_spec.rb +101 -10
- data/spec/unit/indirector/catalog/rest_spec.rb +8 -0
- data/spec/unit/indirector/indirection_spec.rb +10 -3
- data/spec/unit/indirector/resource/ral_spec.rb +40 -75
- data/spec/unit/interface/action_spec.rb +0 -9
- data/spec/unit/module_spec.rb +15 -1
- data/spec/unit/module_tool/applications/installer_spec.rb +51 -12
- data/spec/unit/network/authstore_spec.rb +0 -15
- data/spec/unit/network/formats_spec.rb +6 -0
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +15 -1
- data/spec/unit/parser/templatewrapper_spec.rb +12 -2
- data/spec/unit/pops/parser/parse_containers_spec.rb +0 -11
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +58 -0
- data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +18 -0
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +18 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
- data/spec/unit/provider/package/gem_spec.rb +1 -1
- data/spec/unit/provider/package/nim_spec.rb +42 -0
- data/spec/unit/provider/package/pip2_spec.rb +1 -1
- data/spec/unit/provider/package/pip3_spec.rb +1 -1
- data/spec/unit/provider/package/pip_spec.rb +38 -1
- data/spec/unit/provider/package/pkg_spec.rb +29 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
- data/spec/unit/provider/parsedfile_spec.rb +10 -0
- data/spec/unit/provider/service/init_spec.rb +1 -0
- data/spec/unit/provider/service/launchd_spec.rb +11 -0
- data/spec/unit/provider/service/openwrt_spec.rb +3 -1
- data/spec/unit/provider/service/systemd_spec.rb +43 -9
- data/spec/unit/provider/service/windows_spec.rb +202 -0
- data/spec/unit/provider/user/aix_spec.rb +100 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +68 -36
- data/spec/unit/provider/user/useradd_spec.rb +43 -2
- data/spec/unit/provider_spec.rb +4 -4
- data/spec/unit/puppet_spec.rb +12 -4
- data/spec/unit/resource/catalog_spec.rb +14 -1
- data/spec/unit/resource_spec.rb +58 -2
- data/spec/unit/settings_spec.rb +97 -56
- data/spec/unit/ssl/certificate_request_spec.rb +8 -14
- data/spec/unit/ssl/state_machine_spec.rb +19 -5
- data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -2
- data/spec/unit/transaction_spec.rb +18 -20
- data/spec/unit/type/exec_spec.rb +76 -29
- data/spec/unit/type/file/selinux_spec.rb +3 -3
- data/spec/unit/type/file/source_spec.rb +4 -4
- data/spec/unit/type/service_spec.rb +86 -188
- data/spec/unit/type/tidy_spec.rb +24 -7
- data/spec/unit/type/user_spec.rb +45 -0
- data/spec/unit/type_spec.rb +2 -2
- data/spec/unit/util/logging_spec.rb +2 -0
- data/spec/unit/util/selinux_spec.rb +87 -16
- data/spec/unit/util/windows/sid_spec.rb +39 -4
- data/tasks/generate_cert_fixtures.rake +12 -3
- data/tasks/parallel.rake +3 -3
- metadata +49 -95
- data/ext/README.environment +0 -8
- data/ext/dbfix.sql +0 -132
- data/ext/debian/README.Debian +0 -8
- data/ext/debian/README.source +0 -2
- data/ext/debian/TODO.Debian +0 -1
- data/ext/debian/changelog.erb +0 -1122
- data/ext/debian/compat +0 -1
- data/ext/debian/control +0 -144
- data/ext/debian/copyright +0 -339
- data/ext/debian/docs +0 -1
- data/ext/debian/fileserver.conf +0 -41
- data/ext/debian/puppet-common.dirs +0 -13
- data/ext/debian/puppet-common.install +0 -3
- data/ext/debian/puppet-common.lintian-overrides +0 -5
- data/ext/debian/puppet-common.manpages +0 -28
- data/ext/debian/puppet-common.postinst +0 -35
- data/ext/debian/puppet-common.postrm +0 -33
- data/ext/debian/puppet-el.dirs +0 -1
- data/ext/debian/puppet-el.emacsen-install +0 -25
- data/ext/debian/puppet-el.emacsen-remove +0 -11
- data/ext/debian/puppet-el.emacsen-startup +0 -9
- data/ext/debian/puppet-el.install +0 -1
- data/ext/debian/puppet-testsuite.install +0 -2
- data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
- data/ext/debian/puppet.lintian-overrides +0 -3
- data/ext/debian/puppet.logrotate +0 -20
- data/ext/debian/puppet.postinst +0 -20
- data/ext/debian/puppet.postrm +0 -20
- data/ext/debian/puppet.preinst +0 -20
- data/ext/debian/puppetmaster-common.install +0 -2
- data/ext/debian/puppetmaster-common.manpages +0 -2
- data/ext/debian/puppetmaster-common.postinst +0 -6
- data/ext/debian/puppetmaster-passenger.dirs +0 -4
- data/ext/debian/puppetmaster-passenger.postinst +0 -162
- data/ext/debian/puppetmaster-passenger.postrm +0 -61
- data/ext/debian/puppetmaster.README.debian +0 -17
- data/ext/debian/puppetmaster.default +0 -14
- data/ext/debian/puppetmaster.init +0 -137
- data/ext/debian/puppetmaster.lintian-overrides +0 -3
- data/ext/debian/puppetmaster.postinst +0 -20
- data/ext/debian/puppetmaster.postrm +0 -5
- data/ext/debian/puppetmaster.preinst +0 -22
- data/ext/debian/rules +0 -132
- data/ext/debian/source/format +0 -1
- data/ext/debian/source/options +0 -1
- data/ext/debian/vim-puppet.README.Debian +0 -13
- data/ext/debian/vim-puppet.dirs +0 -5
- data/ext/debian/vim-puppet.yaml +0 -7
- data/ext/debian/watch +0 -2
- data/ext/freebsd/puppetd +0 -26
- data/ext/freebsd/puppetmasterd +0 -26
- data/ext/gentoo/conf.d/puppet +0 -5
- data/ext/gentoo/conf.d/puppetmaster +0 -12
- data/ext/gentoo/init.d/puppet +0 -38
- data/ext/gentoo/init.d/puppetmaster +0 -51
- data/ext/gentoo/puppet/fileserver.conf +0 -41
- data/ext/ips/puppet-agent +0 -44
- data/ext/ips/puppet-master +0 -44
- data/ext/ips/puppet.p5m.erb +0 -12
- data/ext/ips/puppetagent.xml +0 -42
- data/ext/ips/puppetmaster.xml +0 -42
- data/ext/ips/rules +0 -19
- data/ext/ips/transforms +0 -34
- data/ext/ldap/puppet.schema +0 -24
- data/ext/logcheck/puppet +0 -23
- data/ext/osx/file_mapping.yaml +0 -33
- data/ext/osx/postflight.erb +0 -109
- data/ext/osx/preflight.erb +0 -52
- data/ext/osx/prototype.plist.erb +0 -38
- data/ext/redhat/fileserver.conf +0 -41
- data/ext/redhat/logrotate +0 -21
- data/ext/redhat/puppet.spec.erb +0 -842
- data/ext/redhat/server.init +0 -128
- data/ext/redhat/server.sysconfig +0 -13
- data/ext/solaris/pkginfo +0 -6
- data/ext/solaris/smf/puppetd.xml +0 -77
- data/ext/solaris/smf/puppetmasterd.xml +0 -77
- data/ext/solaris/smf/svc-puppetd +0 -71
- data/ext/solaris/smf/svc-puppetmasterd +0 -67
- data/ext/suse/puppet.spec +0 -310
- data/ext/suse/server.init +0 -173
- data/ext/yaml_nodes.rb +0 -105
- data/spec/unit/indirector/store_configs_spec.rb +0 -7
@@ -54,7 +54,7 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
|
|
54
54
|
end
|
55
55
|
|
56
56
|
# Return the first simple service status endpoint we can connect to
|
57
|
-
@server_list_setting.value.
|
57
|
+
@server_list_setting.value.each_with_index do |server, index|
|
58
58
|
host = server[0]
|
59
59
|
port = server[1] || @default_port
|
60
60
|
|
@@ -64,10 +64,21 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
|
|
64
64
|
@resolved_url = service.url
|
65
65
|
return Puppet::HTTP::Service.create_service(@client, session, name, @resolved_url.host, @resolved_url.port)
|
66
66
|
rescue Puppet::HTTP::ResponseError => detail
|
67
|
-
|
68
|
-
|
67
|
+
if index < @server_list_setting.value.length - 1
|
68
|
+
Puppet.warning(_("Puppet server %{host}:%{port} is unavailable: %{code} %{reason}") %
|
69
|
+
{ host: service.url.host, port: service.url.port, code: detail.response.code, reason: detail.response.reason } +
|
70
|
+
' ' + _("Trying with next server from server_list."))
|
71
|
+
else
|
72
|
+
Puppet.log_exception(detail, _("Puppet server %{host}:%{port} is unavailable: %{code} %{reason}") %
|
73
|
+
{ host: service.url.host, port: service.url.port, code: detail.response.code, reason: detail.response.reason })
|
74
|
+
end
|
69
75
|
rescue Puppet::HTTP::HTTPError => detail
|
70
|
-
|
76
|
+
if index < @server_list_setting.value.length - 1
|
77
|
+
Puppet.warning(_("Unable to connect to server from server_list setting: %{detail}") % {detail: detail} +
|
78
|
+
' ' + _("Trying with next server from server_list."))
|
79
|
+
else
|
80
|
+
Puppet.log_exception(detail, _("Unable to connect to server from server_list setting: %{detail}") % {detail: detail})
|
81
|
+
end
|
71
82
|
end
|
72
83
|
end
|
73
84
|
|
@@ -69,6 +69,10 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
69
69
|
# @param [String] environment The name of the environment we are operating in
|
70
70
|
# @param [String] configured_environment Optional, the name of the configured
|
71
71
|
# environment. If unset, `environment` is used.
|
72
|
+
# @param [Boolean] check_environment If true, request that the server check if
|
73
|
+
# our `environment` matches the server-specified environment. If they do not
|
74
|
+
# match, then the server may return an empty catalog in the server-specified
|
75
|
+
# environment.
|
72
76
|
# @param [String] transaction_uuid An agent generated transaction uuid, used
|
73
77
|
# for connecting catalogs and reports.
|
74
78
|
# @param [String] job_uuid A unique job identifier defined when the orchestrator
|
@@ -85,7 +89,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
85
89
|
# containing the request response and the deserialized catalog returned by
|
86
90
|
# the server
|
87
91
|
#
|
88
|
-
def post_catalog(name, facts:, environment:, configured_environment: nil, transaction_uuid: nil, job_uuid: nil, static_catalog: true, checksum_type: Puppet[:supported_checksum_types])
|
92
|
+
def post_catalog(name, facts:, environment:, configured_environment: nil, check_environment: false, transaction_uuid: nil, job_uuid: nil, static_catalog: true, checksum_type: Puppet[:supported_checksum_types])
|
89
93
|
if Puppet[:preferred_serialization_format] == "pson"
|
90
94
|
formatter = Puppet::Network::FormatHandler.format_for(:pson)
|
91
95
|
# must use 'pson' instead of 'text/pson'
|
@@ -103,6 +107,7 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
103
107
|
facts: Puppet::Util.uri_query_encode(facts_as_string),
|
104
108
|
environment: environment,
|
105
109
|
configured_environment: configured_environment || environment,
|
110
|
+
check_environment: !!check_environment,
|
106
111
|
transaction_uuid: transaction_uuid,
|
107
112
|
job_uuid: job_uuid,
|
108
113
|
static_catalog: static_catalog,
|
@@ -129,6 +134,75 @@ class Puppet::HTTP::Service::Compiler < Puppet::HTTP::Service
|
|
129
134
|
[response, deserialize(response, Puppet::Resource::Catalog)]
|
130
135
|
end
|
131
136
|
|
137
|
+
#
|
138
|
+
# @api private
|
139
|
+
#
|
140
|
+
# Submit a POST request to request a catalog to the server using v4 endpoint
|
141
|
+
#
|
142
|
+
# @param [String] certname The name of the node for which to compile the catalog.
|
143
|
+
# @param [Hash] persistent A hash containing two required keys, facts and catalog,
|
144
|
+
# which when set to true will cause the facts and reports to be stored in
|
145
|
+
# PuppetDB, or discarded if set to false.
|
146
|
+
# @param [String] environment The name of the environment for which to compile the catalog.
|
147
|
+
# @param [Hash] facts A hash with a required values key, containing a hash of all the
|
148
|
+
# facts for the node. If not provided, Puppet will attempt to fetch facts for the node
|
149
|
+
# from PuppetDB.
|
150
|
+
# @param [Hash] trusted_facts A hash with a required values key containing a hash of
|
151
|
+
# the trusted facts for a node
|
152
|
+
# @param [String] transaction_uuid The id for tracking the catalog compilation and
|
153
|
+
# report submission.
|
154
|
+
# @param [String] job_id The id of the orchestrator job that triggered this run.
|
155
|
+
# @param [Hash] options A hash of options beyond direct input to catalogs. Options:
|
156
|
+
# - prefer_requested_environment Whether to always override a node's classified
|
157
|
+
# environment with the one supplied in the request. If this is true and no environment
|
158
|
+
# is supplied, fall back to the classified environment, or finally, 'production'.
|
159
|
+
# - capture_logs Whether to return the errors and warnings that occurred during
|
160
|
+
# compilation alongside the catalog in the response body.
|
161
|
+
# - log_level The logging level to use during the compile when capture_logs is true.
|
162
|
+
# Options are 'err', 'warning', 'info', and 'debug'.
|
163
|
+
#
|
164
|
+
# @return [Array<Puppet::HTTP::Response, Puppet::Resource::Catalog, Array<String>>] An array
|
165
|
+
# containing the request response, the deserialized catalog returned by
|
166
|
+
# the server and array containing logs (log array will be empty if capture_logs is false)
|
167
|
+
#
|
168
|
+
def post_catalog4(certname, persistence:, environment:, facts: nil, trusted_facts: nil, transaction_uuid: nil, job_id: nil, options: nil)
|
169
|
+
unless persistence.is_a?(Hash) && (missing = [:facts, :catalog] - persistence.keys.map(&:to_sym)).empty?
|
170
|
+
raise ArgumentError.new("The 'persistence' hash is missing the keys: #{missing.join(', ')}")
|
171
|
+
end
|
172
|
+
raise ArgumentError.new("Facts must be a Hash not a #{facts.class}") unless facts.nil? || facts.is_a?(Hash)
|
173
|
+
body = {
|
174
|
+
certname: certname,
|
175
|
+
persistence: persistence,
|
176
|
+
environment: environment,
|
177
|
+
transaction_uuid: transaction_uuid,
|
178
|
+
job_id: job_id,
|
179
|
+
options: options
|
180
|
+
}
|
181
|
+
body[:facts] = { values: facts } unless facts.nil?
|
182
|
+
body[:trusted_facts] = { values: trusted_facts } unless trusted_facts.nil?
|
183
|
+
headers = add_puppet_headers(
|
184
|
+
'Accept' => get_mime_types(Puppet::Resource::Catalog).join(', '),
|
185
|
+
'Content-Type' => 'application/json'
|
186
|
+
)
|
187
|
+
|
188
|
+
url = URI::HTTPS.build(host: @url.host, port: @url.port, path: Puppet::Util.uri_encode("/puppet/v4/catalog"))
|
189
|
+
response = @client.post(
|
190
|
+
url,
|
191
|
+
body.to_json,
|
192
|
+
headers: headers
|
193
|
+
)
|
194
|
+
process_response(response)
|
195
|
+
begin
|
196
|
+
response_body = JSON.parse(response.body)
|
197
|
+
catalog = Puppet::Resource::Catalog.from_data_hash(response_body['catalog'])
|
198
|
+
rescue => err
|
199
|
+
raise Puppet::HTTP::SerializationError.new("Failed to deserialize catalog from puppetserver response: #{err.message}", err)
|
200
|
+
end
|
201
|
+
|
202
|
+
logs = response_body['logs'] || []
|
203
|
+
[response, catalog, logs]
|
204
|
+
end
|
205
|
+
|
132
206
|
#
|
133
207
|
# @api private
|
134
208
|
#
|
@@ -106,7 +106,7 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
|
|
106
106
|
# An array with the request response and an array of the deserialized
|
107
107
|
# metadata for each file returned from the server
|
108
108
|
#
|
109
|
-
def get_file_metadatas(path: nil, environment:, recurse: :false, recurselimit: nil, ignore: nil, links: :manage, checksum_type: Puppet[:digest_algorithm], source_permissions: :ignore)
|
109
|
+
def get_file_metadatas(path: nil, environment:, recurse: :false, recurselimit: nil, max_files: nil, ignore: nil, links: :manage, checksum_type: Puppet[:digest_algorithm], source_permissions: :ignore)
|
110
110
|
validate_path(path)
|
111
111
|
|
112
112
|
headers = add_puppet_headers('Accept' => get_mime_types(Puppet::FileServing::Metadata).join(', '))
|
@@ -117,6 +117,7 @@ class Puppet::HTTP::Service::FileServer < Puppet::HTTP::Service
|
|
117
117
|
params: {
|
118
118
|
recurse: recurse,
|
119
119
|
recurselimit: recurselimit,
|
120
|
+
max_files: max_files,
|
120
121
|
ignore: ignore,
|
121
122
|
links: links,
|
122
123
|
checksum_type: checksum_type,
|
@@ -53,8 +53,22 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
53
53
|
node.trusted_data = Puppet.lookup(:trusted_information) { Puppet::Context::TrustedInformation.local(node) }.to_h
|
54
54
|
|
55
55
|
if node.environment
|
56
|
+
# If the requested environment doesn't match the server specified environment,
|
57
|
+
# as determined by the node terminus, and the request wants us to check for an
|
58
|
+
# environment mismatch, then return an empty catalog with the server-specified
|
59
|
+
# enviroment.
|
60
|
+
if request.remote? && request.options[:check_environment] && node.environment != request.environment
|
61
|
+
return Puppet::Resource::Catalog.new(node.name, node.environment)
|
62
|
+
end
|
63
|
+
|
56
64
|
node.environment.with_text_domain do
|
57
|
-
|
65
|
+
envs = Puppet.lookup(:environments)
|
66
|
+
envs.guard(node.environment.name)
|
67
|
+
begin
|
68
|
+
compile(node, request.options)
|
69
|
+
ensure
|
70
|
+
envs.unguard(node.environment.name)
|
71
|
+
end
|
58
72
|
end
|
59
73
|
else
|
60
74
|
compile(node, request.options)
|
@@ -78,6 +92,10 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
78
92
|
Puppet.run_mode.server?
|
79
93
|
end
|
80
94
|
|
95
|
+
def require_environment?
|
96
|
+
false
|
97
|
+
end
|
98
|
+
|
81
99
|
private
|
82
100
|
|
83
101
|
# @param facts [String] facts in a wire format for decoding
|
@@ -154,7 +172,7 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
154
172
|
location = Puppet::Module::FILETYPES['files']
|
155
173
|
|
156
174
|
!!(source_as_uri.path =~ /^\/modules\// &&
|
157
|
-
metadata.full_path =~ /#{environment_path}[^\/]+\/[^\/]+\/#{location}\/.+/)
|
175
|
+
metadata.full_path =~ /#{environment_path}\/[^\/]+\/[^\/]+\/#{location}\/.+/)
|
158
176
|
end
|
159
177
|
|
160
178
|
# Helper method to log file resources that could not be inlined because they
|
@@ -173,7 +191,7 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
173
191
|
# Inline file metadata for static catalogs
|
174
192
|
# Initially restricted to files sourced from codedir via puppet:/// uri.
|
175
193
|
def inline_metadata(catalog, checksum_type)
|
176
|
-
environment_path = Pathname.new File.join(Puppet[:environmentpath], catalog.environment
|
194
|
+
environment_path = Pathname.new File.join(Puppet[:environmentpath], catalog.environment)
|
177
195
|
environment_path = Puppet::Environments::Directories.real_path(environment_path)
|
178
196
|
list_of_resources = catalog.resources.find_all { |res| res.type == "File" }
|
179
197
|
|
@@ -194,6 +212,7 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
194
212
|
:source_permissions => resource[:source_permissions] ? resource[:source_permissions].to_sym : :ignore,
|
195
213
|
:recurse => true,
|
196
214
|
:recurselimit => resource[:recurselimit],
|
215
|
+
:max_files => resource[:max_files],
|
197
216
|
:ignore => resource[:ignore],
|
198
217
|
}
|
199
218
|
|
@@ -414,17 +433,17 @@ class Puppet::Resource::Catalog::Compiler < Puppet::Indirector::Code
|
|
414
433
|
"serverip" => "ipaddress",
|
415
434
|
"serverip6" => "ipaddress6"
|
416
435
|
}.each do |var, fact|
|
417
|
-
value =
|
436
|
+
value = Puppet.runtime[:facter].value(fact)
|
418
437
|
if !value.nil?
|
419
438
|
@server_facts[var] = value
|
420
439
|
end
|
421
440
|
end
|
422
441
|
|
423
442
|
if @server_facts["servername"].nil?
|
424
|
-
host =
|
443
|
+
host = Puppet.runtime[:facter].value(:hostname)
|
425
444
|
if host.nil?
|
426
445
|
Puppet.warning _("Could not retrieve fact servername")
|
427
|
-
elsif domain =
|
446
|
+
elsif domain = Puppet.runtime[:facter].value(:domain) #rubocop:disable Lint/AssignmentInCondition
|
428
447
|
@server_facts["servername"] = [host, domain].join(".")
|
429
448
|
else
|
430
449
|
@server_facts["servername"] = host
|
@@ -20,6 +20,7 @@ class Puppet::Resource::Catalog::Rest < Puppet::Indirector::REST
|
|
20
20
|
facts: request.options[:facts_for_catalog],
|
21
21
|
environment: request.environment.to_s,
|
22
22
|
configured_environment: request.options[:configured_environment],
|
23
|
+
check_environment: request.options[:check_environment],
|
23
24
|
transaction_uuid: request.options[:transaction_uuid],
|
24
25
|
job_uuid: request.options[:job_id],
|
25
26
|
static_catalog: request.options[:static_catalog],
|
@@ -20,10 +20,10 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
20
20
|
|
21
21
|
# Lookup a host's facts up in Facter.
|
22
22
|
def find(request)
|
23
|
-
|
23
|
+
Puppet.runtime[:facter].reset
|
24
24
|
|
25
25
|
# Note: we need to setup puppet's external search paths before adding the puppetversion
|
26
|
-
# fact. This is because in Facter 2.x, the first `
|
26
|
+
# fact. This is because in Facter 2.x, the first `Puppet.runtime[:facter].add` causes Facter to create
|
27
27
|
# its directory loaders which cannot be changed, meaning other external facts won't
|
28
28
|
# be resolved. (PUP-4607)
|
29
29
|
self.class.setup_external_search_paths(request)
|
@@ -36,7 +36,7 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
36
36
|
raise(Puppet::Error, _("puppet facts show requires version 4.0.40 or greater of Facter.")) unless Facter.respond_to?(:resolve)
|
37
37
|
find_with_options(request)
|
38
38
|
else
|
39
|
-
Puppet::Node::Facts.new(request.key,
|
39
|
+
Puppet::Node::Facts.new(request.key, Puppet.runtime[:facter].to_hash)
|
40
40
|
end
|
41
41
|
|
42
42
|
result.add_local_facts unless request.options[:resolve_options]
|
@@ -68,7 +68,7 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
68
68
|
true
|
69
69
|
end
|
70
70
|
dirs << request.options[:custom_dir] if request.options[:custom_dir]
|
71
|
-
|
71
|
+
Puppet.runtime[:facter].search(*dirs)
|
72
72
|
end
|
73
73
|
|
74
74
|
def self.setup_external_search_paths(request)
|
@@ -90,7 +90,7 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
90
90
|
end
|
91
91
|
|
92
92
|
dirs << request.options[:external_dir] if request.options[:external_dir]
|
93
|
-
|
93
|
+
Puppet.runtime[:facter].search_external dirs
|
94
94
|
end
|
95
95
|
|
96
96
|
private
|
@@ -104,6 +104,6 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
104
104
|
options_for_facter += " --no-block" if options[:no_block] == false
|
105
105
|
options_for_facter += " --no-cache" if options[:no_cache] == false
|
106
106
|
|
107
|
-
Puppet::Node::Facts.new(request.key,
|
107
|
+
Puppet::Node::Facts.new(request.key, Puppet.runtime[:facter].resolve(options_for_facter))
|
108
108
|
end
|
109
109
|
end
|
@@ -46,6 +46,7 @@ class Puppet::Indirector::FileMetadata::Rest < Puppet::Indirector::REST
|
|
46
46
|
environment: request.environment.to_s,
|
47
47
|
recurse: request.options[:recurse],
|
48
48
|
recurselimit: request.options[:recurselimit],
|
49
|
+
max_files: request.options[:max_files],
|
49
50
|
ignore: request.options[:ignore],
|
50
51
|
links: request.options[:links],
|
51
52
|
checksum_type: request.options[:checksum_type],
|
@@ -313,7 +313,7 @@ class Puppet::Indirector::Indirection
|
|
313
313
|
request = request(:save, key, instance, options)
|
314
314
|
terminus = prepare(request)
|
315
315
|
|
316
|
-
result = terminus.save(request)
|
316
|
+
result = terminus.save(request) if !request.ignore_terminus?
|
317
317
|
|
318
318
|
# If caching is enabled, save our document there
|
319
319
|
cache.save(request) if cache? && !request.ignore_cache_save?
|
@@ -24,7 +24,12 @@ class Puppet::Resource::Ral < Puppet::Indirector::Code
|
|
24
24
|
type(request).instances.map do |res|
|
25
25
|
res.to_resource
|
26
26
|
end.find_all do |res|
|
27
|
-
conditions.all?
|
27
|
+
conditions.all? do |property, value|
|
28
|
+
# even though `res` is an instance of Puppet::Resource, calling
|
29
|
+
# `res[:name]` on it returns nil, and for some reason it is necessary
|
30
|
+
# to invoke the Puppet::Resource#copy_as_resource copy constructor...
|
31
|
+
res.copy_as_resource[property].to_s == value.to_s
|
32
|
+
end
|
28
33
|
end.sort_by(&:title)
|
29
34
|
end
|
30
35
|
|
data/lib/puppet/module/plan.rb
CHANGED
@@ -50,7 +50,6 @@ class Puppet::Module
|
|
50
50
|
RESERVED_DATA_TYPES = %w{any array boolean catalogentry class collection
|
51
51
|
callable data default enum float hash integer numeric optional pattern
|
52
52
|
resource runtime scalar string struct tuple type undef variant}
|
53
|
-
MOUNTS = %w[lib files plans]
|
54
53
|
|
55
54
|
def self.is_plan_name?(name)
|
56
55
|
return true if name =~ /^[a-z][a-z0-9_]*$/
|
data/lib/puppet/module/task.rb
CHANGED
data/lib/puppet/module.rb
CHANGED
@@ -59,6 +59,10 @@ module Puppet::ModuleTool
|
|
59
59
|
results = { :action => :install, :module_name => name, :module_version => version }
|
60
60
|
|
61
61
|
begin
|
62
|
+
if !@local_tarball && name !~ /-/
|
63
|
+
raise InvalidModuleNameError.new(module_name: @name, suggestion: "puppetlabs-#{@name}", action: :install)
|
64
|
+
end
|
65
|
+
|
62
66
|
installed_module = installed_modules[name]
|
63
67
|
if installed_module
|
64
68
|
unless forced?
|
@@ -134,7 +138,7 @@ module Puppet::ModuleTool
|
|
134
138
|
rescue SemanticPuppet::Dependency::UnsatisfiableGraph => e
|
135
139
|
unsatisfied = nil
|
136
140
|
|
137
|
-
if e.respond_to?(:unsatisfied)
|
141
|
+
if e.respond_to?(:unsatisfied) && e.unsatisfied
|
138
142
|
constraints = {}
|
139
143
|
# If the module we're installing satisfies all its
|
140
144
|
# dependencies, but would break an already installed
|
@@ -160,8 +164,12 @@ module Puppet::ModuleTool
|
|
160
164
|
# If the module fails to satisfy one of its
|
161
165
|
# dependencies, show the unsatisfiable module
|
162
166
|
else
|
163
|
-
|
164
|
-
|
167
|
+
dep_constraints = graph.dependencies[name].max.constraints
|
168
|
+
|
169
|
+
if dep_constraints.key?(e.unsatisfied)
|
170
|
+
unsatisfied_range = dep_constraints[e.unsatisfied].first[1]
|
171
|
+
constraints[e.unsatisfied] = unsatisfied_range
|
172
|
+
end
|
165
173
|
end
|
166
174
|
|
167
175
|
installed_module = @environment.module_by_forge_name(e.unsatisfied.tr('-', '/'))
|
@@ -171,7 +179,7 @@ module Puppet::ModuleTool
|
|
171
179
|
:name => e.unsatisfied,
|
172
180
|
:constraints => constraints,
|
173
181
|
:current_version => current_version
|
174
|
-
}
|
182
|
+
} if constraints.any?
|
175
183
|
end
|
176
184
|
|
177
185
|
raise NoVersionsSatisfyError, results.merge(
|
@@ -89,7 +89,7 @@ module Puppet::ModuleTool
|
|
89
89
|
mod = @installed.first
|
90
90
|
|
91
91
|
unless @ignore_changes
|
92
|
-
raise _("Either the `--ignore_changes` or `--force` argument must be specified to uninstall modules when running in FIPS mode.") if
|
92
|
+
raise _("Either the `--ignore_changes` or `--force` argument must be specified to uninstall modules when running in FIPS mode.") if Puppet.runtime[:facter].value(:fips_enabled)
|
93
93
|
|
94
94
|
changes = begin
|
95
95
|
Puppet::ModuleTool::Applications::Checksummer.run(mod.path)
|
@@ -27,7 +27,7 @@ module Puppet::ModuleTool
|
|
27
27
|
|
28
28
|
def run
|
29
29
|
# Disallow anything that invokes md5 to avoid un-friendly termination due to FIPS
|
30
|
-
raise _("Module upgrade is prohibited in FIPS mode.") if
|
30
|
+
raise _("Module upgrade is prohibited in FIPS mode.") if Puppet.runtime[:facter].value(:fips_enabled)
|
31
31
|
|
32
32
|
name = @name.tr('/', '-')
|
33
33
|
version = options[:version] || '>= 0.0.0'
|
@@ -127,6 +127,23 @@ module Puppet::ModuleTool::Errors
|
|
127
127
|
end
|
128
128
|
end
|
129
129
|
|
130
|
+
class InvalidModuleNameError < ModuleToolError
|
131
|
+
def initialize(options)
|
132
|
+
@module_name = options[:module_name]
|
133
|
+
@suggestion = options[:suggestion]
|
134
|
+
@action = options[:action]
|
135
|
+
super _("Could not %{action} '%{module_name}', did you mean '%{suggestion}'?") % { action: @action, module_name: @module_name, suggestion: @suggestion }
|
136
|
+
end
|
137
|
+
|
138
|
+
def multiline
|
139
|
+
message = []
|
140
|
+
message << _("Could not %{action} module '%{module_name}'") % { action: @action, module_name: @module_name }
|
141
|
+
message << _(" The name '%{module_name}' is invalid") % { module_name: @module_name }
|
142
|
+
message << _(" Did you mean `puppet module %{action} %{suggestion}`?") % { action: @action, suggestion: @suggestion }
|
143
|
+
message.join("\n")
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
130
147
|
class NotInstalledError < ModuleToolError
|
131
148
|
def initialize(options)
|
132
149
|
@module_name = options[:module_name]
|
@@ -105,7 +105,7 @@ class Puppet::Network::HTTP::API::IndirectedRoutes
|
|
105
105
|
raise Puppet::Network::HTTP::Error::HTTPNotAuthorizedError.new(e.message)
|
106
106
|
end
|
107
107
|
|
108
|
-
if configured_environment.nil?
|
108
|
+
if configured_environment.nil? && indirection.terminus.require_environment?
|
109
109
|
raise Puppet::Network::HTTP::Error::HTTPNotFoundError.new(
|
110
110
|
_("Could not find environment '%{environment}'") % { environment: environment })
|
111
111
|
end
|
@@ -305,7 +305,9 @@ class Puppet::Node::Environment
|
|
305
305
|
{}
|
306
306
|
end
|
307
307
|
modulepath.each do |path|
|
308
|
-
|
308
|
+
Puppet::FileSystem.children(path).map do |p|
|
309
|
+
Puppet::FileSystem.basename_string(p)
|
310
|
+
end.each do |name|
|
309
311
|
next unless Puppet::Module.is_module_directory?(name, path)
|
310
312
|
warn_about_mistaken_path(path, name)
|
311
313
|
if not seen_modules[name]
|
@@ -350,9 +352,6 @@ class Puppet::Node::Environment
|
|
350
352
|
|
351
353
|
# Modules broken out by directory in the modulepath
|
352
354
|
#
|
353
|
-
# @note This method _changes_ the current working directory while enumerating
|
354
|
-
# the modules. This seems rather dangerous.
|
355
|
-
#
|
356
355
|
# @api public
|
357
356
|
#
|
358
357
|
# @return [Hash<String, Array<Puppet::Module>>] A hash whose keys are file
|
@@ -361,13 +360,13 @@ class Puppet::Node::Environment
|
|
361
360
|
modules_by_path = {}
|
362
361
|
modulepath.each do |path|
|
363
362
|
if Puppet::FileSystem.exist?(path)
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
363
|
+
module_names = Puppet::FileSystem.children(path).map do |p|
|
364
|
+
Puppet::FileSystem.basename_string(p)
|
365
|
+
end.select do |name|
|
366
|
+
Puppet::Module.is_module_directory?(name, path)
|
367
|
+
end
|
368
|
+
modules_by_path[path] = module_names.sort.map do |name|
|
369
|
+
Puppet::Module.new(name, File.join(path, name), self)
|
371
370
|
end
|
372
371
|
else
|
373
372
|
modules_by_path[path] = []
|
data/lib/puppet/pal/pal_impl.rb
CHANGED
@@ -413,7 +413,7 @@ module Pal
|
|
413
413
|
|
414
414
|
# Puppet requires Facter, which initializes its lookup paths. Reset Facter to
|
415
415
|
# pickup the new $LOAD_PATH.
|
416
|
-
|
416
|
+
Puppet.runtime[:facter].reset
|
417
417
|
|
418
418
|
node = Puppet.lookup(:pal_current_node)
|
419
419
|
pal_facts = Puppet.lookup(:pal_facts)
|
@@ -2,13 +2,16 @@ require 'digest/md5'
|
|
2
2
|
require 'digest/sha2'
|
3
3
|
|
4
4
|
Puppet::Parser::Functions::newfunction(:fqdn_rand, :arity => -2, :type => :rvalue, :doc =>
|
5
|
-
"Usage: `fqdn_rand(MAX, [SEED])`. MAX is required and must be a positive
|
6
|
-
integer; SEED is optional and may be any number or string
|
5
|
+
"Usage: `fqdn_rand(MAX, [SEED], [DOWNCASE])`. MAX is required and must be a positive
|
6
|
+
integer; SEED is optional and may be any number or string; DOWNCASE is optional
|
7
|
+
and should be a boolean true or false.
|
7
8
|
|
8
9
|
Generates a random Integer number greater than or equal to 0 and less than MAX,
|
9
10
|
combining the `$fqdn` fact and the value of SEED for repeatable randomness.
|
10
11
|
(That is, each node will get a different random number from this function, but
|
11
|
-
a given node's result will be the same every time unless its hostname changes.)
|
12
|
+
a given node's result will be the same every time unless its hostname changes.) If
|
13
|
+
DOWNCASE is true, then the `fqdn` fact will be downcased when computing the value
|
14
|
+
so that the result is not sensitive to the case of the `fqdn` fact.
|
12
15
|
|
13
16
|
This function is usually used for spacing out runs of resource-intensive cron
|
14
17
|
tasks that run on many nodes, which could cause a thundering herd or degrade
|
@@ -17,7 +20,12 @@ Puppet::Parser::Functions::newfunction(:fqdn_rand, :arity => -2, :type => :rvalu
|
|
17
20
|
node. (For example, `fqdn_rand(30)`, `fqdn_rand(30, 'expensive job 1')`, and
|
18
21
|
`fqdn_rand(30, 'expensive job 2')` will produce totally different numbers.)") do |args|
|
19
22
|
max = args.shift.to_i
|
20
|
-
|
23
|
+
initial_seed = args.shift
|
24
|
+
downcase = !!args.shift
|
25
|
+
|
26
|
+
fqdn = self['::fqdn']
|
27
|
+
fqdn = fqdn.downcase if downcase
|
28
|
+
|
21
29
|
# Puppet 5.4's fqdn_rand function produces a different value than earlier versions
|
22
30
|
# for the same set of inputs.
|
23
31
|
# This causes problems because the values are often written into service configuration files.
|
@@ -27,9 +35,9 @@ Puppet::Parser::Functions::newfunction(:fqdn_rand, :arity => -2, :type => :rvalu
|
|
27
35
|
# when running on a non-FIPS enabled platform and only using SHA256 on FIPS enabled
|
28
36
|
# platforms.
|
29
37
|
if Puppet::Util::Platform.fips_enabled?
|
30
|
-
seed = Digest::SHA256.hexdigest([
|
38
|
+
seed = Digest::SHA256.hexdigest([fqdn,max,initial_seed].join(':')).hex
|
31
39
|
else
|
32
|
-
seed = Digest::MD5.hexdigest([
|
40
|
+
seed = Digest::MD5.hexdigest([fqdn,max,initial_seed].join(':')).hex
|
33
41
|
end
|
34
42
|
|
35
43
|
Puppet::Util.deterministic_rand_int(seed,max)
|
@@ -13,7 +13,7 @@ class Puppet::Parser::Resource < Puppet::Resource
|
|
13
13
|
|
14
14
|
attr_accessor :source, :scope, :collector_id
|
15
15
|
attr_accessor :virtual, :override, :translated, :catalog, :evaluated
|
16
|
-
attr_accessor :file, :line
|
16
|
+
attr_accessor :file, :line, :kind
|
17
17
|
|
18
18
|
attr_reader :exported, :parameters
|
19
19
|
|
data/lib/puppet/parser/scope.rb
CHANGED
@@ -219,16 +219,15 @@ class Closure < CallableSignature
|
|
219
219
|
def call_with_scope(scope, args)
|
220
220
|
variable_bindings = combine_values_with_parameters(scope, args)
|
221
221
|
|
222
|
-
|
223
|
-
final_args = tc.infer_set(parameters.reduce([]) do |tmp_args, param|
|
222
|
+
final_args = parameters.reduce([]) do |tmp_args, param|
|
224
223
|
if param.captures_rest
|
225
224
|
tmp_args.concat(variable_bindings[param.name])
|
226
225
|
else
|
227
226
|
tmp_args << variable_bindings[param.name]
|
228
227
|
end
|
229
|
-
end
|
228
|
+
end
|
230
229
|
|
231
|
-
if type.
|
230
|
+
if type.callable_with?(final_args, block_type)
|
232
231
|
result = catch(:next) do
|
233
232
|
@evaluator.evaluate_block_with_bindings(scope, variable_bindings, @model.body)
|
234
233
|
end
|
@@ -236,7 +235,9 @@ class Closure < CallableSignature
|
|
236
235
|
"value returned from #{closure_name}"
|
237
236
|
end
|
238
237
|
else
|
239
|
-
|
238
|
+
tc = Types::TypeCalculator.singleton
|
239
|
+
args_type = tc.infer_set(final_args)
|
240
|
+
raise ArgumentError, Types::TypeMismatchDescriber.describe_signatures(closure_name, [self], args_type)
|
240
241
|
end
|
241
242
|
end
|
242
243
|
|
@@ -309,6 +310,7 @@ class Closure < CallableSignature
|
|
309
310
|
to += param_range[1]
|
310
311
|
end
|
311
312
|
param_types = Types::PTupleType.new(types, Types::PIntegerType.new(from, to))
|
313
|
+
# The block_type for a Closure is always nil for now, see comment in block_name above
|
312
314
|
Types::PCallableType.new(param_types, nil, return_type)
|
313
315
|
end
|
314
316
|
|
@@ -40,6 +40,7 @@ module Runtime3ResourceSupport
|
|
40
40
|
:parameters => evaluated_parameters,
|
41
41
|
:file => file,
|
42
42
|
:line => line,
|
43
|
+
:kind => Puppet::Resource.to_kind(resolved_type),
|
43
44
|
:exported => exported,
|
44
45
|
:virtual => virtual,
|
45
46
|
# WTF is this? Which source is this? The file? The name of the context ?
|