puppet 5.4.0-universal-darwin → 5.5.0-universal-darwin
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.
- data/Gemfile +3 -3
- data/MAINTAINERS +0 -19
- data/README.md +5 -5
- data/Rakefile +26 -0
- data/conf/auth.conf +5 -0
- data/ext/project_data.yaml +1 -0
- data/ext/regexp_nodes/regexp_nodes.rb +3 -4
- data/lib/puppet/application/apply.rb +1 -1
- data/lib/puppet/application/cert.rb +3 -1
- data/lib/puppet/application/device.rb +100 -13
- data/lib/puppet/application/facts.rb +5 -0
- data/lib/puppet/application/lookup.rb +12 -2
- data/lib/puppet/configurer.rb +37 -17
- data/lib/puppet/confine.rb +4 -1
- data/lib/puppet/datatypes.rb +1 -1
- data/lib/puppet/environments.rb +1 -1
- data/lib/puppet/error.rb +6 -3
- data/lib/puppet/external/dot.rb +0 -7
- data/lib/puppet/external/nagios/parser.rb +1 -1
- data/lib/puppet/face/config.rb +92 -10
- data/lib/puppet/face/epp.rb +31 -6
- data/lib/puppet/face/facts.rb +49 -0
- data/lib/puppet/face/help.rb +33 -35
- data/lib/puppet/face/help/action.erb +1 -1
- data/lib/puppet/face/help/face.erb +1 -1
- data/lib/puppet/face/man.rb +55 -12
- data/lib/puppet/face/parser.rb +30 -3
- data/lib/puppet/file_bucket/file.rb +0 -2
- data/lib/puppet/file_serving/base.rb +10 -10
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/forge/errors.rb +3 -3
- data/lib/puppet/functions.rb +1 -3
- data/lib/puppet/functions/alert.rb +1 -1
- data/lib/puppet/functions/all.rb +6 -6
- data/lib/puppet/functions/annotate.rb +10 -10
- data/lib/puppet/functions/any.rb +6 -6
- data/lib/puppet/functions/assert_type.rb +4 -4
- data/lib/puppet/functions/binary_file.rb +14 -2
- data/lib/puppet/functions/break.rb +31 -2
- data/lib/puppet/functions/call.rb +4 -4
- data/lib/puppet/functions/contain.rb +19 -3
- data/lib/puppet/functions/convert_to.rb +6 -5
- data/lib/puppet/functions/crit.rb +1 -1
- data/lib/puppet/functions/debug.rb +1 -1
- data/lib/puppet/functions/defined.rb +11 -9
- data/lib/puppet/functions/dig.rb +26 -2
- data/lib/puppet/functions/each.rb +8 -8
- data/lib/puppet/functions/emerg.rb +1 -1
- data/lib/puppet/functions/empty.rb +79 -0
- data/lib/puppet/functions/err.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +3 -1
- data/lib/puppet/functions/filter.rb +7 -7
- data/lib/puppet/functions/find_file.rb +15 -1
- data/lib/puppet/functions/flatten.rb +64 -0
- data/lib/puppet/functions/hiera.rb +6 -6
- data/lib/puppet/functions/hiera_array.rb +6 -6
- data/lib/puppet/functions/hiera_hash.rb +6 -6
- data/lib/puppet/functions/hiera_include.rb +8 -8
- data/lib/puppet/functions/include.rb +28 -2
- data/lib/puppet/functions/info.rb +1 -1
- data/lib/puppet/functions/inline_epp.rb +2 -2
- data/lib/puppet/functions/join.rb +56 -0
- data/lib/puppet/functions/json_data.rb +2 -2
- data/lib/puppet/functions/keys.rb +25 -0
- data/lib/puppet/functions/length.rb +44 -0
- data/lib/puppet/functions/lest.rb +39 -1
- data/lib/puppet/functions/lookup.rb +2 -1
- data/lib/puppet/functions/map.rb +10 -9
- data/lib/puppet/functions/match.rb +6 -6
- data/lib/puppet/functions/new.rb +995 -2
- data/lib/puppet/functions/next.rb +1 -1
- data/lib/puppet/functions/notice.rb +1 -1
- data/lib/puppet/functions/reduce.rb +6 -6
- data/lib/puppet/functions/regsubst.rb +9 -3
- data/lib/puppet/functions/require.rb +36 -2
- data/lib/puppet/functions/return.rb +1 -1
- data/lib/puppet/functions/reverse_each.rb +71 -2
- data/lib/puppet/functions/slice.rb +23 -9
- data/lib/puppet/functions/split.rb +12 -10
- data/lib/puppet/functions/step.rb +73 -1
- data/lib/puppet/functions/strftime.rb +176 -2
- data/lib/puppet/functions/then.rb +65 -2
- data/lib/puppet/functions/tree_each.rb +19 -19
- data/lib/puppet/functions/type.rb +42 -1
- data/lib/puppet/functions/unique.rb +13 -13
- data/lib/puppet/functions/unwrap.rb +8 -4
- data/lib/puppet/functions/values.rb +25 -0
- data/lib/puppet/functions/versioncmp.rb +1 -1
- data/lib/puppet/functions/warning.rb +1 -1
- data/lib/puppet/functions/with.rb +6 -4
- data/lib/puppet/functions/yaml_data.rb +3 -1
- data/lib/puppet/indirector/certificate_status/file.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +1 -3
- data/lib/puppet/indirector/facts/rest.rb +21 -0
- data/lib/puppet/indirector/facts/yaml.rb +0 -4
- data/lib/puppet/indirector/rest.rb +2 -2
- data/lib/puppet/module.rb +3 -3
- data/lib/puppet/module/task.rb +2 -3
- data/lib/puppet/module_tool/applications/application.rb +4 -4
- data/lib/puppet/module_tool/applications/builder.rb +2 -2
- data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
- data/lib/puppet/module_tool/applications/unpacker.rb +2 -2
- data/lib/puppet/module_tool/metadata.rb +3 -3
- data/lib/puppet/network/authconfig.rb +1 -1
- data/lib/puppet/network/format_support.rb +1 -1
- data/lib/puppet/network/formats.rb +5 -7
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -0
- data/lib/puppet/network/http/api/master/v3/environment.rb +2 -2
- data/lib/puppet/network/http/api/master/v3/environments.rb +2 -2
- data/lib/puppet/network/http/error.rb +3 -3
- data/lib/puppet/network/resolver.rb +1 -2
- data/lib/puppet/parser/compiler.rb +12 -5
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +1 -1
- data/lib/puppet/parser/functions/fqdn_rand.rb +15 -4
- data/lib/puppet/parser/functions/new.rb +31 -46
- data/lib/puppet/parser/parser_factory.rb +1 -1
- data/lib/puppet/parser/resource.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +11 -11
- data/lib/puppet/pops/evaluator/closure.rb +1 -1
- data/lib/puppet/pops/evaluator/collector_transformer.rb +1 -1
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_support.rb +5 -2
- data/lib/puppet/pops/functions/dispatch.rb +1 -1
- data/lib/puppet/pops/issue_reporter.rb +18 -1
- data/lib/puppet/pops/issues.rb +6 -3
- data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +1 -2
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -2
- data/lib/puppet/pops/loader/task_instantiator.rb +5 -5
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +4 -1
- data/lib/puppet/pops/loaders.rb +18 -7
- data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +55 -6
- data/lib/puppet/pops/model/factory.rb +6 -3
- data/lib/puppet/pops/model/model_tree_dumper.rb +4 -0
- data/lib/puppet/pops/model/pn_transformer.rb +400 -0
- data/lib/puppet/pops/parser/egrammar.ra +1 -1
- data/lib/puppet/pops/parser/eparser.rb +1 -1
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/lexer_support.rb +3 -2
- data/lib/puppet/pops/parser/locator.rb +0 -2
- data/lib/puppet/pops/parser/pn_parser.rb +316 -0
- data/lib/puppet/pops/pcore.rb +17 -17
- data/lib/puppet/pops/pn.rb +236 -0
- data/lib/puppet/pops/serialization/json.rb +7 -7
- data/lib/puppet/pops/types/class_loader.rb +6 -3
- data/lib/puppet/pops/types/implementation_registry.rb +28 -35
- data/lib/puppet/pops/types/p_object_type.rb +3 -3
- data/lib/puppet/pops/types/p_timespan_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +24 -1
- data/lib/puppet/pops/types/ruby_generator.rb +3 -4
- data/lib/puppet/pops/types/type_calculator.rb +1 -1
- data/lib/puppet/pops/types/type_factory.rb +0 -4
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
- data/lib/puppet/pops/types/type_parser.rb +14 -7
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/pops/utils.rb +2 -2
- data/lib/puppet/pops/validation/checker4_0.rb +6 -2
- data/lib/puppet/provider/group/groupadd.rb +3 -1
- data/lib/puppet/provider/group/windows_adsi.rb +4 -7
- data/lib/puppet/provider/nameservice.rb +3 -3
- data/lib/puppet/provider/package/pacman.rb +4 -4
- data/lib/puppet/provider/package/pip.rb +3 -3
- data/lib/puppet/provider/package/pkgdmg.rb +3 -3
- data/lib/puppet/provider/package/pkgutil.rb +2 -2
- data/lib/puppet/provider/package/portage.rb +9 -9
- data/lib/puppet/provider/package/zypper.rb +2 -2
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +3 -2
- data/lib/puppet/provider/service/systemd.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +6 -2
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/provider/yumrepo/inifile.rb +20 -9
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/reference/configuration.rb +2 -0
- data/lib/puppet/reference/type.rb +11 -11
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/capability_finder.rb +5 -5
- data/lib/puppet/resource/catalog.rb +6 -3
- data/lib/puppet/resource/status.rb +9 -2
- data/lib/puppet/resource/type.rb +1 -1
- data/lib/puppet/settings.rb +31 -19
- data/lib/puppet/settings/base_setting.rb +5 -0
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/ttl_setting.rb +5 -0
- data/lib/puppet/ssl/certificate_factory.rb +2 -2
- data/lib/puppet/ssl/certificate_request.rb +0 -2
- data/lib/puppet/syntax_checkers/json.rb +1 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +2 -2
- data/lib/puppet/transaction/event.rb +1 -1
- data/lib/puppet/transaction/report.rb +18 -12
- data/lib/puppet/type.rb +9 -13
- data/lib/puppet/type/augeas.rb +2 -2
- data/lib/puppet/type/cron.rb +11 -6
- data/lib/puppet/type/exec.rb +1 -1
- data/lib/puppet/type/file.rb +4 -5
- data/lib/puppet/type/host.rb +1 -1
- data/lib/puppet/type/k5login.rb +30 -54
- data/lib/puppet/type/package.rb +3 -3
- data/lib/puppet/type/schedule.rb +12 -12
- data/lib/puppet/type/scheduled_task.rb +2 -2
- data/lib/puppet/type/ssh_authorized_key.rb +5 -5
- data/lib/puppet/type/sshkey.rb +2 -2
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +1 -1
- data/lib/puppet/type/yumrepo.rb +26 -5
- data/lib/puppet/util.rb +0 -4
- data/lib/puppet/util/backups.rb +1 -1
- data/lib/puppet/util/inifile.rb +3 -4
- data/lib/puppet/util/json.rb +68 -0
- data/lib/puppet/util/json_lockfile.rb +3 -3
- data/lib/puppet/util/log.rb +2 -5
- data/lib/puppet/util/log/destinations.rb +2 -2
- data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
- data/lib/puppet/util/plist.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -8
- data/lib/puppet/util/tagging.rb +1 -1
- data/lib/puppet/util/warnings.rb +0 -2
- data/lib/puppet/util/windows/adsi.rb +15 -18
- data/lib/puppet/util/windows/com.rb +2 -1
- data/lib/puppet/util/windows/file.rb +2 -2
- data/lib/puppet/util/windows/principal.rb +7 -6
- data/lib/puppet/util/windows/sid.rb +60 -7
- data/lib/puppet/util/windows/taskscheduler.rb +0 -9
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +53 -48
- data/locales/ja/puppet.po +1357 -912
- data/locales/puppet.pot +549 -466
- data/man/man5/puppet.conf.5 +103 -20
- data/man/man8/puppet-agent.8 +6 -2
- 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 +35 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +33 -11
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +34 -12
- data/man/man8/puppet-facts.8 +50 -1
- data/man/man8/puppet-filebucket.8 +38 -11
- 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 +10 -4
- data/man/man8/puppet-master.8 +1 -1
- data/man/man8/puppet-module.8 +15 -6
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +31 -8
- 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 +67 -0
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +3 -3
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +1 -1
- data/spec/integration/application/apply_spec.rb +15 -15
- data/spec/integration/application/lookup_spec.rb +21 -0
- data/spec/integration/faces/config_spec.rb +16 -4
- data/spec/integration/network/http/api/indirected_routes_spec.rb +5 -5
- data/spec/integration/parser/catalog_spec.rb +1 -1
- data/spec/integration/parser/collection_spec.rb +2 -2
- data/spec/integration/parser/compiler_spec.rb +17 -18
- data/spec/integration/parser/pcore_resource_spec.rb +2 -2
- data/spec/integration/parser/scope_spec.rb +2 -2
- data/spec/integration/ssl/certificate_authority_spec.rb +7 -7
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
- data/spec/integration/ssl/key_spec.rb +1 -1
- data/spec/integration/transaction/report_spec.rb +3 -3
- data/spec/integration/transaction_spec.rb +0 -1
- data/spec/integration/type/file_spec.rb +10 -11
- data/spec/integration/type_spec.rb +1 -2
- data/spec/integration/util/windows/adsi_spec.rb +86 -1
- data/spec/integration/util/windows/principal_spec.rb +11 -2
- data/spec/integration/util/windows/security_spec.rb +2 -2
- data/spec/lib/matchers/json.rb +4 -4
- data/spec/lib/puppet_spec/language.rb +34 -35
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
- data/spec/shared_behaviours/file_server_terminus.rb +0 -2
- data/spec/shared_behaviours/things_that_declare_options.rb +2 -2
- data/spec/spec_helper.rb +1 -1
- data/spec/unit/application/cert_spec.rb +21 -9
- data/spec/unit/application/device_spec.rb +96 -2
- data/spec/unit/application/face_base_spec.rb +2 -2
- data/spec/unit/application/lookup_spec.rb +0 -1
- data/spec/unit/configurer_spec.rb +14 -0
- data/spec/unit/confine_spec.rb +16 -0
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +4 -4
- data/spec/unit/datatypes_spec.rb +49 -0
- data/spec/unit/environments_spec.rb +7 -0
- data/spec/unit/face/config_spec.rb +116 -12
- data/spec/unit/face/epp_face_spec.rb +53 -2
- data/spec/unit/face/facts_spec.rb +53 -0
- data/spec/unit/face/help_spec.rb +62 -69
- data/spec/unit/face/man_spec.rb +26 -0
- data/spec/unit/face/module/list_spec.rb +0 -1
- data/spec/unit/face/parser_spec.rb +78 -0
- data/spec/unit/file_bucket/dipper_spec.rb +0 -4
- data/spec/unit/file_serving/content_spec.rb +0 -1
- data/spec/unit/file_serving/fileset_spec.rb +0 -1
- data/spec/unit/file_serving/metadata_spec.rb +0 -1
- data/spec/unit/file_serving/terminus_selector_spec.rb +0 -2
- data/spec/unit/forge_spec.rb +1 -2
- data/spec/unit/functions/assert_type_spec.rb +1 -1
- data/spec/unit/functions/empty_spec.rb +77 -0
- data/spec/unit/functions/epp_spec.rb +1 -1
- data/spec/unit/functions/flatten_spec.rb +31 -0
- data/spec/unit/functions/include_spec.rb +2 -2
- data/spec/unit/functions/inline_epp_spec.rb +1 -1
- data/spec/unit/functions/join_spec.rb +33 -0
- data/spec/unit/functions/keys_spec.rb +31 -0
- data/spec/unit/functions/length_spec.rb +50 -0
- data/spec/unit/functions/lookup_fixture_spec.rb +1 -1
- data/spec/unit/functions/lookup_spec.rb +52 -0
- data/spec/unit/functions/shared.rb +1 -1
- data/spec/unit/functions/values_spec.rb +30 -0
- data/spec/unit/functions/versioncmp_spec.rb +1 -1
- data/spec/unit/functions4_spec.rb +30 -32
- data/spec/unit/graph/title_hash_prioritizer_spec.rb +2 -1
- data/spec/unit/indirector/catalog/compiler_spec.rb +0 -15
- data/spec/unit/indirector/facts/rest_spec.rb +45 -0
- data/spec/unit/indirector/facts/yaml_spec.rb +6 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +2 -2
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/indirector/node/ldap_spec.rb +2 -2
- data/spec/unit/indirector/request_spec.rb +0 -2
- data/spec/unit/indirector/rest_spec.rb +2 -2
- data/spec/unit/indirector_spec.rb +0 -1
- data/spec/unit/info_service_spec.rb +1 -1
- data/spec/unit/interface/action_manager_spec.rb +1 -1
- data/spec/unit/interface/action_spec.rb +1 -1
- data/spec/unit/module_spec.rb +0 -5
- data/spec/unit/module_tool/applications/builder_spec.rb +1 -1
- data/spec/unit/module_tool/applications/unpacker_spec.rb +4 -4
- data/spec/unit/network/formats_spec.rb +5 -13
- data/spec/unit/network/http/api/indirected_routes_spec.rb +6 -2
- data/spec/unit/network/http/connection_spec.rb +1 -1
- data/spec/unit/network/http/handler_spec.rb +3 -2
- data/spec/unit/node/environment_spec.rb +1 -1
- data/spec/unit/node_spec.rb +3 -3
- data/spec/unit/parser/compiler_spec.rb +9 -2
- data/spec/unit/parser/environment_compiler_spec.rb +8 -8
- data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
- data/spec/unit/parser/functions/fail_spec.rb +1 -1
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +24 -0
- data/spec/unit/parser/functions/realize_spec.rb +1 -1
- data/spec/unit/parser/resource_spec.rb +0 -1
- data/spec/unit/parser/scope_spec.rb +3 -3
- data/spec/unit/parser/type_loader_spec.rb +1 -1
- data/spec/unit/pops/adaptable_spec.rb +0 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -3
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -4
- data/spec/unit/pops/factory_rspec_helper.rb +1 -1
- data/spec/unit/pops/factory_spec.rb +5 -5
- data/spec/unit/pops/issues_spec.rb +23 -8
- data/spec/unit/pops/loaders/loaders_spec.rb +24 -2
- data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
- data/spec/unit/pops/lookup/interpolation_spec.rb +5 -0
- data/spec/unit/pops/lookup/lookup_spec.rb +56 -0
- data/spec/unit/pops/model/pn_transformer_spec.rb +53 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +14 -5
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +9 -9
- data/spec/unit/pops/parser/parse_calls_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_functions_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +3 -3
- data/spec/unit/pops/parser/parse_lambda_spec.rb +1 -1
- data/spec/unit/pops/parser/parse_resource_spec.rb +35 -35
- data/spec/unit/pops/parser/pn_parser_spec.rb +101 -0
- data/spec/unit/pops/pn_spec.rb +148 -0
- data/spec/unit/pops/types/iterable_spec.rb +1 -1
- data/spec/unit/pops/types/p_object_type_spec.rb +5 -5
- data/spec/unit/pops/types/p_timespan_type_spec.rb +11 -4
- data/spec/unit/pops/types/p_timestamp_type_spec.rb +9 -2
- data/spec/unit/pops/types/p_type_set_type_spec.rb +106 -2
- data/spec/unit/pops/types/ruby_generator_spec.rb +3 -8
- data/spec/unit/pops/types/string_converter_spec.rb +3 -3
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +3 -1
- data/spec/unit/property_spec.rb +2 -2
- data/spec/unit/provider/aixobject_spec.rb +1 -1
- data/spec/unit/provider/cron/crontab_spec.rb +3 -3
- data/spec/unit/provider/exec/posix_spec.rb +6 -6
- data/spec/unit/provider/group/groupadd_spec.rb +4 -4
- data/spec/unit/provider/group/windows_adsi_spec.rb +79 -22
- data/spec/unit/provider/ldap_spec.rb +0 -1
- data/spec/unit/provider/nameservice_spec.rb +5 -5
- data/spec/unit/provider/package/rpm_spec.rb +3 -4
- data/spec/unit/provider/package/yum_spec.rb +6 -2
- data/spec/unit/provider/parsedfile_spec.rb +1 -1
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/init_spec.rb +2 -2
- data/spec/unit/provider/service/openrc_spec.rb +2 -2
- data/spec/unit/provider/service/redhat_spec.rb +2 -2
- data/spec/unit/provider/service/smf_spec.rb +2 -0
- data/spec/unit/provider/service/systemd_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_spec.rb +7 -7
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -4
- data/spec/unit/provider/sshkey/parsed_spec.rb +0 -2
- data/spec/unit/provider/user/useradd_spec.rb +15 -9
- data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
- data/spec/unit/provider/yumrepo/inifile_spec.rb +76 -0
- data/spec/unit/puppet_pal_2pec.rb +4 -5
- data/spec/unit/resource/catalog_spec.rb +8 -3
- data/spec/unit/resource/status_spec.rb +15 -4
- data/spec/unit/resource/type_spec.rb +2 -3
- data/spec/unit/settings_spec.rb +9 -4
- data/spec/unit/ssl/certificate_authority_spec.rb +1 -9
- data/spec/unit/ssl/certificate_request_spec.rb +1 -2
- data/spec/unit/transaction/report_spec.rb +41 -0
- data/spec/unit/transaction_spec.rb +1 -1
- data/spec/unit/type/exec_spec.rb +7 -9
- data/spec/unit/type/file/selinux_spec.rb +0 -1
- data/spec/unit/type/file_spec.rb +4 -3
- data/spec/unit/type/k5login_spec.rb +79 -10
- data/spec/unit/type/mount_spec.rb +1 -1
- data/spec/unit/type/nagios_spec.rb +6 -6
- data/spec/unit/type/user_spec.rb +1 -1
- data/spec/unit/type/yumrepo_spec.rb +18 -0
- data/spec/unit/type/zfs_spec.rb +1 -1
- data/spec/unit/type_spec.rb +14 -15
- data/spec/unit/util/docs_spec.rb +1 -1
- data/spec/unit/util/execution_spec.rb +0 -1
- data/spec/unit/util/inifile_spec.rb +35 -4
- data/spec/unit/util/log/destinations_spec.rb +2 -2
- data/spec/unit/util/log_spec.rb +6 -5
- data/spec/unit/util/network_device/cisco/device_spec.rb +2 -2
- data/spec/unit/util/plist_spec.rb +3 -3
- data/spec/unit/util/selinux_spec.rb +2 -2
- data/spec/unit/util/tagging_spec.rb +1 -7
- data/spec/unit/util/windows/adsi_spec.rb +31 -27
- data/spec/unit/util/windows/sid_spec.rb +86 -15
- data/spec/unit/util_spec.rb +2 -2
- data/spec/watchr.rb +0 -1
- data/tasks/benchmark.rake +37 -0
- data/tasks/manpages.rake +1 -1
- metadata +73 -11
- checksums.yaml +0 -7
@@ -16,7 +16,7 @@ module Puppet::Parser
|
|
16
16
|
# EvaluatingParser to the 3x way of parsing.
|
17
17
|
#
|
18
18
|
def self.evaluating_parser
|
19
|
-
unless defined?(Puppet::
|
19
|
+
unless defined?(Puppet::Parser::E4ParserAdapter)
|
20
20
|
require 'puppet/parser/e4_parser_adapter'
|
21
21
|
require 'puppet/pops/parser/code_merger'
|
22
22
|
end
|
@@ -332,7 +332,7 @@ class Puppet::Parser::Resource < Puppet::Resource
|
|
332
332
|
def add_scope_tags
|
333
333
|
scope_resource = scope.resource
|
334
334
|
unless scope_resource.nil? || scope_resource.equal?(self)
|
335
|
-
|
335
|
+
merge_tags_from(scope_resource)
|
336
336
|
end
|
337
337
|
end
|
338
338
|
|
@@ -110,20 +110,20 @@ class Puppet::Parser::TypeLoader
|
|
110
110
|
# There is currently one user in indirector/resourcetype/parser
|
111
111
|
#
|
112
112
|
if Puppet.lookup(:squelch_parse_errors) {|| false }
|
113
|
-
|
114
|
-
loaded_asts << parse_file(file)
|
115
|
-
rescue => e
|
116
|
-
# Resume from errors so that all parseable files may
|
117
|
-
# still be parsed. Mark this file as loaded so that
|
118
|
-
# it would not be parsed next time (handle it as if
|
119
|
-
# it was successfully parsed).
|
120
|
-
Puppet.debug("Unable to parse '#{file}': #{e.message}")
|
121
|
-
end
|
122
|
-
else
|
113
|
+
begin
|
123
114
|
loaded_asts << parse_file(file)
|
115
|
+
rescue => e
|
116
|
+
# Resume from errors so that all parseable files may
|
117
|
+
# still be parsed. Mark this file as loaded so that
|
118
|
+
# it would not be parsed next time (handle it as if
|
119
|
+
# it was successfully parsed).
|
120
|
+
Puppet.debug("Unable to parse '#{file}': #{e.message}")
|
124
121
|
end
|
122
|
+
else
|
123
|
+
loaded_asts << parse_file(file)
|
124
|
+
end
|
125
125
|
|
126
|
-
|
126
|
+
@loaded[file] = true
|
127
127
|
end
|
128
128
|
|
129
129
|
loaded_asts.collect do |ast|
|
@@ -80,7 +80,7 @@ class Closure < CallableSignature
|
|
80
80
|
|
81
81
|
def call_by_name_with_scope(scope, args_hash, enforce_parameters)
|
82
82
|
call_by_name_internal(scope, args_hash, enforce_parameters)
|
83
|
-
|
83
|
+
end
|
84
84
|
|
85
85
|
def call_by_name(args_hash, enforce_parameters)
|
86
86
|
call_by_name_internal(enclosing_scope, args_hash, enforce_parameters)
|
@@ -53,8 +53,6 @@ class Puppet::Pops::Evaluator::EppEvaluator
|
|
53
53
|
evaluate(parser, 'epp', scope, true, result, template_args)
|
54
54
|
end
|
55
55
|
|
56
|
-
private
|
57
|
-
|
58
56
|
def self.evaluate(parser, func_name, scope, use_global_scope_only, parse_result, template_args)
|
59
57
|
template_args, template_args_set = handle_template_args(func_name, template_args)
|
60
58
|
|
@@ -104,6 +102,7 @@ class Puppet::Pops::Evaluator::EppEvaluator
|
|
104
102
|
parser.closure(body, scope).call_by_name(template_args, enforce_parameters)
|
105
103
|
end
|
106
104
|
end
|
105
|
+
private_class_method :evaluate
|
107
106
|
|
108
107
|
def self.handle_template_args(func_name, template_args)
|
109
108
|
if template_args.nil?
|
@@ -117,4 +116,5 @@ class Puppet::Pops::Evaluator::EppEvaluator
|
|
117
116
|
[template_args, true]
|
118
117
|
end
|
119
118
|
end
|
119
|
+
private_class_method :handle_template_args
|
120
120
|
end
|
@@ -89,8 +89,6 @@ module Runtime3ResourceSupport
|
|
89
89
|
scope.environment.known_resource_types.find_hostclass(class_name)
|
90
90
|
end
|
91
91
|
|
92
|
-
private
|
93
|
-
|
94
92
|
def self.find_builtin_resource_type(scope, type_name)
|
95
93
|
if type_name.include?(':')
|
96
94
|
# Skip the search for built in types as they are always in global namespace
|
@@ -106,11 +104,13 @@ module Runtime3ResourceSupport
|
|
106
104
|
# horrible - should be loaded by a "last loader" in 4.x loaders instead.
|
107
105
|
Puppet::Type.type(type_name)
|
108
106
|
end
|
107
|
+
private_class_method :find_builtin_resource_type
|
109
108
|
|
110
109
|
def self.find_defined_resource_type(scope, type_name)
|
111
110
|
krt = scope.environment.known_resource_types
|
112
111
|
krt.find_definition(type_name) || krt.application(type_name)
|
113
112
|
end
|
113
|
+
private_class_method :find_defined_resource_type
|
114
114
|
|
115
115
|
end
|
116
116
|
end
|
@@ -301,10 +301,13 @@ module Runtime3Support
|
|
301
301
|
def call_function(name, args, o, scope, &block)
|
302
302
|
file, line = extract_file_line(o)
|
303
303
|
loader = Adapters::LoaderAdapter.loader_for_model_object(o, file)
|
304
|
-
|
304
|
+
# 'ruby -wc' thinks that _func is unused, because the only reference to it
|
305
|
+
# is inside of the Kernel.eval string below. By prefixing it with the
|
306
|
+
# underscore, we let Ruby know to not worry about whether it's unused or not.
|
307
|
+
if loader && _func = loader.load(:function, name)
|
305
308
|
Puppet::Util::Profiler.profile(name, [:functions, name]) do
|
306
309
|
# Add stack frame when calling. See Puppet::Pops::PuppetStack
|
307
|
-
return Kernel.eval('
|
310
|
+
return Kernel.eval('_func.call(scope, *args, &block)'.freeze, Kernel.binding, file || '', line)
|
308
311
|
end
|
309
312
|
end
|
310
313
|
# Call via 3x API if function exists there
|
@@ -86,6 +86,22 @@ class IssueReporter
|
|
86
86
|
[prefix, message].join(' ')
|
87
87
|
end
|
88
88
|
|
89
|
+
def self.warning(semantic, issue, args)
|
90
|
+
Puppet::Util::Log.create({
|
91
|
+
:level => :warning,
|
92
|
+
:message => issue.format(args),
|
93
|
+
:arguments => args,
|
94
|
+
:issue_code => issue.issue_code,
|
95
|
+
:file => semantic.file,
|
96
|
+
:line => semantic.line,
|
97
|
+
:pos => semantic.pos,
|
98
|
+
})
|
99
|
+
end
|
100
|
+
|
101
|
+
def self.error(exception_class, semantic, issue, args)
|
102
|
+
raise exception_class.new(issue.format(args), semantic.file, semantic.line, semantic.pos, nil, issue.issue_code, args)
|
103
|
+
end
|
104
|
+
|
89
105
|
def self.create_exception(exception_class, emit_message, formatter, diagnostic)
|
90
106
|
file = diagnostic.file
|
91
107
|
file = (file.is_a?(String) && file.empty?) ? nil : file
|
@@ -94,7 +110,7 @@ class IssueReporter
|
|
94
110
|
line = diagnostic.source_pos.line
|
95
111
|
pos = diagnostic.source_pos.pos
|
96
112
|
end
|
97
|
-
exception_class.new(format_with_prefix(emit_message, formatter.format_message(diagnostic)), file, line, pos, nil, diagnostic.issue.issue_code)
|
113
|
+
exception_class.new(format_with_prefix(emit_message, formatter.format_message(diagnostic)), file, line, pos, nil, diagnostic.issue.issue_code, diagnostic.arguments)
|
98
114
|
end
|
99
115
|
private_class_method :create_exception
|
100
116
|
|
@@ -109,6 +125,7 @@ class IssueReporter
|
|
109
125
|
Puppet::Util::Log.create({
|
110
126
|
:level => severity,
|
111
127
|
:message => formatter.format_message(diagnostic),
|
128
|
+
:arguments => diagnostic.arguments,
|
112
129
|
:issue_code => diagnostic.issue.issue_code,
|
113
130
|
:file => file,
|
114
131
|
:line => line,
|
data/lib/puppet/pops/issues.rb
CHANGED
@@ -49,7 +49,6 @@ module Issues
|
|
49
49
|
# Evaluate the message block in the msg data's binding
|
50
50
|
msgdata.format(hash, &message_block)
|
51
51
|
rescue StandardError => e
|
52
|
-
MessageData
|
53
52
|
raise RuntimeError, _("Error while reporting issue: %{code}. %{message}") % { code: issue_code, message: e.message }, caller
|
54
53
|
end
|
55
54
|
end
|
@@ -71,7 +70,7 @@ module Issues
|
|
71
70
|
|
72
71
|
def format(hash, &block)
|
73
72
|
@data = hash
|
74
|
-
instance_eval
|
73
|
+
instance_eval(&block)
|
75
74
|
end
|
76
75
|
|
77
76
|
# Obtains the label provider given as a key `:label` in the hash passed to #format. The label provider is
|
@@ -119,7 +118,7 @@ module Issues
|
|
119
118
|
# @see MessageData
|
120
119
|
# @api public
|
121
120
|
#
|
122
|
-
def self.issue
|
121
|
+
def self.issue(issue_code, *args, &block)
|
123
122
|
Issue.new(issue_code, *args, &block)
|
124
123
|
end
|
125
124
|
|
@@ -741,6 +740,10 @@ module Issues
|
|
741
740
|
_('Heredoc without any following lines of text')
|
742
741
|
end
|
743
742
|
|
743
|
+
HEREDOC_EMPTY_ENDTAG = hard_issue :HEREDOC_EMPTY_ENDTAG do
|
744
|
+
_('Heredoc with an empty endtag')
|
745
|
+
end
|
746
|
+
|
744
747
|
HEREDOC_MULTIPLE_AT_ESCAPES = hard_issue :HEREDOC_MULTIPLE_AT_ESCAPES, :escapes do
|
745
748
|
_("An escape char for @() may only appear once. Got '%{escapes}'") % { escapes: escapes.join(', ') }
|
746
749
|
end
|
@@ -29,12 +29,11 @@ class Puppet::Pops::Loader::RubyDataTypeInstantiator
|
|
29
29
|
created
|
30
30
|
end
|
31
31
|
|
32
|
-
private
|
33
|
-
|
34
32
|
# Produces a binding where the given loader is bound as a local variable (loader_injected_arg). This variable can be used in loaded
|
35
33
|
# ruby code - e.g. to call Puppet::Function.create_loaded_function(:name, loader,...)
|
36
34
|
#
|
37
35
|
def self.get_binding(loader_injected_arg)
|
38
36
|
binding
|
39
37
|
end
|
38
|
+
private_class_method :get_binding
|
40
39
|
end
|
@@ -35,12 +35,11 @@ class Puppet::Pops::Loader::RubyFunctionInstantiator
|
|
35
35
|
created.new(nil, loader_for_function)
|
36
36
|
end
|
37
37
|
|
38
|
-
private
|
39
|
-
|
40
38
|
# Produces a binding where the given loader is bound as a local variable (loader_injected_arg). This variable can be used in loaded
|
41
39
|
# ruby code - e.g. to call Puppet::Function.create_loaded_function(:name, loader,...)
|
42
40
|
#
|
43
41
|
def self.get_binding(loader_injected_arg)
|
44
42
|
binding
|
45
43
|
end
|
44
|
+
private_class_method :get_binding
|
46
45
|
end
|
@@ -27,12 +27,12 @@ class TaskInstantiator
|
|
27
27
|
|
28
28
|
def self.create_task(loader, name, task_source, metadata)
|
29
29
|
if metadata.nil?
|
30
|
-
create_task_from_hash(
|
30
|
+
create_task_from_hash(name, task_source, EMPTY_HASH)
|
31
31
|
else
|
32
32
|
json_text = loader.get_contents(metadata)
|
33
33
|
begin
|
34
|
-
create_task_from_hash(
|
35
|
-
rescue
|
34
|
+
create_task_from_hash(name, task_source, Puppet::Util::Json.load(json_text) || EMPTY_HASH)
|
35
|
+
rescue Puppet::Util::Json::ParseError => ex
|
36
36
|
raise Puppet::ParseError.new(ex.message, metadata)
|
37
37
|
rescue Types::TypeAssertionError => ex
|
38
38
|
# Not strictly a parser error but from the users perspective, the file content didn't parse properly. The
|
@@ -43,7 +43,7 @@ class TaskInstantiator
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
-
def self.create_task_from_hash(
|
46
|
+
def self.create_task_from_hash(name, task_source, hash)
|
47
47
|
arguments = {
|
48
48
|
'name' => name,
|
49
49
|
'executable' => task_source
|
@@ -54,7 +54,7 @@ class TaskInstantiator
|
|
54
54
|
value.each_pair do |k, v|
|
55
55
|
pd = v.dup
|
56
56
|
t = v['type']
|
57
|
-
pd['type'] = t.nil? ? Types::TypeFactory.data : Types::TypeParser.singleton.parse(t
|
57
|
+
pd['type'] = t.nil? ? Types::TypeFactory.data : Types::TypeParser.singleton.parse(t)
|
58
58
|
ps[k] = pd
|
59
59
|
end
|
60
60
|
value = ps
|
@@ -73,7 +73,9 @@ class TypeDefinitionInstantiator
|
|
73
73
|
case type_name
|
74
74
|
when 'Object'
|
75
75
|
# No need for an alias. The Object type itself will receive the name instead
|
76
|
-
|
76
|
+
unless type_expr.is_a?(Model::LiteralHash)
|
77
|
+
type_expr = type_expr.keys.empty? ? nil : type_expr.keys[0] unless type_expr.is_a?(Hash)
|
78
|
+
end
|
77
79
|
Types::PObjectType.new(name, type_expr)
|
78
80
|
when 'TypeSet'
|
79
81
|
# No need for an alias. The Object type itself will receive the name instead
|
@@ -86,6 +88,7 @@ class TypeDefinitionInstantiator
|
|
86
88
|
|
87
89
|
# @api private
|
88
90
|
def self.named_definition(te)
|
91
|
+
return 'Object' if te.is_a?(Model::LiteralHash)
|
89
92
|
te.is_a?(Model::AccessExpression) && (left = te.left_expr).is_a?(Model::QualifiedReference) ? left.cased_value : nil
|
90
93
|
end
|
91
94
|
|
data/lib/puppet/pops/loaders.rb
CHANGED
@@ -15,7 +15,6 @@ class Loaders
|
|
15
15
|
attr_reader :puppet_system_loader
|
16
16
|
attr_reader :public_environment_loader
|
17
17
|
attr_reader :private_environment_loader
|
18
|
-
attr_reader :implementation_registry
|
19
18
|
attr_reader :environment
|
20
19
|
|
21
20
|
def self.new(environment, for_agent = false)
|
@@ -55,12 +54,9 @@ class Loaders
|
|
55
54
|
create_environment_loader(environment)
|
56
55
|
end
|
57
56
|
|
58
|
-
|
59
|
-
# the current environment
|
60
|
-
@implementation_registry = Types::ImplementationRegistry.new(@private_environment_loader)
|
61
|
-
Pcore.init(@puppet_system_loader, @implementation_registry, for_agent)
|
57
|
+
Pcore.init_env(@private_environment_loader)
|
62
58
|
|
63
|
-
#
|
59
|
+
# 3. module loaders are set up from the create_environment_loader, they register themselves
|
64
60
|
end
|
65
61
|
|
66
62
|
# Called after loader has been added to Puppet Context as :loaders so that dynamic types can
|
@@ -91,11 +87,21 @@ class Loaders
|
|
91
87
|
loaders.find_loader(module_name)
|
92
88
|
end
|
93
89
|
|
90
|
+
def self.static_implementation_registry
|
91
|
+
if !class_variable_defined?(:@@static_implementation_registry) || @@static_implementation_registry.nil?
|
92
|
+
ir = Types::ImplementationRegistry.new
|
93
|
+
Types::TypeParser.type_map.values.each { |t| ir.register_implementation(t.simple_name, t.class.name) }
|
94
|
+
@@static_implementation_registry = ir
|
95
|
+
end
|
96
|
+
@@static_implementation_registry
|
97
|
+
end
|
98
|
+
|
94
99
|
def self.static_loader
|
95
100
|
# The static loader can only be changed after a reboot
|
96
101
|
if !class_variable_defined?(:@@static_loader) || @@static_loader.nil?
|
97
102
|
@@static_loader = Loader::StaticLoader.new()
|
98
103
|
@@static_loader.register_aliases
|
104
|
+
Pcore.init(@@static_loader, static_implementation_registry)
|
99
105
|
end
|
100
106
|
@@static_loader
|
101
107
|
end
|
@@ -206,6 +212,11 @@ class Loaders
|
|
206
212
|
end
|
207
213
|
end
|
208
214
|
|
215
|
+
def implementation_registry
|
216
|
+
# Environment specific implementation registry
|
217
|
+
@implementation_registry ||= Types::ImplementationRegistry.new(self.class.static_implementation_registry)
|
218
|
+
end
|
219
|
+
|
209
220
|
def static_loader
|
210
221
|
self.class.static_loader
|
211
222
|
end
|
@@ -337,7 +348,7 @@ class Loaders
|
|
337
348
|
tf = Types::TypeParser.singleton
|
338
349
|
lhs = tf.interpret(type_mapping.type_expr, loader)
|
339
350
|
rhs = tf.interpret_any(type_mapping.mapping_expr, loader)
|
340
|
-
implementation_registry.register_type_mapping(lhs, rhs
|
351
|
+
implementation_registry.register_type_mapping(lhs, rhs)
|
341
352
|
nil
|
342
353
|
end
|
343
354
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'hiera/scope'
|
1
2
|
require_relative 'configured_data_provider'
|
2
3
|
|
3
4
|
module Puppet::Pops
|
@@ -11,7 +12,6 @@ class GlobalDataProvider < ConfiguredDataProvider
|
|
11
12
|
def unchecked_key_lookup(key, lookup_invocation, merge)
|
12
13
|
config = config(lookup_invocation)
|
13
14
|
if(config.version == 3)
|
14
|
-
require 'hiera/scope'
|
15
15
|
# Hiera version 3 needs access to special scope variables
|
16
16
|
scope = lookup_invocation.scope
|
17
17
|
unless scope.is_a?(Hiera::Scope)
|
@@ -16,6 +16,8 @@ class LookupAdapter < DataAdapter
|
|
16
16
|
|
17
17
|
HASH = 'hash'.freeze
|
18
18
|
MERGE = 'merge'.freeze
|
19
|
+
CONVERT_TO = 'convert_to'.freeze
|
20
|
+
NEW = 'new'.freeze
|
19
21
|
|
20
22
|
def self.create_adapter(compiler)
|
21
23
|
new(compiler)
|
@@ -52,18 +54,65 @@ class LookupAdapter < DataAdapter
|
|
52
54
|
catch(:no_such_key) { do_lookup(LookupKey::LOOKUP_OPTIONS, lookup_invocation, HASH) }
|
53
55
|
nil
|
54
56
|
else
|
57
|
+
lookup_options = lookup_lookup_options(key, lookup_invocation) || {}
|
58
|
+
|
55
59
|
if merge.nil?
|
56
60
|
# Used cached lookup_options
|
57
|
-
merge = lookup_merge_options(key, lookup_invocation)
|
61
|
+
# merge = lookup_merge_options(key, lookup_invocation)
|
62
|
+
merge = lookup_options[MERGE]
|
58
63
|
lookup_invocation.report_merge_source(LOOKUP_OPTIONS) unless merge.nil?
|
59
64
|
end
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
+
convert_result(key.to_s, lookup_options, lookup_invocation, lambda do
|
66
|
+
lookup_invocation.with(:data, key.to_s) do
|
67
|
+
catch(:no_such_key) { return do_lookup(key, lookup_invocation, merge) }
|
68
|
+
throw :no_such_key if lookup_invocation.global_only?
|
69
|
+
key.dig(lookup_invocation, lookup_default_in_module(key, lookup_invocation))
|
70
|
+
end
|
71
|
+
end)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# Performs a possible conversion of the result of calling `the_lookup` lambda
|
77
|
+
# The conversion takes place if there is a 'convert_to' key in the lookup_options
|
78
|
+
# If there is no conversion, the result of calling `the_lookup` is returned
|
79
|
+
# otherwise the successfully converted value.
|
80
|
+
# Errors are raised if the convert_to is faulty (bad type string, or if a call to
|
81
|
+
# new(T, <args>) fails.
|
82
|
+
#
|
83
|
+
# @param key [String] The key to lookup
|
84
|
+
# @param lookup_options [Hash] a hash of options
|
85
|
+
# @param lookup_invocation [Invocation] the lookup invocation
|
86
|
+
# @param the_lookup [Lambda] zero arg lambda that performs the lookup of a value
|
87
|
+
# @return [Object] the looked up value, or converted value if there was conversion
|
88
|
+
# @throw :no_such_key when the object is not found (if thrown by `the_lookup`)
|
89
|
+
#
|
90
|
+
def convert_result(key, lookup_options, lookup_invocation, the_lookup)
|
91
|
+
result = the_lookup.call
|
92
|
+
convert_to = lookup_options[CONVERT_TO]
|
93
|
+
return result if convert_to.nil?
|
94
|
+
|
95
|
+
convert_to = convert_to.is_a?(Array) ? convert_to : [convert_to]
|
96
|
+
if convert_to[0].is_a?(String)
|
97
|
+
begin
|
98
|
+
convert_to[0] = Puppet::Pops::Types::TypeParser.singleton.parse(convert_to[0])
|
99
|
+
rescue StandardError => e
|
100
|
+
raise Puppet::DataBinding::LookupError,
|
101
|
+
_("Invalid data type in lookup_options for key '%{key}' could not parse '%{source}', error: '%{msg}") %
|
102
|
+
{ key: key, source: convert_to[0], msg: e.message}
|
65
103
|
end
|
66
104
|
end
|
105
|
+
begin
|
106
|
+
result = lookup_invocation.scope.call_function(NEW, [convert_to[0], result, *convert_to[1..-1]])
|
107
|
+
# TRANSLATORS 'lookup_options', 'convert_to' and args_string variable should not be translated,
|
108
|
+
args_string = Puppet::Pops::Types::StringConverter.singleton.convert(convert_to)
|
109
|
+
lookup_invocation.report_text { _("Applying convert_to lookup_option with arguments %{args}") % { args: args_string } }
|
110
|
+
rescue StandardError => e
|
111
|
+
raise Puppet::DataBinding::LookupError,
|
112
|
+
_("The convert_to lookup_option for key '%{key}' raised error: %{msg}") %
|
113
|
+
{ key: key, msg: e.message}
|
114
|
+
end
|
115
|
+
result
|
67
116
|
end
|
68
117
|
|
69
118
|
def lookup_global(key, lookup_invocation, merge_strategy)
|