puppet 8.5.1-x64-mingw32 → 8.7.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +6 -2
- data/Gemfile.lock +55 -48
- data/Rakefile +45 -22
- data/examples/hiera/README.md +68 -57
- data/examples/hiera/data/common.yaml +12 -0
- data/examples/hiera/data/dc1.yaml +6 -0
- data/examples/hiera/hiera.yaml +15 -0
- data/examples/hiera/modules/ntp/data/common.yaml +4 -0
- data/examples/hiera/modules/ntp/hiera.yaml +9 -0
- data/examples/hiera/modules/ntp/manifests/config.pp +16 -4
- data/examples/hiera/modules/ntp/templates/ntp.conf.epp +3 -0
- data/examples/hiera/modules/users/manifests/common.pp +7 -2
- data/examples/hiera/modules/users/manifests/dc1.pp +7 -2
- data/examples/hiera/site.pp +1 -1
- data/ext/project_data.yaml +0 -45
- data/ext/windows/service/daemon.rb +49 -55
- data/lib/hiera/scope.rb +3 -3
- data/lib/hiera_puppet.rb +1 -1
- data/lib/puppet/agent/disabler.rb +1 -1
- data/lib/puppet/application/agent.rb +2 -2
- data/lib/puppet/application/apply.rb +2 -2
- data/lib/puppet/application/describe.rb +6 -6
- data/lib/puppet/application/device.rb +99 -100
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/face_base.rb +7 -7
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/lookup.rb +5 -5
- data/lib/puppet/application/resource.rb +10 -3
- data/lib/puppet/application/ssl.rb +3 -3
- data/lib/puppet/application.rb +16 -18
- data/lib/puppet/coercion.rb +1 -1
- data/lib/puppet/configurer/downloader.rb +9 -4
- data/lib/puppet/configurer/fact_handler.rb +12 -13
- data/lib/puppet/configurer.rb +16 -18
- data/lib/puppet/confine/feature.rb +1 -1
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine_collection.rb +1 -1
- data/lib/puppet/confiner.rb +2 -2
- data/lib/puppet/daemon.rb +4 -3
- data/lib/puppet/datatypes.rb +5 -6
- data/lib/puppet/defaults.rb +14 -8
- data/lib/puppet/environments.rb +3 -7
- data/lib/puppet/error.rb +3 -3
- data/lib/puppet/external/dot.rb +42 -34
- data/lib/puppet/face/catalog/select.rb +1 -1
- data/lib/puppet/face/epp.rb +7 -9
- data/lib/puppet/face/help.rb +12 -12
- data/lib/puppet/face/module/changes.rb +1 -3
- data/lib/puppet/face/module/list.rb +37 -37
- data/lib/puppet/face/node/clean.rb +1 -1
- data/lib/puppet/face/parser.rb +6 -8
- data/lib/puppet/face/report.rb +5 -7
- data/lib/puppet/facter_impl.rb +1 -1
- data/lib/puppet/feature/base.rb +9 -11
- data/lib/puppet/feature/pe_license.rb +1 -1
- data/lib/puppet/feature/ssh.rb +1 -1
- data/lib/puppet/feature/telnet.rb +3 -5
- data/lib/puppet/feature/zlib.rb +1 -1
- data/lib/puppet/ffi/windows/constants.rb +1 -1
- data/lib/puppet/ffi/windows/functions.rb +2 -2
- data/lib/puppet/ffi/windows/structs.rb +3 -3
- data/lib/puppet/file_bucket/dipper.rb +4 -4
- data/lib/puppet/file_bucket/file.rb +4 -4
- data/lib/puppet/file_serving/base.rb +5 -5
- data/lib/puppet/file_serving/configuration/parser.rb +9 -9
- data/lib/puppet/file_serving/configuration.rb +3 -3
- data/lib/puppet/file_serving/fileset.rb +13 -13
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/metadata.rb +13 -9
- data/lib/puppet/file_serving/mount/file.rb +6 -6
- data/lib/puppet/file_serving/mount/locales.rb +2 -4
- data/lib/puppet/file_serving/mount/pluginfacts.rb +2 -4
- data/lib/puppet/file_serving/mount/plugins.rb +2 -4
- data/lib/puppet/file_serving/mount.rb +1 -1
- data/lib/puppet/file_system/file_impl.rb +3 -3
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/path_pattern.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +17 -16
- data/lib/puppet/file_system/windows.rb +26 -18
- data/lib/puppet/forge/cache.rb +2 -2
- data/lib/puppet/forge/errors.rb +1 -1
- data/lib/puppet/forge/repository.rb +2 -2
- data/lib/puppet/forge.rb +13 -19
- data/lib/puppet/functions/abs.rb +2 -2
- data/lib/puppet/functions/camelcase.rb +1 -1
- data/lib/puppet/functions/compare.rb +2 -2
- data/lib/puppet/functions/contain.rb +1 -1
- data/lib/puppet/functions/defined.rb +2 -2
- data/lib/puppet/functions/dig.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +11 -13
- data/lib/puppet/functions/get.rb +1 -1
- data/lib/puppet/functions/hocon_data.rb +3 -5
- data/lib/puppet/functions/import.rb +1 -1
- data/lib/puppet/functions/json_data.rb +4 -6
- data/lib/puppet/functions/max.rb +2 -2
- data/lib/puppet/functions/min.rb +2 -2
- data/lib/puppet/functions/new.rb +1 -1
- data/lib/puppet/functions/reduce.rb +6 -10
- data/lib/puppet/functions/regsubst.rb +2 -2
- data/lib/puppet/functions/require.rb +1 -1
- data/lib/puppet/functions/yaml_data.rb +11 -13
- data/lib/puppet/functions.rb +32 -37
- data/lib/puppet/generate/type.rb +2 -2
- data/lib/puppet/gettext/config.rb +9 -9
- data/lib/puppet/graph/rb_tree_map.rb +31 -23
- data/lib/puppet/graph/relationship_graph.rb +12 -12
- data/lib/puppet/graph/simple_graph.rb +8 -10
- data/lib/puppet/http/client.rb +1 -1
- data/lib/puppet/http/dns.rb +4 -4
- data/lib/puppet/http/external_client.rb +1 -1
- data/lib/puppet/http/factory.rb +1 -1
- data/lib/puppet/http/proxy.rb +15 -15
- data/lib/puppet/http/redirector.rb +6 -2
- data/lib/puppet/http/resolver.rb +2 -2
- data/lib/puppet/http/retry_after_handler.rb +2 -2
- data/lib/puppet/http/service/ca.rb +1 -1
- data/lib/puppet/http/service/compiler.rb +4 -4
- data/lib/puppet/http/service/file_server.rb +1 -1
- data/lib/puppet/http/service/report.rb +2 -2
- data/lib/puppet/http/service.rb +9 -13
- data/lib/puppet/http/session.rb +1 -1
- data/lib/puppet/http/site.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +44 -45
- data/lib/puppet/indirector/catalog/rest.rb +7 -5
- data/lib/puppet/indirector/catalog/store_configs.rb +1 -1
- data/lib/puppet/indirector/exec.rb +2 -2
- data/lib/puppet/indirector/face.rb +7 -9
- data/lib/puppet/indirector/fact_search.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +6 -6
- data/lib/puppet/indirector/facts/json.rb +1 -1
- data/lib/puppet/indirector/facts/store_configs.rb +1 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +17 -17
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -3
- data/lib/puppet/indirector/file_content/rest.rb +1 -1
- data/lib/puppet/indirector/file_metadata/rest.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +1 -1
- data/lib/puppet/indirector/indirection.rb +27 -29
- data/lib/puppet/indirector/json.rb +4 -4
- data/lib/puppet/indirector/memory.rb +2 -2
- data/lib/puppet/indirector/msgpack.rb +5 -5
- data/lib/puppet/indirector/node/store_configs.rb +1 -1
- data/lib/puppet/indirector/none.rb +1 -1
- data/lib/puppet/indirector/report/json.rb +1 -1
- data/lib/puppet/indirector/report/yaml.rb +1 -1
- data/lib/puppet/indirector/request.rb +4 -4
- data/lib/puppet/indirector/resource/ral.rb +2 -4
- data/lib/puppet/indirector/resource/store_configs.rb +1 -1
- data/lib/puppet/indirector/terminus.rb +4 -4
- data/lib/puppet/indirector/yaml.rb +3 -3
- data/lib/puppet/info_service/class_information_service.rb +5 -8
- data/lib/puppet/info_service/task_information_service.rb +6 -7
- data/lib/puppet/interface/action.rb +5 -5
- data/lib/puppet/interface/action_manager.rb +5 -5
- data/lib/puppet/interface/documentation.rb +5 -5
- data/lib/puppet/interface/face_collection.rb +7 -7
- data/lib/puppet/interface/option.rb +2 -2
- data/lib/puppet/interface/option_manager.rb +6 -6
- data/lib/puppet/interface.rb +4 -4
- data/lib/puppet/metatype/manager.rb +2 -2
- data/lib/puppet/module/plan.rb +10 -10
- data/lib/puppet/module/task.rb +8 -8
- data/lib/puppet/module.rb +39 -41
- data/lib/puppet/module_tool/applications/application.rb +10 -8
- data/lib/puppet/module_tool/applications/installer.rb +53 -50
- data/lib/puppet/module_tool/applications/unpacker.rb +6 -8
- data/lib/puppet/module_tool/applications/upgrader.rb +37 -34
- data/lib/puppet/module_tool/checksums.rb +2 -2
- data/lib/puppet/module_tool/dependency.rb +1 -1
- data/lib/puppet/module_tool/errors/base.rb +1 -1
- data/lib/puppet/module_tool/install_directory.rb +1 -1
- data/lib/puppet/module_tool/local_tarball.rb +3 -5
- data/lib/puppet/module_tool/metadata.rb +12 -8
- data/lib/puppet/module_tool/shared_behaviors.rb +27 -12
- data/lib/puppet/module_tool/tar/mini.rb +3 -3
- data/lib/puppet/module_tool.rb +4 -4
- data/lib/puppet/network/client_request.rb +5 -3
- data/lib/puppet/network/format.rb +2 -2
- data/lib/puppet/network/format_support.rb +1 -1
- data/lib/puppet/network/formats.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +24 -44
- data/lib/puppet/network/http/api/server/v3.rb +1 -1
- data/lib/puppet/network/http/connection.rb +1 -1
- data/lib/puppet/network/http/handler.rb +8 -12
- data/lib/puppet/network/http/request.rb +1 -1
- data/lib/puppet/network/http/route.rb +9 -9
- data/lib/puppet/node/environment.rb +21 -23
- data/lib/puppet/node/facts.rb +1 -1
- data/lib/puppet/node.rb +5 -5
- data/lib/puppet/pal/json_catalog_encoder.rb +1 -1
- data/lib/puppet/pal/pal_impl.rb +48 -50
- data/lib/puppet/pal/plan_signature.rb +1 -1
- data/lib/puppet/pal/task_signature.rb +1 -1
- data/lib/puppet/parameter/package_options.rb +1 -1
- data/lib/puppet/parameter/value.rb +2 -2
- data/lib/puppet/parameter/value_collection.rb +7 -7
- data/lib/puppet/parameter.rb +8 -9
- data/lib/puppet/parser/ast/block_expression.rb +2 -2
- data/lib/puppet/parser/ast/hostclass.rb +1 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +3 -4
- data/lib/puppet/parser/ast/resource.rb +4 -4
- data/lib/puppet/parser/ast/resourceparam.rb +4 -4
- data/lib/puppet/parser/ast.rb +14 -15
- data/lib/puppet/parser/compiler.rb +26 -28
- data/lib/puppet/parser/functions/create_resources.rb +3 -3
- data/lib/puppet/parser/functions/fail.rb +1 -1
- data/lib/puppet/parser/functions/generate.rb +2 -2
- data/lib/puppet/parser/functions/tag.rb +1 -1
- data/lib/puppet/parser/functions.rb +2 -2
- data/lib/puppet/parser/relationship.rb +3 -1
- data/lib/puppet/parser/resource/param.rb +2 -2
- data/lib/puppet/parser/resource.rb +23 -23
- data/lib/puppet/parser/scope.rb +10 -10
- data/lib/puppet/parser/script_compiler.rb +1 -1
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +10 -12
- data/lib/puppet/parser.rb +1 -1
- data/lib/puppet/pops/adaptable.rb +1 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +8 -8
- data/lib/puppet/pops/evaluator/callable_signature.rb +4 -4
- data/lib/puppet/pops/evaluator/collector_transformer.rb +4 -4
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +7 -7
- data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +6 -6
- data/lib/puppet/pops/evaluator/compare_operator.rb +10 -10
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +1 -1
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +2 -2
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +56 -60
- data/lib/puppet/pops/evaluator/relationship_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/functions/dispatcher.rb +3 -3
- data/lib/puppet/pops/functions/function.rb +14 -16
- data/lib/puppet/pops/issue_reporter.rb +2 -2
- data/lib/puppet/pops/label_provider.rb +2 -2
- data/lib/puppet/pops/loader/dependency_loader.rb +3 -3
- data/lib/puppet/pops/loader/loader.rb +4 -4
- data/lib/puppet/pops/loader/loader_paths.rb +3 -3
- data/lib/puppet/pops/loader/module_loaders.rb +11 -11
- data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +1 -1
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -1
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +5 -1
- data/lib/puppet/pops/loader/static_loader.rb +5 -5
- data/lib/puppet/pops/loaders.rb +3 -3
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +1 -1
- data/lib/puppet/pops/lookup/explainer.rb +2 -2
- data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +15 -11
- data/lib/puppet/pops/lookup/interpolation.rb +3 -3
- data/lib/puppet/pops/lookup/key_recorder.rb +1 -1
- data/lib/puppet/pops/lookup/location_resolver.rb +1 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +7 -7
- data/lib/puppet/pops/lookup/module_data_provider.rb +9 -9
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/merge_strategy.rb +6 -6
- data/lib/puppet/pops/migration/migration_checker.rb +1 -1
- data/lib/puppet/pops/model/ast_transformer.rb +9 -11
- data/lib/puppet/pops/model/factory.rb +4 -5
- data/lib/puppet/pops/parser/epp_parser.rb +2 -2
- data/lib/puppet/pops/parser/epp_support.rb +1 -1
- data/lib/puppet/pops/parser/evaluating_parser.rb +2 -2
- data/lib/puppet/pops/parser/heredoc_support.rb +4 -4
- data/lib/puppet/pops/parser/interpolation_support.rb +3 -3
- data/lib/puppet/pops/parser/lexer2.rb +20 -12
- data/lib/puppet/pops/parser/lexer_support.rb +1 -1
- data/lib/puppet/pops/parser/locator.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +12 -14
- data/lib/puppet/pops/parser/pn_parser.rb +3 -3
- data/lib/puppet/pops/parser/slurp_support.rb +8 -8
- data/lib/puppet/pops/patterns.rb +12 -12
- data/lib/puppet/pops/pcore.rb +1 -1
- data/lib/puppet/pops/pn.rb +2 -2
- data/lib/puppet/pops/puppet_stack.rb +1 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +1 -1
- data/lib/puppet/pops/serialization/abstract_reader.rb +2 -2
- data/lib/puppet/pops/serialization/abstract_writer.rb +3 -3
- data/lib/puppet/pops/time/timestamp.rb +1 -1
- data/lib/puppet/pops/types/class_loader.rb +4 -6
- data/lib/puppet/pops/types/iterable.rb +1 -1
- data/lib/puppet/pops/types/p_binary_type.rb +1 -1
- data/lib/puppet/pops/types/p_init_type.rb +1 -1
- data/lib/puppet/pops/types/p_object_type.rb +5 -5
- data/lib/puppet/pops/types/p_object_type_extension.rb +4 -6
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +1 -1
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
- data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +10 -10
- data/lib/puppet/pops/types/p_uri_type.rb +4 -4
- data/lib/puppet/pops/types/recursion_guard.rb +4 -4
- data/lib/puppet/pops/types/ruby_generator.rb +2 -2
- data/lib/puppet/pops/types/string_converter.rb +12 -8
- data/lib/puppet/pops/types/tree_iterators.rb +4 -6
- data/lib/puppet/pops/types/type_calculator.rb +10 -10
- data/lib/puppet/pops/types/type_factory.rb +7 -3
- data/lib/puppet/pops/types/type_formatter.rb +22 -24
- data/lib/puppet/pops/types/type_mismatch_describer.rb +24 -24
- data/lib/puppet/pops/types/types.rb +28 -24
- data/lib/puppet/pops/utils.rb +38 -42
- data/lib/puppet/pops/validation/checker4_0.rb +10 -10
- data/lib/puppet/pops/validation/tasks_checker.rb +1 -1
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -1
- data/lib/puppet/pops/validation.rb +4 -4
- data/lib/puppet/pops/visitor.rb +2 -2
- data/lib/puppet/property/ensure.rb +12 -14
- data/lib/puppet/property/keyvalue.rb +4 -4
- data/lib/puppet/property/list.rb +4 -4
- data/lib/puppet/property/ordered_list.rb +1 -1
- data/lib/puppet/property.rb +31 -33
- data/lib/puppet/provider/aix_object.rb +1 -1
- data/lib/puppet/provider/exec.rb +2 -2
- data/lib/puppet/provider/file/posix.rb +19 -17
- data/lib/puppet/provider/file/windows.rb +13 -19
- data/lib/puppet/provider/group/directoryservice.rb +3 -2
- data/lib/puppet/provider/group/groupadd.rb +32 -11
- data/lib/puppet/provider/group/windows_adsi.rb +2 -2
- data/lib/puppet/provider/nameservice/directoryservice.rb +29 -29
- data/lib/puppet/provider/nameservice/objectadd.rb +2 -4
- data/lib/puppet/provider/nameservice/pw.rb +1 -2
- data/lib/puppet/provider/nameservice.rb +8 -8
- data/lib/puppet/provider/package/aix.rb +19 -19
- data/lib/puppet/provider/package/appdmg.rb +2 -2
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +18 -18
- data/lib/puppet/provider/package/aptitude.rb +1 -3
- data/lib/puppet/provider/package/aptrpm.rb +9 -9
- data/lib/puppet/provider/package/blastwave.rb +10 -14
- data/lib/puppet/provider/package/dnfmodule.rb +3 -3
- data/lib/puppet/provider/package/dpkg.rb +11 -13
- data/lib/puppet/provider/package/fink.rb +14 -14
- data/lib/puppet/provider/package/freebsd.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +12 -14
- data/lib/puppet/provider/package/macports.rb +2 -2
- data/lib/puppet/provider/package/nim.rb +10 -10
- data/lib/puppet/provider/package/openbsd.rb +22 -22
- data/lib/puppet/provider/package/opkg.rb +6 -6
- data/lib/puppet/provider/package/pacman.rb +35 -29
- data/lib/puppet/provider/package/pip.rb +25 -24
- data/lib/puppet/provider/package/pkg.rb +15 -15
- data/lib/puppet/provider/package/pkgdmg.rb +10 -10
- data/lib/puppet/provider/package/pkgin.rb +2 -2
- data/lib/puppet/provider/package/pkgng.rb +5 -5
- data/lib/puppet/provider/package/pkgutil.rb +17 -21
- data/lib/puppet/provider/package/portage.rb +59 -61
- data/lib/puppet/provider/package/ports.rb +12 -11
- data/lib/puppet/provider/package/portupgrade.rb +35 -35
- data/lib/puppet/provider/package/puppetserver_gem.rb +10 -9
- data/lib/puppet/provider/package/rpm.rb +26 -26
- data/lib/puppet/provider/package/rug.rb +7 -9
- data/lib/puppet/provider/package/sun.rb +4 -4
- data/lib/puppet/provider/package/up2date.rb +5 -7
- data/lib/puppet/provider/package/urpmi.rb +6 -6
- data/lib/puppet/provider/package/windows/exe_package.rb +7 -7
- data/lib/puppet/provider/package/windows/msi_package.rb +3 -3
- data/lib/puppet/provider/package/windows/package.rb +2 -2
- data/lib/puppet/provider/package/windows.rb +3 -5
- data/lib/puppet/provider/package/xbps.rb +127 -0
- data/lib/puppet/provider/package/yum.rb +33 -37
- data/lib/puppet/provider/package/zypper.rb +12 -14
- data/lib/puppet/provider/package.rb +1 -1
- data/lib/puppet/provider/package_targetable.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +9 -9
- data/lib/puppet/provider/service/base.rb +16 -21
- data/lib/puppet/provider/service/bsd.rb +4 -4
- data/lib/puppet/provider/service/daemontools.rb +31 -31
- data/lib/puppet/provider/service/debian.rb +6 -6
- data/lib/puppet/provider/service/freebsd.rb +36 -36
- data/lib/puppet/provider/service/gentoo.rb +6 -6
- data/lib/puppet/provider/service/init.rb +19 -19
- data/lib/puppet/provider/service/launchd.rb +22 -22
- data/lib/puppet/provider/service/openbsd.rb +10 -10
- data/lib/puppet/provider/service/openrc.rb +1 -1
- data/lib/puppet/provider/service/openwrt.rb +3 -3
- data/lib/puppet/provider/service/rcng.rb +3 -3
- data/lib/puppet/provider/service/redhat.rb +4 -4
- data/lib/puppet/provider/service/runit.rb +6 -6
- data/lib/puppet/provider/service/service.rb +5 -7
- data/lib/puppet/provider/service/smf.rb +28 -27
- data/lib/puppet/provider/service/src.rb +7 -7
- data/lib/puppet/provider/service/systemd.rb +31 -37
- data/lib/puppet/provider/service/upstart.rb +17 -17
- data/lib/puppet/provider/service/windows.rb +7 -7
- data/lib/puppet/provider/user/aix.rb +4 -2
- data/lib/puppet/provider/user/directoryservice.rb +34 -36
- data/lib/puppet/provider/user/hpux.rb +10 -14
- data/lib/puppet/provider/user/pw.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +16 -18
- data/lib/puppet/provider/user/useradd.rb +7 -7
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/provider.rb +8 -8
- data/lib/puppet/reference/indirection.rb +3 -0
- data/lib/puppet/reference/metaparameter.rb +1 -1
- data/lib/puppet/reference/providers.rb +3 -3
- data/lib/puppet/reference/type.rb +1 -1
- data/lib/puppet/relationship.rb +4 -5
- data/lib/puppet/reports/http.rb +1 -1
- data/lib/puppet/reports/log.rb +2 -2
- data/lib/puppet/reports/store.rb +4 -4
- data/lib/puppet/reports.rb +2 -2
- data/lib/puppet/resource/catalog.rb +16 -16
- data/lib/puppet/resource/status.rb +3 -3
- data/lib/puppet/resource/type.rb +8 -8
- data/lib/puppet/resource/type_collection.rb +1 -1
- data/lib/puppet/resource.rb +41 -41
- data/lib/puppet/scheduler/scheduler.rb +1 -1
- data/lib/puppet/scheduler/splay_job.rb +9 -0
- data/lib/puppet/settings/alias_setting.rb +3 -5
- data/lib/puppet/settings/base_setting.rb +11 -11
- data/lib/puppet/settings/boolean_setting.rb +2 -2
- data/lib/puppet/settings/config_file.rb +5 -4
- data/lib/puppet/settings/duration_setting.rb +2 -2
- data/lib/puppet/settings/environment_conf.rb +3 -3
- data/lib/puppet/settings/file_or_directory_setting.rb +2 -2
- data/lib/puppet/settings/file_setting.rb +11 -11
- data/lib/puppet/settings/ini_file.rb +3 -3
- data/lib/puppet/settings/port_setting.rb +1 -1
- data/lib/puppet/settings/priority_setting.rb +2 -2
- data/lib/puppet/settings/ttl_setting.rb +2 -2
- data/lib/puppet/settings/value_translator.rb +8 -8
- data/lib/puppet/settings.rb +65 -70
- data/lib/puppet/ssl/base.rb +2 -4
- data/lib/puppet/ssl/certificate_request.rb +18 -22
- data/lib/puppet/ssl/certificate_request_attributes.rb +3 -3
- data/lib/puppet/ssl/oids.rb +2 -2
- data/lib/puppet/ssl/openssl_loader.rb +4 -4
- data/lib/puppet/syntax_checkers/base64.rb +3 -3
- data/lib/puppet/syntax_checkers/epp.rb +3 -3
- data/lib/puppet/syntax_checkers/json.rb +3 -3
- data/lib/puppet/syntax_checkers/pp.rb +3 -3
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/event.rb +2 -2
- data/lib/puppet/transaction/event_manager.rb +5 -5
- data/lib/puppet/transaction/persistence.rb +12 -14
- data/lib/puppet/transaction/report.rb +4 -4
- data/lib/puppet/transaction/resource_harness.rb +2 -2
- data/lib/puppet/transaction.rb +14 -18
- data/lib/puppet/type/component.rb +3 -3
- data/lib/puppet/type/exec.rb +51 -45
- data/lib/puppet/type/file/checksum_value.rb +1 -1
- data/lib/puppet/type/file/content.rb +6 -6
- data/lib/puppet/type/file/ctime.rb +2 -2
- data/lib/puppet/type/file/data_sync.rb +3 -3
- data/lib/puppet/type/file/ensure.rb +16 -15
- data/lib/puppet/type/file/mode.rb +9 -9
- data/lib/puppet/type/file/mtime.rb +2 -2
- data/lib/puppet/type/file/selcontext.rb +14 -14
- data/lib/puppet/type/file/source.rb +19 -21
- data/lib/puppet/type/file/target.rb +11 -11
- data/lib/puppet/type/file.rb +21 -21
- data/lib/puppet/type/filebucket.rb +3 -3
- data/lib/puppet/type/group.rb +3 -3
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +4 -4
- data/lib/puppet/type/resources.rb +6 -6
- data/lib/puppet/type/schedule.rb +9 -9
- data/lib/puppet/type/service.rb +6 -8
- data/lib/puppet/type/tidy.rb +22 -24
- data/lib/puppet/type/user.rb +13 -13
- data/lib/puppet/type.rb +76 -88
- data/lib/puppet/util/at_fork/solaris.rb +33 -37
- data/lib/puppet/util/autoload.rb +2 -2
- data/lib/puppet/util/backups.rb +9 -9
- data/lib/puppet/util/character_encoding.rb +7 -6
- data/lib/puppet/util/checksums.rb +2 -2
- data/lib/puppet/util/classgen.rb +8 -8
- data/lib/puppet/util/colors.rb +1 -1
- data/lib/puppet/util/command_line/puppet_option_parser.rb +1 -1
- data/lib/puppet/util/command_line/trollop.rb +60 -46
- data/lib/puppet/util/command_line.rb +2 -2
- data/lib/puppet/util/constant_inflector.rb +2 -2
- data/lib/puppet/util/diff.rb +19 -21
- data/lib/puppet/util/docs.rb +2 -2
- data/lib/puppet/util/errors.rb +9 -9
- data/lib/puppet/util/execution.rb +32 -9
- data/lib/puppet/util/feature.rb +1 -1
- data/lib/puppet/util/fileparsing.rb +12 -16
- data/lib/puppet/util/filetype.rb +36 -40
- data/lib/puppet/util/inifile.rb +6 -12
- data/lib/puppet/util/ldap/connection.rb +1 -1
- data/lib/puppet/util/ldap/manager.rb +10 -12
- data/lib/puppet/util/lockfile.rb +6 -8
- data/lib/puppet/util/log/destination.rb +2 -2
- data/lib/puppet/util/log/destinations.rb +4 -4
- data/lib/puppet/util/log.rb +12 -9
- data/lib/puppet/util/logging.rb +11 -11
- data/lib/puppet/util/metric.rb +3 -3
- data/lib/puppet/util/monkey_patches.rb +5 -7
- data/lib/puppet/util/network_device/config.rb +3 -3
- data/lib/puppet/util/package/version/debian.rb +27 -28
- data/lib/puppet/util/package/version/pip.rb +5 -5
- data/lib/puppet/util/package/version/range/eq.rb +1 -1
- data/lib/puppet/util/package/version/rpm.rb +1 -1
- data/lib/puppet/util/package.rb +2 -2
- data/lib/puppet/util/pidlock.rb +2 -2
- data/lib/puppet/util/platform.rb +1 -1
- data/lib/puppet/util/plist.rb +8 -10
- data/lib/puppet/util/posix.rb +17 -17
- data/lib/puppet/util/profiler/aggregate.rb +1 -1
- data/lib/puppet/util/provider_features.rb +3 -3
- data/lib/puppet/util/rdoc/code_objects.rb +3 -3
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +63 -64
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +23 -23
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +12 -12
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -1
- data/lib/puppet/util/rdoc/parser.rb +1 -1
- data/lib/puppet/util/reference.rb +13 -9
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/rpm_compare.rb +18 -19
- data/lib/puppet/util/rubygems.rb +1 -1
- data/lib/puppet/util/selinux.rb +7 -7
- data/lib/puppet/util/storage.rb +10 -12
- data/lib/puppet/util/suidmanager.rb +18 -19
- data/lib/puppet/util/symbolic_file_mode.rb +71 -75
- data/lib/puppet/util/tag_set.rb +2 -2
- data/lib/puppet/util/tagging.rb +8 -10
- data/lib/puppet/util/terminal.rb +4 -4
- data/lib/puppet/util/user_attr.rb +7 -7
- data/lib/puppet/util/watcher.rb +3 -5
- data/lib/puppet/util/windows/access_control_list.rb +1 -1
- data/lib/puppet/util/windows/adsi.rb +42 -42
- data/lib/puppet/util/windows/com.rb +2 -2
- data/lib/puppet/util/windows/daemon.rb +64 -68
- data/lib/puppet/util/windows/error.rb +2 -2
- data/lib/puppet/util/windows/file.rb +18 -25
- data/lib/puppet/util/windows/monkey_patches/process.rb +1 -1
- data/lib/puppet/util/windows/principal.rb +8 -8
- data/lib/puppet/util/windows/process.rb +16 -28
- data/lib/puppet/util/windows/registry.rb +16 -15
- data/lib/puppet/util/windows/root_certs.rb +2 -2
- data/lib/puppet/util/windows/security.rb +31 -31
- data/lib/puppet/util/windows/service.rb +11 -11
- data/lib/puppet/util/windows/sid.rb +8 -8
- data/lib/puppet/util/windows/user.rb +18 -20
- data/lib/puppet/util/yaml.rb +1 -1
- data/lib/puppet/util.rb +55 -46
- data/lib/puppet/version.rb +2 -2
- data/lib/puppet/x509/pem_store.rb +1 -1
- data/lib/puppet.rb +3 -3
- data/locales/puppet.pot +604 -600
- data/man/man5/puppet.conf.5 +10 -2
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +5 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- metadata +39 -25
- data/examples/hiera/etc/hiera.yaml +0 -15
- data/examples/hiera/etc/hieradb/common.yaml +0 -3
- data/examples/hiera/etc/hieradb/dc1.yaml +0 -6
- data/examples/hiera/etc/hieradb/development.yaml +0 -2
- data/examples/hiera/etc/puppet.conf +0 -3
- data/examples/hiera/modules/data/manifests/common.pp +0 -4
- data/examples/hiera/modules/ntp/manifests/data.pp +0 -4
- data/examples/hiera/modules/ntp/templates/ntp.conf.erb +0 -3
- data/examples/hiera/modules/users/manifests/development.pp +0 -4
- data/tasks/benchmark.rake +0 -180
- data/tasks/cfpropertylist.rake +0 -15
- data/tasks/ci.rake +0 -24
- data/tasks/generate_ast_model.rake +0 -90
- data/tasks/generate_cert_fixtures.rake +0 -199
- data/tasks/manpages.rake +0 -67
- data/tasks/memwalk.rake +0 -195
- data/tasks/parallel.rake +0 -410
- data/tasks/parser.rake +0 -22
- data/tasks/yard.rake +0 -59
@@ -26,12 +26,12 @@ class Puppet::FileBucket::File
|
|
26
26
|
when Pathname
|
27
27
|
@contents = FileContents.new(contents)
|
28
28
|
else
|
29
|
-
raise ArgumentError
|
29
|
+
raise ArgumentError, _("contents must be a String or Pathname, got a %{contents_class}") % { contents_class: contents.class }
|
30
30
|
end
|
31
31
|
|
32
32
|
@bucket_path = options.delete(:bucket_path)
|
33
33
|
@checksum_type = Puppet[:digest_algorithm].to_sym
|
34
|
-
raise ArgumentError
|
34
|
+
raise ArgumentError, _("Unknown option(s): %{opts}") % { opts: options.keys.join(', ') } unless options.empty?
|
35
35
|
end
|
36
36
|
|
37
37
|
# @return [Num] The size of the contents
|
@@ -73,7 +73,7 @@ class Puppet::FileBucket::File
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def self.from_binary(contents)
|
76
|
-
|
76
|
+
new(contents)
|
77
77
|
end
|
78
78
|
|
79
79
|
class StringContents
|
@@ -102,7 +102,7 @@ class Puppet::FileBucket::File
|
|
102
102
|
def to_binary
|
103
103
|
# This is not so horrible as for FileContent, but still possible to mutate the content that the
|
104
104
|
# checksum is based on... so semi horrible...
|
105
|
-
|
105
|
+
@contents;
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
@@ -13,9 +13,9 @@ class Puppet::FileServing::Base
|
|
13
13
|
# Does our file exist?
|
14
14
|
def exist?
|
15
15
|
stat
|
16
|
-
|
16
|
+
true
|
17
17
|
rescue
|
18
|
-
|
18
|
+
false
|
19
19
|
end
|
20
20
|
|
21
21
|
# Return the full path to our file. Fails if there's no path set.
|
@@ -59,7 +59,7 @@ class Puppet::FileServing::Base
|
|
59
59
|
attr_reader :path
|
60
60
|
|
61
61
|
def path=(path)
|
62
|
-
raise ArgumentError
|
62
|
+
raise ArgumentError, _("Paths must be fully qualified") unless Puppet::FileServing::Base.absolute?(path)
|
63
63
|
|
64
64
|
@path = path
|
65
65
|
end
|
@@ -69,14 +69,14 @@ class Puppet::FileServing::Base
|
|
69
69
|
attr_reader :relative_path
|
70
70
|
|
71
71
|
def relative_path=(path)
|
72
|
-
raise ArgumentError
|
72
|
+
raise ArgumentError, _("Relative paths must not be fully qualified") if Puppet::FileServing::Base.absolute?(path)
|
73
73
|
|
74
74
|
@relative_path = path
|
75
75
|
end
|
76
76
|
|
77
77
|
# Stat our file, using the appropriate link-sensitive method.
|
78
78
|
def stat
|
79
|
-
@stat_method ||=
|
79
|
+
@stat_method ||= links == :manage ? :lstat : :stat
|
80
80
|
Puppet::FileSystem.send(@stat_method, full_path)
|
81
81
|
end
|
82
82
|
|
@@ -25,10 +25,10 @@ class Puppet::FileServing::Configuration::Parser
|
|
25
25
|
when /^\s*#/; next # skip comments
|
26
26
|
when /^\s*$/; next # skip blank lines
|
27
27
|
when /\[([-\w]+)\]/
|
28
|
-
mount = newmount(
|
28
|
+
mount = newmount(::Regexp.last_match(1))
|
29
29
|
when /^\s*(\w+)\s+(.+?)(\s*#.*)?$/
|
30
|
-
var =
|
31
|
-
value =
|
30
|
+
var = ::Regexp.last_match(1)
|
31
|
+
value = ::Regexp.last_match(2)
|
32
32
|
value.strip!
|
33
33
|
raise(ArgumentError, _("Fileserver configuration file does not use '=' as a separator")) if value =~ /^=/
|
34
34
|
|
@@ -43,13 +43,13 @@ class Puppet::FileServing::Configuration::Parser
|
|
43
43
|
end
|
44
44
|
else
|
45
45
|
error_location_str = Puppet::Util::Errors.error_location(@file.filename, @count)
|
46
|
-
raise ArgumentError
|
47
|
-
|
46
|
+
raise ArgumentError, _("Invalid argument '%{var}' at %{error_location}") %
|
47
|
+
{ var: var, error_location: error_location_str }
|
48
48
|
end
|
49
49
|
else
|
50
50
|
error_location_str = Puppet::Util::Errors.error_location(@file.filename, @count)
|
51
|
-
raise ArgumentError
|
52
|
-
|
51
|
+
raise ArgumentError, _("Invalid entry at %{error_location}: '%{file_text}'") %
|
52
|
+
{ file_text: line.chomp, error_location: error_location_str }
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
@@ -73,8 +73,8 @@ class Puppet::FileServing::Configuration::Parser
|
|
73
73
|
def newmount(name)
|
74
74
|
if @mounts.include?(name)
|
75
75
|
error_location_str = Puppet::Util::Errors.error_location(@file, @count)
|
76
|
-
raise ArgumentError
|
77
|
-
|
76
|
+
raise ArgumentError, _("%{mount} is already mounted at %{name} at %{error_location}") %
|
77
|
+
{ mount: @mounts[name], name: name, error_location: error_location_str }
|
78
78
|
end
|
79
79
|
case name
|
80
80
|
when "modules"
|
@@ -56,7 +56,7 @@ class Puppet::FileServing::Configuration
|
|
56
56
|
|
57
57
|
mount_name, path = request.key.split(File::Separator, 2)
|
58
58
|
|
59
|
-
raise(ArgumentError, _("Cannot find file: Invalid mount '%{mount_name}'") % { mount_name: mount_name }) unless mount_name =~
|
59
|
+
raise(ArgumentError, _("Cannot find file: Invalid mount '%{mount_name}'") % { mount_name: mount_name }) unless mount_name =~ /^[-\w]+$/
|
60
60
|
raise(ArgumentError, _("Cannot find file: Invalid relative path '%{path}'") % { path: path }) if path and path.split('/').include?('..')
|
61
61
|
|
62
62
|
mount = find_mount(mount_name, request.environment)
|
@@ -71,10 +71,10 @@ class Puppet::FileServing::Configuration
|
|
71
71
|
path = nil
|
72
72
|
elsif path
|
73
73
|
# Remove any double slashes that might have occurred
|
74
|
-
path = path.gsub(
|
74
|
+
path = path.gsub(%r{/+}, "/")
|
75
75
|
end
|
76
76
|
|
77
|
-
|
77
|
+
[mount, path]
|
78
78
|
end
|
79
79
|
|
80
80
|
def umount(name)
|
@@ -29,11 +29,11 @@ class Puppet::FileServing::Fileset
|
|
29
29
|
def initialize(path, options = {})
|
30
30
|
if Puppet::Util::Platform.windows?
|
31
31
|
# REMIND: UNC path
|
32
|
-
path = path.chomp(File::SEPARATOR) unless path =~
|
32
|
+
path = path.chomp(File::SEPARATOR) unless path =~ %r{^[A-Za-z]:/$}
|
33
33
|
else
|
34
34
|
path = path.chomp(File::SEPARATOR) unless path == File::SEPARATOR
|
35
35
|
end
|
36
|
-
raise ArgumentError
|
36
|
+
raise ArgumentError, _("Fileset paths must be fully qualified: %{path}") % { path: path } unless Puppet::Util.absolute_path?(path)
|
37
37
|
|
38
38
|
@path = path
|
39
39
|
|
@@ -50,9 +50,9 @@ class Puppet::FileServing::Fileset
|
|
50
50
|
initialize_from_hash(options)
|
51
51
|
end
|
52
52
|
|
53
|
-
raise ArgumentError
|
53
|
+
raise ArgumentError, _("Fileset paths must exist") unless valid?(path)
|
54
54
|
# TRANSLATORS "recurse" and "recurselimit" are parameter names and should not be translated
|
55
|
-
raise ArgumentError
|
55
|
+
raise ArgumentError, _("Fileset recurse parameter must not be a number anymore, please use recurselimit") if @recurse.is_a?(Integer)
|
56
56
|
end
|
57
57
|
|
58
58
|
# Return a list of all files in our fileset. This is different from the
|
@@ -68,7 +68,7 @@ class Puppet::FileServing::Fileset
|
|
68
68
|
munged_max_files = max_files == '-1' ? -1 : max_files
|
69
69
|
|
70
70
|
if munged_max_files > 0 && files.size > munged_max_files
|
71
|
-
raise Puppet::Error
|
71
|
+
raise Puppet::Error, _("The directory '%{path}' contains %{entries} entries, which exceeds the limit of %{munged_max_files} specified by the max_files parameter for this resource. The limit may be increased, but be aware that large number of file resources can result in excessive resource consumption and degraded performance. Consider using an alternate method to manage large directory trees") % { path: path, entries: files.size, munged_max_files: munged_max_files }
|
72
72
|
elsif munged_max_files == 0 && files.size > soft_max_files
|
73
73
|
Puppet.warning _("The directory '%{path}' contains %{entries} entries, which exceeds the default soft limit %{soft_max_files} and may cause excessive resource consumption and degraded performance. To remove this warning set a value for `max_files` parameter or consider using an alternate method to manage large directory trees") % { path: path, entries: files.size, soft_max_files: soft_max_files }
|
74
74
|
end
|
@@ -104,8 +104,8 @@ class Puppet::FileServing::Fileset
|
|
104
104
|
method = option.to_s + "="
|
105
105
|
begin
|
106
106
|
send(method, value)
|
107
|
-
rescue NoMethodError
|
108
|
-
raise ArgumentError, _("Invalid option '%{option}'") % { option: option },
|
107
|
+
rescue NoMethodError => e
|
108
|
+
raise ArgumentError, _("Invalid option '%{option}'") % { option: option }, e.backtrace
|
109
109
|
end
|
110
110
|
end
|
111
111
|
end
|
@@ -165,11 +165,11 @@ class Puppet::FileServing::Fileset
|
|
165
165
|
result = []
|
166
166
|
|
167
167
|
while entry = current_dirs.shift # rubocop:disable Lint/AssignmentInCondition
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
168
|
+
next unless continue_recursion_at?(entry.depth + 1)
|
169
|
+
|
170
|
+
entry.children.each do |child|
|
171
|
+
result << child.path
|
172
|
+
current_dirs << child
|
173
173
|
end
|
174
174
|
end
|
175
175
|
|
@@ -185,6 +185,6 @@ class Puppet::FileServing::Fileset
|
|
185
185
|
|
186
186
|
def continue_recursion_at?(depth)
|
187
187
|
# recurse if told to, and infinite recursion or current depth not at the limit
|
188
|
-
|
188
|
+
recurse && (recurselimit == :infinite || depth <= recurselimit)
|
189
189
|
end
|
190
190
|
end
|
@@ -20,7 +20,7 @@ class Puppet::FileServing::HttpMetadata < Puppet::FileServing::Metadata
|
|
20
20
|
checksum = http_response['content-md5']
|
21
21
|
if checksum
|
22
22
|
# convert base64 digest to hex
|
23
|
-
checksum = checksum.
|
23
|
+
checksum = checksum.unpack1("m").unpack1("H*")
|
24
24
|
@checksums[:md5] = "{md5}#{checksum}"
|
25
25
|
end
|
26
26
|
|
@@ -47,7 +47,7 @@ class Puppet::FileServing::Metadata < Puppet::FileServing::Base
|
|
47
47
|
|
48
48
|
def initialize(stat, source_permissions)
|
49
49
|
@stat = stat
|
50
|
-
@source_permissions_ignore =
|
50
|
+
@source_permissions_ignore = !source_permissions || source_permissions == :ignore
|
51
51
|
end
|
52
52
|
|
53
53
|
def owner
|
@@ -59,7 +59,7 @@ class Puppet::FileServing::Metadata < Puppet::FileServing::Base
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def mode
|
62
|
-
@source_permissions_ignore ?
|
62
|
+
@source_permissions_ignore ? 0o644 : @stat.mode
|
63
63
|
end
|
64
64
|
|
65
65
|
def_delegators :@stat, :ftype
|
@@ -78,9 +78,9 @@ class Puppet::FileServing::Metadata < Puppet::FileServing::Base
|
|
78
78
|
|
79
79
|
{ :owner => 'S-1-5-32-544',
|
80
80
|
:group => 'S-1-0-0',
|
81
|
-
:mode =>
|
81
|
+
:mode => 0o644 }.each do |method, default_value|
|
82
82
|
define_method method do
|
83
|
-
|
83
|
+
default_value
|
84
84
|
end
|
85
85
|
end
|
86
86
|
end
|
@@ -107,20 +107,24 @@ class Puppet::FileServing::Metadata < Puppet::FileServing::Base
|
|
107
107
|
@ftype = stat.ftype
|
108
108
|
|
109
109
|
# We have to mask the mode, yay.
|
110
|
-
@mode = stat.mode &
|
110
|
+
@mode = stat.mode & 0o07777
|
111
111
|
|
112
112
|
case stat.ftype
|
113
113
|
when "file"
|
114
|
-
@checksum =
|
114
|
+
@checksum = "{#{@checksum_type}}" + send("#{@checksum_type}_file", real_path).to_s
|
115
115
|
when "directory" # Always just timestamp the directory.
|
116
116
|
@checksum_type = "ctime"
|
117
|
-
@checksum =
|
117
|
+
@checksum = "{#{@checksum_type}}" + send("#{@checksum_type}_file", path).to_s
|
118
118
|
when "link"
|
119
119
|
@destination = Puppet::FileSystem.readlink(real_path)
|
120
|
-
@checksum =
|
120
|
+
@checksum = begin
|
121
|
+
"{#{@checksum_type}}" + send("#{@checksum_type}_file", real_path).to_s
|
122
|
+
rescue
|
123
|
+
nil
|
124
|
+
end
|
121
125
|
when "fifo", "socket"
|
122
126
|
@checksum_type = "none"
|
123
|
-
@checksum =
|
127
|
+
@checksum = "{#{@checksum_type}}" + send("#{@checksum_type}_file", real_path).to_s
|
124
128
|
else
|
125
129
|
raise ArgumentError, _("Cannot manage files of type %{file_type}") % { file_type: stat.ftype }
|
126
130
|
end
|
@@ -17,14 +17,14 @@ class Puppet::FileServing::Mount::File < Puppet::FileServing::Mount
|
|
17
17
|
def complete_path(relative_path, node)
|
18
18
|
full_path = path(node)
|
19
19
|
|
20
|
-
raise ArgumentError
|
20
|
+
raise ArgumentError, _("Mounts without paths are not usable") unless full_path
|
21
21
|
|
22
22
|
# If there's no relative path name, then we're serving the mount itself.
|
23
23
|
return full_path unless relative_path
|
24
24
|
|
25
25
|
file = ::File.join(full_path, relative_path)
|
26
26
|
|
27
|
-
|
27
|
+
unless Puppet::FileSystem.exist?(file) or Puppet::FileSystem.symlink?(file)
|
28
28
|
Puppet.info(_("File does not exist or is not accessible: %{file}") % { file: file })
|
29
29
|
return nil
|
30
30
|
end
|
@@ -40,9 +40,9 @@ class Puppet::FileServing::Mount::File < Puppet::FileServing::Mount
|
|
40
40
|
# Return the path as appropriate, expanding as necessary.
|
41
41
|
def path(node = nil)
|
42
42
|
if expandable?
|
43
|
-
|
43
|
+
expand(@path, node)
|
44
44
|
else
|
45
|
-
|
45
|
+
@path
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -72,7 +72,7 @@ class Puppet::FileServing::Mount::File < Puppet::FileServing::Mount
|
|
72
72
|
# Verify our configuration is valid. This should really check to
|
73
73
|
# make sure at least someone will be allowed, but, eh.
|
74
74
|
def validate
|
75
|
-
raise ArgumentError
|
75
|
+
raise ArgumentError, _("Mounts without paths are not usable") if @path.nil?
|
76
76
|
end
|
77
77
|
|
78
78
|
private
|
@@ -100,7 +100,7 @@ class Puppet::FileServing::Mount::File < Puppet::FileServing::Mount
|
|
100
100
|
end
|
101
101
|
|
102
102
|
path.gsub(/%(.)/) do |v|
|
103
|
-
key =
|
103
|
+
key = ::Regexp.last_match(1)
|
104
104
|
if key == "%"
|
105
105
|
"%"
|
106
106
|
else
|
@@ -11,15 +11,13 @@ class Puppet::FileServing::Mount::Locales < Puppet::FileServing::Mount
|
|
11
11
|
mod = request.environment.modules.find { |m| m.locale(relative_path) }
|
12
12
|
return nil unless mod
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
path
|
14
|
+
mod.locale(relative_path)
|
17
15
|
end
|
18
16
|
|
19
17
|
def search(relative_path, request)
|
20
18
|
# We currently only support one kind of search on locales - return
|
21
19
|
# them all.
|
22
|
-
paths = request.environment.modules.find_all
|
20
|
+
paths = request.environment.modules.find_all(&:locales?).collect(&:locale_directory)
|
23
21
|
if paths.empty?
|
24
22
|
# If the modulepath is valid then we still need to return a valid root
|
25
23
|
# directory for the search, but make sure nothing inside it is
|
@@ -11,15 +11,13 @@ class Puppet::FileServing::Mount::PluginFacts < Puppet::FileServing::Mount
|
|
11
11
|
mod = request.environment.modules.find { |m| m.pluginfact(relative_path) }
|
12
12
|
return nil unless mod
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
path
|
14
|
+
mod.pluginfact(relative_path)
|
17
15
|
end
|
18
16
|
|
19
17
|
def search(relative_path, request)
|
20
18
|
# We currently only support one kind of search on plugins - return
|
21
19
|
# them all.
|
22
|
-
paths = request.environment.modules.find_all
|
20
|
+
paths = request.environment.modules.find_all(&:pluginfacts?).collect(&:plugin_fact_directory)
|
23
21
|
if paths.empty?
|
24
22
|
# If the modulepath is valid then we still need to return a valid root
|
25
23
|
# directory for the search, but make sure nothing inside it is
|
@@ -11,15 +11,13 @@ class Puppet::FileServing::Mount::Plugins < Puppet::FileServing::Mount
|
|
11
11
|
mod = request.environment.modules.find { |m| m.plugin(relative_path) }
|
12
12
|
return nil unless mod
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
path
|
14
|
+
mod.plugin(relative_path)
|
17
15
|
end
|
18
16
|
|
19
17
|
def search(relative_path, request)
|
20
18
|
# We currently only support one kind of search on plugins - return
|
21
19
|
# them all.
|
22
|
-
paths = request.environment.modules.find_all
|
20
|
+
paths = request.environment.modules.find_all(&:plugins?).collect(&:plugin_directory)
|
23
21
|
if paths.empty?
|
24
22
|
# If the modulepath is valid then we still need to return a valid root
|
25
23
|
# directory for the search, but make sure nothing inside it is
|
@@ -52,7 +52,7 @@ class Puppet::FileSystem::FileImpl
|
|
52
52
|
def exclusive_open(path, mode, options = 'r', timeout = 300, &block)
|
53
53
|
wait = 0.001 + (Kernel.rand / 1000)
|
54
54
|
written = false
|
55
|
-
|
55
|
+
until written
|
56
56
|
::File.open(path, options, mode) do |rf|
|
57
57
|
if rf.flock(::File::LOCK_EX | ::File::LOCK_NB)
|
58
58
|
Puppet.debug { _("Locked '%{path}'") % { path: path } }
|
@@ -163,9 +163,9 @@ class Puppet::FileSystem::FileImpl
|
|
163
163
|
stat = lstat(path)
|
164
164
|
gid = stat.gid
|
165
165
|
uid = stat.uid
|
166
|
-
mode ||= stat.mode &
|
166
|
+
mode ||= stat.mode & 0o7777
|
167
167
|
rescue Errno::ENOENT
|
168
|
-
mode ||=
|
168
|
+
mode ||= 0o640
|
169
169
|
end
|
170
170
|
|
171
171
|
tempfile = Puppet::FileSystem::Uniquefile.new(Puppet::FileSystem.basename_string(path), Puppet::FileSystem.dir_string(path))
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'English'
|
3
4
|
require_relative '../../puppet/file_system'
|
4
5
|
require 'delegate'
|
5
6
|
require 'tmpdir'
|
@@ -29,7 +30,7 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
|
|
29
30
|
def initialize(basename, *rest)
|
30
31
|
create_tmpname(basename, *rest) do |tmpname, _n, opts|
|
31
32
|
mode = File::RDWR | File::CREAT | File::EXCL
|
32
|
-
perm =
|
33
|
+
perm = 0o600
|
33
34
|
if opts
|
34
35
|
mode |= opts.delete(:mode) || 0
|
35
36
|
opts[:perm] = perm
|
@@ -57,11 +58,9 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
|
|
57
58
|
end
|
58
59
|
|
59
60
|
def _close
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
@tmpfile = nil
|
64
|
-
end
|
61
|
+
@tmpfile.close if @tmpfile
|
62
|
+
ensure
|
63
|
+
@tmpfile = nil
|
65
64
|
end
|
66
65
|
protected :_close
|
67
66
|
|
@@ -112,7 +111,7 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
|
|
112
111
|
raise ArgumentError, _("unexpected prefix_suffix: %{value}") % { value: prefix_suffix.inspect }
|
113
112
|
end
|
114
113
|
t = Time.now.strftime("%Y%m%d")
|
115
|
-
path = "#{prefix}#{t}-#{
|
114
|
+
path = "#{prefix}#{t}-#{$PROCESS_ID}-#{rand(0x100000000).to_s(36)}"
|
116
115
|
path << "-#{n}" if n
|
117
116
|
path << suffix
|
118
117
|
end
|
@@ -142,11 +141,9 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
|
|
142
141
|
end
|
143
142
|
|
144
143
|
def try_convert_to_hash(h)
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
nil
|
149
|
-
end
|
144
|
+
h.to_hash
|
145
|
+
rescue NoMethodError
|
146
|
+
nil
|
150
147
|
end
|
151
148
|
|
152
149
|
@@systmpdir ||= defined?(Etc.systmpdir) ? Etc.systmpdir : '/tmp'
|
@@ -155,10 +152,14 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
|
|
155
152
|
tmp = '.'
|
156
153
|
[ENV.fetch('TMPDIR', nil), ENV.fetch('TMP', nil), ENV.fetch('TEMP', nil), @@systmpdir, '/tmp'].each do |dir|
|
157
154
|
stat = File.stat(dir) if dir
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
155
|
+
begin
|
156
|
+
if stat && stat.directory? && stat.writable?
|
157
|
+
tmp = dir
|
158
|
+
break
|
159
|
+
end
|
160
|
+
rescue
|
161
|
+
nil
|
162
|
+
end
|
162
163
|
end
|
163
164
|
File.expand_path(tmp)
|
164
165
|
end
|
@@ -11,7 +11,7 @@ class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
|
|
11
11
|
# PUP-6959 mode is explicitly ignored until it can be implemented
|
12
12
|
# Ruby on Windows uses mode for setting file attributes like read-only and
|
13
13
|
# archived, not for setting permissions like POSIX
|
14
|
-
raise TypeError
|
14
|
+
raise TypeError, 'mode must be specified as an Integer' if mode && !mode.is_a?(Numeric)
|
15
15
|
|
16
16
|
::File.open(path, options, nil, &block)
|
17
17
|
end
|
@@ -20,7 +20,7 @@ class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
|
|
20
20
|
# ensure `nil` values behave like underlying File.expand_path
|
21
21
|
string_path = ::File.expand_path(path.nil? ? nil : path_string(path), dir_string)
|
22
22
|
# if no tildes, nothing to expand, no need to call Windows API, return original string
|
23
|
-
return string_path
|
23
|
+
return string_path unless string_path.index('~')
|
24
24
|
|
25
25
|
begin
|
26
26
|
# no need to do existence check up front as GetLongPathName implies that check is performed
|
@@ -28,15 +28,15 @@ class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
|
|
28
28
|
string_path = Puppet::Util::Windows::File.get_long_pathname(string_path)
|
29
29
|
rescue Puppet::Util::Windows::Error => e
|
30
30
|
# preserve original File.expand_path behavior for file / path not found by returning string
|
31
|
-
raise if
|
32
|
-
|
31
|
+
raise if e.code != Puppet::Util::Windows::File::ERROR_FILE_NOT_FOUND &&
|
32
|
+
e.code != Puppet::Util::Windows::File::ERROR_PATH_NOT_FOUND
|
33
33
|
end
|
34
34
|
|
35
35
|
string_path
|
36
36
|
end
|
37
37
|
|
38
38
|
def exist?(path)
|
39
|
-
|
39
|
+
Puppet::Util::Windows::File.exist?(path)
|
40
40
|
end
|
41
41
|
|
42
42
|
def symlink(path, dest, options = {})
|
@@ -61,7 +61,7 @@ class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def symlink?(path)
|
64
|
-
return false
|
64
|
+
return false unless Puppet.features.manages_symlinks?
|
65
65
|
|
66
66
|
Puppet::Util::Windows::File.symlink?(path)
|
67
67
|
end
|
@@ -72,22 +72,30 @@ class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def unlink(*file_names)
|
75
|
-
|
75
|
+
unless Puppet.features.manages_symlinks?
|
76
76
|
return ::File.unlink(*file_names)
|
77
77
|
end
|
78
78
|
|
79
79
|
file_names.each do |file_name|
|
80
80
|
file_name = file_name.to_s # handle PathName
|
81
|
-
stat =
|
81
|
+
stat = begin
|
82
|
+
Puppet::Util::Windows::File.stat(file_name)
|
83
|
+
rescue
|
84
|
+
nil
|
85
|
+
end
|
82
86
|
|
83
87
|
# sigh, Ruby + Windows :(
|
84
88
|
if !stat
|
85
|
-
|
89
|
+
begin
|
90
|
+
::File.unlink(file_name)
|
91
|
+
rescue
|
92
|
+
Dir.rmdir(file_name)
|
93
|
+
end
|
86
94
|
elsif stat.ftype == 'directory'
|
87
95
|
if Puppet::Util::Windows::File.symlink?(file_name)
|
88
96
|
Dir.rmdir(file_name)
|
89
97
|
else
|
90
|
-
raise Errno::EPERM
|
98
|
+
raise Errno::EPERM, file_name
|
91
99
|
end
|
92
100
|
else
|
93
101
|
::File.unlink(file_name)
|
@@ -102,7 +110,7 @@ class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
|
|
102
110
|
end
|
103
111
|
|
104
112
|
def lstat(path)
|
105
|
-
|
113
|
+
unless Puppet.features.manages_symlinks?
|
106
114
|
return Puppet::Util::Windows::File.stat(path)
|
107
115
|
end
|
108
116
|
|
@@ -133,14 +141,14 @@ class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
|
|
133
141
|
end
|
134
142
|
|
135
143
|
current_sid = Puppet::Util::Windows::SID.name_to_sid(Puppet::Util::Windows::ADSI::User.current_user_name)
|
136
|
-
current_sid
|
144
|
+
current_sid ||= Puppet::Util::Windows::SID.name_to_sid(Puppet::Util::Windows::ADSI::User.current_sam_compatible_user_name)
|
137
145
|
|
138
146
|
dacl = case mode
|
139
|
-
when
|
147
|
+
when 0o644
|
140
148
|
dacl = secure_dacl(current_sid)
|
141
149
|
dacl.allow(Puppet::Util::Windows::SID::BuiltinUsers, FILE_READ)
|
142
150
|
dacl
|
143
|
-
when
|
151
|
+
when 0o660, 0o640, 0o600, 0o440
|
144
152
|
secure_dacl(current_sid)
|
145
153
|
when nil
|
146
154
|
get_dacl_from_file(path) || secure_dacl(current_sid)
|
@@ -172,7 +180,7 @@ class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
|
|
172
180
|
when ACCESS_DENIED, SHARING_VIOLATION, LOCK_VIOLATION
|
173
181
|
raise Errno::EACCES.new(path_string(path), e)
|
174
182
|
else
|
175
|
-
raise SystemCallError
|
183
|
+
raise SystemCallError, e.message
|
176
184
|
end
|
177
185
|
end
|
178
186
|
|
@@ -204,12 +212,12 @@ class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
|
|
204
212
|
end
|
205
213
|
|
206
214
|
def raise_if_symlinks_unsupported
|
207
|
-
|
215
|
+
unless Puppet.features.manages_symlinks?
|
208
216
|
msg = _("This version of Windows does not support symlinks. Windows Vista / 2008 or higher is required.")
|
209
|
-
raise Puppet::Util::Windows::Error
|
217
|
+
raise Puppet::Util::Windows::Error, msg
|
210
218
|
end
|
211
219
|
|
212
|
-
|
220
|
+
unless Puppet::Util::Windows::Process.process_privilege_symlink?
|
213
221
|
Puppet.warning _("The current user does not have the necessary permission to manage symlinks.")
|
214
222
|
end
|
215
223
|
end
|
data/lib/puppet/forge/cache.rb
CHANGED
@@ -38,12 +38,12 @@ class Puppet::Forge
|
|
38
38
|
|
39
39
|
# Return contents of file at the given URI's +uri+.
|
40
40
|
def read_retrieve(uri)
|
41
|
-
|
41
|
+
uri.read
|
42
42
|
end
|
43
43
|
|
44
44
|
# Return Pathname for repository's cache directory, create it if needed.
|
45
45
|
def path
|
46
|
-
(self.class.base_path + @repository.cache_key).tap
|
46
|
+
(self.class.base_path + @repository.cache_key).tap(&:mkpath)
|
47
47
|
end
|
48
48
|
|
49
49
|
# Return the base Pathname for all the caches.
|