puppet 4.5.3-x86-mingw32 → 4.6.1-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 +7 -0
- data/Gemfile +10 -1
- data/ext/debian/control +2 -4
- data/ext/project_data.yaml +4 -4
- data/install.rb +6 -2
- data/lib/puppet.rb +3 -1
- data/lib/puppet/agent/locker.rb +1 -1
- data/lib/puppet/application.rb +6 -4
- data/lib/puppet/application/agent.rb +2 -1
- data/lib/puppet/application/cert.rb +35 -2
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/generate.rb +5 -0
- data/lib/puppet/application/lookup.rb +3 -3
- data/lib/puppet/application_support.rb +1 -1
- data/lib/puppet/compilable_resource_type.rb +15 -0
- data/lib/puppet/configurer.rb +67 -10
- data/lib/puppet/configurer/plugin_handler.rb +2 -4
- data/lib/puppet/data_providers/hiera_config.rb +1 -1
- data/lib/puppet/defaults.rb +34 -7
- data/lib/puppet/environments.rb +4 -2
- data/lib/puppet/error.rb +1 -1
- data/lib/puppet/external/dot.rb +1 -1
- data/lib/puppet/face/ca.rb +4 -1
- data/lib/puppet/face/certificate.rb +7 -1
- data/lib/puppet/face/epp.rb +5 -5
- data/lib/puppet/face/generate.rb +64 -0
- data/lib/puppet/face/help.rb +19 -13
- data/lib/puppet/face/man.rb +1 -1
- data/lib/puppet/feature/external_facts.rb +1 -1
- data/lib/puppet/file_system.rb +16 -0
- data/lib/puppet/file_system/file_impl.rb +5 -0
- data/lib/puppet/file_system/memory_impl.rb +4 -0
- data/lib/puppet/file_system/path_pattern.rb +1 -0
- data/lib/puppet/file_system/windows.rb +19 -0
- data/lib/puppet/functions.rb +3 -5
- data/lib/puppet/functions/assert_type.rb +1 -1
- data/lib/puppet/functions/defined.rb +7 -5
- data/lib/puppet/functions/dig.rb +2 -18
- data/lib/puppet/functions/hiera.rb +1 -1
- data/lib/puppet/functions/lest.rb +1 -37
- data/lib/puppet/functions/new.rb +2 -473
- data/lib/puppet/functions/reverse_each.rb +2 -59
- data/lib/puppet/functions/scanf.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -63
- data/lib/puppet/functions/then.rb +1 -61
- data/lib/puppet/functions/type.rb +1 -40
- data/lib/puppet/functions/unwrap.rb +40 -0
- data/lib/puppet/generate/models/type/property.rb +70 -0
- data/lib/puppet/generate/models/type/type.rb +57 -0
- data/lib/puppet/generate/templates/type/pcore.erb +41 -0
- data/lib/puppet/generate/type.rb +239 -0
- data/lib/puppet/graph/simple_graph.rb +2 -6
- data/lib/puppet/indirector/catalog/static_compiler.rb +5 -2
- data/lib/puppet/indirector/facts/facter.rb +1 -1
- data/lib/puppet/indirector/key/ca.rb +2 -2
- data/lib/puppet/indirector/request.rb +25 -4
- data/lib/puppet/indirector/rest.rb +73 -3
- data/lib/puppet/info_service/class_information_service.rb +1 -2
- data/lib/puppet/interface/documentation.rb +1 -1
- data/lib/puppet/loaders.rb +2 -0
- data/lib/puppet/metatype/manager.rb +6 -6
- data/lib/puppet/module.rb +8 -1
- data/lib/puppet/module_tool.rb +2 -2
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/errors/installer.rb +2 -2
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +23 -32
- data/lib/puppet/network/http/rack/rest.rb +15 -1
- data/lib/puppet/network/rights.rb +1 -11
- data/lib/puppet/node/environment.rb +7 -3
- data/lib/puppet/node/facts.rb +1 -1
- data/lib/puppet/parameter.rb +23 -3
- data/lib/puppet/parameter/boolean.rb +1 -1
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parser.rb +0 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
- data/lib/puppet/parser/ast/resource.rb +5 -0
- data/lib/puppet/parser/ast/resource_instance.rb +5 -1
- data/lib/puppet/parser/ast/resourceparam.rb +5 -0
- data/lib/puppet/parser/compiler.rb +14 -17
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +1 -1
- data/lib/puppet/parser/environment_compiler.rb +10 -0
- data/lib/puppet/parser/functions/create_resources.rb +39 -24
- data/lib/puppet/parser/functions/defined.rb +2 -26
- data/lib/puppet/parser/functions/dig.rb +29 -0
- data/lib/puppet/parser/functions/lest.rb +49 -0
- data/lib/puppet/parser/functions/new.rb +530 -0
- data/lib/puppet/parser/functions/require.rb +1 -1
- data/lib/puppet/parser/functions/reverse_each.rb +83 -0
- data/lib/puppet/parser/functions/scanf.rb +4 -4
- data/lib/puppet/parser/functions/step.rb +84 -0
- data/lib/puppet/parser/functions/then.rb +73 -0
- data/lib/puppet/parser/functions/type.rb +53 -0
- data/lib/puppet/parser/resource.rb +16 -7
- data/lib/puppet/parser/scope.rb +36 -28
- data/lib/puppet/parser/type_loader.rb +1 -1
- data/lib/puppet/plugins/data_providers/data_provider.rb +1 -1
- data/lib/puppet/pops.rb +13 -0
- data/lib/puppet/pops/adapters.rb +49 -49
- data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +1 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +39 -2
- data/lib/puppet/pops/evaluator/closure.rb +39 -13
- data/lib/puppet/pops/evaluator/collector_transformer.rb +10 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +16 -11
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -1
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +0 -1
- data/lib/puppet/pops/evaluator/relationship_operator.rb +1 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +19 -45
- data/lib/puppet/pops/functions/function.rb +5 -0
- data/lib/puppet/pops/issues.rb +1 -1
- data/lib/puppet/pops/label_provider.rb +2 -2
- data/lib/puppet/pops/loader/base_loader.rb +12 -15
- data/lib/puppet/pops/loader/loader.rb +15 -50
- data/lib/puppet/pops/loader/loader_paths.rb +28 -2
- data/lib/puppet/pops/loader/module_loaders.rb +16 -1
- data/lib/puppet/pops/loader/null_loader.rb +17 -1
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +12 -11
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +80 -0
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +2 -3
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +52 -13
- data/lib/puppet/pops/loader/static_loader.rb +55 -0
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +30 -14
- data/lib/puppet/pops/loader/typed_name.rb +50 -0
- data/lib/puppet/pops/loaders.rb +64 -19
- data/lib/puppet/pops/merge_strategy.rb +7 -7
- data/lib/puppet/pops/migration/migration_checker.rb +4 -0
- data/lib/puppet/pops/model/model_label_provider.rb +2 -0
- data/lib/puppet/pops/parser/egrammar.ra +8 -5
- data/lib/puppet/pops/parser/eparser.rb +1550 -1498
- data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +7 -0
- data/lib/puppet/pops/parser/lexer2.rb +14 -1
- data/lib/puppet/pops/parser/locator.rb +30 -1
- data/lib/puppet/pops/parser/parser_support.rb +0 -3
- data/lib/puppet/pops/parser/slurp_support.rb +3 -3
- data/lib/puppet/pops/patterns.rb +9 -1
- data/lib/puppet/pops/pcore.rb +67 -11
- data/lib/puppet/pops/puppet_stack.rb +43 -0
- data/lib/puppet/pops/resource/param.rb +51 -0
- data/lib/puppet/pops/resource/resource_type_impl.rb +301 -0
- data/lib/puppet/pops/resource/resource_type_set.pcore +21 -0
- data/lib/puppet/pops/serialization.rb +17 -0
- data/lib/puppet/pops/serialization/abstract_reader.rb +149 -0
- data/lib/puppet/pops/serialization/abstract_writer.rb +179 -0
- data/lib/puppet/pops/serialization/deserializer.rb +60 -0
- data/lib/puppet/pops/serialization/extension.rb +126 -0
- data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
- data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
- data/lib/puppet/pops/serialization/json.rb +247 -0
- data/lib/puppet/pops/serialization/object.rb +63 -0
- data/lib/puppet/pops/serialization/rgen.rb +151 -0
- data/lib/puppet/pops/serialization/serializer.rb +91 -0
- data/lib/puppet/pops/serialization/time_factory.rb +66 -0
- data/lib/puppet/pops/types/annotatable.rb +36 -0
- data/lib/puppet/pops/types/implementation_registry.rb +3 -8
- data/lib/puppet/pops/types/p_meta_type.rb +83 -0
- data/lib/puppet/pops/types/p_object_type.rb +110 -117
- data/lib/puppet/pops/types/p_runtime_type.rb +13 -0
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +23 -0
- data/lib/puppet/pops/types/p_sem_ver_type.rb +30 -2
- data/lib/puppet/pops/types/p_sensitive_type.rb +69 -0
- data/lib/puppet/pops/types/p_type_set_type.rb +361 -0
- data/lib/puppet/pops/types/puppet_object.rb +0 -5
- data/lib/puppet/pops/types/ruby_generator.rb +9 -2
- data/lib/puppet/pops/types/type_calculator.rb +6 -1
- data/lib/puppet/pops/types/type_factory.rb +14 -12
- data/lib/puppet/pops/types/type_formatter.rb +78 -33
- data/lib/puppet/pops/types/type_mismatch_describer.rb +0 -2
- data/lib/puppet/pops/types/type_parser.rb +27 -2
- data/lib/puppet/pops/types/type_set_reference.rb +59 -0
- data/lib/puppet/pops/types/types.rb +366 -13
- data/lib/puppet/pops/validation.rb +4 -4
- data/lib/puppet/pops/validation/checker4_0.rb +5 -2
- data/lib/puppet/pops/visitor.rb +2 -2
- data/lib/puppet/property.rb +64 -5
- data/lib/puppet/provider.rb +1 -1
- data/lib/puppet/provider/aixobject.rb +3 -3
- data/lib/puppet/provider/group/aix.rb +4 -4
- data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
- data/lib/puppet/provider/mailalias/aliases.rb +1 -1
- data/lib/puppet/provider/mcx/mcxcontent.rb +2 -2
- data/lib/puppet/provider/mount/parsed.rb +1 -1
- data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
- data/lib/puppet/provider/package/appdmg.rb +3 -3
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/dnf.rb +5 -0
- data/lib/puppet/provider/package/nim.rb +1 -1
- data/lib/puppet/provider/package/pacman.rb +2 -2
- data/lib/puppet/provider/package/pip.rb +5 -3
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +5 -5
- data/lib/puppet/provider/package/pkgdmg.rb +4 -4
- data/lib/puppet/provider/package/pkgin.rb +1 -1
- data/lib/puppet/provider/package/pkgutil.rb +1 -1
- data/lib/puppet/provider/package/portage.rb +48 -8
- data/lib/puppet/provider/package/sun.rb +1 -1
- data/lib/puppet/provider/package/tdnf.rb +28 -0
- data/lib/puppet/provider/package/yum.rb +22 -4
- data/lib/puppet/provider/parsedfile.rb +2 -2
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/bsd.rb +1 -1
- data/lib/puppet/provider/service/daemontools.rb +2 -2
- data/lib/puppet/provider/service/debian.rb +3 -3
- data/lib/puppet/provider/service/init.rb +5 -3
- data/lib/puppet/provider/service/launchd.rb +16 -2
- data/lib/puppet/provider/service/runit.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +8 -1
- data/lib/puppet/provider/service/systemd.rb +39 -6
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +3 -2
- data/lib/puppet/provider/user/directoryservice.rb +4 -3
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/windows_adsi.rb +3 -0
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/reference/type.rb +1 -1
- data/lib/puppet/resource.rb +33 -7
- data/lib/puppet/resource/capability_finder.rb +74 -54
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/settings.rb +17 -6
- data/lib/puppet/settings/environment_conf.rb +1 -1
- data/lib/puppet/settings/server_list_setting.rb +20 -0
- data/lib/puppet/ssl/certificate_authority.rb +32 -9
- data/lib/puppet/ssl/certificate_authority/interface.rb +164 -24
- data/lib/puppet/ssl/host.rb +3 -3
- data/lib/puppet/ssl/oids.rb +10 -0
- data/lib/puppet/ssl/validator/default_validator.rb +2 -2
- data/lib/puppet/test/test_helper.rb +2 -2
- data/lib/puppet/transaction.rb +12 -0
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/event.rb +29 -2
- data/lib/puppet/transaction/event_manager.rb +1 -1
- data/lib/puppet/transaction/persistence.rb +84 -0
- data/lib/puppet/transaction/report.rb +49 -2
- data/lib/puppet/transaction/resource_harness.rb +98 -18
- data/lib/puppet/type.rb +63 -21
- data/lib/puppet/type/augeas.rb +3 -3
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/file.rb +39 -2
- data/lib/puppet/type/file/data_sync.rb +13 -5
- data/lib/puppet/type/host.rb +1 -1
- data/lib/puppet/type/mount.rb +2 -6
- data/lib/puppet/type/notify.rb +1 -1
- data/lib/puppet/type/package.rb +1 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/scheduled_task.rb +1 -1
- data/lib/puppet/type/ssh_authorized_key.rb +2 -2
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/yumrepo.rb +3 -3
- data/lib/puppet/type/zone.rb +1 -1
- data/lib/puppet/util.rb +2 -2
- data/lib/puppet/util/classgen.rb +1 -1
- data/lib/puppet/util/command_line.rb +6 -2
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/http_proxy.rb +1 -1
- data/lib/puppet/util/inifile.rb +1 -1
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/logging.rb +1 -1
- data/lib/puppet/util/multi_match.rb +1 -1
- data/lib/puppet/util/plist.rb +15 -5
- data/lib/puppet/util/profiler.rb +1 -1
- data/lib/puppet/util/profiler/around_profiler.rb +1 -1
- data/lib/puppet/util/psych_support.rb +1 -1
- data/lib/puppet/util/rdoc.rb +2 -2
- data/lib/puppet/util/rubygems.rb +1 -1
- data/lib/puppet/util/watcher/periodic_watcher.rb +2 -2
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/adsi.rb +30 -8
- data/lib/puppet/util/windows/api_types.rb +1 -1
- data/lib/puppet/util/windows/file.rb +59 -0
- data/lib/puppet/util/windows/process.rb +10 -0
- data/lib/puppet/util/windows/security.rb +1 -1
- data/lib/puppet/util/windows/user.rb +22 -4
- data/lib/puppet/util/yaml.rb +15 -3
- data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +1 -1
- data/lib/puppet/vendor/rgen_patch.rb +1 -1
- data/lib/puppet/version.rb +2 -2
- data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +10 -0
- data/spec/integration/agent/logging_spec.rb +15 -14
- data/spec/integration/application/apply_spec.rb +1 -0
- data/spec/integration/directory_environments_spec.rb +16 -0
- data/spec/integration/environments/settings_spec.rb +32 -4
- data/spec/integration/faces/documentation_spec.rb +1 -1
- data/spec/integration/network/http/api/indirected_routes_spec.rb +33 -0
- data/spec/integration/node/environment_spec.rb +21 -0
- data/spec/integration/parser/collection_spec.rb +10 -0
- data/spec/integration/parser/compiler_spec.rb +76 -840
- data/spec/integration/parser/functions/require_spec.rb +3 -3
- data/spec/integration/parser/parameter_defaults_spec.rb +6 -2
- data/spec/integration/parser/pcore_resource_spec.rb +208 -0
- data/spec/integration/parser/resource_expressions_spec.rb +4 -2
- data/spec/integration/provider/yumrepo_spec.rb +4 -1
- data/spec/integration/transaction/report_spec.rb +666 -0
- data/spec/integration/type/file_spec.rb +11 -12
- data/spec/integration/util/windows/adsi_spec.rb +99 -0
- data/spec/integration/util/windows/principal_spec.rb +109 -60
- data/spec/integration/util/windows/process_spec.rb +4 -2
- data/spec/integration/util/windows/security_spec.rb +34 -8
- data/spec/integration/util/windows/user_spec.rb +26 -4
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/network.rb +12 -8
- data/spec/shared_examples/rhel_package_provider.rb +341 -0
- data/spec/spec_helper.rb +8 -2
- data/spec/unit/application/cert_spec.rb +20 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +0 -26
- data/spec/unit/configurer_spec.rb +46 -0
- data/spec/unit/defaults_spec.rb +14 -0
- data/spec/unit/face/generate_spec.rb +230 -0
- data/spec/unit/face/help_spec.rb +53 -0
- data/spec/unit/face/parser_spec.rb +6 -0
- data/spec/unit/face/plugin_spec.rb +0 -4
- data/spec/unit/file_system_spec.rb +85 -0
- data/spec/unit/functions/lookup_spec.rb +4 -4
- data/spec/unit/functions/match_spec.rb +2 -2
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/split_spec.rb +1 -1
- data/spec/unit/functions/unwrap_spec.rb +29 -0
- data/spec/unit/functions/versioncmp_spec.rb +1 -1
- data/spec/unit/functions4_spec.rb +8 -8
- data/spec/unit/indirector/facts/facter_spec.rb +1 -9
- data/spec/unit/indirector/rest_spec.rb +95 -9
- data/spec/unit/module_spec.rb +43 -7
- data/spec/unit/module_tool/applications/installer_spec.rb +10 -1
- data/spec/unit/module_tool/applications/unpacker_spec.rb +2 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +8 -0
- data/spec/unit/module_tool/tar/mini_spec.rb +3 -3
- data/spec/unit/network/http/api/indirected_routes_spec.rb +49 -58
- data/spec/unit/network/http/api/master/v3_spec.rb +7 -4
- data/spec/unit/network/rights_spec.rb +1 -1
- data/spec/unit/parameter_spec.rb +11 -0
- data/spec/unit/parser/compiler_spec.rb +19 -33
- data/spec/unit/{appmgmt_spec.rb → parser/environment_compiler_spec.rb} +12 -1
- data/spec/unit/parser/functions/create_resources_spec.rb +76 -4
- data/spec/unit/parser/functions/require_spec.rb +2 -2
- data/spec/unit/parser/resource_spec.rb +21 -11
- data/spec/unit/parser/scope_spec.rb +1 -5
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1 -1
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
- data/spec/unit/pops/loaders/loader_paths_spec.rb +1 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +63 -5
- data/spec/unit/pops/loaders/module_loaders_spec.rb +2 -2
- data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +27 -3
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +8 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +9 -0
- data/spec/unit/pops/puppet_stack_spec.rb +79 -0
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +37 -0
- data/spec/unit/pops/serialization/packer_spec.rb +153 -0
- data/spec/unit/pops/serialization/rgen_spec.rb +88 -0
- data/spec/unit/pops/serialization/serialization_spec.rb +228 -0
- data/spec/unit/pops/types/p_object_type_spec.rb +44 -2
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +42 -0
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +139 -0
- data/spec/unit/pops/types/p_type_set_type_spec.rb +424 -0
- data/spec/unit/pops/types/ruby_generator_spec.rb +497 -181
- data/spec/unit/pops/types/type_calculator_spec.rb +10 -4
- data/spec/unit/pops/types/type_formatter_spec.rb +1 -1
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +2 -2
- data/spec/unit/pops/types/type_parser_spec.rb +1 -1
- data/spec/unit/pops/types/types_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +18 -1
- data/spec/unit/property_spec.rb +48 -11
- data/spec/unit/provider/group/windows_adsi_spec.rb +11 -1
- data/spec/unit/provider/package/dnf_spec.rb +1 -99
- data/spec/unit/provider/package/pacman_spec.rb +4 -4
- data/spec/unit/provider/package/pip_spec.rb +14 -0
- data/spec/unit/provider/package/pkg_spec.rb +6 -0
- data/spec/unit/provider/package/pkgdmg_spec.rb +0 -3
- data/spec/unit/provider/package/portage_spec.rb +64 -8
- data/spec/unit/provider/package/tdnf_spec.rb +18 -0
- data/spec/unit/provider/package/windows/package_spec.rb +4 -1
- data/spec/unit/provider/package/windows_spec.rb +8 -2
- data/spec/unit/provider/package/yum_spec.rb +6 -377
- data/spec/unit/provider/service/base_spec.rb +6 -0
- data/spec/unit/provider/service/debian_spec.rb +16 -7
- data/spec/unit/provider/service/gentoo_spec.rb +6 -0
- data/spec/unit/provider/service/init_spec.rb +7 -0
- data/spec/unit/provider/service/launchd_spec.rb +35 -4
- data/spec/unit/provider/service/openrc_spec.rb +6 -0
- data/spec/unit/provider/service/smf_spec.rb +31 -6
- data/spec/unit/provider/service/src_spec.rb +6 -0
- data/spec/unit/provider/service/systemd_spec.rb +70 -20
- data/spec/unit/provider/service/upstart_spec.rb +6 -0
- data/spec/unit/provider/user/aix_spec.rb +7 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +30 -1
- data/spec/unit/provider/user/windows_adsi_spec.rb +19 -0
- data/spec/unit/resource/capability_finder_spec.rb +51 -3
- data/spec/unit/resource/catalog_spec.rb +5 -0
- data/spec/unit/resource/type_spec.rb +2 -2
- data/spec/unit/resource_spec.rb +19 -0
- data/spec/unit/settings_spec.rb +13 -0
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +176 -10
- data/spec/unit/ssl/certificate_authority_spec.rb +63 -22
- data/spec/unit/ssl/host_spec.rb +1 -1
- data/spec/unit/ssl/oids_spec.rb +24 -21
- data/spec/unit/transaction/event_spec.rb +3 -1
- data/spec/unit/transaction/persistence_spec.rb +173 -0
- data/spec/unit/transaction/report_spec.rb +64 -1
- data/spec/unit/transaction/resource_harness_spec.rb +91 -0
- data/spec/unit/type/file/content_spec.rb +47 -15
- data/spec/unit/type/file_spec.rb +28 -0
- data/spec/unit/type/mount_spec.rb +5 -12
- data/spec/unit/type/yumrepo_spec.rb +1 -5
- data/spec/unit/type_spec.rb +32 -0
- data/spec/unit/util/command_line_spec.rb +11 -0
- data/spec/unit/util/execution_spec.rb +1 -1
- data/spec/unit/util/plist_spec.rb +16 -3
- data/spec/unit/util/storage_spec.rb +4 -1
- data/spec/unit/util/windows/adsi_spec.rb +23 -2
- data/spec/unit/util/windows/file_spec.rb +56 -1
- data/spec/unit/util/windows/sid_spec.rb +31 -7
- data/spec/unit/util/yaml_spec.rb +12 -0
- data/spec/unit/util_spec.rb +87 -20
- metadata +91 -48
- data/ext/puppetlisten/puppetlisten.rb +0 -77
- data/ext/puppetlisten/puppetrun.rb +0 -38
- data/lib/puppet/resource/type_collection_helper.rb +0 -7
- data/spec/unit/parser/functions/defined_spec.rb +0 -120
- data/spec/unit/resource/type_collection_helper_spec.rb +0 -24
@@ -14,10 +14,8 @@ class Puppet::Configurer::PluginHandler
|
|
14
14
|
|
15
15
|
result = []
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
result += plugin_fact_downloader.evaluate
|
20
|
-
end
|
17
|
+
plugin_fact_downloader = @factory.create_plugin_facts_downloader(environment)
|
18
|
+
result += plugin_fact_downloader.evaluate
|
21
19
|
|
22
20
|
result += plugin_downloader.evaluate
|
23
21
|
Puppet::Util::Autoload.reload_changed
|
@@ -42,7 +42,7 @@ module Puppet::DataProviders
|
|
42
42
|
hierarchy_elem_type_v2 = hierarchy_elem_type_base + ',paths=>Array[String[1]]}]'
|
43
43
|
hierarchy_elem_type_v3 = hierarchy_elem_type_base + '}]'
|
44
44
|
|
45
|
-
Puppet::Pops::Types::TypeParser.
|
45
|
+
Puppet::Pops::Types::TypeParser.singleton.parse('Struct[{'\
|
46
46
|
'version=>Integer[4],'\
|
47
47
|
"hierarchy=>Optional[Array[Variant[#{hierarchy_elem_type_v1},#{hierarchy_elem_type_v2},#{hierarchy_elem_type_v3}]]],"\
|
48
48
|
'datadir=>Optional[String[1]]}]')
|
data/lib/puppet/defaults.rb
CHANGED
@@ -112,7 +112,8 @@ module Puppet
|
|
112
112
|
Valid values for this setting are:
|
113
113
|
|
114
114
|
* `deprecations` --- disables deprecation warnings.
|
115
|
-
* `undefined_variables` --- disables warnings about non existing variables.
|
115
|
+
* `undefined_variables` --- disables warnings about non existing variables.
|
116
|
+
* `undefined_resources` --- disables warnings about non existing resources.",
|
116
117
|
:hook => proc do |value|
|
117
118
|
values = munge(value)
|
118
119
|
valid = %w[deprecations undefined_variables undefined_resources]
|
@@ -418,7 +419,7 @@ deprecated and has been replaced by 'always_retry_plugins'."
|
|
418
419
|
:data_binding_terminus => {
|
419
420
|
:type => :terminus,
|
420
421
|
:default => "hiera",
|
421
|
-
:desc => "Where to
|
422
|
+
:desc => "Where to retrieve information about data.",
|
422
423
|
},
|
423
424
|
:hiera_config => {
|
424
425
|
:default => lambda do
|
@@ -639,7 +640,7 @@ deprecated and has been replaced by 'always_retry_plugins'."
|
|
639
640
|
Puppet.define_settings(
|
640
641
|
:main,
|
641
642
|
|
642
|
-
# We have to downcase the fqdn, because the current ssl stuff (as
|
643
|
+
# We have to downcase the fqdn, because the current ssl stuff (as opposed to in master) doesn't have good facilities for
|
643
644
|
# manipulating naming.
|
644
645
|
:certname => {
|
645
646
|
:default => lambda { Puppet::Settings.default_certname.downcase },
|
@@ -1073,7 +1074,7 @@ EOT
|
|
1073
1074
|
this path as a directory if one exists or if the path ends with a / or \\.
|
1074
1075
|
|
1075
1076
|
Setting a global value for `manifest` in puppet.conf is not allowed
|
1076
|
-
(but it can be overridden from
|
1077
|
+
(but it can be overridden from the commandline). Please use
|
1077
1078
|
directory environments instead. If you need to use something other than the
|
1078
1079
|
environment's `manifests` directory as the main manifest, you can set
|
1079
1080
|
`manifest` in environment.conf. For more info, see
|
@@ -1226,7 +1227,7 @@ EOT
|
|
1226
1227
|
field for authorization.
|
1227
1228
|
|
1228
1229
|
Note that the name of the HTTP header gets munged by the web server
|
1229
|
-
common gateway
|
1230
|
+
common gateway interface: an `HTTP_` prefix is added, dashes are converted
|
1230
1231
|
to underscores, and all letters are uppercased. Thus, to use the
|
1231
1232
|
`X-Client-DN` header, this setting should be `HTTP_X_CLIENT_DN`.",
|
1232
1233
|
},
|
@@ -1237,7 +1238,7 @@ EOT
|
|
1237
1238
|
client successfully authenticated, and anything else otherwise.
|
1238
1239
|
|
1239
1240
|
Note that the name of the HTTP header gets munged by the web server
|
1240
|
-
common gateway
|
1241
|
+
common gateway interface: an `HTTP_` prefix is added, dashes are converted
|
1241
1242
|
to underscores, and all letters are uppercased. Thus, to use the
|
1242
1243
|
`X-Client-Verify` header, this setting should be
|
1243
1244
|
`HTTP_X_CLIENT_VERIFY`.",
|
@@ -1347,6 +1348,14 @@ EOT
|
|
1347
1348
|
this file reflects the state discovered through interacting
|
1348
1349
|
with clients."
|
1349
1350
|
},
|
1351
|
+
:transactionstorefile => {
|
1352
|
+
:default => "$statedir/transactionstore.yaml",
|
1353
|
+
:type => :file,
|
1354
|
+
:mode => "0660",
|
1355
|
+
:desc => "Transactional storage file for persisting data between
|
1356
|
+
transactions for the purposes of infering information (such as
|
1357
|
+
corrective_change) on new data received."
|
1358
|
+
},
|
1350
1359
|
:clientyamldir => {
|
1351
1360
|
:default => "$vardir/client_yaml",
|
1352
1361
|
:type => :directory,
|
@@ -1395,7 +1404,25 @@ EOT
|
|
1395
1404
|
},
|
1396
1405
|
:server => {
|
1397
1406
|
:default => "puppet",
|
1398
|
-
:desc => "The puppet master server to which the puppet agent should connect."
|
1407
|
+
:desc => "The puppet master server to which the puppet agent should connect.",
|
1408
|
+
:call_hook => :on_initialize_and_write,
|
1409
|
+
:hook => proc { |value|
|
1410
|
+
if Puppet.settings.set_by_config?(:server) && Puppet.settings.set_by_config?(:server_list)
|
1411
|
+
Puppet.deprecation_warning('Attempted to set both server and server_list. Server setting will not be used.', :SERVER_DUPLICATION)
|
1412
|
+
end
|
1413
|
+
}
|
1414
|
+
},
|
1415
|
+
:server_list => {
|
1416
|
+
:default => [],
|
1417
|
+
:type => :server_list,
|
1418
|
+
:desc => "The list of puppet master servers to which the puppet agent should connect,
|
1419
|
+
in the order that they will be tried.",
|
1420
|
+
:call_hook => :on_initialize_and_write,
|
1421
|
+
:hook => proc { |value|
|
1422
|
+
if Puppet.settings.set_by_config?(:server) && Puppet.settings.set_by_config?(:server_list)
|
1423
|
+
Puppet.deprecation_warning('Attempted to set both server and server_list. Server setting will not be used.', :SERVER_DUPLICATION)
|
1424
|
+
end
|
1425
|
+
}
|
1399
1426
|
},
|
1400
1427
|
:use_srv_records => {
|
1401
1428
|
:default => false,
|
data/lib/puppet/environments.rb
CHANGED
@@ -147,8 +147,10 @@ module Puppet::Environments
|
|
147
147
|
include EnvironmentLoader
|
148
148
|
|
149
149
|
def initialize(environment_dir, global_module_path)
|
150
|
-
@environment_dir =
|
151
|
-
@global_module_path = global_module_path
|
150
|
+
@environment_dir = Puppet::FileSystem.expand_path(environment_dir)
|
151
|
+
@global_module_path = global_module_path ?
|
152
|
+
global_module_path.map { |p| Puppet::FileSystem.expand_path(p) } :
|
153
|
+
nil
|
152
154
|
end
|
153
155
|
|
154
156
|
# Generate an array of directory loaders from a path string.
|
data/lib/puppet/error.rb
CHANGED
data/lib/puppet/external/dot.rb
CHANGED
data/lib/puppet/face/ca.rb
CHANGED
@@ -178,7 +178,10 @@ Puppet::Face.define(:ca, '0.1.0') do
|
|
178
178
|
Puppet::SSL::Host.ca_location = :only
|
179
179
|
|
180
180
|
begin
|
181
|
-
|
181
|
+
signing_options = options.select { |k,_|
|
182
|
+
[:allow_dns_alt_names, :allow_authorization_extensions].include?(k)
|
183
|
+
}
|
184
|
+
ca.sign(host, signing_options)
|
182
185
|
rescue ArgumentError => e
|
183
186
|
if e.to_s =~ /Could not find certificate request/
|
184
187
|
e.to_s
|
@@ -77,6 +77,10 @@ Puppet::Indirector::Face.define(:certificate, '0.0.1') do
|
|
77
77
|
# them. Otherwise, they will default to the config file setting iff this
|
78
78
|
# cert is for the host we're running on.
|
79
79
|
|
80
|
+
unless Puppet::FileSystem.exist?(Puppet[:hostcert])
|
81
|
+
Puppet.push_context({:ssl_host => host})
|
82
|
+
end
|
83
|
+
|
80
84
|
host.generate_certificate_request(:dns_alt_names => options[:dns_alt_names])
|
81
85
|
end
|
82
86
|
end
|
@@ -129,7 +133,9 @@ Puppet::Indirector::Face.define(:certificate, '0.0.1') do
|
|
129
133
|
raise ArgumentError, "This process is not configured as a certificate authority"
|
130
134
|
end
|
131
135
|
|
132
|
-
|
136
|
+
signing_options = {allow_dns_alt_names: options[:allow_dns_alt_names]}
|
137
|
+
|
138
|
+
ca.sign(name, signing_options)
|
133
139
|
end
|
134
140
|
end
|
135
141
|
end
|
data/lib/puppet/face/epp.rb
CHANGED
@@ -72,7 +72,7 @@ Puppet::Face.define(:epp, '0.0.1') do
|
|
72
72
|
status &&= tmp
|
73
73
|
else
|
74
74
|
# This is not an error since a validate of all files in an empty
|
75
|
-
#
|
75
|
+
# directory should not be treated as a failed validation.
|
76
76
|
Puppet.notice "No template specified. No action taken"
|
77
77
|
end
|
78
78
|
end
|
@@ -115,10 +115,10 @@ Puppet::Face.define(:epp, '0.0.1') do
|
|
115
115
|
If no arguments are given, the stdin is read (unless it is attached to a terminal)
|
116
116
|
|
117
117
|
If multiple templates are given, they are separated with a header indicating the
|
118
|
-
name of the template. This can be
|
119
|
-
The option --[no-]header has no effect
|
118
|
+
name of the template. This can be suppressed with the option --no-header.
|
119
|
+
The option --[no-]header has no effect when a single template is dumped.
|
120
120
|
|
121
|
-
When debugging the epp parser itself, it may be useful to
|
121
|
+
When debugging the epp parser itself, it may be useful to suppress the validation
|
122
122
|
step with the `--no-validate` option to observe what the parser produced from the
|
123
123
|
given source.
|
124
124
|
|
@@ -238,7 +238,7 @@ Puppet::Face.define(:epp, '0.0.1') do
|
|
238
238
|
|
239
239
|
When designing EPP templates, it is strongly recommended to define all template arguments
|
240
240
|
in the template, and to give them in a hash when calling `epp` or `inline_epp` and to use
|
241
|
-
as few global variables as possible,
|
241
|
+
as few global variables as possible, preferably only the $facts hash. This makes templates
|
242
242
|
more free standing and are easier to reuse, and to test.
|
243
243
|
EOT
|
244
244
|
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'puppet/face'
|
2
|
+
require 'puppet/generate/type'
|
3
|
+
|
4
|
+
# Create the Generate face
|
5
|
+
Puppet::Face.define(:generate, '0.1.0') do
|
6
|
+
copyright 'Puppet Inc.', 2016
|
7
|
+
license 'Apache 2 license; see COPYING'
|
8
|
+
|
9
|
+
summary 'Generates Puppet code from Ruby definitions.'
|
10
|
+
|
11
|
+
action(:types) do
|
12
|
+
summary 'Generates Puppet code for custom types'
|
13
|
+
|
14
|
+
description <<-'EOT'
|
15
|
+
Generates definitions for custom resource types using Puppet code.
|
16
|
+
|
17
|
+
Types defined in Puppet code can be used to isolate custom type definitions
|
18
|
+
between different environments.
|
19
|
+
EOT
|
20
|
+
|
21
|
+
examples <<-'EOT'
|
22
|
+
Generate Puppet type definitions for all custom resource types in the current environment:
|
23
|
+
|
24
|
+
$ puppet generate types
|
25
|
+
|
26
|
+
Generate Puppet type definitions for all custom resource types in the specified environment:
|
27
|
+
|
28
|
+
$ puppet generate types --environment development
|
29
|
+
EOT
|
30
|
+
|
31
|
+
option '--format <format>' do
|
32
|
+
summary 'The generation output format to use. Supported formats: pcore.'
|
33
|
+
default_to { 'pcore' }
|
34
|
+
|
35
|
+
before_action do |_, _, options|
|
36
|
+
raise ArgumentError, "'#{options[:format]}' is not a supported format for type generation." unless ['pcore'].include?(options[:format])
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
option '--force' do
|
41
|
+
summary 'Forces the generation of output files (skips up-to-date checks).'
|
42
|
+
default_to { false }
|
43
|
+
end
|
44
|
+
|
45
|
+
when_invoked do |options|
|
46
|
+
generator = Puppet::Generate::Type
|
47
|
+
inputs = generator.find_inputs(options[:format].to_sym)
|
48
|
+
environment = Puppet.lookup(:current_environment)
|
49
|
+
|
50
|
+
# get the common output directory (in <envroot>/.resource_types) - create it if it does not exists
|
51
|
+
# error if it exists and is not a directory
|
52
|
+
#
|
53
|
+
path_to_env = environment.configuration.path_to_env
|
54
|
+
outputdir = File.join(path_to_env, '.resource_types')
|
55
|
+
if Puppet::FileSystem.exist?(outputdir) && !Puppet::FileSystem.directory?(outputdir)
|
56
|
+
raise ArgumentError, "The output directory '#{outputdir}' exists and is not a directory"
|
57
|
+
end
|
58
|
+
Puppet::FileSystem::mkpath(outputdir)
|
59
|
+
|
60
|
+
generator.generate(inputs, outputdir, options[:force])
|
61
|
+
nil
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/lib/puppet/face/help.rb
CHANGED
@@ -77,25 +77,31 @@ Puppet::Face.define(:help, '0.0.1') do
|
|
77
77
|
|
78
78
|
def render_application_help(applicationname)
|
79
79
|
return Puppet::Application[applicationname].help
|
80
|
+
rescue StandardError, LoadError => detail
|
81
|
+
msg = <<-MSG
|
82
|
+
Could not load help for the application #{applicationname}.
|
83
|
+
Please check the error logs for more information.
|
84
|
+
|
85
|
+
Detail: "#{detail.message}"
|
86
|
+
MSG
|
87
|
+
fail ArgumentError, msg, detail.backtrace
|
80
88
|
end
|
81
89
|
|
82
90
|
def render_face_help(facename, actionname, version)
|
83
91
|
face, action = load_face_help(facename, actionname, version)
|
84
92
|
return template_for(face, action).result(binding)
|
85
|
-
|
86
|
-
|
87
|
-
def load_face_help(facename, actionname, version)
|
88
|
-
begin
|
89
|
-
face = Puppet::Face[facename.to_sym, version]
|
90
|
-
rescue Puppet::Error => detail
|
91
|
-
msg = <<-MSG
|
93
|
+
rescue StandardError, LoadError => detail
|
94
|
+
msg = <<-MSG
|
92
95
|
Could not load help for the face #{facename}.
|
93
96
|
Please check the error logs for more information.
|
94
97
|
|
95
98
|
Detail: "#{detail.message}"
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
+
MSG
|
100
|
+
fail ArgumentError, msg, detail.backtrace
|
101
|
+
end
|
102
|
+
|
103
|
+
def load_face_help(facename, actionname, version)
|
104
|
+
face = Puppet::Face[facename.to_sym, version]
|
99
105
|
if actionname
|
100
106
|
action = face.get_action(actionname.to_sym)
|
101
107
|
if not action
|
@@ -141,7 +147,7 @@ Detail: "#{detail.message}"
|
|
141
147
|
begin
|
142
148
|
face = Puppet::Face[appname, :current]
|
143
149
|
result << [appname, face.summary]
|
144
|
-
rescue
|
150
|
+
rescue StandardError, LoadError
|
145
151
|
result << [ "! #{appname}", "! Subcommand unavailable due to error. Check error logs." ]
|
146
152
|
end
|
147
153
|
else
|
@@ -162,8 +168,8 @@ Detail: "#{detail.message}"
|
|
162
168
|
return md[1]
|
163
169
|
end
|
164
170
|
end
|
165
|
-
rescue StandardError
|
166
|
-
|
171
|
+
rescue StandardError, LoadError
|
172
|
+
return "! Subcommand unavailable due to error. Check error logs."
|
167
173
|
end
|
168
174
|
return ''
|
169
175
|
end
|
data/lib/puppet/face/man.rb
CHANGED
@@ -12,7 +12,7 @@ Puppet::Face.define(:man, '0.0.1') do
|
|
12
12
|
description <<-EOT
|
13
13
|
This subcommand displays manual pages for all Puppet subcommands. If the
|
14
14
|
`ronn` gem (<https://github.com/rtomayko/ronn/>) is installed on your
|
15
|
-
system, puppet man will display fully-
|
15
|
+
system, puppet man will display fully-formatted man pages. If `ronn` is not
|
16
16
|
available, puppet man will display the raw (but human-readable) source text
|
17
17
|
in a pager.
|
18
18
|
EOT
|
data/lib/puppet/file_system.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
module Puppet::FileSystem
|
2
|
+
require 'puppet/util'
|
2
3
|
require 'puppet/file_system/path_pattern'
|
3
4
|
require 'puppet/file_system/file_impl'
|
4
5
|
require 'puppet/file_system/memory_file'
|
@@ -329,6 +330,21 @@ module Puppet::FileSystem
|
|
329
330
|
@impl.pathname(path)
|
330
331
|
end
|
331
332
|
|
333
|
+
# Produces a string representation of the opaque path handle, with expansions
|
334
|
+
# performed on ~. For Windows, this means that C:\Users\Admini~1\AppData will
|
335
|
+
# be expanded to C:\Users\Administrator\AppData. On POSIX filesystems, the
|
336
|
+
# value ~ will be expanded to something like /Users/Foo
|
337
|
+
#
|
338
|
+
# This method exists primarlily to resolve a Ruby deficiency where
|
339
|
+
# File.expand_path doesn't handle ~ in each segment on a Windows path
|
340
|
+
#
|
341
|
+
# @param path [Object] a path handle produced by {#pathname}
|
342
|
+
# @return [String] a string representation of the path
|
343
|
+
#
|
344
|
+
def self.expand_path(path, dir_string = nil)
|
345
|
+
@impl.expand_path(path, dir_string)
|
346
|
+
end
|
347
|
+
|
332
348
|
# Asserts that the given path is of the expected type produced by #pathname
|
333
349
|
#
|
334
350
|
# @raise [ArgumentError] when path is not of the expected type
|
@@ -22,6 +22,11 @@ class Puppet::FileSystem::FileImpl
|
|
22
22
|
path.to_s
|
23
23
|
end
|
24
24
|
|
25
|
+
def expand_path(path, dir_string = nil)
|
26
|
+
# ensure `nil` values behave like underlying File.expand_path
|
27
|
+
::File.expand_path(path.nil? ? nil : path_string(path), dir_string)
|
28
|
+
end
|
29
|
+
|
25
30
|
def open(path, mode, options, &block)
|
26
31
|
::File.open(path, options, mode, &block)
|
27
32
|
end
|
@@ -3,6 +3,25 @@ require 'puppet/util/windows'
|
|
3
3
|
|
4
4
|
class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
|
5
5
|
|
6
|
+
def expand_path(path, dir_string = nil)
|
7
|
+
# ensure `nil` values behave like underlying File.expand_path
|
8
|
+
string_path = ::File.expand_path(path.nil? ? nil : path_string(path), dir_string)
|
9
|
+
# if no tildes, nothing to expand, no need to call Windows API, return original string
|
10
|
+
return string_path if !string_path.index('~')
|
11
|
+
|
12
|
+
begin
|
13
|
+
# no need to do existence check up front as GetLongPathName implies that check is performed
|
14
|
+
# and it should be the exception that files aren't actually present
|
15
|
+
string_path = Puppet::Util::Windows::File.get_long_pathname(string_path)
|
16
|
+
rescue Puppet::Util::Windows::Error => e
|
17
|
+
# preserve original File.expand_path behavior for file / path not found by returning string
|
18
|
+
raise if (e.code != Puppet::Util::Windows::File::ERROR_FILE_NOT_FOUND &&
|
19
|
+
e.code != Puppet::Util::Windows::File::ERROR_PATH_NOT_FOUND)
|
20
|
+
end
|
21
|
+
|
22
|
+
string_path
|
23
|
+
end
|
24
|
+
|
6
25
|
def exist?(path)
|
7
26
|
return Puppet::Util::Windows::File.exist?(path)
|
8
27
|
end
|