puppet 8.5.1-x64-mingw32 → 8.6.0-x64-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +23 -20
- 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 +3 -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 +3 -3
- 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/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/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 +4 -4
- 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/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/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 +43 -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 +42 -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 +17 -18
- 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/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/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 +2 -2
@@ -74,7 +74,7 @@ module Puppet::Util::Windows
|
|
74
74
|
NO_ERROR = 0
|
75
75
|
|
76
76
|
# Wraps SetServiceStatus.
|
77
|
-
SetTheServiceStatus =
|
77
|
+
SetTheServiceStatus = proc do |dwCurrentState, dwWin32ExitCode, dwCheckPoint, dwWaitHint|
|
78
78
|
ss = SERVICE_STATUS.new # Current status of the service.
|
79
79
|
|
80
80
|
# Disable control requests until the service is started.
|
@@ -97,7 +97,7 @@ module Puppet::Util::Windows
|
|
97
97
|
@@dwServiceState = dwCurrentState
|
98
98
|
|
99
99
|
# Send status of the service to the Service Controller.
|
100
|
-
|
100
|
+
unless SetServiceStatus(@@ssh, ss)
|
101
101
|
SetEvent(@@hStopEvent)
|
102
102
|
end
|
103
103
|
end
|
@@ -105,7 +105,7 @@ module Puppet::Util::Windows
|
|
105
105
|
ERROR_CALL_NOT_IMPLEMENTED = 0x78
|
106
106
|
|
107
107
|
# Handles control signals from the service control manager.
|
108
|
-
Service_Ctrl_ex =
|
108
|
+
Service_Ctrl_ex = proc do |dwCtrlCode, _dwEventType, _lpEventData, _lpContext|
|
109
109
|
@@waiting_control_code = dwCtrlCode;
|
110
110
|
return_value = NO_ERROR
|
111
111
|
|
@@ -145,48 +145,46 @@ module Puppet::Util::Windows
|
|
145
145
|
|
146
146
|
# Called by the service control manager after the call to StartServiceCtrlDispatcher.
|
147
147
|
Service_Main = FFI::Function.new(:void, [:ulong, :pointer], :blocking => false) do |dwArgc, lpszArgv|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
end
|
148
|
+
# Obtain the name of the service.
|
149
|
+
if lpszArgv.address != 0
|
150
|
+
argv = lpszArgv.get_array_of_string(0, dwArgc)
|
151
|
+
lpszServiceName = argv[0]
|
152
|
+
else
|
153
|
+
lpszServiceName = ''
|
154
|
+
end
|
156
155
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
156
|
+
# Args passed to Service.start
|
157
|
+
if dwArgc > 1
|
158
|
+
@@Argv = argv[1..]
|
159
|
+
else
|
160
|
+
@@Argv = nil
|
161
|
+
end
|
163
162
|
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
163
|
+
# Register the service ctrl handler.
|
164
|
+
@@ssh = RegisterServiceCtrlHandlerExW(
|
165
|
+
lpszServiceName,
|
166
|
+
Service_Ctrl_ex,
|
167
|
+
nil
|
168
|
+
)
|
170
169
|
|
171
|
-
|
172
|
-
|
170
|
+
# No service to stop, no service handle to notify, nothing to do but exit.
|
171
|
+
break if @@ssh == 0
|
173
172
|
|
174
|
-
|
175
|
-
|
173
|
+
# The service has started.
|
174
|
+
SetTheServiceStatus.call(SERVICE_RUNNING, NO_ERROR, 0, 0)
|
176
175
|
|
177
|
-
|
176
|
+
SetEvent(@@hStartEvent)
|
178
177
|
|
179
|
-
|
180
|
-
|
181
|
-
|
178
|
+
# Main loop for the service.
|
179
|
+
while WaitForSingleObject(@@hStopEvent, 1000) != WAIT_OBJECT_0
|
180
|
+
end
|
182
181
|
|
183
|
-
|
184
|
-
|
185
|
-
end
|
186
|
-
ensure
|
187
|
-
# Stop the service.
|
188
|
-
SetTheServiceStatus.call(SERVICE_STOPPED, NO_ERROR, 0, 0)
|
182
|
+
# Main loop for the service.
|
183
|
+
while WaitForSingleObject(@@hStopCompletedEvent, 1000) != WAIT_OBJECT_0
|
189
184
|
end
|
185
|
+
ensure
|
186
|
+
# Stop the service.
|
187
|
+
SetTheServiceStatus.call(SERVICE_STOPPED, NO_ERROR, 0, 0)
|
190
188
|
end
|
191
189
|
|
192
190
|
ThreadProc = FFI::Function.new(:ulong, [:pointer]) do |lpParameter|
|
@@ -201,7 +199,7 @@ module Puppet::Util::Windows
|
|
201
199
|
s[:lpServiceProc] = nil
|
202
200
|
|
203
201
|
# No service to step, no service handle, no ruby exceptions, just terminate the thread..
|
204
|
-
|
202
|
+
unless StartServiceCtrlDispatcherW(ste)
|
205
203
|
return 1
|
206
204
|
end
|
207
205
|
|
@@ -211,7 +209,7 @@ module Puppet::Util::Windows
|
|
211
209
|
# This is a shortcut for Daemon.new + Daemon#mainloop.
|
212
210
|
#
|
213
211
|
def self.mainloop
|
214
|
-
|
212
|
+
new.mainloop
|
215
213
|
end
|
216
214
|
|
217
215
|
# This is the method that actually puts your code into a loop and allows it
|
@@ -267,7 +265,7 @@ module Puppet::Util::Windows
|
|
267
265
|
events.put_pointer(0, FFI::Pointer.new(hThread))
|
268
266
|
events.put_pointer(FFI::Pointer.size, FFI::Pointer.new(@@hStartEvent))
|
269
267
|
|
270
|
-
while (
|
268
|
+
while (index = WaitForMultipleObjects(2, events, 0, 1000)) == WAIT_TIMEOUT
|
271
269
|
end
|
272
270
|
|
273
271
|
if index == WAIT_FAILED
|
@@ -280,36 +278,34 @@ module Puppet::Util::Windows
|
|
280
278
|
end
|
281
279
|
|
282
280
|
thr = Thread.new do
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
service_netbinddisable() if respond_to?('service_netbinddisable')
|
305
|
-
end
|
306
|
-
@@waiting_control_code = IDLE_CONTROL_CODE
|
281
|
+
while WaitForSingleObject(@@hStopEvent, 1000) == WAIT_TIMEOUT
|
282
|
+
# Check to see if anything interesting has been signaled
|
283
|
+
case @@waiting_control_code
|
284
|
+
when SERVICE_CONTROL_PAUSE
|
285
|
+
service_pause() if respond_to?('service_pause')
|
286
|
+
when SERVICE_CONTROL_CONTINUE
|
287
|
+
service_resume() if respond_to?('service_resume')
|
288
|
+
when SERVICE_CONTROL_INTERROGATE
|
289
|
+
service_interrogate() if respond_to?('service_interrogate')
|
290
|
+
when SERVICE_CONTROL_SHUTDOWN
|
291
|
+
service_shutdown() if respond_to?('service_shutdown')
|
292
|
+
when SERVICE_CONTROL_PARAMCHANGE
|
293
|
+
service_paramchange() if respond_to?('service_paramchange')
|
294
|
+
when SERVICE_CONTROL_NETBINDADD
|
295
|
+
service_netbindadd() if respond_to?('service_netbindadd')
|
296
|
+
when SERVICE_CONTROL_NETBINDREMOVE
|
297
|
+
service_netbindremove() if respond_to?('service_netbindremove')
|
298
|
+
when SERVICE_CONTROL_NETBINDENABLE
|
299
|
+
service_netbindenable() if respond_to?('service_netbindenable')
|
300
|
+
when SERVICE_CONTROL_NETBINDDISABLE
|
301
|
+
service_netbinddisable() if respond_to?('service_netbinddisable')
|
307
302
|
end
|
308
|
-
|
309
|
-
service_stop() if respond_to?('service_stop')
|
310
|
-
ensure
|
311
|
-
SetEvent(@@hStopCompletedEvent)
|
303
|
+
@@waiting_control_code = IDLE_CONTROL_CODE
|
312
304
|
end
|
305
|
+
|
306
|
+
service_stop() if respond_to?('service_stop')
|
307
|
+
ensure
|
308
|
+
SetEvent(@@hStopCompletedEvent)
|
313
309
|
end
|
314
310
|
|
315
311
|
if respond_to?('service_main')
|
@@ -42,13 +42,13 @@ class Puppet::Util::Windows::Error < Puppet::Error
|
|
42
42
|
|
43
43
|
if length == FFI::WIN32_FALSE
|
44
44
|
# can't raise same error type here or potentially recurse infinitely
|
45
|
-
raise Puppet::Error
|
45
|
+
raise Puppet::Error, _("FormatMessageW could not format code %{code}") % { code: code }
|
46
46
|
end
|
47
47
|
|
48
48
|
# returns an FFI::Pointer with autorelease set to false, which is what we want
|
49
49
|
buffer_ptr.read_win32_local_pointer do |wide_string_ptr|
|
50
50
|
if wide_string_ptr.null?
|
51
|
-
raise Puppet::Error
|
51
|
+
raise Puppet::Error, _("FormatMessageW failed to allocate buffer for code %{code}") % { code: code }
|
52
52
|
end
|
53
53
|
|
54
54
|
error_string = wide_string_ptr.read_wide_string(length)
|
@@ -30,7 +30,7 @@ module Puppet::Util::Windows::File
|
|
30
30
|
|
31
31
|
return true if result != FFI::WIN32_FALSE
|
32
32
|
|
33
|
-
raise Puppet::Util::Windows::Error
|
33
|
+
raise Puppet::Util::Windows::Error, "ReplaceFile(#{target}, #{source})"
|
34
34
|
end
|
35
35
|
module_function :replace_file
|
36
36
|
|
@@ -41,8 +41,7 @@ module Puppet::Util::Windows::File
|
|
41
41
|
|
42
42
|
return true if result != FFI::WIN32_FALSE
|
43
43
|
|
44
|
-
raise Puppet::Util::Windows::Error
|
45
|
-
.new("MoveFileEx(#{source}, #{target}, #{flags.to_s(8)})")
|
44
|
+
raise Puppet::Util::Windows::Error, "MoveFileEx(#{source}, #{target}, #{flags.to_s(8)})"
|
46
45
|
end
|
47
46
|
module_function :move_file_ex
|
48
47
|
|
@@ -52,9 +51,7 @@ module Puppet::Util::Windows::File
|
|
52
51
|
wide_string(target.to_s), flags)
|
53
52
|
return true if result != FFI::WIN32_FALSE
|
54
53
|
|
55
|
-
raise Puppet::Util::Windows::Error.
|
56
|
-
"CreateSymbolicLink(#{symlink}, #{target}, #{flags.to_s(8)})"
|
57
|
-
)
|
54
|
+
raise Puppet::Util::Windows::Error, "CreateSymbolicLink(#{symlink}, #{target}, #{flags.to_s(8)})"
|
58
55
|
end
|
59
56
|
module_function :symlink
|
60
57
|
|
@@ -93,7 +90,7 @@ module Puppet::Util::Windows::File
|
|
93
90
|
def get_attributes(file_name, raise_on_invalid = true)
|
94
91
|
result = GetFileAttributesW(wide_string(file_name.to_s))
|
95
92
|
if raise_on_invalid && result == INVALID_FILE_ATTRIBUTES
|
96
|
-
raise Puppet::Util::Windows::Error
|
93
|
+
raise Puppet::Util::Windows::Error, "GetFileAttributes(#{file_name})"
|
97
94
|
end
|
98
95
|
|
99
96
|
result
|
@@ -120,7 +117,7 @@ module Puppet::Util::Windows::File
|
|
120
117
|
|
121
118
|
def set_attributes(path, flags)
|
122
119
|
success = SetFileAttributesW(wide_string(path), flags) != FFI::WIN32_FALSE
|
123
|
-
raise Puppet::Util::Windows::Error
|
120
|
+
raise Puppet::Util::Windows::Error, _("Failed to set file attributes") unless success
|
124
121
|
|
125
122
|
success
|
126
123
|
end
|
@@ -137,11 +134,9 @@ module Puppet::Util::Windows::File
|
|
137
134
|
|
138
135
|
return result unless result == INVALID_HANDLE_VALUE
|
139
136
|
|
140
|
-
raise Puppet::Util::Windows::Error.
|
141
|
-
|
142
|
-
|
143
|
-
"#{flags_and_attributes.to_s(8)}, #{template_file_handle})"
|
144
|
-
)
|
137
|
+
raise Puppet::Util::Windows::Error, "CreateFile(#{file_name}, #{desired_access.to_s(8)}, #{share_mode.to_s(8)}, " \
|
138
|
+
"#{security_attributes}, #{creation_disposition.to_s(8)}, " \
|
139
|
+
"#{flags_and_attributes.to_s(8)}, #{template_file_handle})"
|
145
140
|
end
|
146
141
|
|
147
142
|
def self.get_reparse_point_data(handle, &block)
|
@@ -156,10 +151,10 @@ module Puppet::Util::Windows::File
|
|
156
151
|
when IO_REPARSE_TAG_MOUNT_POINT
|
157
152
|
MOUNT_POINT_REPARSE_DATA_BUFFER
|
158
153
|
when IO_REPARSE_TAG_NFS
|
159
|
-
raise Puppet::Util::Windows::Error
|
154
|
+
raise Puppet::Util::Windows::Error, "Retrieving NFS reparse point data is unsupported"
|
160
155
|
else
|
161
|
-
raise Puppet::Util::Windows::Error
|
162
|
-
|
156
|
+
raise Puppet::Util::Windows::Error, "DeviceIoControl(#{handle}, " \
|
157
|
+
"FSCTL_GET_REPARSE_POINT) returned unknown tag 0x#{reparse_tag.to_s(16).upcase}"
|
163
158
|
end
|
164
159
|
|
165
160
|
yield buffer_type.new(reparse_data_buffer_ptr)
|
@@ -185,7 +180,7 @@ module Puppet::Util::Windows::File
|
|
185
180
|
|
186
181
|
def self.device_io_control(handle, io_control_code, in_buffer = nil, out_buffer = nil)
|
187
182
|
if out_buffer.nil?
|
188
|
-
raise Puppet::Util::Windows::Error
|
183
|
+
raise Puppet::Util::Windows::Error, _("out_buffer is required")
|
189
184
|
end
|
190
185
|
|
191
186
|
FFI::MemoryPointer.new(:dword, 1) do |bytes_returned_ptr|
|
@@ -199,11 +194,9 @@ module Puppet::Util::Windows::File
|
|
199
194
|
)
|
200
195
|
|
201
196
|
if result == FFI::WIN32_FALSE
|
202
|
-
raise Puppet::Util::Windows::Error
|
203
|
-
|
204
|
-
|
205
|
-
"#{out_buffer}, #{out_buffer ? out_buffer.size : ''}"
|
206
|
-
)
|
197
|
+
raise Puppet::Util::Windows::Error, "DeviceIoControl(#{handle}, #{io_control_code}, " \
|
198
|
+
"#{in_buffer}, #{in_buffer ? in_buffer.size : ''}, " \
|
199
|
+
"#{out_buffer}, #{out_buffer ? out_buffer.size : ''}"
|
207
200
|
end
|
208
201
|
end
|
209
202
|
|
@@ -213,7 +206,7 @@ module Puppet::Util::Windows::File
|
|
213
206
|
def reparse_point?(file_name)
|
214
207
|
attributes = get_attributes(file_name, false)
|
215
208
|
|
216
|
-
return false if
|
209
|
+
return false if attributes == INVALID_FILE_ATTRIBUTES
|
217
210
|
|
218
211
|
(attributes & FILE_ATTRIBUTE_REPARSE_POINT) == FILE_ATTRIBUTE_REPARSE_POINT
|
219
212
|
end
|
@@ -261,7 +254,7 @@ module Puppet::Util::Windows::File
|
|
261
254
|
buffer_size = GetLongPathNameW(path_ptr, FFI::Pointer::NULL, 0)
|
262
255
|
FFI::MemoryPointer.new(:wchar, buffer_size) do |converted_ptr|
|
263
256
|
if GetLongPathNameW(path_ptr, converted_ptr, buffer_size) == FFI::WIN32_FALSE
|
264
|
-
raise Puppet::Util::Windows::Error
|
257
|
+
raise Puppet::Util::Windows::Error, _("Failed to call GetLongPathName")
|
265
258
|
end
|
266
259
|
|
267
260
|
converted = converted_ptr.read_wide_string(buffer_size - 1)
|
@@ -279,7 +272,7 @@ module Puppet::Util::Windows::File
|
|
279
272
|
buffer_size = GetShortPathNameW(path_ptr, FFI::Pointer::NULL, 0)
|
280
273
|
FFI::MemoryPointer.new(:wchar, buffer_size) do |converted_ptr|
|
281
274
|
if GetShortPathNameW(path_ptr, converted_ptr, buffer_size) == FFI::WIN32_FALSE
|
282
|
-
raise Puppet::Util::Windows::Error
|
275
|
+
raise Puppet::Util::Windows::Error, "Failed to call GetShortPathName"
|
283
276
|
end
|
284
277
|
|
285
278
|
converted = converted_ptr.read_wide_string(buffer_size - 1)
|
@@ -19,9 +19,9 @@ module Puppet::Util::Windows::SID
|
|
19
19
|
# otherwise if domain is available then combine it with parsed account
|
20
20
|
# otherwise when the domain is not available, use the account value directly
|
21
21
|
# WinNT naming standard https://msdn.microsoft.com/en-us/library/windows/desktop/aa746534(v=vs.85).aspx
|
22
|
-
if
|
22
|
+
if domain && !domain.empty? && @account_type == :SidTypeDomain
|
23
23
|
@domain_account = @domain
|
24
|
-
elsif
|
24
|
+
elsif domain && !domain.empty?
|
25
25
|
@domain_account = "#{domain}\\#{@account}"
|
26
26
|
else
|
27
27
|
@domain_account = account
|
@@ -65,7 +65,7 @@ module Puppet::Util::Windows::SID
|
|
65
65
|
FFI::Pointer::NULL, domain_length_ptr, name_use_enum_ptr)
|
66
66
|
last_error = FFI.errno
|
67
67
|
|
68
|
-
if
|
68
|
+
if success == FFI::WIN32_FALSE && last_error != ERROR_INSUFFICIENT_BUFFER
|
69
69
|
raise Puppet::Util::Windows::Error.new(_('Failed to call LookupAccountNameW with account: %{account_name}') % { account_name: account_name }, last_error)
|
70
70
|
end
|
71
71
|
|
@@ -73,7 +73,7 @@ module Puppet::Util::Windows::SID
|
|
73
73
|
if LookupAccountNameW(system_name_ptr, account_name_ptr,
|
74
74
|
sid_ptr, sid_length_ptr,
|
75
75
|
domain_ptr, domain_length_ptr, name_use_enum_ptr) == FFI::WIN32_FALSE
|
76
|
-
raise Puppet::Util::Windows::Error
|
76
|
+
raise Puppet::Util::Windows::Error, _('Failed to call LookupAccountNameW with account: %{account_name}') % { account_name: account_name }
|
77
77
|
end
|
78
78
|
|
79
79
|
# with a SID returned, loop back through lookup_account_sid to retrieve official name
|
@@ -95,9 +95,9 @@ module Puppet::Util::Windows::SID
|
|
95
95
|
|
96
96
|
def self.lookup_account_sid(system_name = nil, sid_bytes)
|
97
97
|
system_name_ptr = FFI::Pointer::NULL
|
98
|
-
if
|
98
|
+
if sid_bytes.nil? || (!sid_bytes.is_a? Array) || (sid_bytes.length == 0)
|
99
99
|
# TRANSLATORS `lookup_account_sid` is a variable name and should not be translated
|
100
|
-
raise Puppet::Util::Windows::Error
|
100
|
+
raise Puppet::Util::Windows::Error, _('Byte array for lookup_account_sid must not be nil and must be at least 1 byte long')
|
101
101
|
end
|
102
102
|
|
103
103
|
begin
|
@@ -120,7 +120,7 @@ module Puppet::Util::Windows::SID
|
|
120
120
|
FFI::Pointer::NULL, domain_length_ptr, name_use_enum_ptr)
|
121
121
|
last_error = FFI.errno
|
122
122
|
|
123
|
-
if
|
123
|
+
if success == FFI::WIN32_FALSE && last_error != ERROR_INSUFFICIENT_BUFFER
|
124
124
|
raise Puppet::Util::Windows::Error.new(_('Failed to call LookupAccountSidW with bytes: %{sid_bytes}') % { sid_bytes: sid_bytes }, last_error)
|
125
125
|
end
|
126
126
|
|
@@ -128,7 +128,7 @@ module Puppet::Util::Windows::SID
|
|
128
128
|
FFI::MemoryPointer.new(:lpwstr, domain_length_ptr.read_dword) do |domain_ptr|
|
129
129
|
if LookupAccountSidW(system_name_ptr, sid_ptr, name_ptr, name_length_ptr,
|
130
130
|
domain_ptr, domain_length_ptr, name_use_enum_ptr) == FFI::WIN32_FALSE
|
131
|
-
raise Puppet::Util::Windows::Error
|
131
|
+
raise Puppet::Util::Windows::Error, _('Failed to call LookupAccountSidW with bytes: %{sid_bytes}') % { sid_bytes: sid_bytes }
|
132
132
|
end
|
133
133
|
|
134
134
|
return new(
|
@@ -15,7 +15,7 @@ module Puppet::Util::Windows::Process
|
|
15
15
|
# https://docs.microsoft.com/en-us/windows/desktop/ProcThread/process-security-and-access-rights
|
16
16
|
PROCESS_QUERY_INFORMATION = 0x0400
|
17
17
|
# https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#maximum-path-length-limitation
|
18
|
-
MAX_PATH_LENGTH =
|
18
|
+
MAX_PATH_LENGTH = 32_767
|
19
19
|
|
20
20
|
def execute(command, arguments, stdin, stdout, stderr)
|
21
21
|
create_args = {
|
@@ -45,7 +45,7 @@ module Puppet::Util::Windows::Process
|
|
45
45
|
exit_status = -1
|
46
46
|
FFI::MemoryPointer.new(:dword, 1) do |exit_status_ptr|
|
47
47
|
if GetExitCodeProcess(handle, exit_status_ptr) == FFI::WIN32_FALSE
|
48
|
-
raise Puppet::Util::Windows::Error
|
48
|
+
raise Puppet::Util::Windows::Error, _("Failed to get child process exit code")
|
49
49
|
end
|
50
50
|
|
51
51
|
exit_status = exit_status_ptr.read_dword
|
@@ -54,7 +54,7 @@ module Puppet::Util::Windows::Process
|
|
54
54
|
# and since it's read-only, we can't set it. But we can execute a
|
55
55
|
# a shell that simply returns the desired exit status, which has the
|
56
56
|
# desired effect.
|
57
|
-
%x
|
57
|
+
%x(#{ENV.fetch('COMSPEC', nil)} /c exit #{exit_status})
|
58
58
|
end
|
59
59
|
|
60
60
|
exit_status
|
@@ -73,9 +73,7 @@ module Puppet::Util::Windows::Process
|
|
73
73
|
begin
|
74
74
|
phandle = OpenProcess(desired_access, inherit, process_id)
|
75
75
|
if phandle == FFI::Pointer::NULL_HANDLE
|
76
|
-
raise Puppet::Util::Windows::Error.
|
77
|
-
"OpenProcess(#{desired_access.to_s(8)}, #{inherit}, #{process_id})"
|
78
|
-
)
|
76
|
+
raise Puppet::Util::Windows::Error, "OpenProcess(#{desired_access.to_s(8)}, #{inherit}, #{process_id})"
|
79
77
|
end
|
80
78
|
|
81
79
|
yield phandle
|
@@ -94,9 +92,7 @@ module Puppet::Util::Windows::Process
|
|
94
92
|
FFI::MemoryPointer.new(:handle, 1) do |token_handle_ptr|
|
95
93
|
result = OpenProcessToken(handle, desired_access, token_handle_ptr)
|
96
94
|
if result == FFI::WIN32_FALSE
|
97
|
-
raise Puppet::Util::Windows::Error.
|
98
|
-
"OpenProcessToken(#{handle}, #{desired_access.to_s(8)}, #{token_handle_ptr})"
|
99
|
-
)
|
95
|
+
raise Puppet::Util::Windows::Error, "OpenProcessToken(#{handle}, #{desired_access.to_s(8)}, #{token_handle_ptr})"
|
100
96
|
end
|
101
97
|
|
102
98
|
yield token_handle = token_handle_ptr.read_handle
|
@@ -137,10 +133,8 @@ module Puppet::Util::Windows::Process
|
|
137
133
|
use_win32_path_format = 0
|
138
134
|
result = QueryFullProcessImageNameW(phandle, use_win32_path_format, exe_name_ptr, exe_name_length_ptr)
|
139
135
|
if result == FFI::WIN32_FALSE
|
140
|
-
raise Puppet::Util::Windows::Error
|
141
|
-
|
142
|
-
"exe_name_ptr, #{max_chars}"
|
143
|
-
)
|
136
|
+
raise Puppet::Util::Windows::Error, "QueryFullProcessImageNameW(phandle, #{use_win32_path_format}, " \
|
137
|
+
"exe_name_ptr, #{max_chars}"
|
144
138
|
end
|
145
139
|
image_name = exe_name_ptr.read_wide_string(exe_name_length_ptr.read_dword)
|
146
140
|
end
|
@@ -161,9 +155,7 @@ module Puppet::Util::Windows::Process
|
|
161
155
|
)
|
162
156
|
|
163
157
|
if result == FFI::WIN32_FALSE
|
164
|
-
raise Puppet::Util::Windows::Error
|
165
|
-
"LookupPrivilegeValue(#{system_name}, #{name}, #{luid_ptr})"
|
166
|
-
)
|
158
|
+
raise Puppet::Util::Windows::Error, "LookupPrivilegeValue(#{system_name}, #{name}, #{luid_ptr})"
|
167
159
|
end
|
168
160
|
|
169
161
|
yield LUID.new(luid_ptr)
|
@@ -181,9 +173,7 @@ module Puppet::Util::Windows::Process
|
|
181
173
|
return_length = return_length_ptr.read_dword
|
182
174
|
|
183
175
|
if return_length <= 0
|
184
|
-
raise Puppet::Util::Windows::Error
|
185
|
-
"GetTokenInformation(#{token_handle}, #{token_information}, nil, 0, #{return_length_ptr})"
|
186
|
-
)
|
176
|
+
raise Puppet::Util::Windows::Error, "GetTokenInformation(#{token_handle}, #{token_information}, nil, 0, #{return_length_ptr})"
|
187
177
|
end
|
188
178
|
|
189
179
|
# re-call API with properly sized buffer for all results
|
@@ -192,10 +182,8 @@ module Puppet::Util::Windows::Process
|
|
192
182
|
token_information_buf, return_length, return_length_ptr)
|
193
183
|
|
194
184
|
if result == FFI::WIN32_FALSE
|
195
|
-
raise Puppet::Util::Windows::Error
|
196
|
-
|
197
|
-
"#{return_length}, #{return_length_ptr})"
|
198
|
-
)
|
185
|
+
raise Puppet::Util::Windows::Error, "GetTokenInformation(#{token_handle}, #{token_information}, #{token_information_buf}, " \
|
186
|
+
"#{return_length}, #{return_length_ptr})"
|
199
187
|
end
|
200
188
|
|
201
189
|
yield token_information_buf
|
@@ -292,7 +280,7 @@ module Puppet::Util::Windows::Process
|
|
292
280
|
result = GetVersionExW(os_version_ptr)
|
293
281
|
|
294
282
|
if result == FFI::WIN32_FALSE
|
295
|
-
raise Puppet::Util::Windows::Error
|
283
|
+
raise Puppet::Util::Windows::Error, _("GetVersionEx failed")
|
296
284
|
end
|
297
285
|
|
298
286
|
ver = os_version[:dwMajorVersion]
|
@@ -315,7 +303,7 @@ module Puppet::Util::Windows::Process
|
|
315
303
|
env_ptr = GetEnvironmentStringsW()
|
316
304
|
|
317
305
|
# pass :invalid => :replace to the Ruby String#encode to use replacement characters
|
318
|
-
pairs = env_ptr.read_arbitrary_wide_string_up_to(
|
306
|
+
pairs = env_ptr.read_arbitrary_wide_string_up_to(65_534, :double_null, { :invalid => :replace })
|
319
307
|
.split(?\x00)
|
320
308
|
.reject { |env_str| env_str.nil? || env_str.empty? || env_str[0] == '=' }
|
321
309
|
.reject do |env_str|
|
@@ -340,14 +328,14 @@ module Puppet::Util::Windows::Process
|
|
340
328
|
raise Puppet::Util::Windows::Error(_('environment variable name must not be nil or empty')) if !name || name.empty?
|
341
329
|
|
342
330
|
FFI::MemoryPointer.from_string_to_wide_string(name) do |name_ptr|
|
343
|
-
if
|
331
|
+
if val.nil?
|
344
332
|
if SetEnvironmentVariableW(name_ptr, FFI::MemoryPointer::NULL) == FFI::WIN32_FALSE
|
345
|
-
raise Puppet::Util::Windows::Error
|
333
|
+
raise Puppet::Util::Windows::Error, _("Failed to remove environment variable: %{name}") % { name: name }
|
346
334
|
end
|
347
335
|
else
|
348
336
|
FFI::MemoryPointer.from_string_to_wide_string(val) do |val_ptr|
|
349
337
|
if SetEnvironmentVariableW(name_ptr, val_ptr) == FFI::WIN32_FALSE
|
350
|
-
raise Puppet::Util::Windows::Error
|
338
|
+
raise Puppet::Util::Windows::Error, _("Failed to set environment variable: %{name}") % { name: name }
|
351
339
|
end
|
352
340
|
end
|
353
341
|
end
|
@@ -21,8 +21,8 @@ module Puppet::Util::Windows
|
|
21
21
|
|
22
22
|
def root(name)
|
23
23
|
Win32::Registry.const_get(name)
|
24
|
-
rescue NameError
|
25
|
-
raise Puppet::Error, _("Invalid registry key '%{name}'") % { name: name },
|
24
|
+
rescue NameError => e
|
25
|
+
raise Puppet::Error, _("Invalid registry key '%{name}'") % { name: name }, e.backtrace
|
26
26
|
end
|
27
27
|
|
28
28
|
def open(name, path, mode = KEY_READ | KEY64, &block)
|
@@ -52,7 +52,7 @@ module Puppet::Util::Windows
|
|
52
52
|
|
53
53
|
loop do
|
54
54
|
subkey, filetime = reg_enum_key(key, index, subkey_max_len)
|
55
|
-
yield subkey, filetime
|
55
|
+
yield subkey, filetime unless subkey.nil?
|
56
56
|
index += 1
|
57
57
|
break if subkey.nil?
|
58
58
|
end
|
@@ -81,12 +81,10 @@ module Puppet::Util::Windows
|
|
81
81
|
vals = {}
|
82
82
|
names.each do |name|
|
83
83
|
FFI::Pointer.from_string_to_wide_string(name) do |subkeyname_ptr|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
raise e unless e.code == Puppet::Util::Windows::Error::ERROR_FILE_NOT_FOUND
|
89
|
-
end
|
84
|
+
_, vals[name] = read(key, subkeyname_ptr)
|
85
|
+
rescue Puppet::Util::Windows::Error => e
|
86
|
+
# ignore missing names, but raise other errors
|
87
|
+
raise e unless e.code == Puppet::Util::Windows::Error::ERROR_FILE_NOT_FOUND
|
90
88
|
end
|
91
89
|
end
|
92
90
|
vals
|
@@ -100,7 +98,7 @@ module Puppet::Util::Windows
|
|
100
98
|
|
101
99
|
loop do
|
102
100
|
subkey, type, data = reg_enum_value(key, index, value_max_len)
|
103
|
-
yield subkey, type, data
|
101
|
+
yield subkey, type, data unless subkey.nil?
|
104
102
|
index += 1
|
105
103
|
break if subkey.nil?
|
106
104
|
end
|
@@ -118,7 +116,8 @@ module Puppet::Util::Windows
|
|
118
116
|
MAX_KEY_CHAR_LENGTH = 255 + 1
|
119
117
|
|
120
118
|
def reg_enum_key(key, index, max_key_char_length = MAX_KEY_CHAR_LENGTH)
|
121
|
-
subkey
|
119
|
+
subkey = nil
|
120
|
+
filetime = nil
|
122
121
|
|
123
122
|
FFI::MemoryPointer.new(:dword) do |subkey_length_ptr|
|
124
123
|
FFI::MemoryPointer.new(FFI::WIN32::FILETIME.size) do |filetime_ptr|
|
@@ -149,10 +148,12 @@ module Puppet::Util::Windows
|
|
149
148
|
end
|
150
149
|
|
151
150
|
# max number of wide characters including NULL terminator
|
152
|
-
MAX_VALUE_CHAR_LENGTH =
|
151
|
+
MAX_VALUE_CHAR_LENGTH = 16_383 + 1
|
153
152
|
|
154
153
|
def reg_enum_value(key, index, max_value_length = MAX_VALUE_CHAR_LENGTH)
|
155
|
-
subkey
|
154
|
+
subkey = nil
|
155
|
+
type = nil
|
156
|
+
data = nil
|
156
157
|
|
157
158
|
FFI::MemoryPointer.new(:dword) do |subkey_length_ptr|
|
158
159
|
FFI::MemoryPointer.new(:wchar, max_value_length) do |subkey_ptr|
|
@@ -202,7 +203,7 @@ module Puppet::Util::Windows
|
|
202
203
|
result = [
|
203
204
|
# Unicode characters *not* including trailing NULL
|
204
205
|
max_subkey_name_length_ptr.read_dword + 1,
|
205
|
-
max_value_name_length_ptr.read_dword + 1
|
206
|
+
max_value_name_length_ptr.read_dword + 1
|
206
207
|
]
|
207
208
|
end
|
208
209
|
end
|
@@ -256,7 +257,7 @@ module Puppet::Util::Windows
|
|
256
257
|
raise TypeError, _("Type %{type} is not supported.") % { type: type }
|
257
258
|
end
|
258
259
|
rescue IndexError => ex
|
259
|
-
raise if
|
260
|
+
raise if ex.message !~ /^Memory access .* is out of bounds$/i
|
260
261
|
|
261
262
|
parent_key_name = key.parent ? "#{key.parent.keyname}\\" : ""
|
262
263
|
Puppet.warning _("A value in the registry key %{parent_key_name}%{key} is corrupt or invalid") % { parent_key_name: parent_key_name, key: key.keyname }
|
@@ -25,7 +25,7 @@ class Puppet::Util::Windows::RootCerts
|
|
25
25
|
# Returns a new instance.
|
26
26
|
# @return [Puppet::Util::Windows::RootCerts] object constructed from current root certificates
|
27
27
|
def self.instance
|
28
|
-
new(
|
28
|
+
new(load_certs)
|
29
29
|
end
|
30
30
|
|
31
31
|
# Returns an array of root certificates.
|
@@ -40,7 +40,7 @@ class Puppet::Util::Windows::RootCerts
|
|
40
40
|
ptr = FFI::Pointer::NULL
|
41
41
|
store = CertOpenSystemStoreA(nil, "ROOT")
|
42
42
|
begin
|
43
|
-
while (ptr = CertEnumCertificatesInStore(store, ptr)) and
|
43
|
+
while (ptr = CertEnumCertificatesInStore(store, ptr)) and !ptr.null?
|
44
44
|
context = CERT_CONTEXT.new(ptr)
|
45
45
|
cert_buf = context[:pbCertEncoded].read_bytes(context[:cbCertEncoded])
|
46
46
|
begin
|