puppet 5.3.7-x64-mingw32 → 5.4.0-x64-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/CONTRIBUTING.md +42 -29
- data/README.md +8 -6
- data/ext/cert_inspector +2 -2
- data/ext/envpuppet +1 -1
- data/ext/gentoo/init.d/puppetmaster +4 -4
- data/ext/ips/puppet-agent +11 -11
- data/ext/ips/puppet-master +11 -11
- data/ext/puppet-test +1 -2
- data/ext/redhat/client.init +2 -2
- data/ext/redhat/logrotate +1 -1
- data/ext/solaris/smf/puppet +11 -11
- data/ext/solaris/smf/svc-puppetd +5 -5
- data/ext/solaris/smf/svc-puppetmasterd +5 -5
- data/ext/windows/service/daemon.rb +1 -1
- data/install.rb +2 -3
- data/lib/puppet/agent.rb +1 -1
- data/lib/puppet/application/cert.rb +1 -3
- data/lib/puppet/application/describe.rb +0 -1
- data/lib/puppet/application/device.rb +12 -99
- data/lib/puppet/application/filebucket.rb +32 -11
- data/lib/puppet/application/lookup.rb +1 -11
- data/lib/puppet/application/script.rb +261 -0
- data/lib/puppet/configurer.rb +3 -4
- data/lib/puppet/configurer/plugin_handler.rb +26 -9
- data/lib/puppet/context.rb +1 -1
- data/lib/puppet/datatypes.rb +213 -0
- data/lib/puppet/datatypes/error.rb +21 -0
- data/lib/puppet/datatypes/impl/error.rb +40 -0
- data/lib/puppet/defaults.rb +51 -20
- data/lib/puppet/environments.rb +17 -0
- data/lib/puppet/error.rb +17 -0
- data/lib/puppet/etc.rb +2 -2
- data/lib/puppet/external/pson/pure/generator.rb +1 -1
- data/lib/puppet/external/pson/pure/parser.rb +1 -1
- data/lib/puppet/face/config.rb +45 -0
- data/lib/puppet/face/epp.rb +3 -3
- data/lib/puppet/face/help/action.erb +3 -0
- data/lib/puppet/face/module/build.rb +1 -0
- data/lib/puppet/face/module/generate.rb +5 -0
- data/lib/puppet/face/module/install.rb +1 -0
- data/lib/puppet/face/module/search.rb +6 -2
- data/lib/puppet/face/module/uninstall.rb +1 -0
- data/lib/puppet/face/module/upgrade.rb +1 -0
- data/lib/puppet/face/parser.rb +0 -1
- data/lib/puppet/face/plugin.rb +1 -3
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/feature/bolt.rb +3 -0
- data/lib/puppet/file_bucket/dipper.rb +1 -2
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +2 -2
- data/lib/puppet/forge.rb +6 -0
- data/lib/puppet/functions.rb +70 -88
- data/lib/puppet/functions/all.rb +6 -2
- data/lib/puppet/functions/annotate.rb +1 -1
- data/lib/puppet/functions/any.rb +7 -3
- data/lib/puppet/functions/contain.rb +6 -0
- data/lib/puppet/functions/convert_to.rb +32 -0
- data/lib/puppet/functions/defined.rb +0 -3
- data/lib/puppet/functions/each.rb +10 -6
- data/lib/puppet/functions/filter.rb +16 -10
- data/lib/puppet/functions/find_file.rb +0 -1
- data/lib/puppet/functions/include.rb +6 -0
- data/lib/puppet/functions/map.rb +12 -9
- data/lib/puppet/functions/module_directory.rb +41 -0
- data/lib/puppet/functions/new.rb +1 -4
- data/lib/puppet/functions/regsubst.rb +1 -1
- data/lib/puppet/functions/require.rb +6 -0
- data/lib/puppet/generate/type.rb +1 -1
- data/lib/puppet/gettext/config.rb +2 -2
- data/lib/puppet/gettext/stubs.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +0 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +6 -2
- data/lib/puppet/indirector/file_server.rb +1 -1
- data/lib/puppet/indirector/node/ldap.rb +19 -3
- data/lib/puppet/indirector/request.rb +10 -6
- data/lib/puppet/indirector/rest.rb +11 -12
- data/lib/puppet/info_service/class_information_service.rb +1 -1
- data/lib/puppet/interface/action.rb +11 -0
- data/lib/puppet/interface/action_builder.rb +8 -0
- data/lib/puppet/interface/option_manager.rb +1 -1
- data/lib/puppet/loaders.rb +2 -0
- data/lib/puppet/module.rb +6 -2
- data/lib/puppet/module_tool/applications/builder.rb +4 -0
- data/lib/puppet/module_tool/applications/installer.rb +3 -0
- data/lib/puppet/module_tool/applications/uninstaller.rb +3 -0
- data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.rb +3 -0
- data/lib/puppet/module_tool/installed_modules.rb +1 -1
- data/lib/puppet/module_tool/metadata.rb +0 -1
- data/lib/puppet/network/authstore.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/connection.rb +1 -9
- data/lib/puppet/network/http/factory.rb +0 -3
- data/lib/puppet/network/http/webrick.rb +1 -0
- data/lib/puppet/network/rights.rb +1 -1
- data/lib/puppet/node.rb +53 -0
- data/lib/puppet/node/environment.rb +1 -1
- data/lib/puppet/parameter/boolean.rb +1 -1
- data/lib/puppet/parser.rb +1 -0
- data/lib/puppet/parser/abstract_compiler.rb +36 -0
- data/lib/puppet/parser/ast/branch.rb +1 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +8 -52
- data/lib/puppet/parser/compiler.rb +4 -54
- data/lib/puppet/parser/functions.rb +0 -1
- data/lib/puppet/parser/functions/create_resources.rb +6 -0
- data/lib/puppet/parser/functions/fqdn_rand.rb +6 -2
- data/lib/puppet/parser/functions/inline_template.rb +6 -0
- data/lib/puppet/parser/functions/new.rb +47 -32
- data/lib/puppet/parser/functions/realize.rb +6 -0
- data/lib/puppet/parser/functions/return.rb +1 -22
- data/lib/puppet/parser/functions/reverse_each.rb +1 -1
- data/lib/puppet/parser/functions/scanf.rb +1 -1
- data/lib/puppet/parser/functions/sha256.rb +5 -0
- data/lib/puppet/parser/functions/tag.rb +6 -0
- data/lib/puppet/parser/functions/tagged.rb +6 -0
- data/lib/puppet/parser/functions/template.rb +5 -0
- data/lib/puppet/parser/scope.rb +28 -4
- data/lib/puppet/parser/script_compiler.rb +118 -0
- data/lib/puppet/parser/type_loader.rb +1 -1
- data/lib/puppet/pops.rb +1 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +38 -4
- data/lib/puppet/pops/evaluator/closure.rb +12 -4
- data/lib/puppet/pops/evaluator/compare_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +13 -0
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +38 -10
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +1 -1
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +1 -1
- data/lib/puppet/pops/evaluator/runtime3_support.rb +2 -3
- data/lib/puppet/pops/functions/dispatch.rb +6 -5
- data/lib/puppet/pops/functions/function.rb +2 -2
- data/lib/puppet/pops/issues.rb +34 -2
- data/lib/puppet/pops/loader/base_loader.rb +10 -0
- data/lib/puppet/pops/loader/dependency_loader.rb +7 -0
- data/lib/puppet/pops/loader/loader.rb +21 -2
- data/lib/puppet/pops/loader/loader_paths.rb +180 -30
- data/lib/puppet/pops/loader/module_loaders.rb +202 -33
- data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +84 -0
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +9 -9
- data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +40 -0
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +6 -1
- data/lib/puppet/pops/loader/static_loader.rb +23 -8
- data/lib/puppet/pops/loader/task_instantiator.rb +69 -0
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +4 -0
- data/lib/puppet/pops/loaders.rb +122 -11
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +1 -1
- data/lib/puppet/pops/lookup/interpolation.rb +1 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +0 -1
- data/lib/puppet/pops/model/ast.pp +3 -0
- data/lib/puppet/pops/model/ast.rb +34 -1
- data/lib/puppet/pops/model/factory.rb +30 -3
- data/lib/puppet/pops/model/model_label_provider.rb +1 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +12 -1
- data/lib/puppet/pops/model/tree_dumper.rb +1 -1
- data/lib/puppet/pops/parser/code_merger.rb +2 -2
- data/lib/puppet/pops/parser/egrammar.ra +44 -15
- data/lib/puppet/pops/parser/eparser.rb +1687 -1571
- data/lib/puppet/pops/parser/epp_support.rb +1 -3
- data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +2 -2
- data/lib/puppet/pops/parser/lexer2.rb +4 -4
- data/lib/puppet/pops/parser/lexer_support.rb +2 -2
- data/lib/puppet/pops/parser/locatable.rb +1 -1
- data/lib/puppet/pops/parser/locator.rb +7 -13
- data/lib/puppet/pops/parser/parser_support.rb +3 -3
- data/lib/puppet/pops/parser/slurp_support.rb +0 -3
- data/lib/puppet/pops/pcore.rb +45 -0
- data/lib/puppet/pops/resource/param.rb +1 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +1 -1
- data/lib/puppet/pops/serialization/abstract_reader.rb +4 -0
- data/lib/puppet/pops/serialization/abstract_writer.rb +6 -0
- data/lib/puppet/pops/serialization/extension.rb +1 -0
- data/lib/puppet/pops/serialization/from_data_converter.rb +64 -10
- data/lib/puppet/pops/serialization/json_path.rb +2 -1
- data/lib/puppet/pops/serialization/object.rb +3 -4
- data/lib/puppet/pops/serialization/serializer.rb +2 -1
- data/lib/puppet/pops/serialization/to_data_converter.rb +7 -3
- data/lib/puppet/pops/time/timespan.rb +1 -1
- data/lib/puppet/pops/types/iterable.rb +38 -9
- data/lib/puppet/pops/types/p_init_type.rb +1 -1
- data/lib/puppet/pops/types/p_meta_type.rb +4 -0
- data/lib/puppet/pops/types/p_object_type.rb +146 -14
- data/lib/puppet/pops/types/p_object_type_extension.rb +218 -0
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +0 -1
- data/lib/puppet/pops/types/p_sem_ver_type.rb +10 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +0 -1
- data/lib/puppet/pops/types/p_uri_type.rb +190 -0
- data/lib/puppet/pops/types/puppet_object.rb +15 -1
- data/lib/puppet/pops/types/ruby_generator.rb +46 -54
- data/lib/puppet/pops/types/string_converter.rb +22 -1
- data/lib/puppet/pops/types/type_acceptor.rb +1 -1
- data/lib/puppet/pops/types/type_calculator.rb +13 -4
- data/lib/puppet/pops/types/type_factory.rb +29 -5
- data/lib/puppet/pops/types/type_formatter.rb +67 -4
- data/lib/puppet/pops/types/type_parser.rb +92 -4
- data/lib/puppet/pops/types/type_with_members.rb +43 -0
- data/lib/puppet/pops/types/types.rb +212 -80
- data/lib/puppet/pops/validation/checker4_0.rb +10 -6
- data/lib/puppet/pops/validation/tasks_checker.rb +60 -0
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +6 -1
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/provider.rb +18 -8
- data/lib/puppet/provider/augeas/augeas.rb +3 -4
- data/lib/puppet/provider/exec.rb +0 -2
- data/lib/puppet/provider/group/groupadd.rb +25 -1
- data/lib/puppet/provider/group/windows_adsi.rb +7 -4
- data/lib/puppet/provider/mount.rb +25 -8
- data/lib/puppet/provider/nameservice.rb +9 -4
- data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
- data/lib/puppet/provider/nameservice/objectadd.rb +13 -24
- data/lib/puppet/provider/nameservice/pw.rb +14 -14
- data/lib/puppet/provider/package/appdmg.rb +0 -1
- data/lib/puppet/provider/package/apple.rb +0 -1
- data/lib/puppet/provider/package/gem.rb +2 -2
- data/lib/puppet/provider/package/macports.rb +2 -2
- data/lib/puppet/provider/package/pkg.rb +3 -0
- data/lib/puppet/provider/package/pkgdmg.rb +0 -1
- data/lib/puppet/provider/package/portage.rb +0 -1
- data/lib/puppet/provider/package/yum.rb +23 -8
- data/lib/puppet/provider/package/zypper.rb +2 -2
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +2 -2
- data/lib/puppet/provider/service/init.rb +1 -0
- data/lib/puppet/provider/service/launchd.rb +6 -7
- data/lib/puppet/provider/service/redhat.rb +3 -2
- data/lib/puppet/provider/service/systemd.rb +2 -2
- 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/openbsd.rb +1 -1
- data/lib/puppet/provider/user/pw.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +7 -1
- data/lib/puppet/provider/user/useradd.rb +36 -6
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -4
- data/lib/puppet/provider/zfs/zfs.rb +23 -3
- data/lib/puppet/provider/zpool/zpool.rb +1 -1
- data/lib/puppet/reference/configuration.rb +0 -2
- data/lib/puppet/reference/type.rb +0 -1
- data/lib/puppet/resource.rb +1 -2
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/resource/status.rb +0 -1
- data/lib/puppet/resource/type.rb +4 -4
- data/lib/puppet/resource/type_collection.rb +1 -1
- data/lib/puppet/settings/base_setting.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +0 -1
- data/lib/puppet/settings/ini_file.rb +66 -12
- data/lib/puppet/ssl/certificate_authority.rb +1 -1
- data/lib/puppet/ssl/certificate_request.rb +2 -2
- data/lib/puppet/ssl/certificate_revocation_list.rb +2 -1
- data/lib/puppet/ssl/certificate_signer.rb +11 -0
- data/lib/puppet/ssl/host.rb +2 -2
- data/lib/puppet/syntax_checkers/base64.rb +1 -1
- data/lib/puppet/transaction.rb +37 -14
- data/lib/puppet/transaction/report.rb +3 -1
- data/lib/puppet/type.rb +17 -4
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/exec.rb +5 -4
- data/lib/puppet/type/file.rb +3 -3
- data/lib/puppet/type/file/checksum.rb +7 -1
- data/lib/puppet/type/file/checksum_value.rb +4 -3
- data/lib/puppet/type/group.rb +3 -0
- data/lib/puppet/type/k5login.rb +101 -0
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/mount.rb +6 -2
- data/lib/puppet/type/tidy.rb +6 -4
- data/lib/puppet/type/user.rb +26 -39
- data/lib/puppet/type/yumrepo.rb +9 -0
- data/lib/puppet/type/zfs.rb +4 -0
- data/lib/puppet/util.rb +8 -15
- data/lib/puppet/util/character_encoding.rb +2 -2
- data/lib/puppet/util/checksums.rb +82 -1
- data/lib/puppet/util/errors.rb +0 -2
- data/lib/puppet/util/filetype.rb +2 -2
- data/lib/puppet/util/json_lockfile.rb +1 -1
- data/lib/puppet/util/log.rb +1 -1
- data/lib/puppet/util/log/destinations.rb +10 -1
- data/lib/puppet/util/monkey_patches.rb +1 -1
- data/lib/puppet/util/network_device/cisco/device.rb +5 -5
- data/lib/puppet/util/network_device/config.rb +2 -3
- data/lib/puppet/util/platform.rb +13 -0
- data/lib/puppet/util/plist.rb +4 -4
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -1
- data/lib/puppet/util/reference.rb +8 -1
- data/lib/puppet/util/windows/adsi.rb +18 -15
- data/lib/puppet/util/windows/principal.rb +6 -7
- data/lib/puppet/util/windows/process.rb +1 -1
- data/lib/puppet/util/windows/registry.rb +2 -2
- data/lib/puppet/util/windows/sid.rb +7 -62
- data/lib/puppet/vendor/deep_merge/README.md +2 -2
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +18 -18
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +5 -5
- data/lib/puppet/vendor/semantic_puppet/locales/config.yaml +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +874 -0
- data/locales/ja/puppet.po +140 -163
- data/locales/puppet.pot +940 -597
- data/man/man5/puppet.conf.5 +16 -91
- data/man/man8/puppet-agent.8 +2 -6
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-cert.8 +1 -1
- data/man/man8/puppet-certificate.8 +1 -1
- data/man/man8/puppet-certificate_request.8 +1 -1
- data/man/man8/puppet-certificate_revocation_list.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +11 -33
- 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 +4 -22
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-master.8 +1 -1
- data/man/man8/puppet-module.8 +2 -11
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/integration/application/lookup_spec.rb +0 -21
- data/spec/integration/parser/compiler_spec.rb +18 -0
- data/spec/integration/parser/script_compiler_spec.rb +113 -0
- data/spec/integration/provider/mount_spec.rb +2 -0
- data/spec/integration/type/file_spec.rb +11 -3
- data/spec/integration/util/windows/adsi_spec.rb +1 -86
- data/spec/integration/util/windows/principal_spec.rb +1 -10
- data/spec/shared_contexts/checksum.rb +4 -1
- data/spec/shared_contexts/digests.rb +46 -1
- data/spec/shared_contexts/types_setup.rb +8 -3
- data/spec/unit/agent_spec.rb +2 -2
- data/spec/unit/application/cert_spec.rb +5 -17
- data/spec/unit/application/device_spec.rb +2 -96
- data/spec/unit/application/filebucket_spec.rb +18 -4
- data/spec/unit/configurer/plugin_handler_spec.rb +5 -32
- data/spec/unit/configurer_spec.rb +3 -3
- data/spec/unit/datatypes_spec.rb +304 -0
- data/spec/unit/defaults_spec.rb +41 -20
- data/spec/unit/face/config_spec.rb +46 -1
- data/spec/unit/face/epp_face_spec.rb +7 -3
- data/spec/unit/face/module/search_spec.rb +11 -0
- data/spec/unit/face/parser_spec.rb +2 -2
- data/spec/unit/file_bucket/dipper_spec.rb +12 -1
- data/spec/unit/forge/module_release_spec.rb +70 -0
- data/spec/unit/functions/break_spec.rb +34 -2
- data/spec/unit/functions/contain_spec.rb +1 -0
- data/spec/unit/functions/convert_to_spec.rb +22 -0
- data/spec/unit/functions/epp_spec.rb +5 -0
- data/spec/unit/functions/include_spec.rb +15 -0
- data/spec/unit/functions/module_directory_spec.rb +43 -0
- data/spec/unit/functions/new_spec.rb +14 -14
- data/spec/unit/functions/require_spec.rb +2 -0
- data/spec/unit/functions/shared.rb +12 -0
- data/spec/unit/functions/step_spec.rb +1 -1
- data/spec/unit/functions4_spec.rb +49 -4
- data/spec/unit/indirector/catalog/compiler_spec.rb +3 -3
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +148 -94
- data/spec/unit/indirector/node/ldap_spec.rb +15 -12
- data/spec/unit/indirector/rest_spec.rb +0 -43
- data/spec/unit/interface/action_spec.rb +33 -0
- data/spec/unit/module_tool/applications/builder_spec.rb +7 -0
- data/spec/unit/module_tool/applications/installer_spec.rb +8 -0
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +8 -0
- data/spec/unit/module_tool/applications/upgrader_spec.rb +6 -0
- data/spec/unit/network/http/connection_spec.rb +1 -1
- data/spec/unit/network/http/factory_spec.rb +28 -35
- data/spec/unit/parser/compiler_spec.rb +0 -8
- data/spec/unit/parser/environment_compiler_spec.rb +36 -0
- data/spec/unit/parser/functions/create_resources_spec.rb +9 -0
- data/spec/unit/parser/functions/inline_template_spec.rb +7 -0
- data/spec/unit/parser/functions/realize_spec.rb +9 -0
- data/spec/unit/parser/functions/tag_spec.rb +7 -0
- data/spec/unit/parser/functions/tagged_spec.rb +25 -0
- data/spec/unit/parser/functions/template_spec.rb +8 -0
- data/spec/unit/parser/scope_spec.rb +19 -0
- data/spec/unit/pops/evaluator/conditionals_spec.rb +1 -1
- data/spec/unit/pops/loaders/loader_spec.rb +516 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +11 -0
- data/spec/unit/pops/loaders/module_loaders_spec.rb +43 -0
- data/spec/unit/pops/loaders/static_loader_spec.rb +15 -7
- data/spec/unit/pops/model/model_spec.rb +5 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +15 -0
- data/spec/unit/pops/parser/locator_spec.rb +20 -0
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +33 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +28 -0
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +12 -0
- data/spec/unit/pops/parser/parse_plan_spec.rb +48 -0
- data/spec/unit/pops/serialization/packer_spec.rb +8 -0
- data/spec/unit/pops/serialization/serialization_spec.rb +30 -0
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +31 -0
- data/spec/unit/pops/types/error_spec.rb +207 -0
- data/spec/unit/pops/types/p_init_type_spec.rb +98 -0
- data/spec/unit/pops/types/p_object_type_spec.rb +275 -10
- data/spec/unit/pops/types/p_uri_type_spec.rb +191 -0
- data/spec/unit/pops/types/ruby_generator_spec.rb +82 -44
- data/spec/unit/pops/types/task_spec.rb +353 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +76 -5
- data/spec/unit/pops/types/type_formatter_spec.rb +31 -13
- data/spec/unit/pops/types/type_parser_spec.rb +13 -1
- data/spec/unit/pops/types/types_spec.rb +60 -0
- data/spec/unit/pops/validator/validator_spec.rb +76 -0
- data/spec/unit/provider/group/groupadd_spec.rb +77 -1
- data/spec/unit/provider/group/pw_spec.rb +4 -4
- data/spec/unit/provider/group/windows_adsi_spec.rb +22 -79
- data/spec/unit/provider/mount_spec.rb +18 -5
- data/spec/unit/provider/nameservice_spec.rb +5 -5
- data/spec/unit/provider/package/dnf_spec.rb +2 -2
- data/spec/unit/provider/package/gem_spec.rb +1 -1
- data/spec/unit/provider/package/pkg_spec.rb +3 -0
- data/spec/unit/provider/package/yum_spec.rb +40 -0
- data/spec/unit/provider/service/launchd_spec.rb +2 -1
- data/spec/unit/provider/service/redhat_spec.rb +5 -0
- data/spec/unit/provider/service/systemd_spec.rb +1 -1
- data/spec/unit/provider/user/hpux_spec.rb +2 -2
- data/spec/unit/provider/user/openbsd_spec.rb +2 -2
- data/spec/unit/provider/user/pw_spec.rb +14 -14
- data/spec/unit/provider/user/user_role_add_spec.rb +19 -2
- data/spec/unit/provider/user/useradd_spec.rb +188 -22
- data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
- data/spec/unit/provider/zfs/zfs_spec.rb +55 -1
- data/spec/unit/provider_spec.rb +48 -0
- data/spec/unit/puppet_pal_2pec.rb +1005 -0
- data/spec/unit/puppet_pal_spec.rb +11 -0
- data/spec/unit/settings/ini_file_spec.rb +313 -2
- data/spec/unit/ssl/certificate_request_spec.rb +42 -1
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +2 -1
- data/spec/unit/transaction/report_spec.rb +1 -0
- data/spec/unit/transaction_spec.rb +112 -21
- data/spec/unit/type/file/checksum_spec.rb +20 -0
- data/spec/unit/type/file_spec.rb +8 -0
- data/spec/unit/type/group_spec.rb +8 -0
- data/spec/unit/type/k5login_spec.rb +22 -1
- data/spec/unit/type/scheduled_task_spec.rb +15 -0
- data/spec/unit/type/user_spec.rb +11 -1
- data/spec/unit/type/yumrepo_spec.rb +5 -0
- data/spec/unit/util/checksums_spec.rb +3 -3
- data/spec/unit/util/log/destinations_spec.rb +14 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +1 -1
- data/spec/unit/util/plist_spec.rb +3 -3
- data/spec/unit/util/windows/adsi_spec.rb +27 -31
- data/spec/unit/util/windows/sid_spec.rb +15 -86
- data/spec/unit/util_spec.rb +17 -3
- data/tasks/manpages.rake +1 -1
- metadata +220 -182
- data/lib/puppet/bindings.rb +0 -148
- data/lib/puppet/configurer/downloader_factory.rb +0 -44
- data/spec/unit/configurer/downloader_factory_spec.rb +0 -129
@@ -8,7 +8,7 @@ class PuppetResourceTypeImplInstantiator
|
|
8
8
|
# given puppet source does not produce such an instance when evaluated.
|
9
9
|
#
|
10
10
|
# @param loader [Loader] The loader the function is associated with
|
11
|
-
# @param typed_name [TypedName] the type / name of the
|
11
|
+
# @param typed_name [TypedName] the type / name of the resource type impl to load
|
12
12
|
# @param source_ref [URI, String] a reference to the source / origin of the puppet code to evaluate
|
13
13
|
# @param pp_code_string [String] puppet code in a string
|
14
14
|
#
|
@@ -20,14 +20,14 @@ class PuppetResourceTypeImplInstantiator
|
|
20
20
|
# parse and validate
|
21
21
|
model = parser.parse_string(pp_code_string, source_ref)
|
22
22
|
statements = if model.is_a?(Model::Program)
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
23
|
+
if model.body.is_a?(Model::BlockExpression)
|
24
|
+
model.body.statements
|
25
|
+
else
|
26
|
+
[model.body]
|
27
|
+
end
|
28
|
+
else
|
29
|
+
EMPTY_ARRAY
|
30
|
+
end
|
31
31
|
statements = statements.reject { |s| s.is_a?(Model::Nop) }
|
32
32
|
if statements.empty?
|
33
33
|
raise ArgumentError, _("The code loaded from %{source_ref} does not create the resource type '%{type_name}' - it is empty") % { source_ref: source_ref, type_name: typed_name.name }
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# The RubyTypeInstantiator instantiates a data type from the ruby source
|
2
|
+
# that calls Puppet::DataTypes.create_type.
|
3
|
+
#
|
4
|
+
class Puppet::Pops::Loader::RubyDataTypeInstantiator
|
5
|
+
# Produces an instance of class derived from PAnyType class with the given typed_name, or fails with an error if the
|
6
|
+
# given ruby source does not produce this instance when evaluated.
|
7
|
+
#
|
8
|
+
# @param loader [Puppet::Pops::Loader::Loader] The loader the type is associated with
|
9
|
+
# @param typed_name [Puppet::Pops::Loader::TypedName] the type / name of the type to load
|
10
|
+
# @param source_ref [URI, String] a reference to the source / origin of the ruby code to evaluate
|
11
|
+
# @param ruby_code_string [String] ruby code in a string
|
12
|
+
#
|
13
|
+
# @return [Puppet::Pops::Types::PAnyType] - an instantiated data type associated with the given loader
|
14
|
+
#
|
15
|
+
def self.create(loader, typed_name, source_ref, ruby_code_string)
|
16
|
+
unless ruby_code_string.is_a?(String) && ruby_code_string =~ /Puppet\:\:DataTypes\.create_type/
|
17
|
+
raise ArgumentError, _("The code loaded from %{source_ref} does not seem to be a Puppet 5x API data type - no create_type call.") % { source_ref: source_ref }
|
18
|
+
end
|
19
|
+
# make the private loader available in a binding to allow it to be passed on
|
20
|
+
loader_for_type = loader.private_loader
|
21
|
+
here = get_binding(loader_for_type)
|
22
|
+
created = eval(ruby_code_string, here, source_ref, 1)
|
23
|
+
unless created.is_a?(Puppet::Pops::Types::PAnyType)
|
24
|
+
raise ArgumentError, _("The code loaded from %{source_ref} did not produce a data type when evaluated. Got '%{klass}'") % { source_ref: source_ref, klass: created.class }
|
25
|
+
end
|
26
|
+
unless created.name.casecmp(typed_name.name) == 0
|
27
|
+
raise ArgumentError, _("The code loaded from %{source_ref} produced mis-matched name, expected '%{type_name}', got %{created_name}") % { source_ref: source_ref, type_name: typed_name.name, created_name: created.name }
|
28
|
+
end
|
29
|
+
created
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
# Produces a binding where the given loader is bound as a local variable (loader_injected_arg). This variable can be used in loaded
|
35
|
+
# ruby code - e.g. to call Puppet::Function.create_loaded_function(:name, loader,...)
|
36
|
+
#
|
37
|
+
def self.get_binding(loader_injected_arg)
|
38
|
+
binding
|
39
|
+
end
|
40
|
+
end
|
@@ -13,6 +13,11 @@ class Runtime3TypeLoader < BaseLoader
|
|
13
13
|
@resource_3x_loader = env_path.nil? ? nil : ModuleLoaders.pcore_resource_type_loader_from(parent_loader, loaders, env_path)
|
14
14
|
end
|
15
15
|
|
16
|
+
def discover(type, error_collector = nil, name_authority = Pcore::RUNTIME_NAME_AUTHORITY, &block)
|
17
|
+
# TODO: Use generated index of all known types (requires separate utility).
|
18
|
+
parent.discover(type, error_collector, name_authority, &block)
|
19
|
+
end
|
20
|
+
|
16
21
|
def to_s()
|
17
22
|
"(Runtime3TypeLoader '#{loader_name()}')"
|
18
23
|
end
|
@@ -83,7 +88,7 @@ class Runtime3TypeLoader < BaseLoader
|
|
83
88
|
end
|
84
89
|
private :find_impl
|
85
90
|
|
86
|
-
# Allows shadowing since this loader is
|
91
|
+
# Allows shadowing since this loader is populated with all loaded resource types at time
|
87
92
|
# of loading. This loading will, for built in types override the aliases configured in the static
|
88
93
|
# loader.
|
89
94
|
#
|
@@ -64,7 +64,7 @@ class StaticLoader < Loader
|
|
64
64
|
BUILTIN_ALIASES = {
|
65
65
|
'Data' => 'Variant[ScalarData,Undef,Hash[String,Data],Array[Data]]',
|
66
66
|
'RichDataKey' => 'Variant[String,Numeric]',
|
67
|
-
'RichData' => 'Variant[Scalar,SemVerRange,Binary,Sensitive,Type,TypeSet,Undef,Default,Hash[RichDataKey,RichData],Array[RichData]]',
|
67
|
+
'RichData' => 'Variant[Scalar,SemVerRange,Binary,Sensitive,Type,TypeSet,URI,Object,Undef,Default,Hash[RichDataKey,RichData],Array[RichData]]',
|
68
68
|
|
69
69
|
# Backward compatible aliases.
|
70
70
|
'Puppet::LookupKey' => 'RichDataKey',
|
@@ -74,9 +74,16 @@ class StaticLoader < Loader
|
|
74
74
|
attr_reader :loaded
|
75
75
|
def initialize
|
76
76
|
@loaded = {}
|
77
|
+
@runtime_3_initialized = false
|
77
78
|
create_built_in_types
|
78
|
-
|
79
|
-
|
79
|
+
end
|
80
|
+
|
81
|
+
def discover(type, error_collector = nil, name_authority = Pcore::RUNTIME_NAME_AUTHORITY)
|
82
|
+
# Static loader only contains runtime types
|
83
|
+
return EMPTY_ARRAY unless type == :type && name_authority == name_authority = Pcore::RUNTIME_NAME_AUTHORITY
|
84
|
+
|
85
|
+
typed_names = type == :type && name_authority == Pcore::RUNTIME_NAME_AUTHORITY ? @loaded.keys : EMPTY_ARRAY
|
86
|
+
block_given? ? typed_names.select { |tn| yield(tn) } : typed_names
|
80
87
|
end
|
81
88
|
|
82
89
|
def load_typed(typed_name)
|
@@ -108,6 +115,19 @@ class StaticLoader < Loader
|
|
108
115
|
@loaded[typed_name]
|
109
116
|
end
|
110
117
|
|
118
|
+
def runtime_3_init
|
119
|
+
unless @runtime_3_initialized
|
120
|
+
@runtime_3_initialized = true
|
121
|
+
create_resource_type_references
|
122
|
+
end
|
123
|
+
nil
|
124
|
+
end
|
125
|
+
|
126
|
+
def register_aliases
|
127
|
+
aliases = BUILTIN_ALIASES.map { |name, string| add_type(name, Types::PTypeAliasType.new(name, Types::TypeFactory.type_reference(string), nil)) }
|
128
|
+
aliases.each { |type| type.resolve(self) }
|
129
|
+
end
|
130
|
+
|
111
131
|
private
|
112
132
|
|
113
133
|
def load_constant(typed_name)
|
@@ -138,11 +158,6 @@ class StaticLoader < Loader
|
|
138
158
|
def create_resource_type_reference(name)
|
139
159
|
add_type(name, Types::TypeFactory.resource(name))
|
140
160
|
end
|
141
|
-
|
142
|
-
def register_aliases
|
143
|
-
aliases = BUILTIN_ALIASES.map { |name, string| add_type(name, Types::PTypeAliasType.new(name, Types::TypeFactory.type_reference(string), nil)) }
|
144
|
-
aliases.each { |type| type.resolve(self) }
|
145
|
-
end
|
146
161
|
end
|
147
162
|
end
|
148
163
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# The TypeDefinitionInstantiator instantiates a type alias or a type definition
|
2
|
+
#
|
3
|
+
module Puppet::Pops
|
4
|
+
module Loader
|
5
|
+
class TaskInstantiator
|
6
|
+
def self.create(loader, typed_name, source_refs)
|
7
|
+
name = typed_name.name
|
8
|
+
metadata = nil
|
9
|
+
task_source = nil
|
10
|
+
source_refs.each do |source_ref|
|
11
|
+
if source_ref.end_with?('.json')
|
12
|
+
metadata = source_ref
|
13
|
+
elsif task_source.nil?
|
14
|
+
task_source = source_ref
|
15
|
+
else
|
16
|
+
raise ArgumentError, _('Only one file can exists besides the .json file for task %{name} in directory %{directory}') %
|
17
|
+
{ name: name, directory: File.dirname(source_refs[0]) }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
if task_source.nil?
|
22
|
+
raise ArgumentError, _('No source besides task metadata was found in directory %{directory} for task %{name}') %
|
23
|
+
{ name: name, directory: File.dirname(source_refs[0]) }
|
24
|
+
end
|
25
|
+
create_task(loader, name, task_source, metadata)
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.create_task(loader, name, task_source, metadata)
|
29
|
+
if metadata.nil?
|
30
|
+
create_task_from_hash(loader, name, task_source, EMPTY_HASH)
|
31
|
+
else
|
32
|
+
json_text = loader.get_contents(metadata)
|
33
|
+
begin
|
34
|
+
create_task_from_hash(loader, name, task_source, JSON.parse(json_text) || EMPTY_HASH)
|
35
|
+
rescue JSON::ParserError => ex
|
36
|
+
raise Puppet::ParseError.new(ex.message, metadata)
|
37
|
+
rescue Types::TypeAssertionError => ex
|
38
|
+
# Not strictly a parser error but from the users perspective, the file content didn't parse properly. The
|
39
|
+
# ParserError also conveys file info (even though line is unknown)
|
40
|
+
msg = _('Failed to load metadata for task %{name}: %{reason}') % { :name => name, :reason => ex.message }
|
41
|
+
raise Puppet::ParseError.new(msg, metadata)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.create_task_from_hash(loader, name, task_source, hash)
|
47
|
+
arguments = {
|
48
|
+
'name' => name,
|
49
|
+
'executable' => task_source
|
50
|
+
}
|
51
|
+
hash.each_pair do |key, value|
|
52
|
+
if 'parameters' == key || 'output' == key
|
53
|
+
ps = {}
|
54
|
+
value.each_pair do |k, v|
|
55
|
+
pd = v.dup
|
56
|
+
t = v['type']
|
57
|
+
pd['type'] = t.nil? ? Types::TypeFactory.data : Types::TypeParser.singleton.parse(t, loader)
|
58
|
+
ps[k] = pd
|
59
|
+
end
|
60
|
+
value = ps
|
61
|
+
end
|
62
|
+
arguments[key] = value
|
63
|
+
end
|
64
|
+
|
65
|
+
Types::TypeFactory.task.from_hash(arguments)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/puppet/pops/loaders.rb
CHANGED
@@ -63,6 +63,15 @@ class Loaders
|
|
63
63
|
# 4. module loaders are set up from the create_environment_loader, they register themselves
|
64
64
|
end
|
65
65
|
|
66
|
+
# Called after loader has been added to Puppet Context as :loaders so that dynamic types can
|
67
|
+
# be pre-loaded with a fully configured loader system
|
68
|
+
def pre_load
|
69
|
+
@puppet_system_loader.load(:type, 'error')
|
70
|
+
|
71
|
+
# Will move to Bolt
|
72
|
+
@puppet_system_loader.load(:type, 'executionresult')
|
73
|
+
end
|
74
|
+
|
66
75
|
# Clears the cached static and puppet_system loaders (to enable testing)
|
67
76
|
#
|
68
77
|
def self.clear
|
@@ -84,7 +93,11 @@ class Loaders
|
|
84
93
|
|
85
94
|
def self.static_loader
|
86
95
|
# The static loader can only be changed after a reboot
|
87
|
-
|
96
|
+
if !class_variable_defined?(:@@static_loader) || @@static_loader.nil?
|
97
|
+
@@static_loader = Loader::StaticLoader.new()
|
98
|
+
@@static_loader.register_aliases
|
99
|
+
end
|
100
|
+
@@static_loader
|
88
101
|
end
|
89
102
|
|
90
103
|
def self.implementation_registry
|
@@ -93,7 +106,7 @@ class Loaders
|
|
93
106
|
end
|
94
107
|
|
95
108
|
def register_implementations(obj_classes, name_authority)
|
96
|
-
self.class.register_implementations_with_loader(obj_classes, name_authority,
|
109
|
+
self.class.register_implementations_with_loader(obj_classes, name_authority, @private_environment_loader)
|
97
110
|
end
|
98
111
|
|
99
112
|
# Register implementations using the global static loader
|
@@ -233,8 +246,101 @@ class Loaders
|
|
233
246
|
@loaders_by_name[name] = loader
|
234
247
|
end
|
235
248
|
|
249
|
+
# Load the main manifest for the given environment
|
250
|
+
#
|
251
|
+
# There are two sources that can be used for the initial parse:
|
252
|
+
#
|
253
|
+
# 1. The value of `Puppet[:code]`: Puppet can take a string from
|
254
|
+
# its settings and parse that as a manifest. This is used by various
|
255
|
+
# Puppet applications to read in a manifest and pass it to the
|
256
|
+
# environment as a side effect. This is attempted first.
|
257
|
+
# 2. The contents of the environment's +manifest+ attribute: Puppet will
|
258
|
+
# try to load the environment manifest. The manifest must be a file.
|
259
|
+
#
|
260
|
+
# @return [Model::Program] The manifest parsed into a model object
|
261
|
+
def load_main_manifest
|
262
|
+
parser = Parser::EvaluatingParser.singleton
|
263
|
+
parsed_code = Puppet[:code]
|
264
|
+
program = if parsed_code != ""
|
265
|
+
parser.parse_string(parsed_code, 'unknown-source-location')
|
266
|
+
else
|
267
|
+
file = @environment.manifest
|
268
|
+
|
269
|
+
# if the manifest file is a reference to a directory, parse and combine
|
270
|
+
# all .pp files in that directory
|
271
|
+
if file == Puppet::Node::Environment::NO_MANIFEST
|
272
|
+
nil
|
273
|
+
elsif File.directory?(file)
|
274
|
+
raise Puppet::Error, "manifest of environment '#{@environment.name}' appoints directory '#{file}'. It must be a file"
|
275
|
+
elsif File.exists?(file)
|
276
|
+
parser.parse_file(file)
|
277
|
+
else
|
278
|
+
raise Puppet::Error, "manifest of environment '#{@environment.name}' appoints '#{file}'. It does not exist"
|
279
|
+
end
|
280
|
+
end
|
281
|
+
instantiate_definitions(program, public_environment_loader) unless program.nil?
|
282
|
+
program
|
283
|
+
rescue Puppet::ParseErrorWithIssue => detail
|
284
|
+
detail.environment = @environment.name
|
285
|
+
raise
|
286
|
+
rescue => detail
|
287
|
+
msg = _('Could not parse for environment %{env}: %{detail}') % { env: @environment, detail: detail }
|
288
|
+
error = Puppet::Error.new(msg)
|
289
|
+
error.set_backtrace(detail.backtrace)
|
290
|
+
raise error
|
291
|
+
end
|
292
|
+
|
293
|
+
# Add 4.x definitions found in the given program to the given loader.
|
294
|
+
def instantiate_definitions(program, loader)
|
295
|
+
program.definitions.each { |d| instantiate_definition(d, loader) }
|
296
|
+
nil
|
297
|
+
end
|
298
|
+
|
299
|
+
# Add given 4.x definition to the given loader.
|
300
|
+
def instantiate_definition(definition, loader)
|
301
|
+
case definition
|
302
|
+
when Model::PlanDefinition
|
303
|
+
instantiate_PlanDefinition(definition, loader)
|
304
|
+
when Model::FunctionDefinition
|
305
|
+
instantiate_FunctionDefinition(definition, loader)
|
306
|
+
when Model::TypeAlias
|
307
|
+
instantiate_TypeAlias(definition, loader)
|
308
|
+
when Model::TypeMapping
|
309
|
+
instantiate_TypeMapping(definition, loader)
|
310
|
+
else
|
311
|
+
raise Puppet::ParseError, "Internal Error: Unknown type of definition - got '#{definition.class}'"
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
236
315
|
private
|
237
316
|
|
317
|
+
def instantiate_PlanDefinition(plan_definition, loader)
|
318
|
+
typed_name, f = Loader::PuppetPlanInstantiator.create_from_model(plan_definition, loader)
|
319
|
+
loader.set_entry(typed_name, f, plan_definition.locator.to_uri(plan_definition))
|
320
|
+
nil
|
321
|
+
end
|
322
|
+
|
323
|
+
def instantiate_FunctionDefinition(function_definition, loader)
|
324
|
+
# Instantiate Function, and store it in the loader
|
325
|
+
typed_name, f = Loader::PuppetFunctionInstantiator.create_from_model(function_definition, loader)
|
326
|
+
loader.set_entry(typed_name, f, function_definition.locator.to_uri(function_definition))
|
327
|
+
nil
|
328
|
+
end
|
329
|
+
|
330
|
+
def instantiate_TypeAlias(type_alias, loader)
|
331
|
+
# Bind the type alias to the loader using the alias
|
332
|
+
Puppet::Pops::Loader::TypeDefinitionInstantiator.create_from_model(type_alias, loader)
|
333
|
+
nil
|
334
|
+
end
|
335
|
+
|
336
|
+
def instantiate_TypeMapping(type_mapping, loader)
|
337
|
+
tf = Types::TypeParser.singleton
|
338
|
+
lhs = tf.interpret(type_mapping.type_expr, loader)
|
339
|
+
rhs = tf.interpret_any(type_mapping.mapping_expr, loader)
|
340
|
+
implementation_registry.register_type_mapping(lhs, rhs, loader)
|
341
|
+
nil
|
342
|
+
end
|
343
|
+
|
238
344
|
def create_puppet_system_loader()
|
239
345
|
Loader::ModuleLoaders.system_loader_from(static_loader, self)
|
240
346
|
end
|
@@ -259,15 +365,20 @@ class Loaders
|
|
259
365
|
env_conf = Puppet.lookup(:environments).get_conf(environment.name)
|
260
366
|
env_path = env_conf.nil? || !env_conf.is_a?(Puppet::Settings::EnvironmentConf) ? nil : env_conf.path_to_env
|
261
367
|
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
if env_path.nil?
|
266
|
-
# Not a real directory environment, cannot work as a module TODO: Drop when legacy env are dropped?
|
267
|
-
loader = add_loader_by_name(Loader::SimpleEnvironmentLoader.new(@runtime3_type_loader, Loader::ENVIRONMENT))
|
368
|
+
if Puppet[:tasks]
|
369
|
+
loader = Loader::ModuleLoaders.environment_loader_from(puppet_system_loader, self, env_path)
|
268
370
|
else
|
269
|
-
#
|
270
|
-
|
371
|
+
# Create the 3.x resource type loader
|
372
|
+
static_loader.runtime_3_init
|
373
|
+
@runtime3_type_loader = add_loader_by_name(Loader::Runtime3TypeLoader.new(puppet_system_loader, self, environment, env_conf.nil? ? nil : env_path))
|
374
|
+
|
375
|
+
if env_path.nil?
|
376
|
+
# Not a real directory environment, cannot work as a module TODO: Drop when legacy env are dropped?
|
377
|
+
loader = add_loader_by_name(Loader::SimpleEnvironmentLoader.new(@runtime3_type_loader, Loader::ENVIRONMENT))
|
378
|
+
else
|
379
|
+
# View the environment as a module to allow loading from it - this module is always called 'environment'
|
380
|
+
loader = Loader::ModuleLoaders.environment_loader_from(@runtime3_type_loader, self, env_path)
|
381
|
+
end
|
271
382
|
end
|
272
383
|
|
273
384
|
# An environment has a module path even if it has a null loader
|
@@ -383,7 +494,7 @@ class Loaders
|
|
383
494
|
nil
|
384
495
|
else
|
385
496
|
module_data.private_loader =
|
386
|
-
if module_data.restrict_to_dependencies?
|
497
|
+
if module_data.restrict_to_dependencies? && !Puppet[:tasks]
|
387
498
|
create_loader_with_only_dependencies_visible(module_data)
|
388
499
|
else
|
389
500
|
create_loader_with_all_modules_visible(module_data)
|
@@ -71,7 +71,7 @@ class V3BackendFunctionProvider < DataDigFunctionProvider
|
|
71
71
|
# A merge_behavior retrieved from hiera.yaml must not be converted here. Instead, passing the symbol :hash
|
72
72
|
# tells the V3 backend to pick it up from the config.
|
73
73
|
resolution_type = lookup_invocation.hiera_v3_merge_behavior? ? :hash : convert_merge(merge)
|
74
|
-
@backend.lookup(key.to_s, lookup_invocation.scope, lookup_invocation.hiera_v3_location_overrides, resolution_type,
|
74
|
+
@backend.lookup(key.to_s, lookup_invocation.scope, lookup_invocation.hiera_v3_location_overrides, resolution_type, {:recurse_guard => nil})
|
75
75
|
end
|
76
76
|
|
77
77
|
def full_name
|
@@ -125,7 +125,7 @@ module Interpolation
|
|
125
125
|
interpolate_method
|
126
126
|
end
|
127
127
|
|
128
|
-
# Because the
|
128
|
+
# Because the semantics of Puppet::Parser::Scope#include? differs from Hash#include?
|
129
129
|
def nil_in_scope?(scope, key)
|
130
130
|
if scope.is_a?(Hash)
|
131
131
|
scope.include?(key)
|
@@ -48,7 +48,6 @@ class LookupAdapter < DataAdapter
|
|
48
48
|
|
49
49
|
key = LookupKey.new(key)
|
50
50
|
lookup_invocation.lookup(key, key.module_name) do
|
51
|
-
merge_explained = false
|
52
51
|
if lookup_invocation.only_explain_options?
|
53
52
|
catch(:no_such_key) { do_lookup(LookupKey::LOOKUP_OPTIONS, lookup_invocation, HASH) }
|
54
53
|
nil
|