puppet 8.5.1-universal-darwin → 8.7.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 +6 -2
- data/Gemfile.lock +55 -48
- data/Rakefile +45 -22
- data/examples/hiera/README.md +68 -57
- data/examples/hiera/data/common.yaml +12 -0
- data/examples/hiera/data/dc1.yaml +6 -0
- data/examples/hiera/hiera.yaml +15 -0
- data/examples/hiera/modules/ntp/data/common.yaml +4 -0
- data/examples/hiera/modules/ntp/hiera.yaml +9 -0
- data/examples/hiera/modules/ntp/manifests/config.pp +16 -4
- data/examples/hiera/modules/ntp/templates/ntp.conf.epp +3 -0
- data/examples/hiera/modules/users/manifests/common.pp +7 -2
- data/examples/hiera/modules/users/manifests/dc1.pp +7 -2
- data/examples/hiera/site.pp +1 -1
- data/ext/project_data.yaml +0 -45
- data/ext/windows/service/daemon.rb +49 -55
- data/lib/hiera/scope.rb +3 -3
- data/lib/hiera_puppet.rb +1 -1
- data/lib/puppet/agent/disabler.rb +1 -1
- data/lib/puppet/application/agent.rb +2 -2
- data/lib/puppet/application/apply.rb +2 -2
- data/lib/puppet/application/describe.rb +6 -6
- data/lib/puppet/application/device.rb +99 -100
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/face_base.rb +7 -7
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/lookup.rb +5 -5
- data/lib/puppet/application/resource.rb +10 -3
- data/lib/puppet/application/ssl.rb +3 -3
- data/lib/puppet/application.rb +16 -18
- data/lib/puppet/coercion.rb +1 -1
- data/lib/puppet/configurer/downloader.rb +9 -4
- data/lib/puppet/configurer/fact_handler.rb +12 -13
- data/lib/puppet/configurer.rb +16 -18
- data/lib/puppet/confine/feature.rb +1 -1
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine_collection.rb +1 -1
- data/lib/puppet/confiner.rb +2 -2
- data/lib/puppet/daemon.rb +4 -3
- data/lib/puppet/datatypes.rb +5 -6
- data/lib/puppet/defaults.rb +14 -8
- data/lib/puppet/environments.rb +3 -7
- data/lib/puppet/error.rb +3 -3
- data/lib/puppet/external/dot.rb +42 -34
- data/lib/puppet/face/catalog/select.rb +1 -1
- data/lib/puppet/face/epp.rb +7 -9
- data/lib/puppet/face/help.rb +12 -12
- data/lib/puppet/face/module/changes.rb +1 -3
- data/lib/puppet/face/module/list.rb +37 -37
- data/lib/puppet/face/node/clean.rb +1 -1
- data/lib/puppet/face/parser.rb +6 -8
- data/lib/puppet/face/report.rb +5 -7
- data/lib/puppet/facter_impl.rb +1 -1
- data/lib/puppet/feature/base.rb +9 -11
- data/lib/puppet/feature/pe_license.rb +1 -1
- data/lib/puppet/feature/ssh.rb +1 -1
- data/lib/puppet/feature/telnet.rb +3 -5
- data/lib/puppet/feature/zlib.rb +1 -1
- data/lib/puppet/ffi/windows/constants.rb +1 -1
- data/lib/puppet/ffi/windows/functions.rb +2 -2
- data/lib/puppet/ffi/windows/structs.rb +3 -3
- data/lib/puppet/file_bucket/dipper.rb +4 -4
- data/lib/puppet/file_bucket/file.rb +4 -4
- data/lib/puppet/file_serving/base.rb +5 -5
- data/lib/puppet/file_serving/configuration/parser.rb +9 -9
- data/lib/puppet/file_serving/configuration.rb +3 -3
- data/lib/puppet/file_serving/fileset.rb +13 -13
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/metadata.rb +13 -9
- data/lib/puppet/file_serving/mount/file.rb +6 -6
- data/lib/puppet/file_serving/mount/locales.rb +2 -4
- data/lib/puppet/file_serving/mount/pluginfacts.rb +2 -4
- data/lib/puppet/file_serving/mount/plugins.rb +2 -4
- data/lib/puppet/file_serving/mount.rb +1 -1
- data/lib/puppet/file_system/file_impl.rb +3 -3
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/path_pattern.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +17 -16
- data/lib/puppet/file_system/windows.rb +26 -18
- data/lib/puppet/forge/cache.rb +2 -2
- data/lib/puppet/forge/errors.rb +1 -1
- data/lib/puppet/forge/repository.rb +2 -2
- data/lib/puppet/forge.rb +13 -19
- data/lib/puppet/functions/abs.rb +2 -2
- data/lib/puppet/functions/camelcase.rb +1 -1
- data/lib/puppet/functions/compare.rb +2 -2
- data/lib/puppet/functions/contain.rb +1 -1
- data/lib/puppet/functions/defined.rb +2 -2
- data/lib/puppet/functions/dig.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +11 -13
- data/lib/puppet/functions/get.rb +1 -1
- data/lib/puppet/functions/hocon_data.rb +3 -5
- data/lib/puppet/functions/import.rb +1 -1
- data/lib/puppet/functions/json_data.rb +4 -6
- data/lib/puppet/functions/max.rb +2 -2
- data/lib/puppet/functions/min.rb +2 -2
- data/lib/puppet/functions/new.rb +1 -1
- data/lib/puppet/functions/reduce.rb +6 -10
- data/lib/puppet/functions/regsubst.rb +2 -2
- data/lib/puppet/functions/require.rb +1 -1
- data/lib/puppet/functions/yaml_data.rb +11 -13
- data/lib/puppet/functions.rb +32 -37
- data/lib/puppet/generate/type.rb +2 -2
- data/lib/puppet/gettext/config.rb +9 -9
- data/lib/puppet/graph/rb_tree_map.rb +31 -23
- data/lib/puppet/graph/relationship_graph.rb +12 -12
- data/lib/puppet/graph/simple_graph.rb +8 -10
- data/lib/puppet/http/client.rb +1 -1
- data/lib/puppet/http/dns.rb +4 -4
- data/lib/puppet/http/external_client.rb +1 -1
- data/lib/puppet/http/factory.rb +1 -1
- data/lib/puppet/http/proxy.rb +15 -15
- data/lib/puppet/http/redirector.rb +6 -2
- data/lib/puppet/http/resolver.rb +2 -2
- data/lib/puppet/http/retry_after_handler.rb +2 -2
- data/lib/puppet/http/service/ca.rb +1 -1
- data/lib/puppet/http/service/compiler.rb +4 -4
- data/lib/puppet/http/service/file_server.rb +1 -1
- data/lib/puppet/http/service/report.rb +2 -2
- data/lib/puppet/http/service.rb +9 -13
- data/lib/puppet/http/session.rb +1 -1
- data/lib/puppet/http/site.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +44 -45
- data/lib/puppet/indirector/catalog/rest.rb +7 -5
- data/lib/puppet/indirector/catalog/store_configs.rb +1 -1
- data/lib/puppet/indirector/exec.rb +2 -2
- data/lib/puppet/indirector/face.rb +7 -9
- data/lib/puppet/indirector/fact_search.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +6 -6
- data/lib/puppet/indirector/facts/json.rb +1 -1
- data/lib/puppet/indirector/facts/store_configs.rb +1 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +17 -17
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -3
- data/lib/puppet/indirector/file_content/rest.rb +1 -1
- data/lib/puppet/indirector/file_metadata/rest.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +1 -1
- data/lib/puppet/indirector/indirection.rb +27 -29
- data/lib/puppet/indirector/json.rb +4 -4
- data/lib/puppet/indirector/memory.rb +2 -2
- data/lib/puppet/indirector/msgpack.rb +5 -5
- data/lib/puppet/indirector/node/store_configs.rb +1 -1
- data/lib/puppet/indirector/none.rb +1 -1
- data/lib/puppet/indirector/report/json.rb +1 -1
- data/lib/puppet/indirector/report/yaml.rb +1 -1
- data/lib/puppet/indirector/request.rb +4 -4
- data/lib/puppet/indirector/resource/ral.rb +2 -4
- data/lib/puppet/indirector/resource/store_configs.rb +1 -1
- data/lib/puppet/indirector/terminus.rb +4 -4
- data/lib/puppet/indirector/yaml.rb +3 -3
- data/lib/puppet/info_service/class_information_service.rb +5 -8
- data/lib/puppet/info_service/task_information_service.rb +6 -7
- data/lib/puppet/interface/action.rb +5 -5
- data/lib/puppet/interface/action_manager.rb +5 -5
- data/lib/puppet/interface/documentation.rb +5 -5
- data/lib/puppet/interface/face_collection.rb +7 -7
- data/lib/puppet/interface/option.rb +2 -2
- data/lib/puppet/interface/option_manager.rb +6 -6
- data/lib/puppet/interface.rb +4 -4
- data/lib/puppet/metatype/manager.rb +2 -2
- data/lib/puppet/module/plan.rb +10 -10
- data/lib/puppet/module/task.rb +8 -8
- data/lib/puppet/module.rb +39 -41
- data/lib/puppet/module_tool/applications/application.rb +10 -8
- data/lib/puppet/module_tool/applications/installer.rb +53 -50
- data/lib/puppet/module_tool/applications/unpacker.rb +6 -8
- data/lib/puppet/module_tool/applications/upgrader.rb +37 -34
- data/lib/puppet/module_tool/checksums.rb +2 -2
- data/lib/puppet/module_tool/dependency.rb +1 -1
- data/lib/puppet/module_tool/errors/base.rb +1 -1
- data/lib/puppet/module_tool/install_directory.rb +1 -1
- data/lib/puppet/module_tool/local_tarball.rb +3 -5
- data/lib/puppet/module_tool/metadata.rb +12 -8
- data/lib/puppet/module_tool/shared_behaviors.rb +27 -12
- data/lib/puppet/module_tool/tar/mini.rb +3 -3
- data/lib/puppet/module_tool.rb +4 -4
- data/lib/puppet/network/client_request.rb +5 -3
- data/lib/puppet/network/format.rb +2 -2
- data/lib/puppet/network/format_support.rb +1 -1
- data/lib/puppet/network/formats.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +24 -44
- data/lib/puppet/network/http/api/server/v3.rb +1 -1
- data/lib/puppet/network/http/connection.rb +1 -1
- data/lib/puppet/network/http/handler.rb +8 -12
- data/lib/puppet/network/http/request.rb +1 -1
- data/lib/puppet/network/http/route.rb +9 -9
- data/lib/puppet/node/environment.rb +21 -23
- data/lib/puppet/node/facts.rb +1 -1
- data/lib/puppet/node.rb +5 -5
- data/lib/puppet/pal/json_catalog_encoder.rb +1 -1
- data/lib/puppet/pal/pal_impl.rb +48 -50
- data/lib/puppet/pal/plan_signature.rb +1 -1
- data/lib/puppet/pal/task_signature.rb +1 -1
- data/lib/puppet/parameter/package_options.rb +1 -1
- data/lib/puppet/parameter/value.rb +2 -2
- data/lib/puppet/parameter/value_collection.rb +7 -7
- data/lib/puppet/parameter.rb +8 -9
- data/lib/puppet/parser/ast/block_expression.rb +2 -2
- data/lib/puppet/parser/ast/hostclass.rb +1 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +3 -4
- data/lib/puppet/parser/ast/resource.rb +4 -4
- data/lib/puppet/parser/ast/resourceparam.rb +4 -4
- data/lib/puppet/parser/ast.rb +14 -15
- data/lib/puppet/parser/compiler.rb +26 -28
- data/lib/puppet/parser/functions/create_resources.rb +3 -3
- data/lib/puppet/parser/functions/fail.rb +1 -1
- data/lib/puppet/parser/functions/generate.rb +2 -2
- data/lib/puppet/parser/functions/tag.rb +1 -1
- data/lib/puppet/parser/functions.rb +2 -2
- data/lib/puppet/parser/relationship.rb +3 -1
- data/lib/puppet/parser/resource/param.rb +2 -2
- data/lib/puppet/parser/resource.rb +23 -23
- data/lib/puppet/parser/scope.rb +10 -10
- data/lib/puppet/parser/script_compiler.rb +1 -1
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +10 -12
- data/lib/puppet/parser.rb +1 -1
- data/lib/puppet/pops/adaptable.rb +1 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +8 -8
- data/lib/puppet/pops/evaluator/callable_signature.rb +4 -4
- data/lib/puppet/pops/evaluator/collector_transformer.rb +4 -4
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +7 -7
- data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +6 -6
- data/lib/puppet/pops/evaluator/compare_operator.rb +10 -10
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +1 -1
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +2 -2
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +56 -60
- data/lib/puppet/pops/evaluator/relationship_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/functions/dispatcher.rb +3 -3
- data/lib/puppet/pops/functions/function.rb +14 -16
- data/lib/puppet/pops/issue_reporter.rb +2 -2
- data/lib/puppet/pops/label_provider.rb +2 -2
- data/lib/puppet/pops/loader/dependency_loader.rb +3 -3
- data/lib/puppet/pops/loader/loader.rb +4 -4
- data/lib/puppet/pops/loader/loader_paths.rb +3 -3
- data/lib/puppet/pops/loader/module_loaders.rb +11 -11
- data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +1 -1
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -1
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +5 -1
- data/lib/puppet/pops/loader/static_loader.rb +5 -5
- data/lib/puppet/pops/loaders.rb +3 -3
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +1 -1
- data/lib/puppet/pops/lookup/explainer.rb +2 -2
- data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +15 -11
- data/lib/puppet/pops/lookup/interpolation.rb +3 -3
- data/lib/puppet/pops/lookup/key_recorder.rb +1 -1
- data/lib/puppet/pops/lookup/location_resolver.rb +1 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +7 -7
- data/lib/puppet/pops/lookup/module_data_provider.rb +9 -9
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/merge_strategy.rb +6 -6
- data/lib/puppet/pops/migration/migration_checker.rb +1 -1
- data/lib/puppet/pops/model/ast_transformer.rb +9 -11
- data/lib/puppet/pops/model/factory.rb +4 -5
- data/lib/puppet/pops/parser/epp_parser.rb +2 -2
- data/lib/puppet/pops/parser/epp_support.rb +1 -1
- data/lib/puppet/pops/parser/evaluating_parser.rb +2 -2
- data/lib/puppet/pops/parser/heredoc_support.rb +4 -4
- data/lib/puppet/pops/parser/interpolation_support.rb +3 -3
- data/lib/puppet/pops/parser/lexer2.rb +20 -12
- data/lib/puppet/pops/parser/lexer_support.rb +1 -1
- data/lib/puppet/pops/parser/locator.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +12 -14
- data/lib/puppet/pops/parser/pn_parser.rb +3 -3
- data/lib/puppet/pops/parser/slurp_support.rb +8 -8
- data/lib/puppet/pops/patterns.rb +12 -12
- data/lib/puppet/pops/pcore.rb +1 -1
- data/lib/puppet/pops/pn.rb +2 -2
- data/lib/puppet/pops/puppet_stack.rb +1 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +1 -1
- data/lib/puppet/pops/serialization/abstract_reader.rb +2 -2
- data/lib/puppet/pops/serialization/abstract_writer.rb +3 -3
- data/lib/puppet/pops/time/timestamp.rb +1 -1
- data/lib/puppet/pops/types/class_loader.rb +4 -6
- data/lib/puppet/pops/types/iterable.rb +1 -1
- data/lib/puppet/pops/types/p_binary_type.rb +1 -1
- data/lib/puppet/pops/types/p_init_type.rb +1 -1
- data/lib/puppet/pops/types/p_object_type.rb +5 -5
- data/lib/puppet/pops/types/p_object_type_extension.rb +4 -6
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +1 -1
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
- data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +10 -10
- data/lib/puppet/pops/types/p_uri_type.rb +4 -4
- data/lib/puppet/pops/types/recursion_guard.rb +4 -4
- data/lib/puppet/pops/types/ruby_generator.rb +2 -2
- data/lib/puppet/pops/types/string_converter.rb +12 -8
- data/lib/puppet/pops/types/tree_iterators.rb +4 -6
- data/lib/puppet/pops/types/type_calculator.rb +10 -10
- data/lib/puppet/pops/types/type_factory.rb +7 -3
- data/lib/puppet/pops/types/type_formatter.rb +22 -24
- data/lib/puppet/pops/types/type_mismatch_describer.rb +24 -24
- data/lib/puppet/pops/types/types.rb +28 -24
- data/lib/puppet/pops/utils.rb +38 -42
- data/lib/puppet/pops/validation/checker4_0.rb +10 -10
- data/lib/puppet/pops/validation/tasks_checker.rb +1 -1
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -1
- data/lib/puppet/pops/validation.rb +4 -4
- data/lib/puppet/pops/visitor.rb +2 -2
- data/lib/puppet/property/ensure.rb +12 -14
- data/lib/puppet/property/keyvalue.rb +4 -4
- data/lib/puppet/property/list.rb +4 -4
- data/lib/puppet/property/ordered_list.rb +1 -1
- data/lib/puppet/property.rb +31 -33
- data/lib/puppet/provider/aix_object.rb +1 -1
- data/lib/puppet/provider/exec.rb +2 -2
- data/lib/puppet/provider/file/posix.rb +19 -17
- data/lib/puppet/provider/file/windows.rb +13 -19
- data/lib/puppet/provider/group/directoryservice.rb +3 -2
- data/lib/puppet/provider/group/groupadd.rb +32 -11
- data/lib/puppet/provider/group/windows_adsi.rb +2 -2
- data/lib/puppet/provider/nameservice/directoryservice.rb +29 -29
- data/lib/puppet/provider/nameservice/objectadd.rb +2 -4
- data/lib/puppet/provider/nameservice/pw.rb +1 -2
- data/lib/puppet/provider/nameservice.rb +8 -8
- data/lib/puppet/provider/package/aix.rb +19 -19
- data/lib/puppet/provider/package/appdmg.rb +2 -2
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +18 -18
- data/lib/puppet/provider/package/aptitude.rb +1 -3
- data/lib/puppet/provider/package/aptrpm.rb +9 -9
- data/lib/puppet/provider/package/blastwave.rb +10 -14
- data/lib/puppet/provider/package/dnfmodule.rb +3 -3
- data/lib/puppet/provider/package/dpkg.rb +11 -13
- data/lib/puppet/provider/package/fink.rb +14 -14
- data/lib/puppet/provider/package/freebsd.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +12 -14
- data/lib/puppet/provider/package/macports.rb +2 -2
- data/lib/puppet/provider/package/nim.rb +10 -10
- data/lib/puppet/provider/package/openbsd.rb +22 -22
- data/lib/puppet/provider/package/opkg.rb +6 -6
- data/lib/puppet/provider/package/pacman.rb +35 -29
- data/lib/puppet/provider/package/pip.rb +25 -24
- data/lib/puppet/provider/package/pkg.rb +15 -15
- data/lib/puppet/provider/package/pkgdmg.rb +10 -10
- data/lib/puppet/provider/package/pkgin.rb +2 -2
- data/lib/puppet/provider/package/pkgng.rb +5 -5
- data/lib/puppet/provider/package/pkgutil.rb +17 -21
- data/lib/puppet/provider/package/portage.rb +59 -61
- data/lib/puppet/provider/package/ports.rb +12 -11
- data/lib/puppet/provider/package/portupgrade.rb +35 -35
- data/lib/puppet/provider/package/puppetserver_gem.rb +10 -9
- data/lib/puppet/provider/package/rpm.rb +26 -26
- data/lib/puppet/provider/package/rug.rb +7 -9
- data/lib/puppet/provider/package/sun.rb +4 -4
- data/lib/puppet/provider/package/up2date.rb +5 -7
- data/lib/puppet/provider/package/urpmi.rb +6 -6
- data/lib/puppet/provider/package/windows/exe_package.rb +7 -7
- data/lib/puppet/provider/package/windows/msi_package.rb +3 -3
- data/lib/puppet/provider/package/windows/package.rb +2 -2
- data/lib/puppet/provider/package/windows.rb +3 -5
- data/lib/puppet/provider/package/xbps.rb +127 -0
- data/lib/puppet/provider/package/yum.rb +33 -37
- data/lib/puppet/provider/package/zypper.rb +12 -14
- data/lib/puppet/provider/package.rb +1 -1
- data/lib/puppet/provider/package_targetable.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +9 -9
- data/lib/puppet/provider/service/base.rb +16 -21
- data/lib/puppet/provider/service/bsd.rb +4 -4
- data/lib/puppet/provider/service/daemontools.rb +31 -31
- data/lib/puppet/provider/service/debian.rb +6 -6
- data/lib/puppet/provider/service/freebsd.rb +36 -36
- data/lib/puppet/provider/service/gentoo.rb +6 -6
- data/lib/puppet/provider/service/init.rb +19 -19
- data/lib/puppet/provider/service/launchd.rb +22 -22
- data/lib/puppet/provider/service/openbsd.rb +10 -10
- data/lib/puppet/provider/service/openrc.rb +1 -1
- data/lib/puppet/provider/service/openwrt.rb +3 -3
- data/lib/puppet/provider/service/rcng.rb +3 -3
- data/lib/puppet/provider/service/redhat.rb +4 -4
- data/lib/puppet/provider/service/runit.rb +6 -6
- data/lib/puppet/provider/service/service.rb +5 -7
- data/lib/puppet/provider/service/smf.rb +28 -27
- data/lib/puppet/provider/service/src.rb +7 -7
- data/lib/puppet/provider/service/systemd.rb +31 -37
- data/lib/puppet/provider/service/upstart.rb +17 -17
- data/lib/puppet/provider/service/windows.rb +7 -7
- data/lib/puppet/provider/user/aix.rb +4 -2
- data/lib/puppet/provider/user/directoryservice.rb +34 -36
- data/lib/puppet/provider/user/hpux.rb +10 -14
- data/lib/puppet/provider/user/pw.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +16 -18
- data/lib/puppet/provider/user/useradd.rb +7 -7
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/provider.rb +8 -8
- data/lib/puppet/reference/indirection.rb +3 -0
- data/lib/puppet/reference/metaparameter.rb +1 -1
- data/lib/puppet/reference/providers.rb +3 -3
- data/lib/puppet/reference/type.rb +1 -1
- data/lib/puppet/relationship.rb +4 -5
- data/lib/puppet/reports/http.rb +1 -1
- data/lib/puppet/reports/log.rb +2 -2
- data/lib/puppet/reports/store.rb +4 -4
- data/lib/puppet/reports.rb +2 -2
- data/lib/puppet/resource/catalog.rb +16 -16
- data/lib/puppet/resource/status.rb +3 -3
- data/lib/puppet/resource/type.rb +8 -8
- data/lib/puppet/resource/type_collection.rb +1 -1
- data/lib/puppet/resource.rb +41 -41
- data/lib/puppet/scheduler/scheduler.rb +1 -1
- data/lib/puppet/scheduler/splay_job.rb +9 -0
- data/lib/puppet/settings/alias_setting.rb +3 -5
- data/lib/puppet/settings/base_setting.rb +11 -11
- data/lib/puppet/settings/boolean_setting.rb +2 -2
- data/lib/puppet/settings/config_file.rb +5 -4
- data/lib/puppet/settings/duration_setting.rb +2 -2
- data/lib/puppet/settings/environment_conf.rb +3 -3
- data/lib/puppet/settings/file_or_directory_setting.rb +2 -2
- data/lib/puppet/settings/file_setting.rb +11 -11
- data/lib/puppet/settings/ini_file.rb +3 -3
- data/lib/puppet/settings/port_setting.rb +1 -1
- data/lib/puppet/settings/priority_setting.rb +2 -2
- data/lib/puppet/settings/ttl_setting.rb +2 -2
- data/lib/puppet/settings/value_translator.rb +8 -8
- data/lib/puppet/settings.rb +65 -70
- data/lib/puppet/ssl/base.rb +2 -4
- data/lib/puppet/ssl/certificate_request.rb +18 -22
- data/lib/puppet/ssl/certificate_request_attributes.rb +3 -3
- data/lib/puppet/ssl/oids.rb +2 -2
- data/lib/puppet/ssl/openssl_loader.rb +4 -4
- data/lib/puppet/syntax_checkers/base64.rb +3 -3
- data/lib/puppet/syntax_checkers/epp.rb +3 -3
- data/lib/puppet/syntax_checkers/json.rb +3 -3
- data/lib/puppet/syntax_checkers/pp.rb +3 -3
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/event.rb +2 -2
- data/lib/puppet/transaction/event_manager.rb +5 -5
- data/lib/puppet/transaction/persistence.rb +12 -14
- data/lib/puppet/transaction/report.rb +4 -4
- data/lib/puppet/transaction/resource_harness.rb +2 -2
- data/lib/puppet/transaction.rb +14 -18
- data/lib/puppet/type/component.rb +3 -3
- data/lib/puppet/type/exec.rb +51 -45
- data/lib/puppet/type/file/checksum_value.rb +1 -1
- data/lib/puppet/type/file/content.rb +6 -6
- data/lib/puppet/type/file/ctime.rb +2 -2
- data/lib/puppet/type/file/data_sync.rb +3 -3
- data/lib/puppet/type/file/ensure.rb +16 -15
- data/lib/puppet/type/file/mode.rb +9 -9
- data/lib/puppet/type/file/mtime.rb +2 -2
- data/lib/puppet/type/file/selcontext.rb +14 -14
- data/lib/puppet/type/file/source.rb +19 -21
- data/lib/puppet/type/file/target.rb +11 -11
- data/lib/puppet/type/file.rb +21 -21
- data/lib/puppet/type/filebucket.rb +3 -3
- data/lib/puppet/type/group.rb +3 -3
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +4 -4
- data/lib/puppet/type/resources.rb +6 -6
- data/lib/puppet/type/schedule.rb +9 -9
- data/lib/puppet/type/service.rb +6 -8
- data/lib/puppet/type/tidy.rb +22 -24
- data/lib/puppet/type/user.rb +13 -13
- data/lib/puppet/type.rb +76 -88
- data/lib/puppet/util/at_fork/solaris.rb +33 -37
- data/lib/puppet/util/autoload.rb +2 -2
- data/lib/puppet/util/backups.rb +9 -9
- data/lib/puppet/util/character_encoding.rb +7 -6
- data/lib/puppet/util/checksums.rb +2 -2
- data/lib/puppet/util/classgen.rb +8 -8
- data/lib/puppet/util/colors.rb +1 -1
- data/lib/puppet/util/command_line/puppet_option_parser.rb +1 -1
- data/lib/puppet/util/command_line/trollop.rb +60 -46
- data/lib/puppet/util/command_line.rb +2 -2
- data/lib/puppet/util/constant_inflector.rb +2 -2
- data/lib/puppet/util/diff.rb +19 -21
- data/lib/puppet/util/docs.rb +2 -2
- data/lib/puppet/util/errors.rb +9 -9
- data/lib/puppet/util/execution.rb +32 -9
- data/lib/puppet/util/feature.rb +1 -1
- data/lib/puppet/util/fileparsing.rb +12 -16
- data/lib/puppet/util/filetype.rb +36 -40
- data/lib/puppet/util/inifile.rb +6 -12
- data/lib/puppet/util/ldap/connection.rb +1 -1
- data/lib/puppet/util/ldap/manager.rb +10 -12
- data/lib/puppet/util/lockfile.rb +6 -8
- data/lib/puppet/util/log/destination.rb +2 -2
- data/lib/puppet/util/log/destinations.rb +4 -4
- data/lib/puppet/util/log.rb +12 -9
- data/lib/puppet/util/logging.rb +11 -11
- data/lib/puppet/util/metric.rb +3 -3
- data/lib/puppet/util/monkey_patches.rb +5 -7
- data/lib/puppet/util/network_device/config.rb +3 -3
- data/lib/puppet/util/package/version/debian.rb +27 -28
- data/lib/puppet/util/package/version/pip.rb +5 -5
- data/lib/puppet/util/package/version/range/eq.rb +1 -1
- data/lib/puppet/util/package/version/rpm.rb +1 -1
- data/lib/puppet/util/package.rb +2 -2
- data/lib/puppet/util/pidlock.rb +2 -2
- data/lib/puppet/util/platform.rb +1 -1
- data/lib/puppet/util/plist.rb +8 -10
- data/lib/puppet/util/posix.rb +17 -17
- data/lib/puppet/util/profiler/aggregate.rb +1 -1
- data/lib/puppet/util/provider_features.rb +3 -3
- data/lib/puppet/util/rdoc/code_objects.rb +3 -3
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +63 -64
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +23 -23
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +12 -12
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -1
- data/lib/puppet/util/rdoc/parser.rb +1 -1
- data/lib/puppet/util/reference.rb +13 -9
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/rpm_compare.rb +18 -19
- data/lib/puppet/util/rubygems.rb +1 -1
- data/lib/puppet/util/selinux.rb +7 -7
- data/lib/puppet/util/storage.rb +10 -12
- data/lib/puppet/util/suidmanager.rb +18 -19
- data/lib/puppet/util/symbolic_file_mode.rb +71 -75
- data/lib/puppet/util/tag_set.rb +2 -2
- data/lib/puppet/util/tagging.rb +8 -10
- data/lib/puppet/util/terminal.rb +4 -4
- data/lib/puppet/util/user_attr.rb +7 -7
- data/lib/puppet/util/watcher.rb +3 -5
- data/lib/puppet/util/windows/access_control_list.rb +1 -1
- data/lib/puppet/util/windows/adsi.rb +42 -42
- data/lib/puppet/util/windows/com.rb +2 -2
- data/lib/puppet/util/windows/daemon.rb +64 -68
- data/lib/puppet/util/windows/error.rb +2 -2
- data/lib/puppet/util/windows/file.rb +18 -25
- data/lib/puppet/util/windows/monkey_patches/process.rb +1 -1
- data/lib/puppet/util/windows/principal.rb +8 -8
- data/lib/puppet/util/windows/process.rb +16 -28
- data/lib/puppet/util/windows/registry.rb +16 -15
- data/lib/puppet/util/windows/root_certs.rb +2 -2
- data/lib/puppet/util/windows/security.rb +31 -31
- data/lib/puppet/util/windows/service.rb +11 -11
- data/lib/puppet/util/windows/sid.rb +8 -8
- data/lib/puppet/util/windows/user.rb +18 -20
- data/lib/puppet/util/yaml.rb +1 -1
- data/lib/puppet/util.rb +55 -46
- data/lib/puppet/version.rb +2 -2
- data/lib/puppet/x509/pem_store.rb +1 -1
- data/lib/puppet.rb +3 -3
- data/locales/puppet.pot +604 -600
- data/man/man5/puppet.conf.5 +10 -2
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +5 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- metadata +23 -27
- data/examples/hiera/etc/hiera.yaml +0 -15
- data/examples/hiera/etc/hieradb/common.yaml +0 -3
- data/examples/hiera/etc/hieradb/dc1.yaml +0 -6
- data/examples/hiera/etc/hieradb/development.yaml +0 -2
- data/examples/hiera/etc/puppet.conf +0 -3
- data/examples/hiera/modules/data/manifests/common.pp +0 -4
- data/examples/hiera/modules/ntp/manifests/data.pp +0 -4
- data/examples/hiera/modules/ntp/templates/ntp.conf.erb +0 -3
- data/examples/hiera/modules/users/manifests/development.pp +0 -4
- data/tasks/benchmark.rake +0 -180
- data/tasks/cfpropertylist.rake +0 -15
- data/tasks/ci.rake +0 -24
- data/tasks/generate_ast_model.rake +0 -90
- data/tasks/generate_cert_fixtures.rake +0 -199
- data/tasks/manpages.rake +0 -67
- data/tasks/memwalk.rake +0 -195
- data/tasks/parallel.rake +0 -410
- data/tasks/parser.rake +0 -22
- data/tasks/yard.rake +0 -59
@@ -19,7 +19,7 @@ module SymbolicFileMode
|
|
19
19
|
return true if value =~ /^0?[0-7]{1,4}$/
|
20
20
|
return true if value =~ /^([ugoa]*[-=+][-=+rstwxXugo]*)(,[ugoa]*[-=+][-=+rstwxXugo]*)*$/
|
21
21
|
|
22
|
-
|
22
|
+
false
|
23
23
|
end
|
24
24
|
|
25
25
|
def display_mode(value)
|
@@ -60,12 +60,12 @@ module SymbolicFileMode
|
|
60
60
|
fail _("non-numeric current mode (%{mode})") % { mode: to_mode.inspect } unless to_mode.is_a?(Numeric)
|
61
61
|
|
62
62
|
original_mode = {
|
63
|
-
's' => (to_mode &
|
64
|
-
'u' => (to_mode &
|
65
|
-
'g' => (to_mode &
|
66
|
-
'o' => (to_mode &
|
63
|
+
's' => (to_mode & 0o7000) >> 9,
|
64
|
+
'u' => (to_mode & 0o0700) >> 6,
|
65
|
+
'g' => (to_mode & 0o0070) >> 3,
|
66
|
+
'o' => (to_mode & 0o0007) >> 0,
|
67
67
|
# Are there any execute bits set in the original mode?
|
68
|
-
'any x?' => (to_mode &
|
68
|
+
'any x?' => (to_mode & 0o0111) != 0
|
69
69
|
}
|
70
70
|
final_mode = {
|
71
71
|
's' => original_mode['s'],
|
@@ -75,85 +75,81 @@ module SymbolicFileMode
|
|
75
75
|
}
|
76
76
|
|
77
77
|
modification.split(/\s*,\s*/).each do |part|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
raise Puppet::Error, _("X only works with the '+' operator")
|
119
|
-
end
|
120
|
-
|
121
|
-
# As per the BSD manual page, set if this is a directory, or if
|
122
|
-
# any execute bit is set on the original (unmodified) mode.
|
123
|
-
# Ignored otherwise; it is "add if", not "add or clear".
|
124
|
-
if is_a_directory or original_mode['any x?']
|
125
|
-
value = actions[action].call(value, ExecBit)
|
126
|
-
end
|
127
|
-
|
128
|
-
when /[st]/
|
129
|
-
bit = SymbolicSpecialToBit[op][who] or fail _("internal error")
|
130
|
-
final_mode['s'] = actions[action].call(final_mode['s'], bit)
|
131
|
-
|
132
|
-
else
|
133
|
-
raise Puppet::Error, _('Unknown operation')
|
78
|
+
_, to, dsl = /^([ugoa]*)([-+=].*)$/.match(part).to_a
|
79
|
+
if dsl.nil? then raise Puppet::Error, _('Missing action') end
|
80
|
+
|
81
|
+
to = "a" unless to and to.length > 0
|
82
|
+
|
83
|
+
# We want a snapshot of the mode before we start messing with it to
|
84
|
+
# make actions like 'a-g' atomic. Various parts of the DSL refer to
|
85
|
+
# the original mode, the final mode, or the current snapshot of the
|
86
|
+
# mode, for added fun.
|
87
|
+
snapshot_mode = {}
|
88
|
+
final_mode.each { |k, v| snapshot_mode[k] = v }
|
89
|
+
|
90
|
+
to.gsub('a', 'ugo').split('').uniq.each do |who|
|
91
|
+
value = snapshot_mode[who]
|
92
|
+
|
93
|
+
action = '!'
|
94
|
+
actions = {
|
95
|
+
'!' => ->(_, _) { raise Puppet::Error, _('Missing operation (-, =, or +)') },
|
96
|
+
'=' => ->(m, v) { m | v },
|
97
|
+
'+' => ->(m, v) { m | v },
|
98
|
+
'-' => ->(m, v) { m & ~v },
|
99
|
+
}
|
100
|
+
|
101
|
+
dsl.split('').each do |op|
|
102
|
+
case op
|
103
|
+
when /[-+=]/
|
104
|
+
action = op
|
105
|
+
# Clear all bits, if this is assignment
|
106
|
+
value = 0 if op == '='
|
107
|
+
|
108
|
+
when /[ugo]/
|
109
|
+
value = actions[action].call(value, snapshot_mode[op])
|
110
|
+
|
111
|
+
when /[rwx]/
|
112
|
+
value = actions[action].call(value, SymbolicMode[op])
|
113
|
+
|
114
|
+
when 'X'
|
115
|
+
# Only meaningful in combination with "set" actions.
|
116
|
+
if action != '+'
|
117
|
+
raise Puppet::Error, _("X only works with the '+' operator")
|
134
118
|
end
|
135
|
-
end
|
136
119
|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
120
|
+
# As per the BSD manual page, set if this is a directory, or if
|
121
|
+
# any execute bit is set on the original (unmodified) mode.
|
122
|
+
# Ignored otherwise; it is "add if", not "add or clear".
|
123
|
+
if is_a_directory or original_mode['any x?']
|
124
|
+
value = actions[action].call(value, ExecBit)
|
125
|
+
end
|
126
|
+
|
127
|
+
when /[st]/
|
128
|
+
bit = SymbolicSpecialToBit[op][who] or fail _("internal error")
|
129
|
+
final_mode['s'] = actions[action].call(final_mode['s'], bit)
|
130
|
+
|
131
|
+
else
|
132
|
+
raise Puppet::Error, _('Unknown operation')
|
133
|
+
end
|
145
134
|
end
|
146
135
|
|
147
|
-
|
136
|
+
# Now, assign back the value.
|
137
|
+
final_mode[who] = value
|
148
138
|
end
|
139
|
+
rescue Puppet::Error => e
|
140
|
+
if part.inspect != modification.inspect
|
141
|
+
rest = " at #{part.inspect}"
|
142
|
+
else
|
143
|
+
rest = ''
|
144
|
+
end
|
145
|
+
|
146
|
+
raise Puppet::Error, _("%{error}%{rest} in symbolic mode %{modification}") % { error: e, rest: rest, modification: modification.inspect }, e.backtrace
|
149
147
|
end
|
150
148
|
|
151
|
-
|
152
|
-
final_mode['s'] << 9 |
|
149
|
+
final_mode['s'] << 9 |
|
153
150
|
final_mode['u'] << 6 |
|
154
151
|
final_mode['g'] << 3 |
|
155
152
|
final_mode['o'] << 0
|
156
|
-
return result
|
157
153
|
end
|
158
154
|
end
|
159
155
|
end
|
data/lib/puppet/util/tag_set.rb
CHANGED
@@ -7,7 +7,7 @@ class Puppet::Util::TagSet < Set
|
|
7
7
|
include Puppet::Network::FormatSupport
|
8
8
|
|
9
9
|
def self.from_yaml(yaml)
|
10
|
-
|
10
|
+
new(Puppet::Util::Yaml.safe_load(yaml, [Symbol]))
|
11
11
|
end
|
12
12
|
|
13
13
|
def to_yaml
|
@@ -15,7 +15,7 @@ class Puppet::Util::TagSet < Set
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.from_data_hash(data)
|
18
|
-
|
18
|
+
new(data)
|
19
19
|
end
|
20
20
|
|
21
21
|
# TODO: A method named #to_data_hash should not return an array
|
data/lib/puppet/util/tagging.rb
CHANGED
@@ -71,7 +71,7 @@ module Puppet::Util::Tagging
|
|
71
71
|
# @return [Boolean] true if this instance is tagged with at least one of the provided tags
|
72
72
|
#
|
73
73
|
def raw_tagged?(tag_array)
|
74
|
-
my_tags =
|
74
|
+
my_tags = tags
|
75
75
|
!tag_array.index { |t| my_tags.include?(t) }.nil?
|
76
76
|
end
|
77
77
|
|
@@ -109,16 +109,14 @@ module Puppet::Util::Tagging
|
|
109
109
|
end
|
110
110
|
|
111
111
|
def valid_tag?(maybe_tag)
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
maybe_tag.encode(Encoding::UTF_8) =~ ValidTagRegex
|
118
|
-
end
|
119
|
-
rescue Encoding::UndefinedConversionError, Encoding::InvalidByteSequenceError
|
120
|
-
false
|
112
|
+
tag_enc = maybe_tag.encoding
|
113
|
+
if tag_enc == Encoding::UTF_8 || tag_enc == Encoding::ASCII
|
114
|
+
maybe_tag =~ ValidTagRegex
|
115
|
+
else
|
116
|
+
maybe_tag.encode(Encoding::UTF_8) =~ ValidTagRegex
|
121
117
|
end
|
118
|
+
rescue Encoding::UndefinedConversionError, Encoding::InvalidByteSequenceError
|
119
|
+
false
|
122
120
|
end
|
123
121
|
|
124
122
|
private
|
data/lib/puppet/util/terminal.rb
CHANGED
@@ -8,11 +8,11 @@ module Puppet::Util::Terminal
|
|
8
8
|
# @return [Number] The column width of the terminal. Defaults to 80 columns.
|
9
9
|
def self.width
|
10
10
|
if Puppet.features.posix?
|
11
|
-
result = %x
|
12
|
-
%x
|
11
|
+
result = %x(stty size 2>/dev/null).split[1] ||
|
12
|
+
%x(tput cols 2>/dev/null).split[0]
|
13
13
|
end
|
14
|
-
|
14
|
+
(result || '80').to_i
|
15
15
|
rescue
|
16
|
-
|
16
|
+
80
|
17
17
|
end
|
18
18
|
end
|
@@ -9,14 +9,14 @@ class UserAttr
|
|
9
9
|
|
10
10
|
token = line.split(':')
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
break
|
12
|
+
next unless token[0] == name
|
13
|
+
|
14
|
+
attributes = { :name => name }
|
15
|
+
token[4].split(';').each do |attr|
|
16
|
+
key_value = attr.split('=')
|
17
|
+
attributes[key_value[0].intern] = key_value[1].strip
|
19
18
|
end
|
19
|
+
break
|
20
20
|
end
|
21
21
|
attributes
|
22
22
|
end
|
data/lib/puppet/util/watcher.rb
CHANGED
@@ -8,11 +8,9 @@ module Puppet::Util::Watcher
|
|
8
8
|
module Common
|
9
9
|
def self.file_ctime_change_watcher(filename)
|
10
10
|
Puppet::Util::Watcher::ChangeWatcher.watch(lambda do
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
:absent
|
15
|
-
end
|
11
|
+
Puppet::FileSystem.stat(filename).ctime
|
12
|
+
rescue Errno::ENOENT, Errno::ENOTDIR
|
13
|
+
:absent
|
16
14
|
end)
|
17
15
|
end
|
18
16
|
end
|
@@ -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
|
@@ -141,7 +141,7 @@ module Puppet::Util::Windows::COM
|
|
141
141
|
|
142
142
|
self::VTBL.members.each do |name|
|
143
143
|
define_method(name) do |*args|
|
144
|
-
if Puppet::Util::Windows::COM.FAILED(result = @vtbl[name].call(self, *args))
|
144
|
+
if Puppet::Util::Windows::COM.FAILED((result = @vtbl[name].call(self, *args)))
|
145
145
|
raise Puppet::Util::Windows::Error.new(_("Failed to call %{klass}::%{name} with HRESULT: %{result}.") % { klass: self, name: name, result: result }, result)
|
146
146
|
end
|
147
147
|
|
@@ -183,7 +183,7 @@ module Puppet::Util::Windows::COM
|
|
183
183
|
|
184
184
|
self::VTBL.members.each do |name|
|
185
185
|
define_method(name) do |*args|
|
186
|
-
if Puppet::Util::Windows::COM.FAILED(result = @vtbl[name].call(self, *args))
|
186
|
+
if Puppet::Util::Windows::COM.FAILED((result = @vtbl[name].call(self, *args)))
|
187
187
|
raise Puppet::Util::Windows::Error.new(_("Failed to call %{klass}::%{name} with HRESULT: %{result}.") % { klass: self, name: name, result: result }, result)
|
188
188
|
end
|
189
189
|
|