puppet 6.14.0-universal-darwin → 6.19.0-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +2 -7
- data/Gemfile +4 -2
- data/Gemfile.lock +36 -34
- data/README.md +3 -4
- data/Rakefile +4 -12
- data/ext/windows/service/daemon.rb +3 -3
- data/lib/puppet.rb +33 -9
- data/lib/puppet/agent.rb +20 -14
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application/agent.rb +25 -9
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +5 -14
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/plugin.rb +1 -0
- data/lib/puppet/application/ssl.rb +3 -3
- data/lib/puppet/configurer.rb +68 -24
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/configurer/plugin_handler.rb +1 -1
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/context/trusted_information.rb +14 -8
- data/lib/puppet/daemon.rb +13 -27
- data/lib/puppet/defaults.rb +141 -41
- data/lib/puppet/environments.rb +55 -15
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +46 -16
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/face/help.rb +29 -3
- data/lib/puppet/face/module/search.rb +5 -0
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/plugin.rb +2 -2
- data/lib/puppet/face/status.rb +1 -1
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +14 -2
- data/lib/puppet/file_serving/metadata.rb +4 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +17 -13
- data/lib/puppet/file_system/uniquefile.rb +12 -16
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +4 -7
- data/lib/puppet/functions/call.rb +1 -1
- data/lib/puppet/functions/filter.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/new.rb +8 -3
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/rstrip.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +4 -4
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +3 -0
- data/lib/puppet/http/client.rb +215 -60
- data/lib/puppet/http/external_client.rb +90 -0
- data/lib/puppet/http/redirector.rb +43 -7
- data/lib/puppet/http/resolver.rb +43 -3
- data/lib/puppet/http/resolver/server_list.rb +66 -24
- data/lib/puppet/http/resolver/settings.rb +21 -1
- data/lib/puppet/http/resolver/srv.rb +28 -2
- data/lib/puppet/http/response.rb +82 -1
- data/lib/puppet/http/retry_after_handler.rb +39 -0
- data/lib/puppet/http/service.rb +70 -2
- data/lib/puppet/http/service/ca.rb +71 -9
- data/lib/puppet/http/service/compiler.rb +214 -12
- data/lib/puppet/http/service/file_server.rb +106 -5
- data/lib/puppet/http/service/puppetserver.rb +39 -0
- data/lib/puppet/http/service/report.rb +36 -3
- data/lib/puppet/http/session.rb +60 -8
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/catalog/rest.rb +2 -1
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/rest.rb +2 -1
- data/lib/puppet/indirector/facts/yaml.rb +1 -1
- data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
- data/lib/puppet/indirector/file_content/http.rb +5 -0
- data/lib/puppet/indirector/file_content/rest.rb +1 -1
- data/lib/puppet/indirector/file_metadata/http.rb +28 -8
- data/lib/puppet/indirector/file_metadata/rest.rb +6 -4
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/rest.rb +2 -1
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/yaml.rb +23 -0
- data/lib/puppet/indirector/request.rb +5 -5
- data/lib/puppet/indirector/rest.rb +7 -1
- data/lib/puppet/indirector/status/rest.rb +2 -1
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/metatype/manager.rb +80 -80
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/base_pool.rb +6 -1
- data/lib/puppet/network/http/compression.rb +7 -0
- data/lib/puppet/network/http/connection.rb +2 -0
- data/lib/puppet/network/http/connection_adapter.rb +184 -0
- data/lib/puppet/network/http/nocache_pool.rb +1 -0
- data/lib/puppet/network/http/pool.rb +2 -4
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +2 -1
- data/lib/puppet/node/environment.rb +22 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +30 -31
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
- data/lib/puppet/parser/compiler.rb +43 -33
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
- data/lib/puppet/parser/environment_compiler.rb +4 -1
- data/lib/puppet/parser/functions.rb +18 -9
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/functions/filter.rb +1 -0
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +24 -15
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- data/lib/puppet/pops/validation/checker4_0.rb +29 -15
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +98 -1
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dnfmodule.rb +61 -14
- data/lib/puppet/provider/package/dpkg.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +45 -9
- data/lib/puppet/provider/package/pacman.rb +2 -5
- data/lib/puppet/provider/package/pip.rb +143 -48
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/pip3.rb +0 -2
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +16 -4
- data/lib/puppet/provider/package/portage.rb +2 -2
- data/lib/puppet/provider/package/puppet_gem.rb +11 -2
- data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
- data/lib/puppet/provider/package/rpm.rb +6 -213
- data/lib/puppet/provider/package/yum.rb +101 -20
- data/lib/puppet/provider/package/zypper.rb +62 -1
- data/lib/puppet/provider/service/systemd.rb +22 -4
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +16 -5
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reports/http.rb +15 -9
- data/lib/puppet/resource.rb +2 -1
- data/lib/puppet/resource/type.rb +10 -1
- data/lib/puppet/resource/type_collection.rb +20 -16
- data/lib/puppet/rest/route.rb +2 -2
- data/lib/puppet/runtime.rb +25 -2
- data/lib/puppet/settings.rb +20 -6
- data/lib/puppet/ssl.rb +1 -0
- data/lib/puppet/ssl/host.rb +4 -4
- data/lib/puppet/ssl/oids.rb +1 -0
- data/lib/puppet/ssl/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +20 -1
- data/lib/puppet/ssl/state_machine.rb +79 -37
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/ssl/verifier_adapter.rb +9 -1
- data/lib/puppet/test/test_helper.rb +19 -14
- data/lib/puppet/transaction.rb +2 -2
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +14 -10
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +21 -8
- data/lib/puppet/type/file.rb +40 -15
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +35 -13
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +41 -3
- data/lib/puppet/type/service.rb +59 -8
- data/lib/puppet/type/user.rb +19 -29
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/at_fork.rb +1 -1
- data/lib/puppet/util/autoload.rb +13 -25
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/connection.rb +8 -8
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/instance_loader.rb +14 -10
- data/lib/puppet/util/log/destinations.rb +1 -10
- data/lib/puppet/util/package/version/debian.rb +175 -0
- data/lib/puppet/util/package/version/gem.rb +15 -0
- data/lib/puppet/util/package/version/pip.rb +167 -0
- data/lib/puppet/util/package/version/range.rb +53 -0
- data/lib/puppet/util/package/version/range/eq.rb +14 -0
- data/lib/puppet/util/package/version/range/gt.rb +14 -0
- data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/lt.rb +14 -0
- data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/min_max.rb +21 -0
- data/lib/puppet/util/package/version/range/simple.rb +11 -0
- data/lib/puppet/util/package/version/rpm.rb +73 -0
- data/lib/puppet/util/pidlock.rb +13 -7
- data/lib/puppet/util/platform.rb +5 -0
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/rpm_compare.rb +193 -0
- data/lib/puppet/util/run_mode.rb +5 -1
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/adsi.rb +2 -2
- data/lib/puppet/util/windows/api_types.rb +60 -33
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +15 -14
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +5 -4
- data/lib/puppet/util/windows/service.rb +43 -26
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/util/windows/user.rb +242 -8
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +627 -507
- data/man/man5/puppet.conf.5 +93 -20
- data/man/man8/puppet-agent.8 +7 -4
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +6 -6
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +6 -3
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +4 -1
- data/man/man8/puppet-node.8 +4 -4
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet-status.8 +2 -2
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
- data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-ca.pem +59 -0
- data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-installed.txt → dnf-module-list.txt} +8 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
- data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
- data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
- data/spec/integration/application/agent_spec.rb +479 -0
- data/spec/integration/application/apply_spec.rb +279 -150
- data/spec/integration/application/config_spec.rb +74 -0
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +239 -0
- data/spec/integration/application/help_spec.rb +42 -0
- data/spec/integration/application/lookup_spec.rb +13 -0
- data/spec/integration/application/module_spec.rb +68 -0
- data/spec/integration/application/plugin_spec.rb +123 -0
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +27 -3
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/http/client_spec.rb +39 -40
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/indirector/report/yaml.rb +83 -0
- data/spec/integration/network/http_pool_spec.rb +84 -19
- data/spec/integration/node/environment_spec.rb +15 -0
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +1 -1
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +8 -3
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/integration/util/windows/user_spec.rb +47 -5
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/https.rb +16 -7
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +127 -0
- data/spec/shared_contexts/https.rb +29 -0
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/unit/agent_spec.rb +80 -26
- data/spec/unit/application/agent_spec.rb +12 -9
- data/spec/unit/application/device_spec.rb +2 -2
- data/spec/unit/application/doc_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +41 -10
- data/spec/unit/application/filebucket_spec.rb +22 -2
- data/spec/unit/application/man_spec.rb +52 -0
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +15 -2
- data/spec/unit/application_spec.rb +9 -4
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/configurer_spec.rb +87 -38
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +25 -2
- data/spec/unit/daemon_spec.rb +5 -64
- data/spec/unit/defaults_spec.rb +24 -1
- data/spec/unit/environments_spec.rb +107 -32
- data/spec/unit/face/config_spec.rb +59 -1
- data/spec/unit/face/module/search_spec.rb +17 -0
- data/spec/unit/face/node_spec.rb +2 -2
- data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +29 -0
- data/spec/unit/file_system_spec.rb +11 -2
- data/spec/unit/http/client_spec.rb +173 -59
- data/spec/unit/http/external_client_spec.rb +201 -0
- data/spec/unit/http/resolver_spec.rb +44 -5
- data/spec/unit/http/response_spec.rb +6 -0
- data/spec/unit/http/service/ca_spec.rb +27 -5
- data/spec/unit/http/service/compiler_spec.rb +186 -9
- data/spec/unit/http/service/file_server_spec.rb +37 -6
- data/spec/unit/http/service/puppetserver_spec.rb +82 -0
- data/spec/unit/http/service/report_spec.rb +5 -4
- data/spec/unit/http/service_spec.rb +3 -4
- data/spec/unit/http/session_spec.rb +48 -12
- data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
- data/spec/unit/indirector/catalog/json_spec.rb +1 -1
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
- data/spec/unit/indirector/facts/rest_spec.rb +1 -1
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
- data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +15 -14
- data/spec/unit/indirector/json_spec.rb +8 -8
- data/spec/unit/indirector/msgpack_spec.rb +8 -8
- data/spec/unit/indirector/node/rest_spec.rb +1 -1
- data/spec/unit/indirector/request_spec.rb +5 -5
- data/spec/unit/indirector/rest_spec.rb +14 -1
- data/spec/unit/indirector/status/rest_spec.rb +1 -1
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/connection_spec.rb +552 -190
- data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
- data/spec/unit/network/http/pool_spec.rb +3 -3
- data/spec/unit/network/http_pool_spec.rb +63 -57
- data/spec/unit/network/http_spec.rb +1 -1
- data/spec/unit/node/environment_spec.rb +33 -0
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
- data/spec/unit/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
- data/spec/unit/provider/package/aix_spec.rb +29 -0
- data/spec/unit/provider/package/apt_spec.rb +107 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +54 -15
- data/spec/unit/provider/package/dpkg_spec.rb +22 -7
- data/spec/unit/provider/package/gem_spec.rb +40 -0
- data/spec/unit/provider/package/openbsd_spec.rb +2 -0
- data/spec/unit/provider/package/pacman_spec.rb +6 -21
- data/spec/unit/provider/package/pip2_spec.rb +36 -0
- data/spec/unit/provider/package/pip_spec.rb +68 -19
- data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
- data/spec/unit/provider/package/pkgng_spec.rb +38 -0
- data/spec/unit/provider/package/portage_spec.rb +5 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +12 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
- data/spec/unit/provider/package/rpm_spec.rb +0 -212
- data/spec/unit/provider/package/yum_spec.rb +274 -1
- data/spec/unit/provider/package/zypper_spec.rb +98 -0
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/bsd_spec.rb +5 -1
- data/spec/unit/provider/service/daemontools_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +3 -5
- data/spec/unit/provider/service/freebsd_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_spec.rb +4 -5
- data/spec/unit/provider/service/init_spec.rb +46 -5
- data/spec/unit/provider/service/launchd_spec.rb +5 -6
- data/spec/unit/provider/service/openbsd_spec.rb +9 -0
- data/spec/unit/provider/service/openrc_spec.rb +4 -5
- data/spec/unit/provider/service/openwrt_spec.rb +2 -1
- data/spec/unit/provider/service/redhat_spec.rb +10 -1
- data/spec/unit/provider/service/runit_spec.rb +2 -1
- data/spec/unit/provider/service/smf_spec.rb +1 -1
- data/spec/unit/provider/service/src_spec.rb +3 -5
- data/spec/unit/provider/service/systemd_spec.rb +95 -18
- data/spec/unit/provider/service/upstart_spec.rb +4 -5
- data/spec/unit/provider/service/windows_spec.rb +50 -14
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +30 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +85 -3
- data/spec/unit/puppet_pal_2pec.rb +11 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
- data/spec/unit/puppet_spec.rb +33 -0
- data/spec/unit/reports/http_spec.rb +70 -52
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource_spec.rb +3 -3
- data/spec/unit/rest/route_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +44 -22
- data/spec/unit/ssl/host_spec.rb +4 -2
- data/spec/unit/ssl/oids_spec.rb +1 -0
- data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
- data/spec/unit/ssl/state_machine_spec.rb +90 -14
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +7 -1
- data/spec/unit/type/file/source_spec.rb +4 -4
- data/spec/unit/type/file_spec.rb +122 -96
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/service_spec.rb +218 -8
- data/spec/unit/type/user_spec.rb +32 -3
- data/spec/unit/type_spec.rb +50 -0
- data/spec/unit/util/at_fork_spec.rb +2 -2
- data/spec/unit/util/autoload_spec.rb +2 -1
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/checksums_spec.rb +16 -0
- data/spec/unit/util/command_line_spec.rb +11 -6
- data/spec/unit/util/log/destinations_spec.rb +1 -29
- data/spec/unit/util/package/version/debian_spec.rb +83 -0
- data/spec/unit/util/package/version/pip_spec.rb +464 -0
- data/spec/unit/util/package/version/range_spec.rb +175 -0
- data/spec/unit/util/package/version/rpm_spec.rb +121 -0
- data/spec/unit/util/pidlock_spec.rb +83 -47
- data/spec/unit/util/rpm_compare_spec.rb +196 -0
- data/spec/unit/util/run_mode_spec.rb +6 -6
- data/spec/unit/util/windows/adsi_spec.rb +4 -4
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/spec/unit/util_spec.rb +3 -3
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- data/tasks/generate_cert_fixtures.rake +15 -1
- data/tasks/manpages.rake +5 -35
- metadata +90 -51
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/faces/plugin_spec.rb +0 -63
- data/spec/integration/file_bucket/file_spec.rb +0 -50
- data/spec/integration/file_serving/content_spec.rb +0 -7
- data/spec/integration/file_serving/fileset_spec.rb +0 -12
- data/spec/integration/file_serving/metadata_spec.rb +0 -8
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
- data/spec/integration/file_system/uniquefile_spec.rb +0 -26
- data/spec/integration/module_tool/forge_spec.rb +0 -64
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/provider/service/init_spec.rb +0 -48
- data/spec/integration/provider/service/systemd_spec.rb +0 -25
- data/spec/integration/provider/service/windows_spec.rb +0 -50
- data/spec/integration/reference/providers_spec.rb +0 -21
- data/spec/integration/reports_spec.rb +0 -13
- data/spec/integration/ssl/certificate_request_spec.rb +0 -44
- data/spec/integration/ssl/host_spec.rb +0 -72
- data/spec/integration/ssl/key_spec.rb +0 -99
- data/spec/integration/test/test_helper_spec.rb +0 -31
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/man_spec.rb +0 -31
@@ -57,7 +57,7 @@ module Puppet
|
|
57
57
|
This setting is _only_ consulted if the `path` attribute is set to `false`.
|
58
58
|
|
59
59
|
If this attribute is not specified, the first entry in the `server_list`
|
60
|
-
configuration setting is used, followed by the value of the `
|
60
|
+
configuration setting is used, followed by the value of the `serverport`
|
61
61
|
setting if `server_list` is not set."
|
62
62
|
end
|
63
63
|
|
data/lib/puppet/type/notify.rb
CHANGED
@@ -4,12 +4,12 @@
|
|
4
4
|
|
5
5
|
module Puppet
|
6
6
|
Type.newtype(:notify) do
|
7
|
-
@doc = "Sends an arbitrary message to the agent run-time log. It's important to note that the notify resource type is not idempotent. As a result, notifications are shown as a change on every Puppet run."
|
7
|
+
@doc = "Sends an arbitrary message, specified as a string, to the agent run-time log. It's important to note that the notify resource type is not idempotent. As a result, notifications are shown as a change on every Puppet run."
|
8
8
|
|
9
9
|
apply_to_all
|
10
10
|
|
11
11
|
newproperty(:message, :idempotent => false) do
|
12
|
-
desc "The message to be sent to the log."
|
12
|
+
desc "The message to be sent to the log. Note that the value specified must be a string."
|
13
13
|
def sync
|
14
14
|
message = @sensitive ? 'Sensitive [value redacted]' : self.should
|
15
15
|
case @resource["withpath"]
|
data/lib/puppet/type/package.rb
CHANGED
@@ -51,6 +51,7 @@ module Puppet
|
|
51
51
|
package database for installed version(s), and can select
|
52
52
|
which out of a set of available versions of a package to
|
53
53
|
install if asked."
|
54
|
+
feature :version_ranges, "The provider can ensure version ranges."
|
54
55
|
feature :holdable, "The provider is capable of placing packages on hold
|
55
56
|
such that they are not automatically upgraded as a result of
|
56
57
|
other package dependencies unless explicit action is taken by
|
@@ -61,6 +62,9 @@ module Puppet
|
|
61
62
|
passed to the installer command."
|
62
63
|
feature :uninstall_options, "The provider accepts options to be
|
63
64
|
passed to the uninstaller command."
|
65
|
+
feature :disableable, "The provider can disable packages. This feature is used by specifying `disabled` as the
|
66
|
+
desired value for the package.",
|
67
|
+
:methods => [:disable]
|
64
68
|
feature :supports_flavors, "The provider accepts flavors, which are specific variants of packages."
|
65
69
|
feature :package_settings, "The provider accepts package_settings to be
|
66
70
|
ensured for the given package. The meaning and format of these settings is
|
@@ -80,10 +84,12 @@ module Puppet
|
|
80
84
|
specifying `purged` as the ensure value. This defaults to `installed`.
|
81
85
|
|
82
86
|
Version numbers must match the full version to install, including
|
83
|
-
release if the provider uses a release moniker.
|
84
|
-
patterns are not accepted except for the `gem` package provider. For
|
87
|
+
release if the provider uses a release moniker. For
|
85
88
|
example, to install the bash package from the rpm
|
86
89
|
`bash-4.1.2-29.el6.x86_64.rpm`, use the string `'4.1.2-29.el6'`.
|
90
|
+
|
91
|
+
On supported providers, version ranges can also be ensured. For example,
|
92
|
+
inequalities: `<2.0.0`, or intersections: `>1.0.0 <2.0.0`.
|
87
93
|
EOT
|
88
94
|
|
89
95
|
attr_accessor :latest
|
@@ -104,6 +110,10 @@ module Puppet
|
|
104
110
|
provider.deprecated_hold
|
105
111
|
end
|
106
112
|
|
113
|
+
newvalue(:disabled, :required_features => :disableable) do
|
114
|
+
provider.disable
|
115
|
+
end
|
116
|
+
|
107
117
|
# Alias the 'present' value.
|
108
118
|
aliasvalue(:installed, :present)
|
109
119
|
|
@@ -151,7 +161,7 @@ module Puppet
|
|
151
161
|
@should.each { |should|
|
152
162
|
case should
|
153
163
|
when :present
|
154
|
-
return true unless [:absent, :purged, :held].include?(is)
|
164
|
+
return true unless [:absent, :purged, :held, :disabled].include?(is)
|
155
165
|
when :latest
|
156
166
|
# Short-circuit packages that are not present
|
157
167
|
return false if is == :absent || is == :purged
|
@@ -408,6 +418,11 @@ module Puppet
|
|
408
418
|
newproperty(:flavor, :required_features => :supports_flavors) do
|
409
419
|
desc "OpenBSD and DNF modules support 'flavors', which are
|
410
420
|
further specifications for which type of package you want."
|
421
|
+
validate do |value|
|
422
|
+
if [:disabled, "disabled"].include?(@resource[:ensure]) && value
|
423
|
+
raise ArgumentError, _('Cannot have both `ensure => disabled` and `flavor`')
|
424
|
+
end
|
425
|
+
end
|
411
426
|
end
|
412
427
|
|
413
428
|
newparam(:source) do
|
@@ -489,6 +504,29 @@ module Puppet
|
|
489
504
|
newvalues(:true, :false)
|
490
505
|
end
|
491
506
|
|
507
|
+
newparam(:enable_only, :boolean => false, :parent => Puppet::Parameter::Boolean) do
|
508
|
+
desc <<-EOT
|
509
|
+
Tells `dnf module` to only enable a specific module, instead
|
510
|
+
of installing its default profile.
|
511
|
+
|
512
|
+
Modules with no default profile will be enabled automatically
|
513
|
+
without the use of this parameter.
|
514
|
+
|
515
|
+
Conflicts with the `flavor` property, which selects a profile
|
516
|
+
to install.
|
517
|
+
EOT
|
518
|
+
defaultto false
|
519
|
+
|
520
|
+
validate do |value|
|
521
|
+
if [true, :true, "true"].include?(value) && @resource[:flavor]
|
522
|
+
raise ArgumentError, _('Cannot have both `enable_only => true` and `flavor`')
|
523
|
+
end
|
524
|
+
if [:disabled, "disabled"].include?(@resource[:ensure])
|
525
|
+
raise ArgumentError, _('Cannot have both `ensure => disabled` and `enable_only => true`')
|
526
|
+
end
|
527
|
+
end
|
528
|
+
end
|
529
|
+
|
492
530
|
newparam(:install_only, :boolean => false, :parent => Puppet::Parameter::Boolean, :required_features => :install_only) do
|
493
531
|
desc <<-EOT
|
494
532
|
It should be set for packages that should only ever be installed,
|
data/lib/puppet/type/service.rb
CHANGED
@@ -47,11 +47,17 @@ module Puppet
|
|
47
47
|
|
48
48
|
feature :configurable_timeout, "The provider can specify a minumum timeout for syncing service properties"
|
49
49
|
|
50
|
+
feature :manages_logon_credentials, "The provider can specify the logon credentials used for a service"
|
51
|
+
|
50
52
|
newproperty(:enable, :required_features => :enableable) do
|
51
53
|
desc "Whether a service should be enabled to start at boot.
|
52
54
|
This property behaves differently depending on the platform;
|
53
55
|
wherever possible, it relies on local tools to enable or disable
|
54
|
-
a given service. Default values depend on the platform.
|
56
|
+
a given service. Default values depend on the platform.
|
57
|
+
|
58
|
+
If you don't specify a value for the `enable` attribute, Puppet leaves
|
59
|
+
that aspect of the service alone and your operating system determines
|
60
|
+
the behavior."
|
55
61
|
|
56
62
|
newvalue(:true, :event => :service_enabled) do
|
57
63
|
provider.enable
|
@@ -80,14 +86,8 @@ module Puppet
|
|
80
86
|
provider.delayed_start
|
81
87
|
end
|
82
88
|
|
83
|
-
# This only makes sense on systemd systems. Static services cannot be enabled
|
84
|
-
# or disabled manually.
|
85
89
|
def insync?(current)
|
86
|
-
|
87
|
-
Puppet.debug("Unable to enable or disable static service #{@resource[:name]}")
|
88
|
-
return true
|
89
|
-
end
|
90
|
-
|
90
|
+
return provider.enabled_insync?(current) if provider.respond_to?(:enabled_insync?)
|
91
91
|
super(current)
|
92
92
|
end
|
93
93
|
|
@@ -118,6 +118,12 @@ module Puppet
|
|
118
118
|
end
|
119
119
|
|
120
120
|
def sync
|
121
|
+
property = @resource.property(:logonaccount)
|
122
|
+
if property
|
123
|
+
val = property.retrieve
|
124
|
+
property.sync unless property.safe_insync?(val)
|
125
|
+
end
|
126
|
+
|
121
127
|
event = super()
|
122
128
|
|
123
129
|
property = @resource.property(:enable)
|
@@ -130,6 +136,51 @@ module Puppet
|
|
130
136
|
end
|
131
137
|
end
|
132
138
|
|
139
|
+
newproperty(:logonaccount, :required_features => :manages_logon_credentials) do
|
140
|
+
desc "Specify an account for service logon"
|
141
|
+
|
142
|
+
munge do |value|
|
143
|
+
return value unless Puppet::Util::Platform.windows?
|
144
|
+
return 'LocalSystem' if Puppet::Util::Windows::User::localsystem?(value)
|
145
|
+
|
146
|
+
value.sub!(/^\.\\/, "#{Puppet::Util::Windows::ADSI.computer_name}\\")
|
147
|
+
user_information = Puppet::Util::Windows::SID.name_to_principal(value)
|
148
|
+
raise Puppet::Error.new("\"#{value}\" is not a valid account") unless user_information && [:SidTypeUser, :SidTypeWellKnownGroup].include?(user_information.account_type)
|
149
|
+
|
150
|
+
user_rights = Puppet::Util::Windows::User::get_rights(user_information.domain_account) unless Puppet::Util::Windows::User::default_system_account?(value)
|
151
|
+
raise Puppet::Error.new("\"#{user_information.domain_account}\" has the 'Log On As A Service' right set to denied.") if user_rights =~ /SeDenyServiceLogonRight/
|
152
|
+
raise Puppet::Error.new("\"#{user_information.domain_account}\" is missing the 'Log On As A Service' right.") unless user_rights.nil? || user_rights =~ /SeServiceLogonRight/
|
153
|
+
|
154
|
+
if user_information.domain == Puppet::Util::Windows::ADSI.computer_name
|
155
|
+
".\\#{user_information.account}"
|
156
|
+
else
|
157
|
+
user_information.domain_account
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
newparam(:logonpassword, :required_features => :manages_logon_credentials) do
|
163
|
+
desc "Specify a password for service logon. Default value is an empty string (when logonaccount is specified)."
|
164
|
+
|
165
|
+
validate do |value|
|
166
|
+
raise Puppet::Error.new(_"The 'logonaccount' parameter is mandatory when setting 'logonpassword'.") unless @resource[:logonaccount]
|
167
|
+
raise ArgumentError, _("Passwords cannot include ':'") if value.is_a?(String) and value.include?(":")
|
168
|
+
return unless Puppet::Util::Platform.windows?
|
169
|
+
|
170
|
+
is_a_predefined_local_account = Puppet::Util::Windows::User::default_system_account?(@resource[:logonaccount]) || @resource[:logonaccount] == 'LocalSystem'
|
171
|
+
|
172
|
+
account_info = @resource[:logonaccount].split("\\")
|
173
|
+
able_to_logon = Puppet::Util::Windows::User.password_is?(account_info[1], value, account_info[0]) unless is_a_predefined_local_account
|
174
|
+
|
175
|
+
raise Puppet::Error.new("The given password is invalid for user '#{@resource[:logonaccount]}'.") unless is_a_predefined_local_account || able_to_logon
|
176
|
+
|
177
|
+
provider.logonpassword=(value)
|
178
|
+
end
|
179
|
+
|
180
|
+
sensitive true
|
181
|
+
defaultto { @resource[:logonaccount] ? "" : nil }
|
182
|
+
end
|
183
|
+
|
133
184
|
newproperty(:flags, :required_features => :flaggable) do
|
134
185
|
desc "Specify a string of flags to pass to the startup script."
|
135
186
|
end
|
data/lib/puppet/type/user.rb
CHANGED
@@ -40,7 +40,10 @@ module Puppet
|
|
40
40
|
implement PBKDF2 passwords with salt properties."
|
41
41
|
|
42
42
|
feature :manages_solaris_rbac,
|
43
|
-
"The provider can manage
|
43
|
+
"The provider can manage normal users"
|
44
|
+
|
45
|
+
feature :manages_roles,
|
46
|
+
"The provider can manage roles"
|
44
47
|
|
45
48
|
feature :manages_expiry,
|
46
49
|
"The provider can manage the expiry date for a user."
|
@@ -97,6 +100,18 @@ module Puppet
|
|
97
100
|
return :absent
|
98
101
|
end
|
99
102
|
end
|
103
|
+
|
104
|
+
def sync
|
105
|
+
event = super
|
106
|
+
|
107
|
+
property = @resource.property(:roles)
|
108
|
+
if property
|
109
|
+
val = property.retrieve
|
110
|
+
property.sync unless property.safe_insync?(val)
|
111
|
+
end
|
112
|
+
|
113
|
+
event
|
114
|
+
end
|
100
115
|
end
|
101
116
|
|
102
117
|
newproperty(:home) do
|
@@ -493,26 +508,7 @@ module Puppet
|
|
493
508
|
provider.exists?
|
494
509
|
end
|
495
510
|
|
496
|
-
|
497
|
-
absent = false
|
498
|
-
properties.inject({}) { |prophash, property|
|
499
|
-
current_value = :absent
|
500
|
-
|
501
|
-
if absent
|
502
|
-
prophash[property] = :absent
|
503
|
-
else
|
504
|
-
current_value = property.retrieve
|
505
|
-
prophash[property] = current_value
|
506
|
-
end
|
507
|
-
|
508
|
-
if property.name == :ensure and current_value == :absent
|
509
|
-
absent = true
|
510
|
-
end
|
511
|
-
prophash
|
512
|
-
}
|
513
|
-
end
|
514
|
-
|
515
|
-
newproperty(:roles, :parent => Puppet::Property::List, :required_features => :manages_solaris_rbac) do
|
511
|
+
newproperty(:roles, :parent => Puppet::Property::List, :required_features => :manages_roles) do
|
516
512
|
desc "The roles the user has. Multiple roles should be
|
517
513
|
specified as an array."
|
518
514
|
|
@@ -539,7 +535,7 @@ module Puppet
|
|
539
535
|
end
|
540
536
|
|
541
537
|
reqs
|
542
|
-
end
|
538
|
+
end unless Puppet::Util::Platform.windows?
|
543
539
|
|
544
540
|
newparam(:role_membership) do
|
545
541
|
desc "Whether specified roles should be considered the **complete list**
|
@@ -755,17 +751,11 @@ module Puppet
|
|
755
751
|
value = test_sym if [:true, :false].include? test_sym
|
756
752
|
|
757
753
|
return [] if value == :false
|
758
|
-
home = resource[:home]
|
759
|
-
if value == :true and not home
|
760
|
-
raise ArgumentError, _("purge_ssh_keys can only be true for users with a defined home directory")
|
761
|
-
end
|
754
|
+
home = resource[:home] || Dir.home(resource[:name])
|
762
755
|
|
763
756
|
return [ "#{home}/.ssh/authorized_keys" ] if value == :true
|
764
757
|
# value is an array - munge each value
|
765
758
|
[ value ].flatten.map do |entry|
|
766
|
-
if entry =~ /^~|^%h/ and not home
|
767
|
-
raise ArgumentError, _("purge_ssh_keys value '%{value}' meta character ~ or %{home_placeholder} only allowed for users with a defined home directory") % { value: value, home_placeholder: '%h' }
|
768
|
-
end
|
769
759
|
# make sure frozen value is duplicated by using a gsub, second mutating gsub! is then ok
|
770
760
|
entry = entry.gsub(/^~\//, "#{home}/")
|
771
761
|
entry.gsub!(/^%h\//, "#{home}/")
|
data/lib/puppet/util.rb
CHANGED
@@ -27,7 +27,7 @@ module Util
|
|
27
27
|
extend Puppet::Util::SymbolicFileMode
|
28
28
|
|
29
29
|
def default_env
|
30
|
-
Puppet
|
30
|
+
Puppet.features.microsoft_windows? ?
|
31
31
|
:windows :
|
32
32
|
:posix
|
33
33
|
end
|
@@ -296,6 +296,11 @@ module Util
|
|
296
296
|
AbsolutePathWindows = %r!^(?:(?:[A-Z]:#{slash})|(?:#{slash}#{slash}#{label}#{slash}#{label})|(?:#{slash}#{slash}\?#{slash}#{label}))!io
|
297
297
|
AbsolutePathPosix = %r!^/!
|
298
298
|
def absolute_path?(path, platform=nil)
|
299
|
+
unless path.is_a?(String)
|
300
|
+
Puppet.warning("Cannot check if #{path} is an absolute path because it is a '#{path.class}' and not a String'")
|
301
|
+
return false
|
302
|
+
end
|
303
|
+
|
299
304
|
# Ruby only sets File::ALT_SEPARATOR on Windows and the Ruby standard
|
300
305
|
# library uses that to test what platform it's on. Normally in Puppet we
|
301
306
|
# would use Puppet.features.microsoft_windows?, but this method needs to
|
@@ -356,7 +361,7 @@ module Util
|
|
356
361
|
|
357
362
|
# CGI.unescape doesn't handle space rules properly in uri paths
|
358
363
|
# URI.unescape does, but returns strings in their original encoding
|
359
|
-
path =
|
364
|
+
path = uri_unescape(uri.path.encode(Encoding::UTF_8))
|
360
365
|
|
361
366
|
if Puppet::Util::Platform.windows? && uri.scheme == 'file'
|
362
367
|
if uri.host && !uri.host.empty?
|
@@ -460,7 +465,18 @@ module Util
|
|
460
465
|
# + should be left unencoded
|
461
466
|
# URI::parse and URI::Generic.build don't like paths encoded with CGI.escape
|
462
467
|
# URI.escape does not change / to %2F and : to %3A like CGI.escape
|
463
|
-
|
468
|
+
#
|
469
|
+
# URI.escape is obsolete in Ruby 2.7. Ignore this error until we're able to
|
470
|
+
# switch to a different escape mechanism. If this is JRuby, we can't mask
|
471
|
+
# the error message, because this isn't thread safe. JRuby shouldn't be
|
472
|
+
# using Ruby 2.7 or raising the warning anyway.
|
473
|
+
orig_verbose = $VERBOSE
|
474
|
+
$VERBOSE = nil unless Puppet::Util::Platform.jruby?
|
475
|
+
begin
|
476
|
+
encoded += URI.escape(parts[:path]) unless parts[:path].nil?
|
477
|
+
ensure
|
478
|
+
$VERBOSE = orig_verbose unless Puppet::Util::Platform.jruby?
|
479
|
+
end
|
464
480
|
|
465
481
|
# each query parameter
|
466
482
|
if !parts[:query].nil?
|
@@ -479,6 +495,15 @@ module Util
|
|
479
495
|
end
|
480
496
|
module_function :uri_encode
|
481
497
|
|
498
|
+
def uri_unescape(path)
|
499
|
+
orig_verbose = $VERBOSE
|
500
|
+
$VERBOSE = nil unless Puppet::Util::Platform.jruby?
|
501
|
+
return URI.unescape(path)
|
502
|
+
ensure
|
503
|
+
$VERBOSE = orig_verbose unless Puppet::Util::Platform.jruby?
|
504
|
+
end
|
505
|
+
module_function :uri_unescape
|
506
|
+
|
482
507
|
def safe_posix_fork(stdin=$stdin, stdout=$stdout, stderr=$stderr, &block)
|
483
508
|
child_pid = Kernel.fork do
|
484
509
|
STDIN.reopen(stdin)
|
@@ -734,6 +759,19 @@ module Util
|
|
734
759
|
Random.new(seed).rand(max)
|
735
760
|
end
|
736
761
|
module_function :deterministic_rand_int
|
762
|
+
|
763
|
+
# Executes a block of code, wrapped around Facter.load_external(false) and
|
764
|
+
# Facter.load_external(true) which will cause Facter to not evaluate external facts.
|
765
|
+
def skip_external_facts
|
766
|
+
return yield unless Facter.respond_to? :load_external
|
767
|
+
begin
|
768
|
+
Facter.load_external(false)
|
769
|
+
yield
|
770
|
+
ensure
|
771
|
+
Facter.load_external(true)
|
772
|
+
end
|
773
|
+
end
|
774
|
+
module_function :skip_external_facts
|
737
775
|
end
|
738
776
|
end
|
739
777
|
|
data/lib/puppet/util/at_fork.rb
CHANGED
@@ -13,7 +13,7 @@ require 'puppet'
|
|
13
13
|
# service.
|
14
14
|
module Puppet::Util::AtFork
|
15
15
|
@handler_class = loop do
|
16
|
-
if
|
16
|
+
if Puppet::Util::Platform.solaris?
|
17
17
|
begin
|
18
18
|
require 'puppet/util/at_fork/solaris'
|
19
19
|
# using break to return a value from the loop block
|
data/lib/puppet/util/autoload.rb
CHANGED
@@ -2,6 +2,7 @@ require 'pathname'
|
|
2
2
|
require 'puppet/util/rubygems'
|
3
3
|
require 'puppet/util/warnings'
|
4
4
|
require 'puppet/pops/adaptable'
|
5
|
+
require 'puppet/concurrent/synchronized'
|
5
6
|
|
6
7
|
# An adapter that ties the module_directories cache to the environment where the modules are parsed. This
|
7
8
|
# adapter ensures that the life-cycle of this cache doesn't exceed the life-cycle of the environment.
|
@@ -9,10 +10,21 @@ require 'puppet/pops/adaptable'
|
|
9
10
|
# @api private
|
10
11
|
class Puppet::Util::ModuleDirectoriesAdapter < Puppet::Pops::Adaptable::Adapter
|
11
12
|
attr_accessor :directories
|
13
|
+
|
14
|
+
def self.create_adapter(env)
|
15
|
+
adapter = super(env)
|
16
|
+
adapter.directories = env.modulepath.flat_map do |dir|
|
17
|
+
Dir.glob(File.join(dir, '*', 'lib'))
|
18
|
+
end
|
19
|
+
adapter
|
20
|
+
end
|
12
21
|
end
|
13
22
|
|
14
23
|
# Autoload paths, either based on names or all at once.
|
15
24
|
class Puppet::Util::Autoload
|
25
|
+
include Puppet::Concurrent::Synchronized
|
26
|
+
extend Puppet::Concurrent::Synchronized
|
27
|
+
|
16
28
|
@loaded = {}
|
17
29
|
|
18
30
|
class << self
|
@@ -115,26 +127,7 @@ class Puppet::Util::Autoload
|
|
115
127
|
def module_directories(env)
|
116
128
|
raise ArgumentError, "Autoloader requires an environment" unless env
|
117
129
|
|
118
|
-
Puppet::Util::ModuleDirectoriesAdapter.adapt(env)
|
119
|
-
a.directories ||= env.modulepath.collect do |dir|
|
120
|
-
Dir.entries(dir).reject { |f| f =~ /^\./ }.collect { |f| File.join(dir, f, "lib") }
|
121
|
-
end.flatten.find_all do |d|
|
122
|
-
FileTest.directory?(d)
|
123
|
-
end
|
124
|
-
end.directories
|
125
|
-
end
|
126
|
-
|
127
|
-
# @api private
|
128
|
-
def vendored_modules
|
129
|
-
dir = Puppet[:vendormoduledir]
|
130
|
-
if dir && File.directory?(dir)
|
131
|
-
Dir.entries(dir)
|
132
|
-
.reject { |f| f =~ /^\./ }
|
133
|
-
.collect { |f| File.join(dir, f, "lib") }
|
134
|
-
.find_all { |d| FileTest.directory?(d) }
|
135
|
-
else
|
136
|
-
[]
|
137
|
-
end
|
130
|
+
Puppet::Util::ModuleDirectoriesAdapter.adapt(env).directories
|
138
131
|
end
|
139
132
|
|
140
133
|
# @api private
|
@@ -164,11 +157,6 @@ class Puppet::Util::Autoload
|
|
164
157
|
# "app_defaults_initialized?" method on the main puppet Settings object.
|
165
158
|
# --cprice 2012-03-16
|
166
159
|
if Puppet.settings.app_defaults_initialized?
|
167
|
-
unless @initialized
|
168
|
-
$LOAD_PATH.unshift(Puppet[:libdir])
|
169
|
-
$LOAD_PATH.concat(vendored_modules)
|
170
|
-
@initialized = true
|
171
|
-
end
|
172
160
|
gem_directories + module_directories(env) + $LOAD_PATH
|
173
161
|
else
|
174
162
|
gem_directories + $LOAD_PATH
|