puppet 5.5.22-x86-mingw32 → 6.0.0-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +46 -72
- data/Gemfile.lock +86 -102
- data/MAINTAINERS +47 -0
- data/Rakefile +15 -19
- data/ext/build_defaults.yaml +0 -1
- data/ext/cert_inspector +3 -3
- data/ext/debian/copyright +0 -22
- data/ext/project_data.yaml +8 -10
- data/ext/puppet-test +2 -2
- data/ext/redhat/puppet.spec.erb +0 -4
- data/ext/regexp_nodes/regexp_nodes.rb +4 -4
- data/ext/solaris/smf/puppet.xml +0 -2
- data/ext/solaris/smf/svc-puppetd +1 -8
- data/ext/solaris/smf/svc-puppetmasterd +1 -8
- data/ext/windows/eventlog/Rakefile +32 -0
- data/ext/windows/eventlog/puppetres.dll +0 -0
- data/ext/windows/eventlog/puppetres.mc +18 -0
- data/ext/windows/service/daemon.rb +8 -54
- data/install.rb +24 -6
- data/lib/hiera/scope.rb +0 -7
- data/lib/puppet.rb +10 -21
- data/lib/puppet/agent.rb +13 -5
- data/lib/puppet/application.rb +10 -8
- data/lib/puppet/application/agent.rb +3 -21
- data/lib/puppet/application/apply.rb +22 -12
- data/lib/puppet/application/cert.rb +25 -180
- data/lib/puppet/application/describe.rb +9 -3
- data/lib/puppet/application/device.rb +41 -74
- data/lib/puppet/application/doc.rb +5 -3
- data/lib/puppet/application/filebucket.rb +1 -23
- data/lib/puppet/application/lookup.rb +2 -2
- data/lib/puppet/application/resource.rb +4 -4
- data/lib/puppet/application/script.rb +3 -3
- data/lib/puppet/application/ssl.rb +133 -0
- data/lib/puppet/application_support.rb +1 -2
- data/lib/puppet/configurer.rb +62 -127
- data/lib/puppet/configurer/downloader.rb +17 -34
- data/lib/puppet/configurer/fact_handler.rb +5 -1
- data/lib/puppet/configurer/plugin_handler.rb +2 -3
- data/lib/puppet/confine/false.rb +1 -7
- data/lib/puppet/confine/true.rb +1 -7
- data/lib/puppet/daemon.rb +2 -2
- data/lib/puppet/datatypes.rb +1 -1
- data/lib/puppet/defaults.rb +126 -286
- data/lib/puppet/environments.rb +2 -7
- data/lib/puppet/error.rb +14 -10
- data/lib/puppet/etc.rb +4 -25
- data/lib/puppet/external/dot.rb +23 -17
- data/lib/puppet/face/config.rb +50 -12
- data/lib/puppet/face/epp.rb +2 -2
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/face/help.rb +21 -7
- data/lib/puppet/face/help/global.erb +2 -2
- data/lib/puppet/face/module/build.rb +4 -59
- data/lib/puppet/face/module/generate.rb +5 -247
- data/lib/puppet/face/module/install.rb +0 -4
- data/lib/puppet/face/module/list.rb +5 -10
- data/lib/puppet/face/module/search.rb +2 -2
- data/lib/puppet/face/module/uninstall.rb +1 -5
- data/lib/puppet/face/module/upgrade.rb +1 -5
- data/lib/puppet/face/node/clean.rb +14 -10
- data/lib/puppet/face/plugin.rb +2 -9
- data/lib/puppet/feature/base.rb +7 -26
- data/lib/puppet/feature/eventlog.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/base.rb +7 -7
- data/lib/puppet/file_serving/fileset.rb +2 -2
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/metadata.rb +4 -3
- data/lib/puppet/file_serving/mount/locales.rb +2 -1
- data/lib/puppet/file_serving/mount/pluginfacts.rb +2 -1
- data/lib/puppet/file_serving/mount/plugins.rb +2 -1
- data/lib/puppet/file_system.rb +8 -0
- data/lib/puppet/file_system/memory_file.rb +1 -1
- data/lib/puppet/file_system/posix.rb +2 -3
- data/lib/puppet/file_system/uniquefile.rb +0 -4
- data/lib/puppet/forge.rb +8 -12
- data/lib/puppet/functions.rb +138 -0
- data/lib/puppet/functions/abs.rb +61 -0
- data/lib/puppet/functions/call.rb +38 -2
- data/lib/puppet/functions/camelcase.rb +62 -0
- data/lib/puppet/functions/capitalize.rb +61 -0
- data/lib/puppet/functions/ceiling.rb +37 -0
- data/lib/puppet/functions/chomp.rb +57 -0
- data/lib/puppet/functions/chop.rb +67 -0
- data/lib/puppet/functions/compare.rb +125 -0
- data/lib/puppet/functions/convert_to.rb +3 -2
- data/lib/puppet/functions/dig.rb +21 -1
- data/lib/puppet/functions/downcase.rb +89 -0
- data/lib/puppet/functions/epp.rb +4 -4
- data/lib/puppet/functions/eyaml_lookup_key.rb +4 -5
- data/lib/puppet/functions/filter.rb +7 -6
- data/lib/puppet/functions/floor.rb +37 -0
- data/lib/puppet/functions/get.rb +150 -0
- data/lib/puppet/functions/getvar.rb +87 -0
- data/lib/puppet/functions/inline_epp.rb +5 -5
- data/lib/puppet/functions/lstrip.rb +58 -0
- data/lib/puppet/functions/max.rb +183 -0
- data/lib/puppet/functions/min.rb +182 -0
- data/lib/puppet/functions/new.rb +3 -8
- data/lib/puppet/functions/reduce.rb +4 -2
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/round.rb +24 -0
- data/lib/puppet/functions/rstrip.rb +58 -0
- data/lib/puppet/functions/size.rb +15 -0
- data/lib/puppet/functions/sort.rb +74 -0
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +58 -0
- data/lib/puppet/functions/upcase.rb +89 -0
- data/lib/puppet/functions/yaml_data.rb +4 -5
- data/lib/puppet/gettext/config.rb +1 -1
- data/lib/puppet/gettext/module_translations.rb +1 -1
- data/lib/puppet/graph.rb +0 -2
- data/lib/puppet/graph/rb_tree_map.rb +2 -2
- data/lib/puppet/graph/simple_graph.rb +10 -7
- data/lib/puppet/indirector/catalog/compiler.rb +0 -8
- data/lib/puppet/indirector/catalog/json.rb +14 -3
- data/lib/puppet/indirector/catalog/yaml.rb +0 -16
- data/lib/puppet/indirector/certificate/file.rb +0 -1
- data/lib/puppet/indirector/facts/yaml.rb +4 -2
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +0 -6
- data/lib/puppet/indirector/indirection.rb +8 -12
- data/lib/puppet/indirector/key/file.rb +1 -6
- data/lib/puppet/indirector/node/exec.rb +1 -3
- data/lib/puppet/indirector/node/yaml.rb +0 -6
- data/lib/puppet/indirector/request.rb +20 -27
- data/lib/puppet/indirector/resource/ral.rb +3 -1
- data/lib/puppet/indirector/resource/validator.rb +1 -1
- data/lib/puppet/indirector/rest.rb +7 -65
- data/lib/puppet/indirector/ssl_file.rb +3 -44
- data/lib/puppet/indirector/terminus.rb +1 -1
- data/lib/puppet/indirector/yaml.rb +4 -4
- data/lib/puppet/info_service/task_information_service.rb +7 -3
- data/lib/puppet/interface.rb +2 -3
- data/lib/puppet/interface/action.rb +2 -5
- data/lib/puppet/interface/face_collection.rb +3 -1
- data/lib/puppet/loaders.rb +2 -0
- data/lib/puppet/metatype/manager.rb +3 -5
- data/lib/puppet/module.rb +5 -31
- data/lib/puppet/module/task.rb +208 -30
- data/lib/puppet/module_tool.rb +2 -5
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/module_tool/applications/application.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +7 -8
- data/lib/puppet/module_tool/applications/uninstaller.rb +4 -5
- data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.rb +5 -6
- data/lib/puppet/module_tool/installed_modules.rb +2 -2
- data/lib/puppet/module_tool/local_tarball.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -2
- data/lib/puppet/module_tool/shared_behaviors.rb +6 -6
- data/lib/puppet/module_tool/tar/mini.rb +2 -12
- data/lib/puppet/network/authconfig.rb +0 -13
- data/lib/puppet/network/format_support.rb +13 -8
- data/lib/puppet/network/formats.rb +93 -2
- data/lib/puppet/network/http.rb +0 -2
- data/lib/puppet/network/http/api.rb +1 -10
- data/lib/puppet/network/http/api/indirected_routes.rb +22 -16
- data/lib/puppet/network/http/api/master/v3/environment.rb +0 -3
- data/lib/puppet/network/http/connection.rb +14 -57
- data/lib/puppet/network/http/factory.rb +13 -7
- data/lib/puppet/network/http/handler.rb +59 -27
- data/lib/puppet/network/http/pool.rb +1 -7
- data/lib/puppet/network/http/site.rb +1 -1
- data/lib/puppet/network/resolver.rb +140 -67
- data/lib/puppet/node.rb +1 -2
- data/lib/puppet/node/environment.rb +5 -30
- data/lib/puppet/node/facts.rb +11 -1
- data/lib/puppet/parameter.rb +4 -7
- data/lib/puppet/parser/ast.rb +5 -9
- data/lib/puppet/parser/ast/branch.rb +3 -3
- data/lib/puppet/parser/ast/leaf.rb +5 -0
- data/lib/puppet/parser/ast/resourceparam.rb +1 -1
- data/lib/puppet/parser/catalog_compiler.rb +32 -0
- data/lib/puppet/parser/compiler.rb +2 -3
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -2
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -2
- data/lib/puppet/parser/environment_compiler.rb +0 -3
- data/lib/puppet/parser/functions.rb +48 -18
- data/lib/puppet/parser/functions/epp.rb +3 -3
- data/lib/puppet/parser/functions/filter.rb +1 -1
- data/lib/puppet/parser/functions/generate.rb +1 -1
- data/lib/puppet/parser/functions/inline_epp.rb +5 -5
- data/lib/puppet/parser/resource.rb +2 -4
- data/lib/puppet/parser/resource/param.rb +12 -11
- data/lib/puppet/parser/scope.rb +6 -8
- data/lib/puppet/parser/script_compiler.rb +7 -2
- data/lib/puppet/pops.rb +1 -0
- data/lib/puppet/pops/adaptable.rb +13 -7
- data/lib/puppet/pops/adapters.rb +18 -8
- data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +4 -4
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +3 -1
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +127 -0
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +17 -2
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +2 -3
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +23 -4
- data/lib/puppet/pops/evaluator/runtime3_support.rb +7 -8
- data/lib/puppet/pops/functions/dispatch.rb +6 -0
- data/lib/puppet/pops/issues.rb +9 -10
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +5 -3
- data/lib/puppet/pops/loader/module_loaders.rb +47 -21
- data/lib/puppet/pops/loader/null_loader.rb +60 -0
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +54 -0
- data/lib/puppet/pops/loader/static_loader.rb +0 -36
- data/lib/puppet/pops/loader/task_instantiator.rb +72 -44
- data/lib/puppet/pops/loaders.rb +21 -33
- data/lib/puppet/pops/lookup/hiera_config.rb +1 -2
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/merge_strategy.rb +18 -22
- data/lib/puppet/pops/model/ast.pp +16 -0
- data/lib/puppet/pops/model/ast.rb +94 -0
- data/lib/puppet/pops/model/factory.rb +17 -38
- data/lib/puppet/pops/model/model_label_provider.rb +8 -1
- data/lib/puppet/pops/parser/egrammar.ra +14 -3
- data/lib/puppet/pops/parser/eparser.rb +1537 -1492
- data/lib/puppet/pops/parser/epp_support.rb +6 -2
- data/lib/puppet/pops/parser/heredoc_support.rb +8 -17
- data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
- data/lib/puppet/pops/parser/lexer2.rb +2 -7
- data/lib/puppet/pops/parser/locator.rb +87 -107
- data/lib/puppet/pops/parser/parser_support.rb +2 -11
- data/lib/puppet/pops/parser/pn_parser.rb +16 -17
- data/lib/puppet/pops/pcore.rb +19 -8
- data/lib/puppet/pops/puppet_stack.rb +48 -51
- data/lib/puppet/pops/resource/resource_type_impl.rb +0 -2
- data/lib/puppet/pops/serialization.rb +3 -2
- data/lib/puppet/pops/serialization/from_data_converter.rb +4 -3
- data/lib/puppet/pops/serialization/to_data_converter.rb +3 -3
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +226 -0
- data/lib/puppet/pops/types/iterable.rb +8 -34
- data/lib/puppet/pops/types/p_binary_type.rb +1 -2
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_object_type.rb +3 -0
- 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 +0 -4
- data/lib/puppet/pops/types/string_converter.rb +12 -21
- data/lib/puppet/pops/types/type_calculator.rb +0 -24
- data/lib/puppet/pops/types/type_factory.rb +17 -0
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
- data/lib/puppet/pops/types/types.rb +7 -32
- data/lib/puppet/pops/validation/checker4_0.rb +23 -33
- data/lib/puppet/pops/validation/tasks_checker.rb +47 -6
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +7 -10
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/provider.rb +14 -2
- data/lib/puppet/provider/exec.rb +58 -59
- data/lib/puppet/provider/file/posix.rb +0 -5
- data/lib/puppet/provider/file/windows.rb +2 -50
- data/lib/puppet/provider/group/aix.rb +2 -18
- data/lib/puppet/provider/group/groupadd.rb +19 -19
- data/lib/puppet/provider/group/windows_adsi.rb +4 -11
- data/lib/puppet/provider/nameservice.rb +28 -11
- data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
- data/lib/puppet/provider/nameservice/pw.rb +2 -2
- data/lib/puppet/provider/package.rb +0 -2
- data/lib/puppet/provider/package/aix.rb +2 -17
- data/lib/puppet/provider/package/apt.rb +3 -14
- data/lib/puppet/provider/package/dnf.rb +3 -3
- data/lib/puppet/provider/package/dpkg.rb +7 -18
- data/lib/puppet/provider/package/fink.rb +3 -20
- data/lib/puppet/provider/package/gem.rb +43 -105
- data/lib/puppet/provider/package/openbsd.rb +2 -14
- data/lib/puppet/provider/package/pip.rb +108 -160
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +5 -18
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +4 -16
- data/lib/puppet/provider/package/portage.rb +6 -6
- data/lib/puppet/provider/package/puppet_gem.rb +2 -7
- data/lib/puppet/provider/package/rpm.rb +33 -82
- data/lib/puppet/provider/package/windows.rb +2 -6
- data/lib/puppet/provider/package/windows/exe_package.rb +10 -16
- data/lib/puppet/provider/package/windows/msi_package.rb +0 -8
- data/lib/puppet/provider/package/windows/package.rb +2 -10
- data/lib/puppet/provider/package/yum.rb +25 -37
- data/lib/puppet/provider/package/zypper.rb +0 -1
- data/lib/puppet/provider/parsedfile.rb +5 -26
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/daemontools.rb +9 -9
- data/lib/puppet/provider/service/debian.rb +1 -0
- data/lib/puppet/provider/service/launchd.rb +8 -39
- data/lib/puppet/provider/service/openbsd.rb +1 -1
- data/lib/puppet/provider/service/rcng.rb +2 -2
- data/lib/puppet/provider/service/runit.rb +8 -2
- data/lib/puppet/provider/service/smf.rb +0 -54
- data/lib/puppet/provider/service/systemd.rb +24 -35
- data/lib/puppet/provider/service/upstart.rb +1 -3
- data/lib/puppet/provider/service/windows.rb +3 -23
- data/lib/puppet/provider/user/aix.rb +2 -48
- data/lib/puppet/provider/user/directoryservice.rb +8 -45
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/pw.rb +3 -12
- data/lib/puppet/provider/user/user_role_add.rb +1 -5
- data/lib/puppet/provider/user/useradd.rb +44 -74
- data/lib/puppet/provider/user/windows_adsi.rb +0 -7
- data/lib/puppet/reference/indirection.rb +2 -2
- data/lib/puppet/reference/metaparameter.rb +3 -1
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/reference/type.rb +9 -3
- data/lib/puppet/reports.rb +3 -3
- data/lib/puppet/resource.rb +22 -22
- data/lib/puppet/resource/catalog.rb +8 -14
- data/lib/puppet/resource/type.rb +1 -10
- data/lib/puppet/rest/client.rb +83 -0
- data/lib/puppet/rest/errors.rb +14 -0
- data/lib/puppet/rest/response.rb +34 -0
- data/lib/puppet/rest/route.rb +84 -0
- data/lib/puppet/rest/routes.rb +154 -0
- data/lib/puppet/rest/ssl_context.rb +13 -0
- data/lib/puppet/settings.rb +9 -54
- data/lib/puppet/settings/config_file.rb +1 -2
- data/lib/puppet/settings/environment_conf.rb +0 -1
- data/lib/puppet/settings/file_setting.rb +1 -1
- data/lib/puppet/settings/server_list_setting.rb +0 -9
- data/lib/puppet/ssl.rb +0 -1
- data/lib/puppet/ssl/base.rb +1 -9
- data/lib/puppet/ssl/certificate.rb +7 -4
- data/lib/puppet/ssl/certificate_request.rb +6 -14
- data/lib/puppet/ssl/certificate_request_attributes.rb +1 -1
- data/lib/puppet/ssl/host.rb +400 -174
- data/lib/puppet/ssl/key.rb +1 -5
- data/lib/puppet/ssl/oids.rb +3 -3
- data/lib/puppet/ssl/validator/default_validator.rb +33 -49
- data/lib/puppet/test/test_helper.rb +12 -18
- data/lib/puppet/transaction.rb +7 -12
- data/lib/puppet/transaction/event.rb +37 -14
- data/lib/puppet/transaction/event_manager.rb +3 -11
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +1 -1
- data/lib/puppet/transaction/resource_harness.rb +2 -5
- data/lib/puppet/type.rb +7 -10
- data/lib/puppet/type/exec.rb +16 -50
- data/lib/puppet/type/file.rb +7 -16
- data/lib/puppet/type/file/content.rb +2 -3
- data/lib/puppet/type/file/data_sync.rb +1 -5
- data/lib/puppet/type/file/mode.rb +2 -7
- data/lib/puppet/type/file/source.rb +2 -1
- data/lib/puppet/type/filebucket.rb +8 -12
- data/lib/puppet/type/group.rb +3 -33
- data/lib/puppet/type/notify.rb +2 -3
- data/lib/puppet/type/package.rb +18 -154
- data/lib/puppet/type/resources.rb +2 -12
- data/lib/puppet/type/schedule.rb +34 -96
- data/lib/puppet/type/service.rb +10 -9
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +30 -14
- data/lib/puppet/util.rb +28 -52
- data/lib/puppet/util/autoload.rb +62 -56
- data/lib/puppet/util/character_encoding.rb +0 -22
- data/lib/puppet/util/classgen.rb +0 -6
- data/lib/puppet/util/command_line.rb +4 -7
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/connection.rb +74 -0
- data/lib/puppet/util/execution.rb +7 -22
- data/lib/puppet/util/feature.rb +63 -41
- data/lib/puppet/util/fileparsing.rb +27 -5
- data/lib/puppet/util/filetype.rb +8 -56
- data/lib/puppet/util/http_proxy.rb +18 -27
- data/lib/puppet/util/instance_loader.rb +3 -21
- data/lib/puppet/util/json.rb +0 -8
- data/lib/puppet/util/ldap/connection.rb +7 -7
- data/lib/puppet/util/log.rb +3 -8
- data/lib/puppet/util/log/destinations.rb +13 -5
- data/lib/puppet/util/logging.rb +19 -31
- data/lib/puppet/util/metric.rb +2 -2
- data/lib/puppet/util/monkey_patches.rb +1 -1
- data/lib/puppet/util/network_device/base.rb +1 -1
- data/lib/puppet/util/pidlock.rb +3 -23
- data/lib/puppet/util/platform.rb +3 -0
- data/lib/puppet/util/plist.rb +0 -6
- data/lib/puppet/util/posix.rb +0 -15
- data/lib/puppet/util/provider_features.rb +6 -7
- data/lib/puppet/util/rdoc.rb +2 -2
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
- data/lib/puppet/util/reference.rb +8 -7
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/rubygems.rb +1 -13
- data/lib/puppet/util/run_mode.rb +1 -1
- data/lib/puppet/util/selinux.rb +3 -9
- data/lib/puppet/util/ssl.rb +40 -1
- data/lib/puppet/util/storage.rb +1 -13
- data/lib/puppet/util/suidmanager.rb +7 -5
- data/lib/puppet/util/tag_set.rb +1 -1
- data/lib/puppet/util/tagging.rb +1 -1
- data/lib/puppet/util/windows.rb +15 -0
- data/lib/puppet/util/windows/adsi.rb +7 -116
- data/lib/puppet/util/windows/api_types.rb +33 -46
- data/lib/puppet/util/windows/eventlog.rb +6 -1
- data/lib/puppet/util/windows/principal.rb +6 -8
- data/lib/puppet/util/windows/process.rb +3 -94
- data/lib/puppet/util/windows/registry.rb +14 -46
- data/lib/puppet/util/windows/security.rb +2 -40
- data/lib/puppet/util/windows/service.rb +72 -431
- data/lib/puppet/util/windows/sid.rb +3 -4
- data/lib/puppet/util/windows/user.rb +9 -17
- data/lib/puppet/util/yaml.rb +41 -5
- data/lib/puppet/vendor.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +246 -23
- data/locales/ja/puppet.po +11128 -0
- data/locales/puppet.pot +1321 -2527
- data/man/man5/puppet.conf.5 +31 -191
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +3 -3
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +19 -23
- 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 +2 -21
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -7
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +10 -100
- data/man/man8/puppet-node.8 +4 -7
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +28 -0
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +12 -3
- data/spec/fixtures/unit/functions/hiera/hiera/backend/hieraspec_backend.rb +22 -0
- data/spec/fixtures/unit/functions/lookup/hiera/backend/custom_backend.rb +18 -0
- data/spec/fixtures/unit/functions/lookup/hiera/backend/other_backend.rb +7 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +6 -6
- data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -1
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +0 -2
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +0 -9
- data/spec/integration/agent/logging_spec.rb +9 -7
- data/spec/integration/application/apply_spec.rb +31 -26
- data/spec/integration/application/doc_spec.rb +2 -1
- data/spec/integration/application/lookup_spec.rb +5 -5
- data/spec/integration/configurer_spec.rb +8 -76
- data/spec/integration/data_binding_spec.rb +1 -1
- data/spec/integration/defaults_spec.rb +13 -16
- data/spec/integration/directory_environments_spec.rb +1 -1
- data/spec/integration/faces/config_spec.rb +4 -3
- data/spec/integration/faces/documentation_spec.rb +1 -0
- data/spec/integration/faces/plugin_spec.rb +49 -29
- data/spec/integration/file_bucket/file_spec.rb +4 -19
- data/spec/integration/file_serving/content_spec.rb +1 -0
- data/spec/integration/file_serving/fileset_spec.rb +1 -0
- data/spec/integration/file_serving/metadata_spec.rb +1 -0
- data/spec/integration/file_serving/terminus_helper_spec.rb +1 -0
- data/spec/integration/file_system/uniquefile_spec.rb +26 -29
- data/spec/integration/indirector/catalog/compiler_spec.rb +11 -10
- data/spec/integration/indirector/direct_file_server_spec.rb +1 -1
- data/spec/integration/indirector/facts/facter_spec.rb +8 -22
- data/spec/integration/indirector/file_content/file_server_spec.rb +8 -7
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +8 -7
- data/spec/integration/network/authconfig_spec.rb +24 -23
- data/spec/integration/network/formats_spec.rb +1 -0
- data/spec/integration/network/http/api/indirected_routes_spec.rb +6 -34
- data/spec/integration/node/environment_spec.rb +2 -1
- data/spec/integration/node/facts_spec.rb +10 -9
- data/spec/integration/node_spec.rb +7 -10
- data/spec/integration/parser/catalog_spec.rb +8 -6
- data/spec/integration/parser/collection_spec.rb +9 -4
- data/spec/integration/parser/compiler_spec.rb +7 -25
- data/spec/integration/parser/scope_spec.rb +1 -1
- data/spec/integration/parser/undef_param_spec.rb +1 -1
- data/spec/integration/provider/service/init_spec.rb +9 -6
- data/spec/integration/provider/service/systemd_spec.rb +14 -11
- data/spec/integration/provider/service/windows_spec.rb +11 -8
- data/spec/integration/reference/providers_spec.rb +7 -0
- data/spec/integration/reports_spec.rb +2 -1
- data/spec/integration/resource/catalog_spec.rb +17 -14
- data/spec/integration/resource/type_collection_spec.rb +5 -4
- data/spec/integration/ssl/certificate_request_spec.rb +1 -2
- data/spec/integration/ssl/host_spec.rb +17 -24
- data/spec/integration/ssl/key_spec.rb +7 -2
- data/spec/integration/test/test_helper_spec.rb +32 -0
- data/spec/integration/transaction/report_spec.rb +14 -9
- data/spec/integration/type/exec_spec.rb +2 -1
- data/spec/integration/type/file_spec.rb +38 -46
- data/spec/integration/type/package_spec.rb +25 -21
- data/spec/integration/type/tidy_spec.rb +2 -1
- data/spec/integration/type_spec.rb +1 -0
- data/spec/integration/util/autoload_spec.rb +11 -7
- data/spec/integration/util/execution_spec.rb +5 -32
- data/spec/integration/util/rdoc/parser_spec.rb +14 -23
- data/spec/integration/util/settings_spec.rb +2 -1
- data/spec/integration/util/windows/adsi_spec.rb +8 -11
- data/spec/integration/util/windows/principal_spec.rb +2 -1
- data/spec/integration/util/windows/process_spec.rb +9 -7
- data/spec/integration/util/windows/registry_spec.rb +46 -127
- data/spec/integration/util/windows/security_spec.rb +15 -16
- data/spec/integration/util/windows/user_spec.rb +29 -66
- data/spec/integration/util_spec.rb +10 -7
- data/spec/lib/matchers/json.rb +12 -18
- data/{lib/puppet/ssl → spec/lib/puppet}/certificate_factory.rb +5 -6
- data/spec/lib/puppet/test_ca.rb +109 -0
- data/spec/lib/puppet_spec/compiler.rb +28 -1
- data/spec/lib/puppet_spec/files.rb +29 -23
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +1 -1
- data/spec/lib/puppet_spec/modules.rb +11 -1
- data/spec/lib/puppet_spec/scope.rb +2 -1
- data/spec/lib/puppet_spec/ssl.rb +265 -0
- data/spec/lib/puppet_spec/validators.rb +37 -0
- data/spec/shared_behaviours/all_parsedfile_providers.rb +1 -1
- data/spec/shared_behaviours/file_server_terminus.rb +9 -8
- data/spec/shared_behaviours/file_serving.rb +8 -6
- data/spec/shared_behaviours/file_serving_model.rb +5 -22
- data/spec/shared_behaviours/hiera_indirections.rb +4 -3
- data/spec/shared_behaviours/iterative_functions.rb +1 -0
- data/spec/shared_behaviours/memory_terminus.rb +2 -2
- data/spec/shared_behaviours/path_parameters.rb +1 -1
- data/spec/shared_contexts/types_setup.rb +0 -2
- data/spec/shared_examples/rhel_package_provider.rb +70 -112
- data/spec/spec_helper.rb +1 -15
- data/spec/unit/agent/disabler_spec.rb +5 -4
- data/spec/unit/agent/locker_spec.rb +13 -12
- data/spec/unit/agent_spec.rb +102 -105
- data/spec/unit/application/agent_spec.rb +95 -114
- data/spec/unit/application/apply_spec.rb +92 -119
- data/spec/unit/application/config_spec.rb +1 -0
- data/spec/unit/application/describe_spec.rb +7 -6
- data/spec/unit/application/device_spec.rb +180 -181
- data/spec/unit/application/doc_spec.rb +46 -44
- data/spec/unit/application/face_base_spec.rb +62 -61
- data/spec/unit/application/facts_spec.rb +4 -3
- data/spec/unit/application/filebucket_spec.rb +74 -66
- data/spec/unit/application/indirection_base_spec.rb +6 -8
- data/spec/unit/application/lookup_spec.rb +44 -37
- data/spec/unit/application/resource_spec.rb +48 -42
- data/spec/unit/application/ssl_spec.rb +322 -0
- data/spec/unit/application_spec.rb +108 -90
- data/spec/unit/capability_spec.rb +15 -16
- data/spec/unit/{ssl/certificate_factory_spec.rb → certificate_factory_spec.rb} +13 -20
- data/spec/unit/configurer/downloader_spec.rb +22 -31
- data/spec/unit/configurer/fact_handler_spec.rb +7 -2
- data/spec/unit/configurer/plugin_handler_spec.rb +8 -41
- data/spec/unit/configurer_spec.rb +475 -520
- data/spec/unit/confine/exists_spec.rb +15 -17
- data/spec/unit/confine/false_spec.rb +6 -32
- data/spec/unit/confine/feature_spec.rb +5 -7
- data/spec/unit/confine/true_spec.rb +6 -32
- data/spec/unit/confine/variable_spec.rb +15 -14
- data/spec/unit/confine_collection_spec.rb +29 -28
- data/spec/unit/confine_spec.rb +14 -13
- data/spec/unit/confiner_spec.rb +11 -10
- data/spec/unit/context/trusted_information_spec.rb +4 -3
- data/spec/unit/daemon_spec.rb +38 -35
- data/spec/unit/data_providers/function_data_provider_spec.rb +1 -0
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +1 -0
- data/spec/unit/datatypes_spec.rb +4 -3
- data/spec/unit/defaults_spec.rb +61 -32
- data/spec/unit/environments_spec.rb +7 -7
- data/spec/unit/etc_spec.rb +29 -52
- data/spec/unit/external/pson_spec.rb +1 -0
- data/spec/unit/face/catalog_spec.rb +1 -0
- data/spec/unit/face/config_spec.rb +35 -31
- data/spec/unit/face/epp_face_spec.rb +4 -3
- data/spec/unit/face/facts_spec.rb +6 -14
- data/spec/unit/face/generate_spec.rb +5 -4
- data/spec/unit/face/help_spec.rb +8 -7
- data/spec/unit/face/key_spec.rb +1 -0
- data/spec/unit/face/man_spec.rb +2 -1
- data/spec/unit/face/module/install_spec.rb +5 -3
- data/spec/unit/face/module/list_spec.rb +12 -62
- data/spec/unit/face/module/search_spec.rb +9 -11
- data/spec/unit/face/module/uninstall_spec.rb +8 -4
- data/spec/unit/face/node_spec.rb +30 -52
- data/spec/unit/face/parser_spec.rb +3 -3
- data/spec/unit/face/plugin_spec.rb +9 -44
- data/spec/unit/face/status_spec.rb +1 -0
- data/spec/unit/file_bucket/dipper_spec.rb +24 -28
- data/spec/unit/file_bucket/file_spec.rb +2 -0
- data/spec/unit/file_serving/base_spec.rb +18 -20
- data/spec/unit/file_serving/configuration/parser_spec.rb +28 -27
- data/spec/unit/file_serving/configuration_spec.rb +66 -63
- data/spec/unit/file_serving/content_spec.rb +11 -10
- data/spec/unit/file_serving/fileset_spec.rb +58 -63
- data/spec/unit/file_serving/http_metadata_spec.rb +7 -8
- data/spec/unit/file_serving/metadata_spec.rb +40 -40
- data/spec/unit/file_serving/mount/file_spec.rb +32 -31
- data/spec/unit/file_serving/mount/locales_spec.rb +26 -25
- data/spec/unit/file_serving/mount/modules_spec.rb +15 -14
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +26 -25
- data/spec/unit/file_serving/mount/plugins_spec.rb +26 -25
- data/spec/unit/file_serving/mount/tasks_spec.rb +15 -14
- data/spec/unit/file_serving/mount_spec.rb +1 -0
- data/spec/unit/file_serving/terminus_helper_spec.rb +42 -37
- data/spec/unit/file_serving/terminus_selector_spec.rb +13 -12
- data/spec/unit/file_system/path_pattern_spec.rb +1 -1
- data/spec/unit/file_system/uniquefile_spec.rb +6 -17
- data/spec/unit/file_system_spec.rb +9 -6
- data/spec/unit/forge/errors_spec.rb +1 -1
- data/spec/unit/forge/forge_spec.rb +16 -15
- data/spec/unit/forge/module_release_spec.rb +18 -18
- data/spec/unit/forge/repository_spec.rb +30 -27
- data/spec/unit/forge_spec.rb +11 -15
- data/spec/unit/functions/abs_spec.rb +70 -0
- data/spec/unit/functions/binary_file_spec.rb +3 -3
- data/spec/unit/functions/call_spec.rb +59 -5
- data/spec/unit/functions/camelcase_spec.rb +34 -0
- data/spec/unit/functions/capitalize_spec.rb +34 -0
- data/spec/unit/functions/ceiling_spec.rb +65 -0
- data/spec/unit/functions/chomp_spec.rb +46 -0
- data/spec/unit/functions/chop_spec.rb +38 -0
- data/spec/unit/functions/compare_spec.rb +147 -0
- data/spec/unit/functions/contain_spec.rb +2 -0
- data/spec/unit/functions/convert_to_spec.rb +3 -0
- data/spec/unit/functions/defined_spec.rb +1 -0
- data/spec/unit/functions/downcase_spec.rb +34 -0
- data/spec/unit/functions/epp_spec.rb +2 -2
- data/spec/unit/functions/filter_spec.rb +4 -4
- data/spec/unit/functions/find_file_spec.rb +7 -7
- data/spec/unit/functions/floor_spec.rb +65 -0
- data/spec/unit/functions/get_spec.rb +135 -0
- data/spec/unit/functions/getvar_spec.rb +121 -0
- data/spec/unit/functions/hiera_spec.rb +14 -48
- data/spec/unit/functions/include_spec.rb +4 -0
- data/spec/unit/functions/lookup_fixture_spec.rb +1 -0
- data/spec/unit/functions/lookup_spec.rb +37 -62
- data/spec/unit/functions/lstrip_spec.rb +30 -0
- data/spec/unit/functions/match_spec.rb +3 -4
- data/spec/unit/functions/max_spec.rb +129 -0
- data/spec/unit/functions/min_spec.rb +129 -0
- data/spec/unit/functions/module_directory_spec.rb +12 -12
- data/spec/unit/functions/new_spec.rb +0 -15
- data/spec/unit/functions/regsubst_spec.rb +3 -4
- data/spec/unit/functions/require_spec.rb +3 -0
- data/spec/unit/functions/round_spec.rb +41 -0
- data/spec/unit/functions/rstrip_spec.rb +30 -0
- data/spec/unit/functions/shared.rb +8 -5
- data/spec/unit/functions/size_spec.rb +50 -0
- data/spec/unit/functions/sort_spec.rb +79 -0
- data/spec/unit/functions/split_spec.rb +3 -4
- data/spec/unit/functions/strip_spec.rb +30 -0
- data/spec/unit/functions/upcase_spec.rb +34 -0
- data/spec/unit/functions/versioncmp_spec.rb +4 -4
- data/spec/unit/functions4_spec.rb +78 -51
- data/spec/unit/gettext/config_spec.rb +4 -4
- data/spec/unit/gettext/module_loading_spec.rb +7 -7
- data/spec/unit/graph/rb_tree_map_spec.rb +2 -0
- data/spec/unit/graph/relationship_graph_spec.rb +2 -1
- data/spec/unit/graph/simple_graph_spec.rb +52 -11
- data/spec/unit/hiera/scope_spec.rb +0 -7
- data/spec/unit/hiera_puppet_spec.rb +20 -20
- data/spec/unit/indirector/catalog/compiler_spec.rb +166 -183
- data/spec/unit/indirector/catalog/json_spec.rb +2 -1
- data/spec/unit/indirector/catalog/msgpack_spec.rb +1 -0
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -0
- data/spec/unit/indirector/catalog/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/catalog/yaml_spec.rb +1 -0
- data/spec/unit/indirector/certificate/file_spec.rb +1 -8
- data/spec/unit/indirector/certificate/rest_spec.rb +10 -8
- data/spec/unit/indirector/certificate_request/file_spec.rb +1 -0
- data/spec/unit/indirector/certificate_request/rest_spec.rb +1 -0
- data/spec/unit/indirector/direct_file_server_spec.rb +49 -57
- data/spec/unit/indirector/envelope_spec.rb +2 -1
- data/spec/unit/indirector/exec_spec.rb +31 -26
- data/spec/unit/indirector/face_spec.rb +9 -9
- data/spec/unit/indirector/facts/facter_spec.rb +43 -37
- data/spec/unit/indirector/facts/network_device_spec.rb +9 -8
- data/spec/unit/indirector/facts/rest_spec.rb +8 -7
- data/spec/unit/indirector/facts/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/facts/yaml_spec.rb +90 -77
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +13 -9
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +1 -0
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +5 -4
- data/spec/unit/indirector/file_content/file_server_spec.rb +1 -0
- data/spec/unit/indirector/file_content/file_spec.rb +1 -0
- data/spec/unit/indirector/file_content/rest_spec.rb +1 -0
- data/spec/unit/indirector/file_content/selector_spec.rb +1 -0
- data/spec/unit/indirector/file_metadata/file_server_spec.rb +1 -0
- data/spec/unit/indirector/file_metadata/file_spec.rb +13 -12
- data/spec/unit/indirector/file_metadata/rest_spec.rb +1 -0
- data/spec/unit/indirector/file_metadata/selector_spec.rb +1 -0
- data/spec/unit/indirector/file_server_spec.rb +145 -145
- data/spec/unit/indirector/indirection_spec.rb +226 -249
- data/spec/unit/indirector/json_spec.rb +9 -7
- data/spec/unit/indirector/key/file_spec.rb +22 -38
- data/spec/unit/indirector/memory_spec.rb +7 -6
- data/spec/unit/indirector/msgpack_spec.rb +9 -7
- data/spec/unit/indirector/node/exec_spec.rb +43 -22
- data/spec/unit/indirector/node/memory_spec.rb +4 -2
- data/spec/unit/indirector/node/msgpack_spec.rb +1 -0
- data/spec/unit/indirector/node/plain_spec.rb +4 -2
- data/spec/unit/indirector/node/rest_spec.rb +1 -0
- data/spec/unit/indirector/node/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/node/yaml_spec.rb +1 -0
- data/spec/unit/indirector/none_spec.rb +5 -5
- data/spec/unit/indirector/plain_spec.rb +8 -7
- data/spec/unit/indirector/report/msgpack_spec.rb +1 -0
- data/spec/unit/indirector/report/processor_spec.rb +22 -21
- data/spec/unit/indirector/report/rest_spec.rb +12 -11
- data/spec/unit/indirector/report/yaml_spec.rb +1 -0
- data/spec/unit/indirector/request_spec.rb +18 -15
- data/spec/unit/indirector/resource/ral_spec.rb +55 -47
- data/spec/unit/indirector/resource/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/rest_spec.rb +110 -113
- data/spec/unit/indirector/ssl_file_spec.rb +100 -119
- data/spec/unit/indirector/status/local_spec.rb +1 -0
- data/spec/unit/indirector/status/rest_spec.rb +1 -0
- data/spec/unit/indirector/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/terminus_spec.rb +30 -32
- data/spec/unit/indirector/yaml_spec.rb +90 -68
- data/spec/unit/indirector_spec.rb +2 -1
- data/spec/unit/info_service_spec.rb +144 -10
- data/spec/unit/interface/action_builder_spec.rb +1 -0
- data/spec/unit/interface/action_manager_spec.rb +1 -0
- data/spec/unit/interface/action_spec.rb +3 -2
- data/spec/unit/interface/documentation_spec.rb +1 -0
- data/spec/unit/interface/face_collection_spec.rb +12 -19
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/man_spec.rb +4 -3
- data/spec/unit/module_spec.rb +52 -102
- data/spec/unit/module_tool/applications/installer_spec.rb +13 -12
- data/spec/unit/module_tool/applications/searcher_spec.rb +3 -3
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +2 -1
- data/spec/unit/module_tool/applications/unpacker_spec.rb +13 -13
- data/spec/unit/module_tool/applications/upgrader_spec.rb +6 -6
- data/spec/unit/module_tool/install_directory_spec.rb +8 -8
- data/spec/unit/module_tool/installed_modules_spec.rb +3 -3
- data/spec/unit/module_tool/tar/gnu_spec.rb +6 -6
- data/spec/unit/module_tool/tar/mini_spec.rb +12 -12
- data/spec/unit/module_tool/tar_spec.rb +13 -12
- data/spec/unit/module_tool_spec.rb +12 -29
- data/spec/unit/network/auth_config_parser_spec.rb +13 -11
- data/spec/unit/network/authconfig_spec.rb +18 -17
- data/spec/unit/network/authorization_spec.rb +5 -4
- data/spec/unit/network/authstore_spec.rb +1 -0
- data/spec/unit/network/format_handler_spec.rb +1 -0
- data/spec/unit/network/format_spec.rb +10 -9
- data/spec/unit/network/format_support_spec.rb +29 -28
- data/spec/unit/network/formats_spec.rb +31 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +41 -51
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +7 -9
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +1 -2
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +7 -6
- data/spec/unit/network/http/api_spec.rb +2 -26
- data/spec/unit/network/http/compression_spec.rb +28 -24
- data/spec/unit/network/http/connection_spec.rb +122 -72
- data/spec/unit/network/http/factory_spec.rb +11 -40
- data/spec/unit/network/http/handler_spec.rb +18 -9
- data/spec/unit/network/http/nocache_pool_spec.rb +7 -6
- data/spec/unit/network/http/pool_spec.rb +29 -60
- data/spec/unit/network/http/request_spec.rb +2 -0
- data/spec/unit/network/http/response_spec.rb +13 -11
- data/spec/unit/network/http/route_spec.rb +1 -0
- data/spec/unit/network/http/session_spec.rb +2 -1
- data/spec/unit/network/http/site_spec.rb +1 -0
- data/spec/unit/network/http_pool_spec.rb +9 -18
- data/spec/unit/network/http_spec.rb +1 -0
- data/spec/unit/network/resolver_spec.rb +104 -28
- data/spec/unit/network/rights_spec.rb +53 -52
- data/spec/unit/node/environment_spec.rb +17 -18
- data/spec/unit/node/facts_spec.rb +21 -6
- data/spec/unit/node_spec.rb +23 -17
- data/spec/unit/other/selinux_spec.rb +1 -71
- data/spec/unit/parameter/boolean_spec.rb +2 -1
- data/spec/unit/parameter/package_options_spec.rb +2 -1
- data/spec/unit/parameter/path_spec.rb +1 -0
- data/spec/unit/parameter/value_collection_spec.rb +1 -0
- data/spec/unit/parameter/value_spec.rb +1 -0
- data/spec/unit/parameter_spec.rb +9 -9
- data/spec/unit/parser/ast/block_expression_spec.rb +8 -6
- data/spec/unit/parser/ast/leaf_spec.rb +21 -20
- data/spec/unit/parser/compiler_spec.rb +96 -84
- data/spec/unit/parser/environment_compiler_spec.rb +16 -23
- data/spec/unit/parser/files_spec.rb +1 -0
- data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
- data/spec/unit/parser/functions/digest_spec.rb +1 -4
- data/spec/unit/parser/functions/fail_spec.rb +2 -5
- data/spec/unit/parser/functions/file_spec.rb +14 -17
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +6 -5
- data/spec/unit/parser/functions/generate_spec.rb +37 -38
- data/spec/unit/parser/functions/inline_template_spec.rb +1 -4
- data/spec/unit/parser/functions/regsubst_spec.rb +1 -4
- data/spec/unit/parser/functions/scanf_spec.rb +1 -4
- data/spec/unit/parser/functions/shellquote_spec.rb +1 -0
- data/spec/unit/parser/functions/split_spec.rb +1 -4
- data/spec/unit/parser/functions/sprintf_spec.rb +1 -4
- data/spec/unit/parser/functions/tag_spec.rb +2 -5
- data/spec/unit/parser/functions/tagged_spec.rb +3 -6
- data/spec/unit/parser/functions/template_spec.rb +13 -17
- data/spec/unit/parser/functions/versioncmp_spec.rb +2 -5
- data/spec/unit/parser/functions_spec.rb +29 -3
- data/spec/unit/parser/relationship_spec.rb +1 -0
- data/spec/unit/parser/resource/param_spec.rb +1 -1
- data/spec/unit/parser/resource_spec.rb +42 -42
- data/spec/unit/parser/scope_spec.rb +35 -39
- data/spec/unit/parser/templatewrapper_spec.rb +12 -11
- data/spec/unit/parser/type_loader_spec.rb +19 -17
- data/spec/unit/pops/adaptable_spec.rb +1 -0
- data/spec/unit/pops/benchmark_spec.rb +1 -0
- data/spec/unit/pops/evaluator/access_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +11 -0
- data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -0
- data/spec/unit/pops/evaluator/collections_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/conditionals_spec.rb +1 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +78 -18
- data/spec/unit/pops/evaluator/logical_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +5 -4
- data/spec/unit/pops/evaluator/string_interpolation_spec.rb +1 -0
- data/spec/unit/pops/evaluator/variables_spec.rb +1 -0
- data/spec/unit/pops/factory_spec.rb +4 -3
- data/spec/unit/pops/issues_spec.rb +20 -19
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +2 -2
- data/spec/unit/pops/loaders/loader_spec.rb +12 -36
- data/spec/unit/pops/loaders/loaders_spec.rb +57 -54
- data/spec/unit/pops/loaders/module_loaders_spec.rb +35 -3
- data/spec/unit/pops/loaders/static_loader_spec.rb +0 -36
- data/spec/unit/pops/lookup/context_spec.rb +1 -0
- data/spec/unit/pops/lookup/interpolation_spec.rb +3 -2
- data/spec/unit/pops/merge_strategy_spec.rb +1 -0
- data/spec/unit/pops/migration_spec.rb +5 -3
- data/spec/unit/pops/model/model_spec.rb +1 -0
- data/spec/unit/pops/model/pn_transformer_spec.rb +1 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +60 -21
- data/spec/unit/pops/parser/locator_spec.rb +6 -48
- data/spec/unit/pops/parser/parse_application_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_containers_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +12 -124
- data/spec/unit/pops/parser/parse_plan_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_resource_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_site_spec.rb +1 -0
- data/spec/unit/pops/parser/pn_parser_spec.rb +1 -0
- data/spec/unit/pops/pn_spec.rb +1 -0
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +1 -0
- data/spec/unit/pops/serialization/serialization_spec.rb +7 -5
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +29 -4
- data/spec/unit/pops/serialization/to_stringified_spec.rb +157 -0
- data/spec/unit/pops/types/deferred_spec.rb +87 -0
- data/spec/unit/pops/types/p_object_type_spec.rb +20 -0
- data/spec/unit/pops/types/p_timespan_type_spec.rb +0 -22
- data/spec/unit/pops/types/p_timestamp_type_spec.rb +0 -19
- data/spec/unit/pops/types/recursion_guard_spec.rb +10 -10
- data/spec/unit/pops/types/ruby_generator_spec.rb +2 -2
- data/spec/unit/pops/types/string_converter_spec.rb +11 -22
- data/spec/unit/pops/types/task_spec.rb +148 -16
- data/spec/unit/pops/types/type_asserter_spec.rb +2 -2
- data/spec/unit/pops/types/type_calculator_spec.rb +36 -36
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -9
- data/spec/unit/pops/types/type_parser_spec.rb +13 -13
- data/spec/unit/pops/types/types_spec.rb +12 -6
- data/spec/unit/pops/validator/validator_spec.rb +162 -82
- data/spec/unit/pops/visitor_spec.rb +1 -0
- data/spec/unit/property/boolean_spec.rb +1 -1
- data/spec/unit/property/ensure_spec.rb +1 -0
- data/spec/unit/property/keyvalue_spec.rb +34 -32
- data/spec/unit/property/list_spec.rb +27 -26
- data/spec/unit/property/ordered_list_spec.rb +14 -10
- data/spec/unit/property_spec.rb +53 -43
- data/spec/unit/provider/aix_object_spec.rb +45 -47
- data/spec/unit/provider/command_spec.rb +9 -9
- data/spec/unit/provider/exec/posix_spec.rb +9 -8
- data/spec/unit/provider/exec/shell_spec.rb +3 -1
- data/spec/unit/provider/exec/windows_spec.rb +6 -4
- data/spec/unit/provider/exec_spec.rb +1 -209
- data/spec/unit/provider/file/posix_spec.rb +24 -22
- data/spec/unit/provider/file/windows_spec.rb +19 -17
- data/spec/unit/provider/group/aix_spec.rb +7 -22
- data/spec/unit/provider/group/groupadd_spec.rb +27 -60
- data/spec/unit/provider/group/ldap_spec.rb +36 -33
- data/spec/unit/provider/group/pw_spec.rb +18 -15
- data/spec/unit/provider/group/windows_adsi_spec.rb +80 -128
- data/spec/unit/provider/ldap_spec.rb +62 -61
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +109 -102
- data/spec/unit/provider/nameservice_spec.rb +41 -39
- data/spec/unit/provider/package/aix_spec.rb +22 -48
- data/spec/unit/provider/package/appdmg_spec.rb +13 -13
- data/spec/unit/provider/package/apt_spec.rb +35 -60
- data/spec/unit/provider/package/aptitude_spec.rb +7 -7
- data/spec/unit/provider/package/aptrpm_spec.rb +13 -8
- data/spec/unit/provider/package/base_spec.rb +4 -4
- data/spec/unit/provider/package/dnf_spec.rb +23 -34
- data/spec/unit/provider/package/dpkg_spec.rb +72 -114
- data/spec/unit/provider/package/freebsd_spec.rb +18 -15
- data/spec/unit/provider/package/gem_spec.rb +86 -163
- data/spec/unit/provider/package/hpux_spec.rb +18 -15
- data/spec/unit/provider/package/macports_spec.rb +54 -56
- data/spec/unit/provider/package/nim_spec.rb +49 -33
- data/spec/unit/provider/package/openbsd_spec.rb +49 -60
- data/spec/unit/provider/package/opkg_spec.rb +26 -23
- data/spec/unit/provider/package/pacman_spec.rb +118 -97
- data/spec/unit/provider/package/pip3_spec.rb +6 -20
- data/spec/unit/provider/package/pip_spec.rb +129 -185
- data/spec/unit/provider/package/pkg_spec.rb +119 -129
- data/spec/unit/provider/package/pkgdmg_spec.rb +63 -65
- data/spec/unit/provider/package/pkgin_spec.rb +23 -20
- data/spec/unit/provider/package/pkgng_spec.rb +35 -67
- data/spec/unit/provider/package/pkgutil_spec.rb +49 -45
- data/spec/unit/provider/package/portage_spec.rb +76 -72
- data/spec/unit/provider/package/puppet_gem_spec.rb +21 -45
- data/spec/unit/provider/package/rpm_spec.rb +79 -291
- data/spec/unit/provider/package/sun_spec.rb +18 -16
- data/spec/unit/provider/package/tdnf_spec.rb +12 -9
- data/spec/unit/provider/package/up2date_spec.rb +4 -2
- data/spec/unit/provider/package/urpmi_spec.rb +17 -15
- data/spec/unit/provider/package/windows/exe_package_spec.rb +18 -15
- data/spec/unit/provider/package/windows/msi_package_spec.rb +23 -20
- data/spec/unit/provider/package/windows/package_spec.rb +43 -38
- data/spec/unit/provider/package/windows_spec.rb +36 -51
- data/spec/unit/provider/package/yum_spec.rb +24 -128
- data/spec/unit/provider/package/zypper_spec.rb +106 -117
- data/spec/unit/provider/parsedfile_spec.rb +45 -44
- data/spec/unit/provider/service/base_spec.rb +6 -5
- data/spec/unit/provider/service/bsd_spec.rb +54 -47
- data/spec/unit/provider/service/daemontools_spec.rb +53 -70
- data/spec/unit/provider/service/debian_spec.rb +58 -46
- data/spec/unit/provider/service/freebsd_spec.rb +23 -20
- data/spec/unit/provider/service/gentoo_spec.rb +81 -74
- data/spec/unit/provider/service/init_spec.rb +66 -65
- data/spec/unit/provider/service/launchd_spec.rb +114 -181
- data/spec/unit/provider/service/openbsd_spec.rb +94 -87
- data/spec/unit/provider/service/openrc_spec.rb +74 -70
- data/spec/unit/provider/service/openwrt_spec.rb +38 -30
- data/spec/unit/provider/service/rcng_spec.rb +24 -19
- data/spec/unit/provider/service/redhat_spec.rb +60 -60
- data/spec/unit/provider/service/runit_spec.rb +44 -61
- data/spec/unit/provider/service/smf_spec.rb +74 -143
- data/spec/unit/provider/service/src_spec.rb +69 -60
- data/spec/unit/provider/service/systemd_spec.rb +160 -222
- data/spec/unit/provider/service/upstart_spec.rb +99 -83
- data/spec/unit/provider/service/windows_spec.rb +42 -84
- data/spec/unit/provider/user/aix_spec.rb +24 -65
- data/spec/unit/provider/user/directoryservice_spec.rb +114 -187
- data/spec/unit/provider/user/hpux_spec.rb +21 -17
- data/spec/unit/provider/user/ldap_spec.rb +83 -80
- data/spec/unit/provider/user/openbsd_spec.rb +12 -11
- data/spec/unit/provider/user/pw_spec.rb +44 -80
- data/spec/unit/provider/user/user_role_add_spec.rb +94 -94
- data/spec/unit/provider/user/useradd_spec.rb +100 -208
- data/spec/unit/provider/user/windows_adsi_spec.rb +63 -62
- data/spec/unit/provider_spec.rb +189 -41
- data/spec/unit/puppet_pal_2pec.rb +26 -12
- data/spec/unit/puppet_pal_catalog_spec.rb +801 -0
- data/spec/unit/puppet_pal_spec.rb +2 -8
- data/spec/unit/puppet_spec.rb +7 -27
- data/spec/unit/relationship_spec.rb +1 -0
- data/spec/unit/reports/http_spec.rb +23 -21
- data/spec/unit/reports/store_spec.rb +4 -3
- data/spec/unit/reports_spec.rb +14 -12
- data/spec/unit/resource/capability_finder_spec.rb +26 -29
- data/spec/unit/resource/catalog_spec.rb +77 -81
- data/spec/unit/resource/status_spec.rb +8 -6
- data/spec/unit/resource/type_collection_spec.rb +18 -17
- data/spec/unit/resource/type_spec.rb +35 -34
- data/spec/unit/resource_spec.rb +79 -67
- data/spec/unit/rest/client_spec.rb +135 -0
- data/spec/unit/rest/route_spec.rb +132 -0
- data/spec/unit/scheduler/job_spec.rb +1 -0
- data/spec/unit/scheduler/scheduler_spec.rb +1 -0
- data/spec/unit/scheduler/splay_job_spec.rb +2 -1
- data/spec/unit/settings/array_setting_spec.rb +1 -1
- data/spec/unit/settings/autosign_setting_spec.rb +9 -9
- data/spec/unit/settings/certificate_revocation_setting_spec.rb +1 -1
- data/spec/unit/settings/config_file_spec.rb +10 -0
- data/spec/unit/settings/directory_setting_spec.rb +7 -2
- data/spec/unit/settings/duration_setting_spec.rb +2 -1
- data/spec/unit/settings/enum_setting_spec.rb +1 -1
- data/spec/unit/settings/environment_conf_spec.rb +6 -4
- data/spec/unit/settings/file_setting_spec.rb +50 -46
- data/spec/unit/settings/ini_file_spec.rb +2 -4
- data/spec/unit/settings/path_setting_spec.rb +3 -2
- data/spec/unit/settings/priority_setting_spec.rb +2 -1
- data/spec/unit/settings/string_setting_spec.rb +15 -14
- data/spec/unit/settings/terminus_setting_spec.rb +2 -1
- data/spec/unit/settings/value_translator_spec.rb +1 -0
- data/spec/unit/settings_spec.rb +226 -253
- data/spec/unit/ssl/base_spec.rb +15 -14
- data/spec/unit/ssl/certificate_request_attributes_spec.rb +22 -8
- data/spec/unit/ssl/certificate_request_spec.rb +63 -92
- data/spec/unit/ssl/certificate_spec.rb +29 -37
- data/spec/unit/ssl/digest_spec.rb +1 -0
- data/spec/unit/ssl/host_spec.rb +305 -685
- data/spec/unit/ssl/key_spec.rb +34 -46
- data/spec/unit/ssl/validator_spec.rb +70 -203
- data/spec/unit/task_spec.rb +172 -26
- data/spec/unit/transaction/additional_resource_generator_spec.rb +68 -67
- data/spec/unit/transaction/event_manager_spec.rb +84 -95
- data/spec/unit/transaction/event_spec.rb +15 -16
- data/spec/unit/transaction/persistence_spec.rb +18 -17
- data/spec/unit/transaction/report_spec.rb +24 -18
- data/spec/unit/transaction/resource_harness_spec.rb +33 -72
- data/spec/unit/transaction_spec.rb +106 -176
- data/spec/unit/type/component_spec.rb +1 -0
- data/spec/unit/type/exec_spec.rb +66 -120
- data/spec/unit/type/file/checksum_spec.rb +11 -10
- data/spec/unit/type/file/checksum_value_spec.rb +32 -31
- data/spec/unit/type/file/content_spec.rb +62 -65
- data/spec/unit/type/file/ctime_spec.rb +1 -0
- data/spec/unit/type/file/ensure_spec.rb +13 -12
- data/spec/unit/type/file/group_spec.rb +7 -5
- data/spec/unit/type/file/mode_spec.rb +6 -4
- data/spec/unit/type/file/mtime_spec.rb +1 -0
- data/spec/unit/type/file/owner_spec.rb +8 -6
- data/spec/unit/type/file/selinux_spec.rb +19 -17
- data/spec/unit/type/file/source_spec.rb +110 -113
- data/spec/unit/type/file/type_spec.rb +1 -0
- data/spec/unit/type/file_spec.rb +190 -204
- data/spec/unit/type/filebucket_spec.rb +10 -11
- data/spec/unit/type/group_spec.rb +9 -15
- data/spec/unit/type/noop_metaparam_spec.rb +2 -1
- data/spec/unit/type/package/package_settings_spec.rb +23 -44
- data/spec/unit/type/package_spec.rb +64 -61
- data/spec/unit/type/resources_spec.rb +101 -103
- data/spec/unit/type/schedule_spec.rb +28 -28
- data/spec/unit/type/service_spec.rb +85 -76
- data/spec/unit/type/stage_spec.rb +1 -0
- data/spec/unit/type/tidy_spec.rb +63 -62
- data/spec/unit/type/user_spec.rb +26 -147
- data/spec/unit/type/whit_spec.rb +1 -0
- data/spec/unit/type_spec.rb +164 -125
- data/spec/unit/util/at_fork_spec.rb +19 -18
- data/spec/unit/util/autoload_spec.rb +122 -93
- data/spec/unit/util/backups_spec.rb +35 -34
- data/spec/unit/util/character_encoding_spec.rb +5 -48
- data/spec/unit/util/checksums_spec.rb +39 -38
- data/spec/unit/util/colors_spec.rb +2 -1
- data/spec/unit/util/command_line_spec.rb +20 -40
- data/spec/unit/util/constant_inflector_spec.rb +1 -0
- data/spec/unit/util/diff_spec.rb +8 -7
- data/spec/unit/util/errors_spec.rb +1 -0
- data/spec/unit/util/execution_spec.rb +167 -285
- data/spec/unit/util/execution_stub_spec.rb +3 -2
- data/spec/unit/util/feature_spec.rb +46 -28
- data/spec/unit/util/filetype_spec.rb +53 -61
- data/spec/unit/util/http_proxy_spec.rb +13 -133
- data/spec/unit/util/inifile_spec.rb +31 -26
- data/spec/unit/util/json_lockfile_spec.rb +5 -3
- data/spec/unit/util/ldap/connection_spec.rb +25 -26
- data/spec/unit/util/ldap/generator_spec.rb +1 -0
- data/spec/unit/util/ldap/manager_spec.rb +102 -118
- data/spec/unit/util/lockfile_spec.rb +2 -1
- data/spec/unit/util/log/destinations_spec.rb +40 -23
- data/spec/unit/util/log_spec.rb +146 -48
- data/spec/unit/util/logging_spec.rb +114 -252
- data/spec/unit/util/metric_spec.rb +1 -0
- data/spec/unit/util/monkey_patches_spec.rb +12 -24
- data/spec/unit/util/multi_match_spec.rb +1 -0
- data/spec/unit/util/network_device/config_spec.rb +1 -0
- data/spec/unit/util/network_device/transport/base_spec.rb +6 -5
- data/spec/unit/util/network_device_spec.rb +9 -7
- data/spec/unit/util/package_spec.rb +1 -0
- data/spec/unit/util/pidlock_spec.rb +14 -86
- data/spec/unit/util/plist_spec.rb +33 -60
- data/spec/unit/util/posix_spec.rb +47 -78
- data/spec/unit/util/profiler/object_counts_spec.rb +2 -1
- data/spec/unit/util/rdoc_spec.rb +10 -9
- data/spec/unit/util/reference_spec.rb +1 -0
- data/spec/unit/util/resource_template_spec.rb +20 -20
- data/spec/unit/util/retry_action_spec.rb +8 -7
- data/spec/unit/util/rubygems_spec.rb +7 -41
- data/spec/unit/util/run_mode_spec.rb +11 -10
- data/spec/unit/util/selinux_spec.rb +73 -84
- data/spec/unit/util/splayer_spec.rb +9 -8
- data/spec/unit/util/ssl_spec.rb +1 -0
- data/spec/unit/util/storage_spec.rb +17 -111
- data/spec/unit/util/suidmanager_spec.rb +58 -47
- data/spec/unit/util/symbolic_file_mode_spec.rb +1 -0
- data/spec/unit/util/tag_set_spec.rb +9 -1
- data/spec/unit/util/tagging_spec.rb +12 -0
- data/spec/unit/util/terminal_spec.rb +10 -9
- data/spec/unit/util/user_attr_spec.rb +2 -1
- data/spec/unit/util/warnings_spec.rb +4 -3
- data/spec/unit/util/watcher/periodic_watcher_spec.rb +2 -2
- data/spec/unit/util/watcher_spec.rb +21 -51
- data/spec/unit/util/windows/access_control_entry_spec.rb +2 -1
- data/spec/unit/util/windows/access_control_list_spec.rb +2 -1
- data/spec/unit/util/windows/adsi_spec.rb +134 -278
- data/spec/unit/util/windows/api_types_spec.rb +42 -105
- data/spec/unit/util/windows/eventlog_spec.rb +13 -10
- data/spec/unit/util/windows/file_spec.rb +1 -0
- data/spec/unit/util/windows/root_certs_spec.rb +1 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +3 -1
- data/spec/unit/util/windows/service_spec.rb +180 -432
- data/spec/unit/util/windows/sid_spec.rb +17 -15
- data/spec/unit/util/windows/string_spec.rb +2 -1
- data/spec/unit/util/yaml_spec.rb +162 -28
- data/spec/unit/util_spec.rb +74 -119
- data/spec/unit/version_spec.rb +6 -6
- data/tasks/benchmark.rake +5 -1
- data/tasks/ci.rake +0 -5
- data/tasks/manpages.rake +9 -2
- data/tasks/parser.rake +11 -3
- metadata +162 -479
- data/CODEOWNERS +0 -30
- data/ext/rack/config.ru +0 -44
- data/ext/rack/example-passenger-vhost.conf +0 -57
- data/lib/puppet/application/ca.rb +0 -11
- data/lib/puppet/application/certificate.rb +0 -17
- data/lib/puppet/application/certificate_request.rb +0 -7
- data/lib/puppet/application/certificate_revocation_list.rb +0 -7
- data/lib/puppet/application/master.rb +0 -319
- data/lib/puppet/confine/boolean.rb +0 -45
- data/lib/puppet/external/nagios.rb +0 -46
- data/lib/puppet/external/nagios/base.rb +0 -472
- data/lib/puppet/external/nagios/grammar.ry +0 -248
- data/lib/puppet/external/nagios/makefile +0 -9
- data/lib/puppet/external/nagios/parser.rb +0 -400
- data/lib/puppet/face/ca.rb +0 -266
- data/lib/puppet/face/certificate.rb +0 -167
- data/lib/puppet/face/certificate_request.rb +0 -56
- data/lib/puppet/face/certificate_revocation_list.rb +0 -56
- data/lib/puppet/feature/rack.rb +0 -19
- data/lib/puppet/graph/random_prioritizer.rb +0 -16
- data/lib/puppet/graph/title_hash_prioritizer.rb +0 -16
- data/lib/puppet/indirector/certificate/ca.rb +0 -9
- data/lib/puppet/indirector/certificate/disabled_ca.rb +0 -22
- data/lib/puppet/indirector/certificate_request/ca.rb +0 -22
- data/lib/puppet/indirector/certificate_request/disabled_ca.rb +0 -22
- data/lib/puppet/indirector/certificate_revocation_list/ca.rb +0 -8
- data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +0 -22
- data/lib/puppet/indirector/certificate_revocation_list/file.rb +0 -8
- data/lib/puppet/indirector/certificate_revocation_list/rest.rb +0 -22
- data/lib/puppet/indirector/certificate_status.rb +0 -4
- data/lib/puppet/indirector/certificate_status/file.rb +0 -91
- data/lib/puppet/indirector/certificate_status/rest.rb +0 -11
- data/lib/puppet/indirector/key/ca.rb +0 -16
- data/lib/puppet/indirector/key/disabled_ca.rb +0 -22
- data/lib/puppet/indirector/ldap.rb +0 -86
- data/lib/puppet/indirector/node/ldap.rb +0 -275
- data/lib/puppet/indirector/node/write_only_yaml.rb +0 -39
- data/lib/puppet/module_tool/applications/builder.rb +0 -152
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +0 -18
- data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +0 -89
- data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +0 -32
- data/lib/puppet/module_tool/skeleton/templates/generator/examples/init.pp.erb +0 -12
- data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +0 -48
- data/lib/puppet/module_tool/skeleton/templates/generator/metadata.json.erb +0 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +0 -6
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +0 -1
- data/lib/puppet/network/http/api/ca.rb +0 -2
- data/lib/puppet/network/http/api/ca/v1.rb +0 -11
- data/lib/puppet/network/http/rack.rb +0 -33
- data/lib/puppet/network/http/rack/rest.rb +0 -162
- data/lib/puppet/network/http/webrick.rb +0 -124
- data/lib/puppet/network/http/webrick/rest.rb +0 -114
- data/lib/puppet/network/server.rb +0 -39
- data/lib/puppet/provider/augeas/augeas.rb +0 -767
- data/lib/puppet/provider/cisco.rb +0 -9
- data/lib/puppet/provider/computer/computer.rb +0 -20
- data/lib/puppet/provider/cron/crontab.rb +0 -297
- data/lib/puppet/provider/host/parsed.rb +0 -46
- data/lib/puppet/provider/interface/cisco.rb +0 -27
- data/lib/puppet/provider/macauthorization/macauthorization.rb +0 -298
- data/lib/puppet/provider/mailalias/aliases.rb +0 -50
- data/lib/puppet/provider/maillist/mailman.rb +0 -108
- data/lib/puppet/provider/mcx/mcxcontent.rb +0 -173
- data/lib/puppet/provider/mount.rb +0 -76
- data/lib/puppet/provider/mount/parsed.rb +0 -285
- data/lib/puppet/provider/naginator.rb +0 -63
- data/lib/puppet/provider/package/dnfmodule.rb +0 -141
- data/lib/puppet/provider/package_targetable.rb +0 -69
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +0 -590
- data/lib/puppet/provider/selboolean/getsetsebool.rb +0 -47
- data/lib/puppet/provider/selmodule/semodule.rb +0 -157
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +0 -105
- data/lib/puppet/provider/sshkey/parsed.rb +0 -50
- data/lib/puppet/provider/vlan/cisco.rb +0 -28
- data/lib/puppet/provider/yumrepo/inifile.rb +0 -315
- data/lib/puppet/provider/zfs/zfs.rb +0 -108
- data/lib/puppet/provider/zone/solaris.rb +0 -364
- data/lib/puppet/provider/zpool/zpool.rb +0 -125
- data/lib/puppet/ssl/certificate_authority.rb +0 -554
- data/lib/puppet/ssl/certificate_authority/autosign_command.rb +0 -45
- data/lib/puppet/ssl/certificate_authority/interface.rb +0 -324
- data/lib/puppet/ssl/certificate_revocation_list.rb +0 -111
- data/lib/puppet/ssl/configuration.rb +0 -61
- data/lib/puppet/ssl/inventory.rb +0 -55
- data/lib/puppet/type/augeas.rb +0 -211
- data/lib/puppet/type/computer.rb +0 -66
- data/lib/puppet/type/cron.rb +0 -480
- data/lib/puppet/type/host.rb +0 -95
- data/lib/puppet/type/interface.rb +0 -121
- data/lib/puppet/type/k5login.rb +0 -165
- data/lib/puppet/type/macauthorization.rb +0 -167
- data/lib/puppet/type/mailalias.rb +0 -46
- data/lib/puppet/type/maillist.rb +0 -62
- data/lib/puppet/type/mcx.rb +0 -98
- data/lib/puppet/type/mount.rb +0 -314
- data/lib/puppet/type/nagios_command.rb +0 -3
- data/lib/puppet/type/nagios_contact.rb +0 -3
- data/lib/puppet/type/nagios_contactgroup.rb +0 -3
- data/lib/puppet/type/nagios_host.rb +0 -3
- data/lib/puppet/type/nagios_hostdependency.rb +0 -3
- data/lib/puppet/type/nagios_hostescalation.rb +0 -3
- data/lib/puppet/type/nagios_hostextinfo.rb +0 -3
- data/lib/puppet/type/nagios_hostgroup.rb +0 -3
- data/lib/puppet/type/nagios_service.rb +0 -3
- data/lib/puppet/type/nagios_servicedependency.rb +0 -3
- data/lib/puppet/type/nagios_serviceescalation.rb +0 -3
- data/lib/puppet/type/nagios_serviceextinfo.rb +0 -3
- data/lib/puppet/type/nagios_servicegroup.rb +0 -3
- data/lib/puppet/type/nagios_timeperiod.rb +0 -3
- data/lib/puppet/type/router.rb +0 -17
- data/lib/puppet/type/scheduled_task.rb +0 -183
- data/lib/puppet/type/selboolean.rb +0 -40
- data/lib/puppet/type/selmodule.rb +0 -58
- data/lib/puppet/type/ssh_authorized_key.rb +0 -143
- data/lib/puppet/type/sshkey.rb +0 -83
- data/lib/puppet/type/vlan.rb +0 -26
- data/lib/puppet/type/yumrepo.rb +0 -430
- data/lib/puppet/type/zfs.rb +0 -154
- data/lib/puppet/type/zone.rb +0 -382
- data/lib/puppet/type/zpool.rb +0 -91
- data/lib/puppet/util/methodhelper.rb +0 -32
- data/lib/puppet/util/nagios_maker.rb +0 -85
- data/lib/puppet/util/network_device/cisco.rb +0 -4
- data/lib/puppet/util/network_device/cisco/device.rb +0 -285
- data/lib/puppet/util/network_device/cisco/facts.rb +0 -72
- data/lib/puppet/util/network_device/cisco/interface.rb +0 -94
- data/lib/puppet/util/network_device/ipcalc.rb +0 -68
- data/lib/puppet/util/network_device/transport/ssh.rb +0 -126
- data/lib/puppet/util/network_device/transport/telnet.rb +0 -47
- data/lib/puppet/util/windows/taskscheduler.rb +0 -1267
- data/lib/puppet/vendor/load_semantic.rb +0 -1
- data/lib/puppet/vendor/load_semantic_puppet.rb +0 -1
- data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -5
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +0 -11
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency.rb +0 -181
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph.rb +0 -60
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph_node.rb +0 -117
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +0 -58
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/source.rb +0 -25
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/unsatisfiable_graph.rb +0 -31
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +0 -3
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +0 -203
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +0 -758
- data/lib/puppet/vendor/semantic_puppet/locales/config.yaml +0 -21
- data/man/man8/puppet-ca.8 +0 -196
- data/man/man8/puppet-cert.8 +0 -118
- data/man/man8/puppet-certificate.8 +0 -240
- data/man/man8/puppet-certificate_request.8 +0 -161
- data/man/man8/puppet-certificate_revocation_list.8 +0 -139
- data/man/man8/puppet-master.8 +0 -85
- data/spec/fixtures/integration/provider/cron/crontab/create_normal_entry +0 -19
- data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +0 -18
- data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +0 -15
- data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +0 -4
- data/spec/fixtures/integration/provider/cron/crontab/modify_entry +0 -13
- data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +0 -15
- data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +0 -6
- data/spec/fixtures/integration/provider/cron/crontab/purged +0 -8
- data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +0 -12
- data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +0 -14
- data/spec/fixtures/integration/provider/cron/crontab/unspecialized +0 -15
- data/spec/fixtures/integration/provider/mailalias/aliases/test1 +0 -32
- data/spec/fixtures/integration/provider/sshkey/sample +0 -21
- data/spec/fixtures/unit/provider/augeas/augeas/augeas/lenses/test.aug +0 -13
- data/spec/fixtures/unit/provider/augeas/augeas/etc/fstab +0 -10
- data/spec/fixtures/unit/provider/augeas/augeas/etc/hosts +0 -6
- data/spec/fixtures/unit/provider/augeas/augeas/etc/test +0 -3
- data/spec/fixtures/unit/provider/augeas/augeas/test.aug +0 -13
- data/spec/fixtures/unit/provider/host/parsed/valid_hosts +0 -19
- data/spec/fixtures/unit/provider/mount/mount-output.aix.txt +0 -7
- data/spec/fixtures/unit/provider/mount/parsed/aix.filesystems +0 -152
- data/spec/fixtures/unit/provider/mount/parsed/aix.mount +0 -11
- data/spec/fixtures/unit/provider/mount/parsed/darwin.mount +0 -6
- data/spec/fixtures/unit/provider/mount/parsed/freebsd.fstab +0 -9
- data/spec/fixtures/unit/provider/mount/parsed/freebsd.mount +0 -4
- data/spec/fixtures/unit/provider/mount/parsed/hpux.mount +0 -17
- data/spec/fixtures/unit/provider/mount/parsed/linux.fstab +0 -12
- data/spec/fixtures/unit/provider/mount/parsed/linux.mount +0 -6
- data/spec/fixtures/unit/provider/mount/parsed/netbsd.fstab +0 -10
- data/spec/fixtures/unit/provider/mount/parsed/netbsd.mount +0 -9
- data/spec/fixtures/unit/provider/mount/parsed/openbsd.fstab +0 -5
- data/spec/fixtures/unit/provider/mount/parsed/openbsd.mount +0 -5
- data/spec/fixtures/unit/provider/mount/parsed/solaris.fstab +0 -11
- data/spec/fixtures/unit/provider/mount/parsed/solaris.mount +0 -6
- data/spec/fixtures/unit/provider/naginator/define_empty_param +0 -6
- data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +0 -19
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +0 -9
- data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +0 -6
- data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +0 -13
- data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys +0 -7
- data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys1 +0 -3
- data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys2 +0 -1
- data/spec/fixtures/unit/provider/sshkey/parsed/sample +0 -21
- data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +0 -8
- data/spec/fixtures/unit/provider/zfs/zfs/zfs-list.out +0 -2
- data/spec/fixtures/unit/provider/zpool/zpool/zpool-list.out +0 -2
- data/spec/integration/faces/ca_spec.rb +0 -353
- data/spec/integration/indirector/node/ldap_spec.rb +0 -13
- data/spec/integration/network/http_pool_spec.rb +0 -120
- data/spec/integration/provider/cron/crontab_spec.rb +0 -240
- data/spec/integration/provider/file/windows_spec.rb +0 -162
- data/spec/integration/provider/mailalias/aliases_spec.rb +0 -9
- data/spec/integration/provider/mount_spec.rb +0 -163
- data/spec/integration/provider/ssh_authorized_key_spec.rb +0 -217
- data/spec/integration/provider/sshkey_spec.rb +0 -153
- data/spec/integration/provider/yumrepo_spec.rb +0 -126
- data/spec/integration/ssl/autosign_spec.rb +0 -145
- data/spec/integration/ssl/certificate_authority_spec.rb +0 -161
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -33
- data/spec/integration/transaction_spec.rb +0 -553
- data/spec/integration/type/nagios_spec.rb +0 -69
- data/spec/integration/type/notify_spec.rb +0 -46
- data/spec/integration/type/user_spec.rb +0 -63
- data/spec/lib/puppet_spec/https.rb +0 -166
- data/spec/unit/application/cert_spec.rb +0 -272
- data/spec/unit/application/certificate_spec.rb +0 -21
- data/spec/unit/application/master_spec.rb +0 -414
- data/spec/unit/face/ca_spec.rb +0 -9
- data/spec/unit/face/certificate_request_spec.rb +0 -9
- data/spec/unit/face/certificate_revocation_list_spec.rb +0 -9
- data/spec/unit/face/certificate_spec.rb +0 -228
- data/spec/unit/face/module/build_spec.rb +0 -69
- data/spec/unit/graph/title_hash_prioritizer_spec.rb +0 -50
- data/spec/unit/indirector/certificate/ca_spec.rb +0 -21
- data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -32
- data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -56
- data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -32
- data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +0 -15
- data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -32
- data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +0 -16
- data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +0 -33
- data/spec/unit/indirector/certificate_status/file_spec.rb +0 -190
- data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -17
- data/spec/unit/indirector/code_spec.rb +0 -30
- data/spec/unit/indirector/key/ca_spec.rb +0 -22
- data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -32
- data/spec/unit/indirector/ldap_spec.rb +0 -151
- data/spec/unit/indirector/node/ldap_spec.rb +0 -463
- data/spec/unit/indirector/node/write_only_yaml_spec.rb +0 -11
- data/spec/unit/module_tool/applications/builder_spec.rb +0 -439
- data/spec/unit/network/http/api/ca/v1_spec.rb +0 -26
- data/spec/unit/network/http/rack/rest_spec.rb +0 -322
- data/spec/unit/network/http/rack_spec.rb +0 -42
- data/spec/unit/network/http/webrick/rest_spec.rb +0 -230
- data/spec/unit/network/http/webrick_spec.rb +0 -277
- data/spec/unit/network/server_spec.rb +0 -94
- data/spec/unit/provider/augeas/augeas_spec.rb +0 -1096
- data/spec/unit/provider/cisco_spec.rb +0 -14
- data/spec/unit/provider/cron/crontab_spec.rb +0 -206
- data/spec/unit/provider/cron/parsed_spec.rb +0 -355
- data/spec/unit/provider/host/parsed_spec.rb +0 -219
- data/spec/unit/provider/interface/cisco_spec.rb +0 -53
- data/spec/unit/provider/macauthorization_spec.rb +0 -134
- data/spec/unit/provider/mcx/mcxcontent_spec.rb +0 -190
- data/spec/unit/provider/mount/parsed_spec.rb +0 -318
- data/spec/unit/provider/mount_spec.rb +0 -169
- data/spec/unit/provider/naginator_spec.rb +0 -78
- data/spec/unit/provider/network_device_spec.rb +0 -152
- data/spec/unit/provider/package/dnfmodule_spec.rb +0 -247
- data/spec/unit/provider/package_targetable_spec.rb +0 -60
- data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +0 -2050
- data/spec/unit/provider/selboolean_spec.rb +0 -34
- data/spec/unit/provider/selmodule-example.pp +0 -0
- data/spec/unit/provider/selmodule_spec.rb +0 -154
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -259
- data/spec/unit/provider/sshkey/parsed_spec.rb +0 -92
- data/spec/unit/provider/vlan/cisco_spec.rb +0 -53
- data/spec/unit/provider/yumrepo/inifile_spec.rb +0 -413
- data/spec/unit/provider/zfs/zfs_spec.rb +0 -171
- data/spec/unit/provider/zone/solaris_spec.rb +0 -261
- data/spec/unit/provider/zpool/zpool_spec.rb +0 -250
- data/spec/unit/settings/server_list_setting_spec.rb +0 -21
- data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +0 -29
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +0 -563
- data/spec/unit/ssl/certificate_authority_spec.rb +0 -1165
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +0 -196
- data/spec/unit/ssl/configuration_spec.rb +0 -138
- data/spec/unit/ssl/inventory_spec.rb +0 -155
- data/spec/unit/test/test_helper_spec.rb +0 -17
- data/spec/unit/type/augeas_spec.rb +0 -120
- data/spec/unit/type/computer_spec.rb +0 -77
- data/spec/unit/type/cron_spec.rb +0 -539
- data/spec/unit/type/host_spec.rb +0 -680
- data/spec/unit/type/interface_spec.rb +0 -128
- data/spec/unit/type/k5login_spec.rb +0 -204
- data/spec/unit/type/macauthorization_spec.rb +0 -111
- data/spec/unit/type/mailalias_spec.rb +0 -48
- data/spec/unit/type/maillist_spec.rb +0 -38
- data/spec/unit/type/mcx_spec.rb +0 -75
- data/spec/unit/type/mount_spec.rb +0 -622
- data/spec/unit/type/nagios_spec.rb +0 -312
- data/spec/unit/type/scheduled_task_spec.rb +0 -117
- data/spec/unit/type/selboolean_spec.rb +0 -41
- data/spec/unit/type/selmodule_spec.rb +0 -16
- data/spec/unit/type/ssh_authorized_key_spec.rb +0 -228
- data/spec/unit/type/sshkey_spec.rb +0 -75
- data/spec/unit/type/vlan_spec.rb +0 -42
- data/spec/unit/type/yumrepo_spec.rb +0 -476
- data/spec/unit/type/zfs_spec.rb +0 -45
- data/spec/unit/type/zone_spec.rb +0 -182
- data/spec/unit/type/zpool_spec.rb +0 -108
- data/spec/unit/util/nagios_maker_spec.rb +0 -121
- data/spec/unit/util/network_device/cisco/device_spec.rb +0 -491
- data/spec/unit/util/network_device/cisco/facts_spec.rb +0 -63
- data/spec/unit/util/network_device/cisco/interface_spec.rb +0 -97
- data/spec/unit/util/network_device/ipcalc_spec.rb +0 -61
- data/spec/unit/util/network_device/transport/ssh_spec.rb +0 -252
- data/spec/unit/util/network_device/transport/telnet_spec.rb +0 -90
@@ -140,7 +140,12 @@ class Puppet::Util::Windows::EventLog
|
|
140
140
|
# @api private
|
141
141
|
def from_string_to_wide_string(str, &block)
|
142
142
|
str = wide_string(str)
|
143
|
-
FFI::MemoryPointer.
|
143
|
+
FFI::MemoryPointer.new(:uchar, str.bytesize) do |ptr|
|
144
|
+
# uchar here is synonymous with byte
|
145
|
+
ptr.put_array_of_uchar(0, str.bytes.to_a)
|
146
|
+
|
147
|
+
yield ptr
|
148
|
+
end
|
144
149
|
|
145
150
|
# ptr has already had free called, so nothing to return
|
146
151
|
nil
|
@@ -41,7 +41,6 @@ module Puppet::Util::Windows::SID
|
|
41
41
|
# = 8 + max sub identifiers (15) * 4
|
42
42
|
MAXIMUM_SID_BYTE_LENGTH = 68
|
43
43
|
|
44
|
-
ERROR_INVALID_PARAMETER = 87
|
45
44
|
ERROR_INSUFFICIENT_BUFFER = 122
|
46
45
|
|
47
46
|
def self.lookup_account_name(system_name = nil, account_name)
|
@@ -49,7 +48,9 @@ module Puppet::Util::Windows::SID
|
|
49
48
|
begin
|
50
49
|
if system_name
|
51
50
|
system_name_wide = Puppet::Util::Windows::String.wide_string(system_name)
|
52
|
-
|
51
|
+
# uchar here is synonymous with byte
|
52
|
+
system_name_ptr = FFI::MemoryPointer.new(:byte, system_name_wide.bytesize)
|
53
|
+
system_name_ptr.put_array_of_uchar(0, system_name_wide.bytes.to_a)
|
53
54
|
end
|
54
55
|
|
55
56
|
FFI::MemoryPointer.from_string_to_wide_string(account_name) do |account_name_ptr|
|
@@ -100,7 +101,9 @@ module Puppet::Util::Windows::SID
|
|
100
101
|
begin
|
101
102
|
if system_name
|
102
103
|
system_name_wide = Puppet::Util::Windows::String.wide_string(system_name)
|
103
|
-
|
104
|
+
# uchar here is synonymous with byte
|
105
|
+
system_name_ptr = FFI::MemoryPointer.new(:byte, system_name_wide.bytesize)
|
106
|
+
system_name_ptr.put_array_of_uchar(0, system_name_wide.bytes.to_a)
|
104
107
|
end
|
105
108
|
|
106
109
|
FFI::MemoryPointer.new(:byte, sid_bytes.length) do |sid_ptr|
|
@@ -109,11 +112,6 @@ module Puppet::Util::Windows::SID
|
|
109
112
|
FFI::MemoryPointer.new(:uint32, 1) do |name_use_enum_ptr|
|
110
113
|
|
111
114
|
sid_ptr.write_array_of_uchar(sid_bytes)
|
112
|
-
|
113
|
-
if Puppet::Util::Windows::SID.IsValidSid(sid_ptr) == FFI::WIN32_FALSE
|
114
|
-
raise Puppet::Util::Windows::Error.new(_('Byte array for lookup_account_sid is invalid: %{sid_bytes}') % { sid_bytes: sid_bytes }, ERROR_INVALID_PARAMETER)
|
115
|
-
end
|
116
|
-
|
117
115
|
success = LookupAccountSidW(system_name_ptr, sid_ptr, FFI::Pointer::NULL, name_length_ptr,
|
118
116
|
FFI::Pointer::NULL, domain_length_ptr, name_use_enum_ptr)
|
119
117
|
last_error = FFI.errno
|
@@ -7,39 +7,15 @@ module Puppet::Util::Windows::Process
|
|
7
7
|
extend FFI::Library
|
8
8
|
|
9
9
|
WAIT_TIMEOUT = 0x102
|
10
|
-
WAIT_INTERVAL = 200
|
11
|
-
# https://docs.microsoft.com/en-us/windows/desktop/ProcThread/process-creation-flags
|
12
|
-
CREATE_NO_WINDOW = 0x08000000
|
13
|
-
#https://docs.microsoft.com/en-us/windows/desktop/ProcThread/process-security-and-access-rights
|
14
|
-
PROCESS_QUERY_INFORMATION = 0x0400
|
15
|
-
# https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#maximum-path-length-limitation
|
16
|
-
MAX_PATH_LENGTH = 32767
|
17
10
|
|
18
11
|
def execute(command, arguments, stdin, stdout, stderr)
|
19
|
-
|
20
|
-
:command_line => command,
|
21
|
-
:startup_info => {
|
22
|
-
:stdin => stdin,
|
23
|
-
:stdout => stdout,
|
24
|
-
:stderr => stderr
|
25
|
-
},
|
26
|
-
:close_handles => false,
|
27
|
-
}
|
28
|
-
if arguments[:suppress_window]
|
29
|
-
create_args[:creation_flags] = CREATE_NO_WINDOW
|
30
|
-
end
|
31
|
-
cwd = arguments[:cwd]
|
32
|
-
if cwd
|
33
|
-
Dir.chdir(cwd) { Process.create(create_args) }
|
34
|
-
else
|
35
|
-
Process.create(create_args)
|
36
|
-
end
|
12
|
+
Process.create( :command_line => command, :startup_info => {:stdin => stdin, :stdout => stdout, :stderr => stderr}, :close_handles => false )
|
37
13
|
end
|
38
14
|
module_function :execute
|
39
15
|
|
40
16
|
def wait_process(handle)
|
41
|
-
while WaitForSingleObject(handle,
|
42
|
-
sleep(
|
17
|
+
while WaitForSingleObject(handle, 0) == WAIT_TIMEOUT
|
18
|
+
sleep(1)
|
43
19
|
end
|
44
20
|
|
45
21
|
exit_status = -1
|
@@ -66,26 +42,6 @@ module Puppet::Util::Windows::Process
|
|
66
42
|
end
|
67
43
|
module_function :get_current_process
|
68
44
|
|
69
|
-
def open_process(desired_access, inherit_handle, process_id, &block)
|
70
|
-
phandle = nil
|
71
|
-
inherit = inherit_handle ? FFI::WIN32_TRUE : FFI::WIN32_FALSE
|
72
|
-
begin
|
73
|
-
phandle = OpenProcess(desired_access, inherit, process_id)
|
74
|
-
if phandle == FFI::Pointer::NULL_HANDLE
|
75
|
-
raise Puppet::Util::Windows::Error.new(
|
76
|
-
"OpenProcess(#{desired_access.to_s(8)}, #{inherit}, #{process_id})")
|
77
|
-
end
|
78
|
-
|
79
|
-
yield phandle
|
80
|
-
ensure
|
81
|
-
FFI::WIN32.CloseHandle(phandle) if phandle
|
82
|
-
end
|
83
|
-
|
84
|
-
# phandle has had CloseHandle called against it, so nothing to return
|
85
|
-
nil
|
86
|
-
end
|
87
|
-
module_function :open_process
|
88
|
-
|
89
45
|
def open_process_token(handle, desired_access, &block)
|
90
46
|
token_handle = nil
|
91
47
|
begin
|
@@ -121,33 +77,6 @@ module Puppet::Util::Windows::Process
|
|
121
77
|
end
|
122
78
|
module_function :with_process_token
|
123
79
|
|
124
|
-
def get_process_image_name_by_pid(pid)
|
125
|
-
image_name = ""
|
126
|
-
|
127
|
-
Puppet::Util::Windows::Security.with_privilege(Puppet::Util::Windows::Security::SE_DEBUG_NAME) do
|
128
|
-
open_process(PROCESS_QUERY_INFORMATION, false, pid) do |phandle|
|
129
|
-
FFI::MemoryPointer.new(:dword, 1) do |exe_name_length_ptr|
|
130
|
-
# UTF is 2 bytes/char:
|
131
|
-
max_chars = MAX_PATH_LENGTH + 1
|
132
|
-
exe_name_length_ptr.write_dword(max_chars)
|
133
|
-
FFI::MemoryPointer.new(:wchar, max_chars) do |exe_name_ptr|
|
134
|
-
use_win32_path_format = 0
|
135
|
-
result = QueryFullProcessImageNameW(phandle, use_win32_path_format, exe_name_ptr, exe_name_length_ptr)
|
136
|
-
if result == FFI::WIN32_FALSE
|
137
|
-
raise Puppet::Util::Windows::Error.new(
|
138
|
-
"QueryFullProcessImageNameW(phandle, #{use_win32_path_format}, " +
|
139
|
-
"exe_name_ptr, #{max_chars}")
|
140
|
-
end
|
141
|
-
image_name = exe_name_ptr.read_wide_string(exe_name_length_ptr.read_dword)
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
image_name
|
148
|
-
end
|
149
|
-
module_function :get_process_image_name_by_pid
|
150
|
-
|
151
80
|
def lookup_privilege_value(name, system_name = '', &block)
|
152
81
|
FFI::MemoryPointer.new(LUID.size) do |luid_ptr|
|
153
82
|
result = LookupPrivilegeValueW(
|
@@ -417,16 +346,6 @@ module Puppet::Util::Windows::Process
|
|
417
346
|
attach_function_private :SetEnvironmentVariableW,
|
418
347
|
[:lpcwstr, :lpcwstr], :win32_bool
|
419
348
|
|
420
|
-
# https://msdn.microsoft.com/en-us/library/windows/desktop/ms684320(v=vs.85).aspx
|
421
|
-
# HANDLE WINAPI OpenProcess(
|
422
|
-
# _In_ DWORD DesiredAccess,
|
423
|
-
# _In_ BOOL InheritHandle,
|
424
|
-
# _In_ DWORD ProcessId
|
425
|
-
# );
|
426
|
-
ffi_lib :kernel32
|
427
|
-
attach_function_private :OpenProcess,
|
428
|
-
[:dword, :win32_bool, :dword], :handle
|
429
|
-
|
430
349
|
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa379295(v=vs.85).aspx
|
431
350
|
# BOOL WINAPI OpenProcessToken(
|
432
351
|
# _In_ HANDLE ProcessHandle,
|
@@ -437,16 +356,6 @@ module Puppet::Util::Windows::Process
|
|
437
356
|
attach_function_private :OpenProcessToken,
|
438
357
|
[:handle, :dword, :phandle], :win32_bool
|
439
358
|
|
440
|
-
# https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-queryfullprocessimagenamew
|
441
|
-
# BOOL WINAPI QueryFullProcessImageName(
|
442
|
-
# _In_ HANDLE hProcess,
|
443
|
-
# _In_ DWORD dwFlags,
|
444
|
-
# _Out_ LPWSTR lpExeName,
|
445
|
-
# _In_ PDWORD lpdwSize,
|
446
|
-
# );
|
447
|
-
ffi_lib :kernel32
|
448
|
-
attach_function_private :QueryFullProcessImageNameW,
|
449
|
-
[:handle, :dword, :lpwstr, :pdword], :win32_bool
|
450
359
|
|
451
360
|
# https://msdn.microsoft.com/en-us/library/windows/desktop/aa379261(v=vs.85).aspx
|
452
361
|
# typedef struct _LUID {
|
@@ -46,12 +46,11 @@ module Puppet::Util::Windows
|
|
46
46
|
|
47
47
|
subkey_max_len, _ = reg_query_info_key_max_lengths(key)
|
48
48
|
|
49
|
-
|
49
|
+
begin
|
50
50
|
subkey, filetime = reg_enum_key(key, index, subkey_max_len)
|
51
51
|
yield subkey, filetime if !subkey.nil?
|
52
52
|
index += 1
|
53
|
-
|
54
|
-
end
|
53
|
+
end while !subkey.nil?
|
55
54
|
|
56
55
|
index
|
57
56
|
end
|
@@ -66,40 +65,17 @@ module Puppet::Util::Windows
|
|
66
65
|
vals
|
67
66
|
end
|
68
67
|
|
69
|
-
# Retrieve a set of values from a registry key given their names
|
70
|
-
# Value names listed but not found in the registry will not be added to the
|
71
|
-
# resultant Hashtable
|
72
|
-
#
|
73
|
-
# @param key [RegistryKey] An open handle to a Registry Key
|
74
|
-
# @param names [String[]] An array of names of registry values to return if they exist
|
75
|
-
# @return [Hashtable<String, Object>] A hashtable of all of the found values in the registry key
|
76
|
-
def values_by_name(key, names)
|
77
|
-
vals = {}
|
78
|
-
names.each do |name|
|
79
|
-
FFI::Pointer.from_string_to_wide_string(name) do |subkeyname_ptr|
|
80
|
-
begin
|
81
|
-
_, vals[name] = read(key, subkeyname_ptr)
|
82
|
-
rescue Puppet::Util::Windows::Error => e
|
83
|
-
# ignore missing names, but raise other errors
|
84
|
-
raise e unless e.code == Puppet::Util::Windows::Error::ERROR_FILE_NOT_FOUND
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
vals
|
89
|
-
end
|
90
|
-
|
91
68
|
def each_value(key, &block)
|
92
69
|
index = 0
|
93
70
|
subkey = nil
|
94
71
|
|
95
72
|
_, value_max_len = reg_query_info_key_max_lengths(key)
|
96
73
|
|
97
|
-
|
74
|
+
begin
|
98
75
|
subkey, type, data = reg_enum_value(key, index, value_max_len)
|
99
76
|
yield subkey, type, data if !subkey.nil?
|
100
77
|
index += 1
|
101
|
-
|
102
|
-
end
|
78
|
+
end while !subkey.nil?
|
103
79
|
|
104
80
|
index
|
105
81
|
end
|
@@ -110,16 +86,13 @@ module Puppet::Util::Windows
|
|
110
86
|
|
111
87
|
private
|
112
88
|
|
113
|
-
|
114
|
-
MAX_KEY_CHAR_LENGTH = 255 + 1
|
115
|
-
|
116
|
-
def reg_enum_key(key, index, max_key_char_length = MAX_KEY_CHAR_LENGTH)
|
89
|
+
def reg_enum_key(key, index, max_key_length = Win32::Registry::Constants::MAX_KEY_LENGTH)
|
117
90
|
subkey, filetime = nil, nil
|
118
91
|
|
119
92
|
FFI::MemoryPointer.new(:dword) do |subkey_length_ptr|
|
120
93
|
FFI::MemoryPointer.new(FFI::WIN32::FILETIME.size) do |filetime_ptr|
|
121
|
-
FFI::MemoryPointer.new(:wchar,
|
122
|
-
subkey_length_ptr.write_dword(
|
94
|
+
FFI::MemoryPointer.new(:wchar, max_key_length) do |subkey_ptr|
|
95
|
+
subkey_length_ptr.write_dword(max_key_length)
|
123
96
|
|
124
97
|
# RegEnumKeyEx cannot be called twice to properly size the buffer
|
125
98
|
result = RegEnumKeyExW(key.hkey, index,
|
@@ -131,7 +104,7 @@ module Puppet::Util::Windows
|
|
131
104
|
|
132
105
|
if result != FFI::ERROR_SUCCESS
|
133
106
|
msg = _("Failed to enumerate %{key} registry keys at index %{index}") % { key: key.keyname, index: index }
|
134
|
-
raise Puppet::Util::Windows::Error.new(msg
|
107
|
+
raise Puppet::Util::Windows::Error.new(msg)
|
135
108
|
end
|
136
109
|
|
137
110
|
filetime = FFI::WIN32::FILETIME.new(filetime_ptr)
|
@@ -144,10 +117,7 @@ module Puppet::Util::Windows
|
|
144
117
|
[subkey, filetime]
|
145
118
|
end
|
146
119
|
|
147
|
-
|
148
|
-
MAX_VALUE_CHAR_LENGTH = 16383 + 1
|
149
|
-
|
150
|
-
def reg_enum_value(key, index, max_value_length = MAX_VALUE_CHAR_LENGTH)
|
120
|
+
def reg_enum_value(key, index, max_value_length = Win32::Registry::Constants::MAX_VALUE_LENGTH)
|
151
121
|
subkey, type, data = nil, nil, nil
|
152
122
|
|
153
123
|
FFI::MemoryPointer.new(:dword) do |subkey_length_ptr|
|
@@ -165,7 +135,7 @@ module Puppet::Util::Windows
|
|
165
135
|
|
166
136
|
if result != FFI::ERROR_SUCCESS
|
167
137
|
msg = _("Failed to enumerate %{key} registry values at index %{index}") % { key: key.keyname, index: index }
|
168
|
-
raise Puppet::Util::Windows::Error.new(msg
|
138
|
+
raise Puppet::Util::Windows::Error.new(msg)
|
169
139
|
end
|
170
140
|
|
171
141
|
subkey_length = subkey_length_ptr.read_dword
|
@@ -195,7 +165,7 @@ module Puppet::Util::Windows
|
|
195
165
|
|
196
166
|
if status != FFI::ERROR_SUCCESS
|
197
167
|
msg = _("Failed to query registry %{key} for sizes") % { key: key.keyname }
|
198
|
-
raise Puppet::Util::Windows::Error.new(msg
|
168
|
+
raise Puppet::Util::Windows::Error.new(msg)
|
199
169
|
end
|
200
170
|
|
201
171
|
result = [
|
@@ -240,7 +210,7 @@ module Puppet::Util::Windows
|
|
240
210
|
begin
|
241
211
|
case type
|
242
212
|
when Win32::Registry::REG_SZ, Win32::Registry::REG_EXPAND_SZ
|
243
|
-
result = [ type, data_ptr.read_wide_string(string_length
|
213
|
+
result = [ type, data_ptr.read_wide_string(string_length) ]
|
244
214
|
when Win32::Registry::REG_MULTI_SZ
|
245
215
|
result = [ type, data_ptr.read_wide_string(string_length).split(/\0/) ]
|
246
216
|
when Win32::Registry::REG_BINARY
|
@@ -277,10 +247,8 @@ module Puppet::Util::Windows
|
|
277
247
|
buffer_ptr, length_ptr)
|
278
248
|
|
279
249
|
if result != FFI::ERROR_SUCCESS
|
280
|
-
|
281
|
-
|
282
|
-
msg = _("Failed to read registry value %{value} at %{key}") % { value: name_ptr.read_wide_string(name_length), key: key.keyname }
|
283
|
-
raise Puppet::Util::Windows::Error.new(msg, result)
|
250
|
+
msg = _("Failed to read registry value %{value} at %{key}") % { value: name_ptr.read_wide_string, key: key.keyname }
|
251
|
+
raise Puppet::Util::Windows::Error.new(msg)
|
284
252
|
end
|
285
253
|
|
286
254
|
# allows caller to use FFI MemoryPointer helpers to read / shape
|
@@ -97,7 +97,6 @@ module Puppet::Util::Windows::Security
|
|
97
97
|
FILE = Puppet::Util::Windows::File
|
98
98
|
|
99
99
|
SE_BACKUP_NAME = 'SeBackupPrivilege'
|
100
|
-
SE_DEBUG_NAME = 'SeDebugPrivilege'
|
101
100
|
SE_RESTORE_NAME = 'SeRestorePrivilege'
|
102
101
|
|
103
102
|
DELETE = 0x00010000
|
@@ -201,7 +200,6 @@ module Puppet::Util::Windows::Security
|
|
201
200
|
well_known_world_sid = Puppet::Util::Windows::SID::Everyone
|
202
201
|
well_known_nobody_sid = Puppet::Util::Windows::SID::Nobody
|
203
202
|
well_known_system_sid = Puppet::Util::Windows::SID::LocalSystem
|
204
|
-
well_known_app_packages_sid = Puppet::Util::Windows::SID::AllAppPackages
|
205
203
|
|
206
204
|
mode = S_ISYSTEM_MISSING
|
207
205
|
|
@@ -236,7 +234,6 @@ module Puppet::Util::Windows::Security
|
|
236
234
|
if (ace.mask & FILE::FILE_APPEND_DATA).nonzero?
|
237
235
|
mode |= S_ISVTX
|
238
236
|
end
|
239
|
-
when well_known_app_packages_sid
|
240
237
|
when well_known_system_sid
|
241
238
|
else
|
242
239
|
#puts "Warning, unable to map SID into POSIX mode: #{ace.sid}"
|
@@ -277,7 +274,7 @@ module Puppet::Util::Windows::Security
|
|
277
274
|
# mode. Only a user with the SE_BACKUP_NAME and SE_RESTORE_NAME
|
278
275
|
# privileges in their process token can change the mode for objects
|
279
276
|
# that they do not have read and write access to.
|
280
|
-
def set_mode(mode, path, protected = true
|
277
|
+
def set_mode(mode, path, protected = true)
|
281
278
|
sd = get_security_descriptor(path)
|
282
279
|
well_known_world_sid = Puppet::Util::Windows::SID::Everyone
|
283
280
|
well_known_nobody_sid = Puppet::Util::Windows::SID::Nobody
|
@@ -322,47 +319,11 @@ module Puppet::Util::Windows::Security
|
|
322
319
|
nobody_allow |= FILE::FILE_APPEND_DATA;
|
323
320
|
end
|
324
321
|
|
325
|
-
isownergroup = sd.owner == sd.group
|
326
|
-
|
327
322
|
# caller is NOT managing SYSTEM by using group or owner, so set to FULL
|
328
323
|
if ! [sd.owner, sd.group].include? well_known_system_sid
|
329
324
|
# we don't check S_ISYSTEM_MISSING bit, but automatically carry over existing SYSTEM perms
|
330
325
|
# by default set SYSTEM perms to full
|
331
326
|
system_allow = FILE::FILE_ALL_ACCESS
|
332
|
-
else
|
333
|
-
# It is possible to set SYSTEM with a mode other than Full Control (7) however this makes no sense and in practical terms
|
334
|
-
# should not be done. We can trap these instances and correct them before being applied.
|
335
|
-
if (sd.owner == well_known_system_sid) && (owner_allow != FILE::FILE_ALL_ACCESS)
|
336
|
-
# If owner and group are both SYSTEM but group is unmanaged the control rights of system will be set to FullControl by
|
337
|
-
# the unmanaged group, so there is no need for the warning
|
338
|
-
if managing_owner && (!isownergroup || managing_group)
|
339
|
-
#TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
|
340
|
-
Puppet.warning _("Setting control rights for %{path} owner SYSTEM to less than Full Control rights. Setting SYSTEM rights to less than Full Control may have unintented consequences for operations on this file") % { path: path }
|
341
|
-
elsif managing_owner && isownergroup
|
342
|
-
#TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
|
343
|
-
Puppet.debug _("%{path} owner and group both set to user SYSTEM, but group is not managed directly: SYSTEM user rights will be set to FullControl by group") % { path: path }
|
344
|
-
else
|
345
|
-
#TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
|
346
|
-
Puppet.debug _("An attempt to set mode %{mode} on item %{path} would result in the owner, SYSTEM, to have less than Full Control rights. This attempt has been corrected to Full Control") % { mode: mode.to_s(8), path: path }
|
347
|
-
owner_allow = FILE::FILE_ALL_ACCESS
|
348
|
-
end
|
349
|
-
end
|
350
|
-
|
351
|
-
if (sd.group == well_known_system_sid) && (group_allow != FILE::FILE_ALL_ACCESS)
|
352
|
-
# If owner and group are both SYSTEM but owner is unmanaged the control rights of system will be set to FullControl by
|
353
|
-
# the unmanaged owner, so there is no need for the warning.
|
354
|
-
if managing_group && (!isownergroup || managing_owner)
|
355
|
-
#TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
|
356
|
-
Puppet.warning _("Setting control rights for %{path} group SYSTEM to less than Full Control rights. Setting SYSTEM rights to less than Full Control may have unintented consequences for operations on this file") % { path: path }
|
357
|
-
elsif managing_group && isownergroup
|
358
|
-
#TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
|
359
|
-
Puppet.debug _("%{path} owner and group both set to user SYSTEM, but owner is not managed directly: SYSTEM user rights will be set to FullControl by owner") % { path: path }
|
360
|
-
else
|
361
|
-
#TRANSLATORS 'SYSTEM' is a Windows name and should not be translated
|
362
|
-
Puppet.debug _("An attempt to set mode %{mode} on item %{path} would result in the group, SYSTEM, to have less than Full Control rights. This attempt has been corrected to Full Control") % { mode: mode.to_s(8), path: path }
|
363
|
-
group_allow = FILE::FILE_ALL_ACCESS
|
364
|
-
end
|
365
|
-
end
|
366
327
|
end
|
367
328
|
|
368
329
|
# even though FILE_DELETE_CHILD only applies to directories, it can be set on files
|
@@ -378,6 +339,7 @@ module Puppet::Util::Windows::Security
|
|
378
339
|
end
|
379
340
|
|
380
341
|
# if owner and group the same, then map group permissions to the one owner ACE
|
342
|
+
isownergroup = sd.owner == sd.group
|
381
343
|
if isownergroup
|
382
344
|
owner_allow |= group_allow
|
383
345
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
require 'puppet/util/windows'
|
3
2
|
require 'ffi'
|
4
3
|
|
@@ -18,10 +17,6 @@ module Puppet::Util::Windows
|
|
18
17
|
# no shorter
|
19
18
|
DEFAULT_TIMEOUT = 30
|
20
19
|
|
21
|
-
# Service error codes
|
22
|
-
# https://docs.microsoft.com/en-us/windows/desktop/debug/system-error-codes--1000-1299-
|
23
|
-
ERROR_SERVICE_DOES_NOT_EXIST = 0x00000424
|
24
|
-
|
25
20
|
# Service control codes
|
26
21
|
# https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-controlserviceexw
|
27
22
|
SERVICE_CONTROL_STOP = 0x00000001
|
@@ -41,26 +36,6 @@ module Puppet::Util::Windows
|
|
41
36
|
SERVICE_CONTROL_PRESHUTDOWN = 0x0000000F
|
42
37
|
SERVICE_CONTROL_TIMECHANGE = 0x00000010
|
43
38
|
SERVICE_CONTROL_TRIGGEREVENT = 0x00000020
|
44
|
-
SERVICE_CONTROL_SIGNALS = {
|
45
|
-
SERVICE_CONTROL_STOP => :SERVICE_CONTROL_STOP,
|
46
|
-
SERVICE_CONTROL_PAUSE => :SERVICE_CONTROL_PAUSE,
|
47
|
-
SERVICE_CONTROL_CONTINUE => :SERVICE_CONTROL_CONTINUE,
|
48
|
-
SERVICE_CONTROL_INTERROGATE => :SERVICE_CONTROL_INTERROGATE,
|
49
|
-
SERVICE_CONTROL_SHUTDOWN => :SERVICE_CONTROL_SHUTDOWN,
|
50
|
-
SERVICE_CONTROL_PARAMCHANGE => :SERVICE_CONTROL_PARAMCHANGE,
|
51
|
-
SERVICE_CONTROL_NETBINDADD => :SERVICE_CONTROL_NETBINDADD,
|
52
|
-
SERVICE_CONTROL_NETBINDREMOVE => :SERVICE_CONTROL_NETBINDREMOVE,
|
53
|
-
SERVICE_CONTROL_NETBINDENABLE => :SERVICE_CONTROL_NETBINDENABLE,
|
54
|
-
SERVICE_CONTROL_NETBINDDISABLE => :SERVICE_CONTROL_NETBINDDISABLE,
|
55
|
-
SERVICE_CONTROL_DEVICEEVENT => :SERVICE_CONTROL_DEVICEEVENT,
|
56
|
-
SERVICE_CONTROL_HARDWAREPROFILECHANGE => :SERVICE_CONTROL_HARDWAREPROFILECHANGE,
|
57
|
-
SERVICE_CONTROL_POWEREVENT => :SERVICE_CONTROL_POWEREVENT,
|
58
|
-
SERVICE_CONTROL_SESSIONCHANGE => :SERVICE_CONTROL_SESSIONCHANGE,
|
59
|
-
SERVICE_CONTROL_PRESHUTDOWN => :SERVICE_CONTROL_PRESHUTDOWN,
|
60
|
-
SERVICE_CONTROL_TIMECHANGE => :SERVICE_CONTROL_TIMECHANGE,
|
61
|
-
SERVICE_CONTROL_TRIGGEREVENT => :SERVICE_CONTROL_TRIGGEREVENT
|
62
|
-
}
|
63
|
-
|
64
39
|
|
65
40
|
# Service start type codes
|
66
41
|
# https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-changeserviceconfigw
|
@@ -102,14 +77,7 @@ module Puppet::Util::Windows
|
|
102
77
|
SERVICE_START_PENDING = 0x00000002
|
103
78
|
SERVICE_STOP_PENDING = 0x00000003
|
104
79
|
SERVICE_STOPPED = 0x00000001
|
105
|
-
|
106
|
-
FINAL_STATES = {
|
107
|
-
SERVICE_CONTINUE_PENDING => SERVICE_RUNNING,
|
108
|
-
SERVICE_PAUSE_PENDING => SERVICE_PAUSED,
|
109
|
-
SERVICE_START_PENDING => SERVICE_RUNNING,
|
110
|
-
SERVICE_STOP_PENDING => SERVICE_STOPPED
|
111
|
-
}
|
112
|
-
SERVICE_STATES = {
|
80
|
+
SERVICE_STATES = {
|
113
81
|
SERVICE_CONTINUE_PENDING => :SERVICE_CONTINUE_PENDING,
|
114
82
|
SERVICE_PAUSE_PENDING => :SERVICE_PAUSE_PENDING,
|
115
83
|
SERVICE_PAUSED => :SERVICE_PAUSED,
|
@@ -181,30 +149,7 @@ module Puppet::Util::Windows
|
|
181
149
|
# // Value to indicate no change to an optional parameter
|
182
150
|
# //
|
183
151
|
# #define SERVICE_NO_CHANGE 0xffffffff
|
184
|
-
|
185
|
-
SERVICE_CONFIG_DESCRIPTION = 0x00000001
|
186
|
-
SERVICE_CONFIG_FAILURE_ACTIONS = 0x00000002
|
187
|
-
SERVICE_CONFIG_DELAYED_AUTO_START_INFO = 0x00000003
|
188
|
-
SERVICE_CONFIG_FAILURE_ACTIONS_FLAG = 0x00000004
|
189
|
-
SERVICE_CONFIG_SERVICE_SID_INFO = 0x00000005
|
190
|
-
SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 0x00000006
|
191
|
-
SERVICE_CONFIG_PRESHUTDOWN_INFO = 0x00000007
|
192
|
-
SERVICE_CONFIG_TRIGGER_INFO = 0x00000008
|
193
|
-
SERVICE_CONFIG_PREFERRED_NODE = 0x00000009
|
194
|
-
SERVICE_CONFIG_LAUNCH_PROTECTED = 0x00000012
|
195
|
-
SERVICE_NO_CHANGE = 0xffffffff
|
196
|
-
SERVICE_CONFIG_TYPES = {
|
197
|
-
SERVICE_CONFIG_DESCRIPTION => :SERVICE_CONFIG_DESCRIPTION,
|
198
|
-
SERVICE_CONFIG_FAILURE_ACTIONS => :SERVICE_CONFIG_FAILURE_ACTIONS,
|
199
|
-
SERVICE_CONFIG_DELAYED_AUTO_START_INFO => :SERVICE_CONFIG_DELAYED_AUTO_START_INFO,
|
200
|
-
SERVICE_CONFIG_FAILURE_ACTIONS_FLAG => :SERVICE_CONFIG_FAILURE_ACTIONS_FLAG,
|
201
|
-
SERVICE_CONFIG_SERVICE_SID_INFO => :SERVICE_CONFIG_SERVICE_SID_INFO,
|
202
|
-
SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO => :SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO,
|
203
|
-
SERVICE_CONFIG_PRESHUTDOWN_INFO => :SERVICE_CONFIG_PRESHUTDOWN_INFO,
|
204
|
-
SERVICE_CONFIG_TRIGGER_INFO => :SERVICE_CONFIG_TRIGGER_INFO,
|
205
|
-
SERVICE_CONFIG_PREFERRED_NODE => :SERVICE_CONFIG_PREFERRED_NODE,
|
206
|
-
SERVICE_CONFIG_LAUNCH_PROTECTED => :SERVICE_CONFIG_LAUNCH_PROTECTED,
|
207
|
-
}
|
152
|
+
SERVICE_NO_CHANGE = 0xffffffff
|
208
153
|
|
209
154
|
# Service enum codes
|
210
155
|
# https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/nf-winsvc-enumservicesstatusexa
|
@@ -243,19 +188,6 @@ module Puppet::Util::Windows
|
|
243
188
|
)
|
244
189
|
end
|
245
190
|
|
246
|
-
# https://docs.microsoft.com/en-us/windows/win32/api/winsvc/ns-winsvc-service_delayed_auto_start_info
|
247
|
-
# typedef struct _SERVICE_DELAYED_AUTO_START_INFO {
|
248
|
-
# BOOL fDelayedAutostart;
|
249
|
-
# } SERVICE_DELAYED_AUTO_START_INFO, *LPSERVICE_DELAYED_AUTO_START_INFO;
|
250
|
-
class SERVICE_DELAYED_AUTO_START_INFO < FFI::Struct
|
251
|
-
layout(:fDelayedAutostart, :int)
|
252
|
-
alias aset []=
|
253
|
-
# Intercept the accessor so that we can handle either true/false or 1/0.
|
254
|
-
# Since there is only one member, there’s no need to check the key name.
|
255
|
-
def []=(key, value)
|
256
|
-
[0, false].include?(value) ? aset(key, 0) : aset(key, 1)
|
257
|
-
end
|
258
|
-
end
|
259
191
|
|
260
192
|
# https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/ns-winsvc-_enum_service_status_processw
|
261
193
|
# typedef struct _ENUM_SERVICE_STATUS_PROCESSW {
|
@@ -317,121 +249,76 @@ module Puppet::Util::Windows
|
|
317
249
|
)
|
318
250
|
end
|
319
251
|
|
320
|
-
#
|
321
|
-
#
|
322
|
-
# @param [:string] service_name name of the service
|
323
|
-
def exists?(service_name)
|
324
|
-
open_service(service_name, SC_MANAGER_CONNECT, SERVICE_QUERY_STATUS) do |_|
|
325
|
-
true
|
326
|
-
end
|
327
|
-
rescue Puppet::Util::Windows::Error => e
|
328
|
-
return false if e.code == ERROR_SERVICE_DOES_NOT_EXIST
|
329
|
-
raise e
|
330
|
-
end
|
331
|
-
module_function :exists?
|
332
|
-
|
333
|
-
# Start a windows service
|
252
|
+
# Start a windows service, assume that the service is already in the stopped state
|
334
253
|
#
|
335
254
|
# @param [:string] service_name name of the service to start
|
336
255
|
def start(service_name)
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
SERVICE_STOPPED
|
342
|
-
SERVICE_START_PENDING
|
343
|
-
]
|
344
|
-
|
345
|
-
transition_service_state(service_name, valid_initial_states, SERVICE_RUNNING) do |service|
|
256
|
+
open_service(service_name, SC_MANAGER_CONNECT, SERVICE_START | SERVICE_QUERY_STATUS) do |service|
|
257
|
+
# don't attempt to fail here if the service isn't stopped because windows error codes
|
258
|
+
# are likely more informative than ours and a failed call to StartServiceW will produce
|
259
|
+
# those errors
|
260
|
+
wait_for_pending_transition(service, SERVICE_STOP_PENDING, SERVICE_STOPPED)
|
346
261
|
if StartServiceW(service, 0, FFI::Pointer::NULL) == FFI::WIN32_FALSE
|
347
|
-
raise Puppet::Util::Windows::Error
|
262
|
+
raise Puppet::Util::Windows::Error.new(_("Failed to start the service"))
|
263
|
+
end
|
264
|
+
unless wait_for_pending_transition(service, SERVICE_START_PENDING, SERVICE_RUNNING)
|
265
|
+
raise Puppet::Error.new(_("Failed to start the service, after calling StartService the service is not in SERVICE_START_PENDING or SERVICE_RUNNING"))
|
348
266
|
end
|
349
267
|
end
|
350
|
-
|
351
|
-
Puppet.debug _("Successfully started the %{service_name} service") % { service_name: service_name }
|
352
268
|
end
|
353
269
|
module_function :start
|
354
270
|
|
355
|
-
#
|
271
|
+
# Use ControlService to send a stop signal to a windows service
|
356
272
|
#
|
357
273
|
# @param [:string] service_name name of the service to stop
|
358
274
|
def stop(service_name)
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
275
|
+
open_service(service_name, SC_MANAGER_CONNECT, SERVICE_STOP | SERVICE_QUERY_STATUS) do |service|
|
276
|
+
FFI::MemoryPointer.new(SERVICE_STATUS.size) do |status_ptr|
|
277
|
+
status = SERVICE_STATUS.new(status_ptr)
|
278
|
+
# don't attempt to fail here if the service isn't started because windows error codes
|
279
|
+
# are likely more informative than ours and a failed call to ControlService will produce
|
280
|
+
# those errors
|
281
|
+
wait_for_pending_transition(service, SERVICE_START_PENDING, SERVICE_RUNNING)
|
282
|
+
if ControlService(service, SERVICE_CONTROL_STOP, status) == FFI::WIN32_FALSE
|
283
|
+
raise Puppet::Util::Windows::Error.new(_("Failed to send stop control to service, current state is %{current_state}. Failed with") % { current_state: status[:dwCurrentState].to_s })
|
284
|
+
end
|
285
|
+
unless wait_for_pending_transition(service, SERVICE_STOP_PENDING, SERVICE_STOPPED)
|
286
|
+
raise Puppet::Error.new(_("Failed to stop the service, after calling ControlService the service is not in SERVICE_STOP_PENDING or SERVICE_STOPPED"))
|
287
|
+
end
|
288
|
+
end
|
365
289
|
end
|
366
|
-
|
367
|
-
Puppet.debug _("Successfully stopped the %{service_name} service") % { service_name: service_name }
|
368
290
|
end
|
369
291
|
module_function :stop
|
370
292
|
|
371
|
-
# Resume a paused windows service
|
372
|
-
#
|
373
|
-
# @param [:string] service_name name of the service to resume
|
374
|
-
def resume(service_name)
|
375
|
-
Puppet.debug _("Resuming the %{service_name} service") % { service_name: service_name }
|
376
|
-
|
377
|
-
valid_initial_states = [
|
378
|
-
SERVICE_PAUSE_PENDING,
|
379
|
-
SERVICE_PAUSED,
|
380
|
-
SERVICE_CONTINUE_PENDING
|
381
|
-
]
|
382
|
-
|
383
|
-
transition_service_state(service_name, valid_initial_states, SERVICE_RUNNING) do |service|
|
384
|
-
# The SERVICE_CONTROL_CONTINUE signal can only be sent when
|
385
|
-
# the service is in the SERVICE_PAUSED state
|
386
|
-
wait_on_pending_state(service, SERVICE_PAUSE_PENDING)
|
387
|
-
|
388
|
-
send_service_control_signal(service, SERVICE_CONTROL_CONTINUE)
|
389
|
-
end
|
390
|
-
|
391
|
-
Puppet.debug _("Successfully resumed the %{service_name} service") % { service_name: service_name }
|
392
|
-
end
|
393
|
-
module_function :resume
|
394
|
-
|
395
293
|
# Query the state of a service using QueryServiceStatusEx
|
396
294
|
#
|
397
295
|
# @param [:string] service_name name of the service to query
|
398
296
|
# @return [string] the status of the service
|
399
297
|
def service_state(service_name)
|
400
|
-
|
298
|
+
status = nil
|
401
299
|
open_service(service_name, SC_MANAGER_CONNECT, SERVICE_QUERY_STATUS) do |service|
|
402
|
-
query_status(service)
|
403
|
-
state = SERVICE_STATES[status[:dwCurrentState]]
|
404
|
-
end
|
300
|
+
status = query_status(service)
|
405
301
|
end
|
302
|
+
state = SERVICE_STATES[status[:dwCurrentState]]
|
406
303
|
if state.nil?
|
407
|
-
raise Puppet::Error.new(_("Unknown Service state '%{current_state}' for '%{service_name}'") % { current_state:
|
304
|
+
raise Puppet::Error.new(_("Unknown Service state '%{current_state}' for '%{service_name}'") % { current_state: status[:dwCurrentState].to_s, service_name: service_name})
|
408
305
|
end
|
409
306
|
state
|
410
307
|
end
|
411
308
|
module_function :service_state
|
412
309
|
|
413
310
|
# Query the configuration of a service using QueryServiceConfigW
|
414
|
-
# or QueryServiceConfig2W
|
415
311
|
#
|
416
312
|
# @param [:string] service_name name of the service to query
|
417
313
|
# @return [QUERY_SERVICE_CONFIGW.struct] the configuration of the service
|
418
314
|
def service_start_type(service_name)
|
419
|
-
|
315
|
+
config = nil
|
420
316
|
open_service(service_name, SC_MANAGER_CONNECT, SERVICE_QUERY_CONFIG) do |service|
|
421
|
-
query_config(service)
|
422
|
-
start_type = SERVICE_START_TYPES[config[:dwStartType]]
|
423
|
-
end
|
424
|
-
end
|
425
|
-
# if the service has type AUTO_START, check if it's a delayed service
|
426
|
-
if start_type == :SERVICE_AUTO_START
|
427
|
-
open_service(service_name, SC_MANAGER_CONNECT, SERVICE_QUERY_CONFIG) do |service|
|
428
|
-
query_config2(service, SERVICE_CONFIG_DELAYED_AUTO_START_INFO) do |config|
|
429
|
-
return :SERVICE_DELAYED_AUTO_START if config[:fDelayedAutostart] == 1
|
430
|
-
end
|
431
|
-
end
|
317
|
+
config = query_config(service)
|
432
318
|
end
|
319
|
+
start_type = SERVICE_START_TYPES[config[:dwStartType]]
|
433
320
|
if start_type.nil?
|
434
|
-
raise Puppet::Error.new(_("Unknown start type '%{start_type}' for '%{service_name}'") % { start_type:
|
321
|
+
raise Puppet::Error.new(_("Unknown start type '%{start_type}' for '%{service_name}'") % { start_type: config[:dwStartType].to_s, service_name: service_name})
|
435
322
|
end
|
436
323
|
start_type
|
437
324
|
end
|
@@ -439,12 +326,11 @@ module Puppet::Util::Windows
|
|
439
326
|
|
440
327
|
# Change the startup mode of a windows service
|
441
328
|
#
|
442
|
-
# @param [
|
443
|
-
# @param [
|
329
|
+
# @param [string] service_name the name of the service to modify
|
330
|
+
# @param [Int] startup_type a code corresponding to a start type for
|
444
331
|
# windows service, see the "Service start type codes" section in the
|
445
332
|
# Puppet::Util::Windows::Service file for the list of available codes
|
446
|
-
|
447
|
-
def set_startup_mode(service_name, startup_type, delayed=false)
|
333
|
+
def set_startup_mode(service_name, startup_type)
|
448
334
|
startup_code = SERVICE_START_TYPES.key(startup_type)
|
449
335
|
if startup_code.nil?
|
450
336
|
raise Puppet::Error.new(_("Unknown start type %{start_type}") % {startup_type: startup_type.to_s})
|
@@ -471,7 +357,6 @@ module Puppet::Util::Windows
|
|
471
357
|
raise Puppet::Util::Windows::Error.new(_("Failed to update service configuration"))
|
472
358
|
end
|
473
359
|
end
|
474
|
-
set_startup_mode_delayed(service_name, delayed)
|
475
360
|
end
|
476
361
|
module_function :set_startup_mode
|
477
362
|
|
@@ -571,18 +456,13 @@ module Puppet::Util::Windows
|
|
571
456
|
# @param [Integer] service_access code corresponding to the access type requested for the service
|
572
457
|
# @yieldparam [:handle] service the windows native handle used to access
|
573
458
|
# the service
|
574
|
-
# @return the result of the block
|
575
459
|
def open_service(service_name, scm_access, service_access, &block)
|
576
460
|
service = FFI::Pointer::NULL_HANDLE
|
577
|
-
|
578
|
-
result = nil
|
579
461
|
open_scm(scm_access) do |scm|
|
580
462
|
service = OpenServiceW(scm, wide_string(service_name), service_access)
|
581
463
|
raise Puppet::Util::Windows::Error.new(_("Failed to open a handle to the service")) if service == FFI::Pointer::NULL_HANDLE
|
582
|
-
|
464
|
+
yield service
|
583
465
|
end
|
584
|
-
|
585
|
-
result
|
586
466
|
ensure
|
587
467
|
CloseServiceHandle(service)
|
588
468
|
end
|
@@ -602,78 +482,6 @@ module Puppet::Util::Windows
|
|
602
482
|
end
|
603
483
|
private :open_scm
|
604
484
|
|
605
|
-
# @api private
|
606
|
-
# Transition the service to the specified state. The block should perform
|
607
|
-
# the actual transition.
|
608
|
-
#
|
609
|
-
# @param [String] service_name the name of the service to transition
|
610
|
-
# @param [[Integer]] valid_initial_states an array of valid states that the service can transition from
|
611
|
-
# @param [:Integer] final_state the state that the service will transition to
|
612
|
-
def transition_service_state(service_name, valid_initial_states, final_state, &block)
|
613
|
-
service_access = SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_QUERY_STATUS
|
614
|
-
open_service(service_name, SC_MANAGER_CONNECT, service_access) do |service|
|
615
|
-
query_status(service) do |status|
|
616
|
-
initial_state = status[:dwCurrentState]
|
617
|
-
# If the service is already in the final_state, then
|
618
|
-
# no further work needs to be done
|
619
|
-
if initial_state == final_state
|
620
|
-
Puppet.debug _("The service is already in the %{final_state} state. No further work needs to be done.") % { final_state: SERVICE_STATES[final_state] }
|
621
|
-
|
622
|
-
next
|
623
|
-
end
|
624
|
-
|
625
|
-
# Check that initial_state corresponds to a valid
|
626
|
-
# initial state
|
627
|
-
unless valid_initial_states.include?(initial_state)
|
628
|
-
valid_initial_states_str = valid_initial_states.map do |state|
|
629
|
-
SERVICE_STATES[state]
|
630
|
-
end.join(", ")
|
631
|
-
|
632
|
-
raise Puppet::Error, _("The service must be in one of the %{valid_initial_states} states to perform this transition. It is currently in the %{current_state} state.") % { valid_initial_states: valid_initial_states_str, current_state: SERVICE_STATES[initial_state] }
|
633
|
-
end
|
634
|
-
|
635
|
-
# Check if there's a pending transition to the final_state. If so, then wait for
|
636
|
-
# that transition to finish.
|
637
|
-
possible_pending_states = FINAL_STATES.keys.select do |pending_state|
|
638
|
-
# SERVICE_RUNNING has two pending states, SERVICE_START_PENDING and
|
639
|
-
# SERVICE_CONTINUE_PENDING. That is why we need the #select here
|
640
|
-
FINAL_STATES[pending_state] == final_state
|
641
|
-
end
|
642
|
-
if possible_pending_states.include?(initial_state)
|
643
|
-
Puppet.debug _("There is already a pending transition to the %{final_state} state for the %{service_name} service.") % { final_state: SERVICE_STATES[final_state], service_name: service_name }
|
644
|
-
wait_on_pending_state(service, initial_state)
|
645
|
-
|
646
|
-
next
|
647
|
-
end
|
648
|
-
|
649
|
-
# If we are in an unsafe pending state like SERVICE_START_PENDING
|
650
|
-
# or SERVICE_STOP_PENDING, then we want to wait for that pending
|
651
|
-
# transition to finish before transitioning the service state.
|
652
|
-
# The reason we do this is because SERVICE_START_PENDING is when
|
653
|
-
# the service thread is being created and initialized, while
|
654
|
-
# SERVICE_STOP_PENDING is when the service thread is being cleaned
|
655
|
-
# up and destroyed. Thus there is a chance that when the service is
|
656
|
-
# in either of these states, its service thread may not yet be ready
|
657
|
-
# to perform the state transition (it may not even exist).
|
658
|
-
if UNSAFE_PENDING_STATES.include?(initial_state)
|
659
|
-
Puppet.debug _("The service is in the %{pending_state} state, which is an unsafe pending state.") % { pending_state: SERVICE_STATES[initial_state] }
|
660
|
-
wait_on_pending_state(service, initial_state)
|
661
|
-
initial_state = FINAL_STATES[initial_state]
|
662
|
-
end
|
663
|
-
|
664
|
-
Puppet.debug _("Transitioning the %{service_name} service from %{initial_state} to %{final_state}") % { service_name: service_name, initial_state: SERVICE_STATES[initial_state], final_state: SERVICE_STATES[final_state] }
|
665
|
-
|
666
|
-
yield service
|
667
|
-
|
668
|
-
Puppet.debug _("Waiting for the transition to finish")
|
669
|
-
wait_on_state_transition(service, initial_state, final_state)
|
670
|
-
end
|
671
|
-
end
|
672
|
-
rescue => detail
|
673
|
-
raise Puppet::Error, _("Failed to transition the %{service_name} service to the %{final_state} state. Detail: %{detail}") % { service_name: service_name, final_state: SERVICE_STATES[final_state], detail: detail }, detail.backtrace
|
674
|
-
end
|
675
|
-
private :transition_service_state
|
676
|
-
|
677
485
|
# @api private
|
678
486
|
# perform QueryServiceStatusEx on a windows service and return the
|
679
487
|
# result
|
@@ -711,9 +519,9 @@ module Puppet::Util::Windows
|
|
711
519
|
if success == FFI::WIN32_FALSE
|
712
520
|
raise Puppet::Util::Windows::Error.new(_("Service query failed"))
|
713
521
|
end
|
714
|
-
yield status
|
715
522
|
end
|
716
523
|
end
|
524
|
+
status
|
717
525
|
end
|
718
526
|
private :query_status
|
719
527
|
|
@@ -723,7 +531,7 @@ module Puppet::Util::Windows
|
|
723
531
|
#
|
724
532
|
# @param [:handle] service handle of the service to query
|
725
533
|
# @return [QUERY_SERVICE_CONFIGW struct] the result of the query
|
726
|
-
def query_config(service
|
534
|
+
def query_config(service)
|
727
535
|
config = nil
|
728
536
|
size_required = nil
|
729
537
|
# Fetch the bytes of memory required to be allocated
|
@@ -747,198 +555,52 @@ module Puppet::Util::Windows
|
|
747
555
|
if success == FFI::WIN32_FALSE
|
748
556
|
raise Puppet::Util::Windows::Error.new(_("Service query failed"))
|
749
557
|
end
|
750
|
-
yield config
|
751
558
|
end
|
752
559
|
end
|
560
|
+
config
|
753
561
|
end
|
754
562
|
private :query_config
|
755
563
|
|
756
564
|
# @api private
|
757
|
-
#
|
758
|
-
#
|
759
|
-
#
|
760
|
-
# @param [:handle] service handle of the service to query
|
761
|
-
# @param [Integer] info_level the configuration information to be queried
|
762
|
-
# @return [QUERY_SERVICE_CONFIG2W struct] the result of the query
|
763
|
-
def query_config2(service, info_level, &block)
|
764
|
-
config = nil
|
765
|
-
size_required = nil
|
766
|
-
# Fetch the bytes of memory required to be allocated
|
767
|
-
# for QueryServiceConfig2W to return succesfully. This
|
768
|
-
# is done by sending NULL and 0 for the pointer and size
|
769
|
-
# respectively, letting the command fail, then reading the
|
770
|
-
# value of pcbBytesNeeded
|
771
|
-
FFI::MemoryPointer.new(:lpword) do |bytes_pointer|
|
772
|
-
# return value will be false from this call, since it's designed
|
773
|
-
# to fail. Just ignore it
|
774
|
-
QueryServiceConfig2W(service, info_level, FFI::Pointer::NULL, 0, bytes_pointer)
|
775
|
-
size_required = bytes_pointer.read_dword
|
776
|
-
FFI::MemoryPointer.new(size_required) do |ssp_ptr|
|
777
|
-
# We need to supply the appropriate struct to be created based on
|
778
|
-
# the info_level
|
779
|
-
case info_level
|
780
|
-
when SERVICE_CONFIG_DELAYED_AUTO_START_INFO
|
781
|
-
config = SERVICE_DELAYED_AUTO_START_INFO.new(ssp_ptr)
|
782
|
-
end
|
783
|
-
success = QueryServiceConfig2W(
|
784
|
-
service,
|
785
|
-
info_level,
|
786
|
-
ssp_ptr,
|
787
|
-
size_required,
|
788
|
-
bytes_pointer
|
789
|
-
)
|
790
|
-
if success == FFI::WIN32_FALSE
|
791
|
-
raise Puppet::Util::Windows::Error.new(_("Service query for %{parameter_name} failed") % { parameter_name: SERVICE_CONFIG_TYPES[info_level] } )
|
792
|
-
end
|
793
|
-
yield config
|
794
|
-
end
|
795
|
-
end
|
796
|
-
end
|
797
|
-
private :query_config2
|
798
|
-
|
799
|
-
# @api private
|
800
|
-
# Sets an optional parameter on a service by calling
|
801
|
-
# ChangeServiceConfig2W
|
802
|
-
#
|
803
|
-
# @param [String] service_name name of service
|
804
|
-
# @param [Integer] change parameter to change
|
805
|
-
# @param [struct] value appropriate struct based on the parameter to change
|
806
|
-
def set_optional_parameter(service_name, change, value)
|
807
|
-
open_service(service_name, SC_MANAGER_CONNECT, SERVICE_CHANGE_CONFIG) do |service|
|
808
|
-
success = ChangeServiceConfig2W(
|
809
|
-
service,
|
810
|
-
change, # dwInfoLevel
|
811
|
-
value, # lpInfo
|
812
|
-
)
|
813
|
-
if success == FFI::WIN32_FALSE
|
814
|
-
raise Puppet::Util::windows::Error.new(_("Failed to update service %{change} configuration") % { change: change } )
|
815
|
-
end
|
816
|
-
end
|
817
|
-
end
|
818
|
-
private :set_optional_parameter
|
819
|
-
|
820
|
-
# @api private
|
821
|
-
# Controls the delayed auto-start setting of a service
|
822
|
-
#
|
823
|
-
# @param [String] service_name name of service
|
824
|
-
# @param [Bool] delayed whether the service should be started with a delay or not
|
825
|
-
def set_startup_mode_delayed(service_name, delayed)
|
826
|
-
delayed_start = SERVICE_DELAYED_AUTO_START_INFO.new
|
827
|
-
delayed_start[:fDelayedAutostart] = delayed
|
828
|
-
set_optional_parameter(service_name, SERVICE_CONFIG_DELAYED_AUTO_START_INFO, delayed_start)
|
829
|
-
end
|
830
|
-
private :set_startup_mode_delayed
|
831
|
-
|
832
|
-
# @api private
|
833
|
-
# Sends a service control signal to a service
|
834
|
-
#
|
835
|
-
# @param [:handle] service handle to the service
|
836
|
-
# @param [Integer] signal the service control signal to send
|
837
|
-
def send_service_control_signal(service, signal)
|
838
|
-
FFI::MemoryPointer.new(SERVICE_STATUS.size) do |status_ptr|
|
839
|
-
status = SERVICE_STATUS.new(status_ptr)
|
840
|
-
if ControlService(service, signal, status) == FFI::WIN32_FALSE
|
841
|
-
raise Puppet::Util::Windows::Error, _("Failed to send the %{control_signal} signal to the service. Its current state is %{current_state}. Reason for failure:") % { control_signal: SERVICE_CONTROL_SIGNALS[signal], current_state: SERVICE_STATES[status[:dwCurrentState]] }
|
842
|
-
end
|
843
|
-
end
|
844
|
-
end
|
845
|
-
|
846
|
-
# @api private
|
847
|
-
# Waits for a service to transition from one state to
|
848
|
-
# another state.
|
849
|
-
#
|
850
|
-
# @param [:handle] service handle to the service to wait on
|
851
|
-
# @param [Integer] initial_state the state that the service is transitioning from.
|
852
|
-
# @param [Integer] final_state the state that the service is transitioning to
|
853
|
-
def wait_on_state_transition(service, initial_state, final_state)
|
854
|
-
# Get the pending state for this transition. Note that SERVICE_RUNNING
|
855
|
-
# has two possible pending states, which is why we need this logic.
|
856
|
-
if final_state != SERVICE_RUNNING
|
857
|
-
pending_state = FINAL_STATES.key(final_state)
|
858
|
-
elsif initial_state == SERVICE_STOPPED
|
859
|
-
# SERVICE_STOPPED => SERVICE_RUNNING
|
860
|
-
pending_state = SERVICE_START_PENDING
|
861
|
-
else
|
862
|
-
# SERVICE_PAUSED => SERVICE_RUNNING
|
863
|
-
pending_state = SERVICE_CONTINUE_PENDING
|
864
|
-
end
|
865
|
-
|
866
|
-
# Wait for the transition to finish
|
867
|
-
state = nil
|
868
|
-
elapsed_time = 0
|
869
|
-
while elapsed_time <= DEFAULT_TIMEOUT
|
870
|
-
|
871
|
-
query_status(service) do |status|
|
872
|
-
state = status[:dwCurrentState]
|
873
|
-
return if state == final_state
|
874
|
-
if state == pending_state
|
875
|
-
Puppet.debug _("The service transitioned to the %{pending_state} state.") % { pending_state: SERVICE_STATES[pending_state] }
|
876
|
-
wait_on_pending_state(service, pending_state)
|
877
|
-
return
|
878
|
-
end
|
879
|
-
sleep(1)
|
880
|
-
elapsed_time += 1
|
881
|
-
end
|
882
|
-
end
|
883
|
-
# Timed out while waiting for the transition to finish. Raise an error
|
884
|
-
# We can still use the state variable read from the FFI struct because
|
885
|
-
# FFI creates new Integer objects during an assignment of an integer value
|
886
|
-
# stored in an FFI struct. We verified that the '=' operater is safe
|
887
|
-
# from the freed memory since the new ruby object created during the
|
888
|
-
# assignment will remain in ruby memory and remain immutable and constant.
|
889
|
-
raise Puppet::Error, _("Timed out while waiting for the service to transition from %{initial_state} to %{final_state} OR from %{initial_state} to %{pending_state} to %{final_state}. The service's current state is %{current_state}.") % { initial_state: SERVICE_STATES[initial_state], final_state: SERVICE_STATES[final_state], pending_state: SERVICE_STATES[pending_state], current_state: SERVICE_STATES[state] }
|
890
|
-
end
|
891
|
-
private :wait_on_state_transition
|
892
|
-
|
893
|
-
# @api private
|
894
|
-
# Waits for a service to finish transitioning from
|
895
|
-
# a pending state. The service must be in the pending state
|
896
|
-
# before invoking this routine.
|
565
|
+
# waits for a windows service to report final_state if it
|
566
|
+
# is in pending_state
|
897
567
|
#
|
898
568
|
# @param [:handle] service handle to the service to wait on
|
899
|
-
# @param [Integer] pending_state the
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
569
|
+
# @param [Integer] pending_state the state to wait on
|
570
|
+
# @param [Integer] final_state the state indicating the transition is finished
|
571
|
+
# @return [bool] 'true' once the service is reporting final_state,
|
572
|
+
# 'false' if the service was not in pending_state or finaL_state
|
573
|
+
def wait_for_pending_transition(service, pending_state, final_state)
|
905
574
|
elapsed_time = 0
|
906
575
|
last_checkpoint = -1
|
907
576
|
loop do
|
908
|
-
query_status(service)
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
wait_hint_in_seconds = milliseconds_to_seconds(wait_hint)
|
928
|
-
timeout = wait_hint_in_seconds < DEFAULT_TIMEOUT ? DEFAULT_TIMEOUT : wait_hint_in_seconds
|
929
|
-
|
930
|
-
if elapsed_time >= timeout
|
931
|
-
raise Puppet::Error, _("Timed out while waiting for the pending transition from %{pending_state} to %{final_state} to finish. The current state is %{current_state}.") % { pending_state: SERVICE_STATES[pending_state], final_state: SERVICE_STATES[final_state], current_state: SERVICE_STATES[state] }
|
932
|
-
end
|
577
|
+
status = query_status(service)
|
578
|
+
state = status[:dwCurrentState]
|
579
|
+
return true if state == final_state
|
580
|
+
unless state == pending_state
|
581
|
+
return false
|
582
|
+
end
|
583
|
+
# When the service is in the pending state we need to do the following:
|
584
|
+
# 1. check if any progress has been made since dwWaitHint using dwCheckPoint,
|
585
|
+
# and fail if no progress was made
|
586
|
+
# 2. if progress has been made, increment elapsed_time and set last_checkpoint
|
587
|
+
# 3. sleep, then loop again if there was progress.
|
588
|
+
time_to_wait = wait_hint_to_wait_time(status[:dwWaitHint])
|
589
|
+
if status[:dwCheckPoint] > last_checkpoint
|
590
|
+
elapsed_time = 0
|
591
|
+
else
|
592
|
+
timeout = milliseconds_to_seconds(status[:dwWaitHint]);
|
593
|
+
timeout = DEFAULT_TIMEOUT if timeout < DEFAULT_TIMEOUT
|
594
|
+
if elapsed_time >= (timeout)
|
595
|
+
raise Puppet::Error.new(_("No progress made on service operation and dwWaitHint exceeded"))
|
933
596
|
end
|
934
|
-
wait_time = wait_hint_to_wait_time(wait_hint)
|
935
|
-
# Wait a bit before rechecking the service's state
|
936
|
-
sleep(wait_time)
|
937
|
-
elapsed_time += wait_time
|
938
597
|
end
|
598
|
+
last_checkpoint = status[:dwCheckPoint]
|
599
|
+
sleep(time_to_wait)
|
600
|
+
elapsed_time += time_to_wait
|
939
601
|
end
|
940
602
|
end
|
941
|
-
private :
|
603
|
+
private :wait_for_pending_transition
|
942
604
|
|
943
605
|
# @api private
|
944
606
|
#
|
@@ -1023,18 +685,6 @@ module Puppet::Util::Windows
|
|
1023
685
|
attach_function_private :QueryServiceConfigW,
|
1024
686
|
[:handle, :lpbyte, :dword, :lpdword], :win32_bool
|
1025
687
|
|
1026
|
-
# https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-queryserviceconfig2w
|
1027
|
-
# BOOL QueryServiceConfig2W(
|
1028
|
-
# SC_HANDLE hService,
|
1029
|
-
# DWORD dwInfoLevel,
|
1030
|
-
# LPBYTE lpBuffer,
|
1031
|
-
# DWORD cbBufSize,
|
1032
|
-
# LPDWORD pcbBytesNeeded
|
1033
|
-
# );
|
1034
|
-
ffi_lib :advapi32
|
1035
|
-
attach_function_private :QueryServiceConfig2W,
|
1036
|
-
[:handle, :dword, :lpbyte, :dword, :lpdword], :win32_bool
|
1037
|
-
|
1038
688
|
# https://docs.microsoft.com/en-us/windows/desktop/api/Winsvc/nf-winsvc-startservicew
|
1039
689
|
# BOOL StartServiceW(
|
1040
690
|
# SC_HANDLE hService,
|
@@ -1085,15 +735,6 @@ module Puppet::Util::Windows
|
|
1085
735
|
:lpcwstr
|
1086
736
|
], :win32_bool
|
1087
737
|
|
1088
|
-
# https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-changeserviceconfig2w
|
1089
|
-
# BOOL ChangeServiceConfig2W(
|
1090
|
-
# SC_HANDLE hService,
|
1091
|
-
# DWORD dwInfoLevel,
|
1092
|
-
# LPVOID lpInfo
|
1093
|
-
# );
|
1094
|
-
ffi_lib :advapi32
|
1095
|
-
attach_function_private :ChangeServiceConfig2W,
|
1096
|
-
[:handle, :dword, :lpvoid], :win32_bool
|
1097
738
|
|
1098
739
|
# https://docs.microsoft.com/en-us/windows/desktop/api/winsvc/nf-winsvc-enumservicesstatusexw
|
1099
740
|
# BOOL EnumServicesStatusExW(
|