puppet 6.21.1 → 6.25.0
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/CONTRIBUTING.md +5 -5
- data/Gemfile +3 -3
- data/Gemfile.lock +34 -28
- 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 +3 -2
- 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 +12 -0
- data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
- data/lib/puppet/configurer/downloader.rb +2 -1
- data/lib/puppet/configurer.rb +85 -57
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/defaults.rb +63 -35
- data/lib/puppet/environments.rb +91 -26
- data/lib/puppet/face/facts.rb +129 -31
- 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/memory_file.rb +8 -1
- data/lib/puppet/file_system/windows.rb +4 -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 +12 -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/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 +28 -7
- 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/formats.rb +67 -0
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/factory.rb +4 -0
- 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/scope.rb +1 -0
- data/lib/puppet/parser/templatewrapper.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/dnfmodule.rb +1 -1
- 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 +16 -6
- 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 +73 -17
- 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/type_collection.rb +1 -0
- data/lib/puppet/runtime.rb +11 -1
- data/lib/puppet/settings/environment_conf.rb +1 -0
- 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/fact_dif.rb +36 -17
- 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/monkey_patches.rb +7 -0
- 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/adsi.rb +46 -0
- data/lib/puppet/util/windows/api_types.rb +1 -1
- data/lib/puppet/util/windows/principal.rb +9 -2
- data/lib/puppet/util/windows/sid.rb +6 -2
- data/lib/puppet/util/windows/user.rb +0 -2
- data/lib/puppet/util.rb +4 -3
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +5 -9
- data/locales/puppet.pot +506 -410
- data/man/man5/puppet.conf.5 +310 -274
- 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 +65 -7
- 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 +5 -1
- data/man/man8/puppet-status.8 +4 -4
- data/man/man8/puppet.8 +2 -2
- 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/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +9 -0
- data/spec/integration/application/agent_spec.rb +113 -37
- data/spec/integration/application/filebucket_spec.rb +16 -0
- data/spec/integration/application/module_spec.rb +21 -0
- data/spec/integration/application/plugin_spec.rb +1 -1
- 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/http/client_spec.rb +12 -0
- data/spec/integration/indirector/direct_file_server_spec.rb +1 -3
- data/spec/integration/indirector/facts/facter_spec.rb +93 -39
- data/spec/integration/l10n/compiler_spec.rb +37 -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/adsi_spec.rb +18 -0
- data/spec/integration/util/windows/principal_spec.rb +21 -0
- data/spec/integration/util/windows/process_spec.rb +1 -9
- data/spec/integration/util/windows/registry_spec.rb +6 -0
- 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 +12 -11
- data/spec/unit/application/agent_spec.rb +7 -2
- data/spec/unit/application/apply_spec.rb +76 -56
- data/spec/unit/application/facts_spec.rb +482 -3
- data/spec/unit/application/resource_spec.rb +29 -0
- data/spec/unit/application/ssl_spec.rb +23 -0
- data/spec/unit/configurer/downloader_spec.rb +6 -0
- data/spec/unit/configurer_spec.rb +194 -56
- data/spec/unit/defaults_spec.rb +17 -0
- data/spec/unit/environments_spec.rb +348 -88
- data/spec/unit/face/facts_spec.rb +4 -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 +22 -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/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/facts/facter_spec.rb +95 -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 +47 -0
- data/spec/unit/network/http/factory_spec.rb +19 -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/dnfmodule_spec.rb +10 -1
- 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 +54 -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 +61 -5
- data/spec/unit/provider_spec.rb +4 -4
- data/spec/unit/puppet_spec.rb +12 -4
- data/spec/unit/resource/catalog_spec.rb +1 -1
- 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 +41 -0
- data/tasks/generate_cert_fixtures.rake +12 -3
- data/tasks/parallel.rake +3 -3
- metadata +51 -99
- 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/lib/matchers/include.rb +0 -27
- data/spec/lib/matchers/include_spec.rb +0 -32
- data/spec/unit/indirector/store_configs_spec.rb +0 -7
@@ -4,14 +4,22 @@
|
|
4
4
|
# the second containing the rest.
|
5
5
|
Puppet::Functions.create_function(:partition) do
|
6
6
|
# @param collection A collection of things to partition.
|
7
|
-
# @example Partition array of empty strings, results in e.g. [[''], [b, c]]
|
7
|
+
# @example Partition array of empty strings, results in e.g. `[[''], [b, c]]`
|
8
|
+
# ```puppet
|
8
9
|
# ['', b, c].partition |$s| { $s.empty }
|
9
|
-
#
|
10
|
+
# ```
|
11
|
+
# @example Partition array of strings using index, results in e.g. `[['', 'ab'], ['b']]`
|
12
|
+
# ```puppet
|
10
13
|
# ['', b, ab].partition |$i, $s| { $i == 2 or $s.empty }
|
11
|
-
#
|
14
|
+
# ```
|
15
|
+
# @example Partition hash of strings by key-value pair, results in e.g. `[[['b', []]], [['a', [1, 2]]]]`
|
16
|
+
# ```puppet
|
12
17
|
# { a => [1, 2], b => [] }.partition |$kv| { $kv[1].empty }
|
13
|
-
#
|
18
|
+
# ```
|
19
|
+
# @example Partition hash of strings by key and value, results in e.g. `[[['b', []]], [['a', [1, 2]]]]`
|
20
|
+
# ```puppet
|
14
21
|
# { a => [1, 2], b => [] }.partition |$k, $v| { $v.empty }
|
22
|
+
# ```
|
15
23
|
dispatch :partition_1 do
|
16
24
|
required_param 'Collection', :collection
|
17
25
|
block_param 'Callable[1,1]', :block
|
@@ -4,13 +4,13 @@
|
|
4
4
|
# The relationship metaparameters work well for specifying relationships
|
5
5
|
# between individual resources, but they can be clumsy for specifying
|
6
6
|
# relationships between classes. This function is a superset of the
|
7
|
-
#
|
7
|
+
# `include` function, adding a class relationship so that the requiring
|
8
8
|
# class depends on the required class.
|
9
9
|
#
|
10
|
-
# Warning: using require in place of include can lead to unwanted dependency cycles.
|
10
|
+
# Warning: using `require` in place of `include` can lead to unwanted dependency cycles.
|
11
11
|
#
|
12
|
-
# For instance the following manifest, with
|
13
|
-
# dependence cycle, because notify imposes a before between File[/foo] and Service[foo]
|
12
|
+
# For instance, the following manifest, with `require` instead of `include`, would produce a nasty
|
13
|
+
# dependence cycle, because `notify` imposes a `before` between `File[/foo]` and `Service[foo]`:
|
14
14
|
#
|
15
15
|
# ```puppet
|
16
16
|
# class myservice {
|
@@ -32,7 +32,7 @@
|
|
32
32
|
# resource and relationship expressions.
|
33
33
|
#
|
34
34
|
# - Since 4.0.0 Class and Resource types, absolute names
|
35
|
-
# - Since 4.7.0 Returns an Array[Type[Class]] with references to the required classes
|
35
|
+
# - Since 4.7.0 Returns an `Array[Type[Class]]` with references to the required classes
|
36
36
|
#
|
37
37
|
Puppet::Functions.create_function(:require, Puppet::Functions::InternalFunction) do
|
38
38
|
dispatch :require_impl do
|
@@ -2,9 +2,9 @@
|
|
2
2
|
# Please note: This function is based on Ruby String comparison and as such may not be entirely UTF8 compatible.
|
3
3
|
# To ensure compatibility please use this function with Ruby 2.4.0 or greater - https://bugs.ruby-lang.org/issues/10085.
|
4
4
|
#
|
5
|
-
# This function is compatible with the function sort() in stdlib
|
5
|
+
# This function is compatible with the function `sort()` in `stdlib`.
|
6
6
|
# * Comparison of characters in a string always uses a system locale and may not be what is expected for a particular locale
|
7
|
-
# * Sorting is based on Ruby's
|
7
|
+
# * Sorting is based on Ruby's `<=>` operator unless a lambda is given that performs the comparison.
|
8
8
|
# * comparison of strings is case dependent (use lambda with `compare($a,$b)` to ignore case)
|
9
9
|
# * comparison of mixed data types raises an error (if there is the need to sort mixed data types use a lambda)
|
10
10
|
#
|
@@ -49,7 +49,7 @@
|
|
49
49
|
# }
|
50
50
|
# })
|
51
51
|
# ```
|
52
|
-
# Would notice [2,3,'a','b']
|
52
|
+
# Would notice `[2,3,'a','b']`
|
53
53
|
#
|
54
54
|
# @since 6.0.0 - supporting a lambda to do compare
|
55
55
|
#
|
@@ -6,13 +6,13 @@
|
|
6
6
|
#
|
7
7
|
# 1. An `Array`, `Hash`, `Iterator`, or `Object` that the function will iterate over.
|
8
8
|
# 2. An optional hash with the options:
|
9
|
-
# * `include_containers` => `Optional[Boolean]` # default true - if containers should be given to the lambda
|
10
|
-
# * `include_values` => `Optional[Boolean]` # default true - if non containers should be given to the lambda
|
11
|
-
# * `include_root` => `Optional[Boolean]` # default true - if the root container should be given to the lambda
|
9
|
+
# * `include_containers` => `Optional[Boolean]` # default `true` - if containers should be given to the lambda
|
10
|
+
# * `include_values` => `Optional[Boolean]` # default `true` - if non containers should be given to the lambda
|
11
|
+
# * `include_root` => `Optional[Boolean]` # default `true` - if the root container should be given to the lambda
|
12
12
|
# * `container_type` => `Optional[Type[Variant[Array, Hash, Object]]]` # a type that determines what a container is - can only
|
13
13
|
# be set to a type that matches the default `Variant[Array, Hash, Object]`.
|
14
14
|
# * `order` => `Enum[depth_first, breadth_first]` # default ´depth_first`, the order in which elements are visited
|
15
|
-
# * `include_refs` => Optional[Boolean] # default `false`, if attributes in objects marked as bing of `reference` kind
|
15
|
+
# * `include_refs` => `Optional[Boolean]` # default `false`, if attributes in objects marked as bing of `reference` kind
|
16
16
|
# should be included.
|
17
17
|
# 3. An optional lambda, which the function calls for each element in the first argument. It must
|
18
18
|
# accept one or two arguments; either `$path`, and `$value`, or just `$value`.
|
@@ -46,14 +46,12 @@
|
|
46
46
|
# [1, [2, 3], 4]
|
47
47
|
# ```
|
48
48
|
#
|
49
|
-
#
|
50
|
-
#
|
51
|
-
# If containers are skipped:
|
49
|
+
# If containers are skipped, results in:
|
52
50
|
#
|
53
51
|
# * `depth_first` order `1`, `2`, `3`, `4`
|
54
52
|
# * `breadth_first` order `1`, `4`,`2`, `3`
|
55
53
|
#
|
56
|
-
# If containers and root
|
54
|
+
# If containers and root are included, results in:
|
57
55
|
#
|
58
56
|
# * `depth_first` order `[1, [2, 3], 4]`, `1`, `[2, 3]`, `2`, `3`, `4`
|
59
57
|
# * `breadth_first` order `[1, [2, 3], 4]`, `1`, `[2, 3]`, `4`, `2`, `3`
|
@@ -96,7 +94,7 @@
|
|
96
94
|
#
|
97
95
|
# Any Puppet Type system data type can be used to filter what is
|
98
96
|
# considered to be a container, but it must be a narrower type than one of
|
99
|
-
# the default Array
|
97
|
+
# the default `Array`, `Hash`, `Object` types - for example it is not possible to make a
|
100
98
|
# `String` be a container type.
|
101
99
|
#
|
102
100
|
# @example Only `Array` as container type
|
@@ -35,10 +35,10 @@
|
|
35
35
|
#
|
36
36
|
# Would notice the four values:
|
37
37
|
#
|
38
|
-
# 1.
|
39
|
-
# 2.
|
40
|
-
# 3.
|
41
|
-
# 4.
|
38
|
+
# 1. `Array[Numeric]`
|
39
|
+
# 2. `Array[Numeric, 2, 2]`
|
40
|
+
# 3. `Tuple[Float[3.14], Integer[42,42]]]`
|
41
|
+
# 4. `Tuple[Float[3.14], Integer[42,42]]]`
|
42
42
|
#
|
43
43
|
# @since 4.4.0
|
44
44
|
#
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# Unwraps a Sensitive value and returns the wrapped object.
|
2
|
+
# Returns the Value itself, if it is not Sensitive.
|
2
3
|
#
|
3
4
|
# @example Usage of unwrap
|
4
5
|
#
|
@@ -28,12 +29,17 @@
|
|
28
29
|
# @since 4.0.0
|
29
30
|
#
|
30
31
|
Puppet::Functions.create_function(:unwrap) do
|
31
|
-
dispatch :
|
32
|
+
dispatch :from_sensitive do
|
32
33
|
param 'Sensitive', :arg
|
33
34
|
optional_block_param
|
34
35
|
end
|
35
36
|
|
36
|
-
|
37
|
+
dispatch :from_any do
|
38
|
+
param 'Any', :arg
|
39
|
+
optional_block_param
|
40
|
+
end
|
41
|
+
|
42
|
+
def from_sensitive(arg)
|
37
43
|
unwrapped = arg.unwrap
|
38
44
|
if block_given?
|
39
45
|
yield(unwrapped)
|
@@ -41,4 +47,13 @@ Puppet::Functions.create_function(:unwrap) do
|
|
41
47
|
unwrapped
|
42
48
|
end
|
43
49
|
end
|
50
|
+
|
51
|
+
def from_any(arg)
|
52
|
+
unwrapped = arg
|
53
|
+
if block_given?
|
54
|
+
yield(unwrapped)
|
55
|
+
else
|
56
|
+
unwrapped
|
57
|
+
end
|
58
|
+
end
|
44
59
|
end
|
@@ -22,14 +22,14 @@
|
|
22
22
|
# 'hello'.upcase()
|
23
23
|
# upcase('hello')
|
24
24
|
# ```
|
25
|
-
# Would both result in "HELLO"
|
25
|
+
# Would both result in `"HELLO"`
|
26
26
|
#
|
27
27
|
# @example Converting an Array to upper case
|
28
28
|
# ```puppet
|
29
29
|
# ['a', 'b'].upcase()
|
30
30
|
# upcase(['a', 'b'])
|
31
31
|
# ```
|
32
|
-
# Would both result in ['A', 'B']
|
32
|
+
# Would both result in `['A', 'B']`
|
33
33
|
#
|
34
34
|
# @example Converting a Hash to upper case
|
35
35
|
# ```puppet
|
@@ -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)
|
@@ -32,8 +32,14 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
32
32
|
# Initialize core Puppet facts, such as puppetversion
|
33
33
|
Puppet.initialize_facts
|
34
34
|
|
35
|
-
result =
|
36
|
-
|
35
|
+
result = if request.options[:resolve_options]
|
36
|
+
raise(Puppet::Error, _("puppet facts show requires version 4.0.40 or greater of Facter.")) unless Facter.respond_to?(:resolve)
|
37
|
+
find_with_options(request)
|
38
|
+
else
|
39
|
+
Puppet::Node::Facts.new(request.key, Puppet.runtime[:facter].to_hash)
|
40
|
+
end
|
41
|
+
|
42
|
+
result.add_local_facts unless request.options[:resolve_options]
|
37
43
|
result.sanitize
|
38
44
|
result
|
39
45
|
end
|
@@ -61,8 +67,8 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
61
67
|
|
62
68
|
true
|
63
69
|
end
|
64
|
-
|
65
|
-
|
70
|
+
dirs << request.options[:custom_dir] if request.options[:custom_dir]
|
71
|
+
Puppet.runtime[:facter].search(*dirs)
|
66
72
|
end
|
67
73
|
|
68
74
|
def self.setup_external_search_paths(request)
|
@@ -83,6 +89,21 @@ class Puppet::Node::Facts::Facter < Puppet::Indirector::Code
|
|
83
89
|
dirs << dir
|
84
90
|
end
|
85
91
|
|
86
|
-
|
92
|
+
dirs << request.options[:external_dir] if request.options[:external_dir]
|
93
|
+
Puppet.runtime[:facter].search_external dirs
|
94
|
+
end
|
95
|
+
|
96
|
+
private
|
97
|
+
|
98
|
+
def find_with_options(request)
|
99
|
+
options = request.options
|
100
|
+
options_for_facter = String.new
|
101
|
+
options_for_facter += options[:user_query].join(' ')
|
102
|
+
options_for_facter += " --config #{options[:config_file]}" if options[:config_file]
|
103
|
+
options_for_facter += " --show-legacy" if options[:show_legacy]
|
104
|
+
options_for_facter += " --no-block" if options[:no_block] == false
|
105
|
+
options_for_facter += " --no-cache" if options[:no_cache] == false
|
106
|
+
|
107
|
+
Puppet::Node::Facts.new(request.key, Puppet.runtime[:facter].resolve(options_for_facter))
|
87
108
|
end
|
88
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)
|