puppet 8.5.0-universal-darwin → 8.6.0-universal-darwin
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 +29 -26
- 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/literal_evaluator.rb +4 -0
- 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 +2 -0
- 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
@@ -24,19 +24,15 @@ module Puppet::Util::Windows::ADSI
|
|
24
24
|
extend FFI::Library
|
25
25
|
|
26
26
|
def connectable?(uri)
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
false
|
31
|
-
end
|
27
|
+
!!connect(uri)
|
28
|
+
rescue
|
29
|
+
false
|
32
30
|
end
|
33
31
|
|
34
32
|
def connect(uri)
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
raise Puppet::Error.new(_("ADSI connection error: %{e}") % { e: e }, e)
|
39
|
-
end
|
33
|
+
WIN32OLE.connect(uri)
|
34
|
+
rescue WIN32OLERuntimeError => e
|
35
|
+
raise Puppet::Error.new(_("ADSI connection error: %{e}") % { e: e }, e)
|
40
36
|
end
|
41
37
|
|
42
38
|
def create(name, resource_type)
|
@@ -58,7 +54,7 @@ module Puppet::Util::Windows::ADSI
|
|
58
54
|
buffer_size.write_dword(max_length) # length in TCHARs
|
59
55
|
|
60
56
|
if GetComputerNameW(buffer, buffer_size) == FFI::WIN32_FALSE
|
61
|
-
raise Puppet::Util::Windows::Error
|
57
|
+
raise Puppet::Util::Windows::Error, _("Failed to get computer name")
|
62
58
|
end
|
63
59
|
|
64
60
|
@computer_name = buffer.read_wide_string(buffer_size.read_dword)
|
@@ -97,7 +93,7 @@ module Puppet::Util::Windows::ADSI
|
|
97
93
|
# used for IAdsGroup::Add / IAdsGroup::Remove. These URIs are not useable
|
98
94
|
# to resolve an account with WIN32OLE.connect
|
99
95
|
def sid_uri(sid)
|
100
|
-
raise Puppet::Error
|
96
|
+
raise Puppet::Error, _("Must use a valid SID::Principal") unless sid.is_a?(Puppet::Util::Windows::SID::Principal)
|
101
97
|
|
102
98
|
"WinNT://#{sid.sid}"
|
103
99
|
end
|
@@ -161,15 +157,15 @@ module Puppet::Util::Windows::ADSI
|
|
161
157
|
end
|
162
158
|
|
163
159
|
def parse_name(name)
|
164
|
-
if name =~
|
165
|
-
raise Puppet::Error
|
160
|
+
if name =~ %r{/}
|
161
|
+
raise Puppet::Error, _("Value must be in DOMAIN\\%{object_class} style syntax") % { object_class: @object_class }
|
166
162
|
end
|
167
163
|
|
168
164
|
matches = name.scan(/((.*)\\)?(.*)/)
|
169
165
|
domain = matches[0][1] || '.'
|
170
166
|
account = matches[0][2]
|
171
167
|
|
172
|
-
|
168
|
+
[account, domain]
|
173
169
|
end
|
174
170
|
|
175
171
|
# returns Puppet::Util::Windows::SID::Principal[]
|
@@ -195,7 +191,7 @@ module Puppet::Util::Windows::ADSI
|
|
195
191
|
|
196
192
|
sids = names.map do |name|
|
197
193
|
sid = Puppet::Util::Windows::SID.name_to_principal(name, allow_unresolved)
|
198
|
-
raise Puppet::Error
|
194
|
+
raise Puppet::Error, _("Could not resolve name: %{name}") % { name: name } unless sid
|
199
195
|
|
200
196
|
[sid.sid, sid]
|
201
197
|
end
|
@@ -292,9 +288,7 @@ module Puppet::Util::Windows::ADSI
|
|
292
288
|
rescue WIN32OLERuntimeError => e
|
293
289
|
# ERROR_BAD_USERNAME 2202L from winerror.h
|
294
290
|
if e.message =~ /8007089A/m
|
295
|
-
raise Puppet::Error.
|
296
|
-
_("Puppet is not able to create/delete domain %{object_class} objects with the %{object_class} resource.") % { object_class: object_class },
|
297
|
-
)
|
291
|
+
raise Puppet::Error, _("Puppet is not able to create/delete domain %{object_class} objects with the %{object_class} resource.") % { object_class: object_class }
|
298
292
|
end
|
299
293
|
|
300
294
|
raise Puppet::Error.new(_("%{object_class} update failed: %{error}") % { object_class: object_class.capitalize, error: e }, e)
|
@@ -323,7 +317,7 @@ module Puppet::Util::Windows::ADSI
|
|
323
317
|
|
324
318
|
def create(name)
|
325
319
|
# Windows error 1379: The specified local group already exists.
|
326
|
-
raise Puppet::Error
|
320
|
+
raise Puppet::Error, _("Cannot create user if group '%{name}' exists.") % { name: name } if Puppet::Util::Windows::ADSI::Group.exists? name
|
327
321
|
|
328
322
|
new(name, Puppet::Util::Windows::ADSI.create(name, @object_class))
|
329
323
|
end
|
@@ -334,7 +328,11 @@ module Puppet::Util::Windows::ADSI
|
|
334
328
|
end
|
335
329
|
|
336
330
|
def add_flag(flag_name, value)
|
337
|
-
flag =
|
331
|
+
flag = begin
|
332
|
+
native_object.Get(flag_name)
|
333
|
+
rescue
|
334
|
+
0
|
335
|
+
end
|
338
336
|
|
339
337
|
native_object.Put(flag_name, flag | value)
|
340
338
|
|
@@ -342,7 +340,7 @@ module Puppet::Util::Windows::ADSI
|
|
342
340
|
end
|
343
341
|
|
344
342
|
def password=(password)
|
345
|
-
|
343
|
+
unless password.nil?
|
346
344
|
native_object.SetPassword(password)
|
347
345
|
commit
|
348
346
|
end
|
@@ -356,7 +354,11 @@ module Puppet::Util::Windows::ADSI
|
|
356
354
|
# WIN32OLE objects aren't enumerable, so no map
|
357
355
|
groups = []
|
358
356
|
# Setting WIN32OLE.codepage ensures values are returned as UTF-8
|
359
|
-
|
357
|
+
begin
|
358
|
+
native_object.Groups.each { |g| groups << g.Name }
|
359
|
+
rescue
|
360
|
+
nil
|
361
|
+
end
|
360
362
|
groups
|
361
363
|
end
|
362
364
|
|
@@ -375,12 +377,12 @@ module Puppet::Util::Windows::ADSI
|
|
375
377
|
alias remove_from_group remove_from_groups
|
376
378
|
|
377
379
|
def add_group_sids(*sids)
|
378
|
-
group_names = sids.map
|
380
|
+
group_names = sids.map(&:domain_account)
|
379
381
|
add_to_groups(*group_names)
|
380
382
|
end
|
381
383
|
|
382
384
|
def remove_group_sids(*sids)
|
383
|
-
group_names = sids.map
|
385
|
+
group_names = sids.map(&:domain_account)
|
384
386
|
remove_from_groups(*group_names)
|
385
387
|
end
|
386
388
|
|
@@ -397,18 +399,18 @@ module Puppet::Util::Windows::ADSI
|
|
397
399
|
|
398
400
|
desired_groups = desired_groups.split(',').map(&:strip)
|
399
401
|
|
400
|
-
current_hash =
|
402
|
+
current_hash = group_sids.to_h { |sid| [sid.sid, sid] }
|
401
403
|
desired_hash = self.class.name_sid_hash(desired_groups)
|
402
404
|
|
403
405
|
# First we add the user to all the groups it should be in but isn't
|
404
|
-
|
406
|
+
unless desired_groups.empty?
|
405
407
|
groups_to_add = (desired_hash.keys - current_hash.keys).map { |sid| desired_hash[sid] }
|
406
408
|
add_group_sids(*groups_to_add)
|
407
409
|
end
|
408
410
|
|
409
411
|
# Then we remove the user from all groups it is in but shouldn't be, if
|
410
412
|
# that's been requested
|
411
|
-
|
413
|
+
unless minimum
|
412
414
|
if desired_hash.empty?
|
413
415
|
groups_to_remove = current_hash.values
|
414
416
|
else
|
@@ -508,7 +510,7 @@ module Puppet::Util::Windows::ADSI
|
|
508
510
|
buffer_size.write_dword(max_length) # length in TCHARs
|
509
511
|
|
510
512
|
if GetUserNameW(buffer, buffer_size) == FFI::WIN32_FALSE
|
511
|
-
raise Puppet::Util::Windows::Error
|
513
|
+
raise Puppet::Util::Windows::Error, _("Failed to get user name")
|
512
514
|
end
|
513
515
|
|
514
516
|
# buffer_size includes trailing NULL
|
@@ -583,17 +585,15 @@ module Puppet::Util::Windows::ADSI
|
|
583
585
|
|
584
586
|
class UserProfile
|
585
587
|
def self.delete(sid)
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
raise e unless e.message.include?('80041010')
|
588
|
+
Puppet::Util::Windows::ADSI.wmi_connection.Delete("Win32_UserProfile.SID='#{sid}'")
|
589
|
+
rescue WIN32OLERuntimeError => e
|
590
|
+
# https://social.technet.microsoft.com/Forums/en/ITCG/thread/0f190051-ac96-4bf1-a47f-6b864bfacee5
|
591
|
+
# Prior to Vista SP1, there's no built-in way to programmatically
|
592
|
+
# delete user profiles (except for delprof.exe). So try to delete
|
593
|
+
# but warn if we fail
|
594
|
+
raise e unless e.message.include?('80041010')
|
594
595
|
|
595
|
-
|
596
|
-
end
|
596
|
+
Puppet.warning _("Cannot delete user profile for '%{sid}' prior to Vista SP1") % { sid: sid }
|
597
597
|
end
|
598
598
|
end
|
599
599
|
|
@@ -609,7 +609,7 @@ module Puppet::Util::Windows::ADSI
|
|
609
609
|
|
610
610
|
def create(name)
|
611
611
|
# Windows error 2224: The account already exists.
|
612
|
-
raise Puppet::Error
|
612
|
+
raise Puppet::Error, _("Cannot create group if user '%{name}' exists.") % { name: name } if Puppet::Util::Windows::ADSI::User.exists?(name)
|
613
613
|
|
614
614
|
new(name, Puppet::Util::Windows::ADSI.create(name, @object_class))
|
615
615
|
end
|
@@ -638,11 +638,11 @@ module Puppet::Util::Windows::ADSI
|
|
638
638
|
def set_members(desired_members, inclusive = true)
|
639
639
|
return if desired_members.nil?
|
640
640
|
|
641
|
-
current_hash =
|
641
|
+
current_hash = member_sids.to_h { |sid| [sid.sid, sid] }
|
642
642
|
desired_hash = self.class.name_sid_hash(desired_members)
|
643
643
|
|
644
644
|
# First we add all missing members
|
645
|
-
|
645
|
+
unless desired_hash.empty?
|
646
646
|
members_to_add = (desired_hash.keys - current_hash.keys).map { |sid| desired_hash[sid] }
|
647
647
|
add_member_sids(*members_to_add)
|
648
648
|
end
|
@@ -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(
|