puppet 4.3.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/COMMITTERS.md +2 -2
- data/CONTRIBUTING.md +6 -6
- data/LICENSE +1 -1
- data/README.md +8 -9
- data/conf/auth.conf +2 -2
- data/ext/README.environment +1 -1
- data/ext/build_defaults.yaml +1 -1
- data/ext/debian/README.source +1 -1
- data/ext/debian/control +1 -1
- data/ext/debian/copyright +4 -4
- data/ext/debian/puppetmaster.README.debian +11 -9
- data/ext/emacs/puppet-mode.el +1 -1
- data/ext/envpuppet +2 -2
- data/ext/ips/puppetagent.xml +1 -1
- data/ext/ips/puppetmaster.xml +1 -1
- data/ext/project_data.yaml +8 -0
- data/ext/puppet-test +3 -3
- data/ext/rack/example-passenger-vhost.conf +1 -1
- data/ext/redhat/puppet.spec.erb +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +1 -1
- data/ext/solaris/pkginfo +1 -1
- data/ext/solaris/smf/puppet.xml +1 -1
- data/ext/suse/puppet.spec +2 -2
- data/ext/upload_facts.rb +1 -1
- data/ext/windows/puppet_interactive.bat +6 -0
- data/ext/windows/puppet_shell.bat +9 -0
- data/ext/windows/run_puppet_interactive.bat +9 -0
- data/ext/yaml_nodes.rb +1 -1
- data/install.rb +30 -20
- data/lib/hiera/scope.rb +1 -1
- data/lib/puppet/agent.rb +1 -1
- data/lib/puppet/application/agent.rb +4 -2
- data/lib/puppet/application/apply.rb +7 -4
- data/lib/puppet/application/cert.rb +1 -1
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +1 -1
- data/lib/puppet/application/lookup.rb +45 -47
- data/lib/puppet/application/master.rb +2 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/configurer.rb +100 -22
- data/lib/puppet/data_providers/hiera_config.rb +28 -3
- data/lib/puppet/data_providers/hiera_interpolate.rb +30 -15
- data/lib/puppet/data_providers/hiera_support.rb +1 -1
- data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -2
- data/lib/puppet/data_providers/lookup_adapter.rb +73 -26
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
- data/lib/puppet/defaults.rb +69 -22
- data/lib/puppet/environments.rb +3 -1
- data/lib/puppet/face/config.rb +1 -1
- data/lib/puppet/face/epp.rb +1 -1
- data/lib/puppet/face/help/man.erb +1 -1
- data/lib/puppet/face/module/install.rb +6 -6
- data/lib/puppet/face/parser.rb +12 -9
- data/lib/puppet/face/status.rb +2 -1
- data/lib/puppet/feature/cfpropertylist.rb +3 -0
- data/lib/puppet/feature/telnet.rb +9 -0
- data/lib/puppet/file_serving/http_metadata.rb +46 -0
- data/lib/puppet/file_serving/metadata.rb +18 -2
- data/lib/puppet/file_serving/terminus_selector.rb +2 -0
- data/lib/puppet/file_system/file_impl.rb +2 -2
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +1 -1
- data/lib/puppet/file_system.rb +2 -2
- data/lib/puppet/forge/repository.rb +1 -31
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/functions/assert_type.rb +9 -9
- data/lib/puppet/functions/each.rb +5 -13
- data/lib/puppet/functions/filter.rb +5 -14
- data/lib/puppet/functions/lookup.rb +126 -150
- data/lib/puppet/functions/map.rb +6 -14
- data/lib/puppet/functions/match.rb +1 -0
- data/lib/puppet/functions/reduce.rb +5 -13
- data/lib/puppet/functions/reverse_each.rb +82 -0
- data/lib/puppet/functions/scanf.rb +15 -18
- data/lib/puppet/functions/slice.rb +22 -36
- data/lib/puppet/functions/split.rb +2 -2
- data/lib/puppet/functions/step.rb +88 -0
- data/lib/puppet/functions/type.rb +70 -0
- data/lib/puppet/functions.rb +45 -6
- data/lib/puppet/graph/rb_tree_map.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +188 -5
- data/lib/puppet/indirector/facts/facter.rb +2 -13
- data/lib/puppet/indirector/file_content/http.rb +15 -0
- data/lib/puppet/indirector/file_metadata/http.rb +27 -0
- data/lib/puppet/indirector/generic_http.rb +16 -0
- data/lib/puppet/indirector/hiera.rb +3 -1
- data/lib/puppet/indirector/indirection.rb +6 -2
- data/lib/puppet/indirector/json.rb +2 -2
- data/lib/puppet/indirector/node/exec.rb +1 -1
- data/lib/puppet/indirector/node/ldap.rb +1 -1
- data/lib/puppet/indirector/rest.rb +2 -1
- data/lib/puppet/info_service/class_information_service.rb +13 -12
- data/lib/puppet/loaders.rb +1 -0
- data/lib/puppet/module.rb +6 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +9 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +2 -2
- data/lib/puppet/module_tool/tar/mini.rb +3 -3
- data/lib/puppet/network/http/pool.rb +9 -0
- data/lib/puppet/node/environment.rb +11 -2
- data/lib/puppet/node.rb +11 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
- data/lib/puppet/parser/compiler.rb +4 -11
- data/lib/puppet/parser/environment_compiler.rb +0 -1
- data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/lookup.rb +128 -149
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/match.rb +1 -0
- data/lib/puppet/parser/functions/scanf.rb +15 -26
- data/lib/puppet/parser/functions/slice.rb +17 -24
- data/lib/puppet/parser/functions/split.rb +1 -1
- data/lib/puppet/parser/functions.rb +28 -16
- data/lib/puppet/parser/resource.rb +19 -17
- data/lib/puppet/parser/scope.rb +176 -5
- data/lib/puppet/plugins/data_providers/data_provider.rb +56 -14
- data/lib/puppet/pops/adaptable.rb +4 -1
- data/lib/puppet/pops/adapters.rb +80 -12
- data/lib/puppet/pops/binder/binder.rb +21 -17
- data/lib/puppet/pops/binder/binder_issues.rb +8 -6
- data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
- data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
- data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
- data/lib/puppet/pops/binder/bindings_model.rb +49 -47
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
- data/lib/puppet/pops/binder/injector.rb +53 -48
- data/lib/puppet/pops/binder/key_factory.rb +10 -6
- data/lib/puppet/pops/binder/producers.rb +67 -62
- data/lib/puppet/pops/evaluator/access_operator.rb +98 -96
- data/lib/puppet/pops/evaluator/closure.rb +122 -106
- data/lib/puppet/pops/evaluator/collector_transformer.rb +34 -14
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +0 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +13 -9
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +78 -76
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +13 -11
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +5 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +47 -42
- data/lib/puppet/pops/functions/function.rb +6 -2
- data/lib/puppet/pops/issue_reporter.rb +6 -4
- data/lib/puppet/pops/issues.rb +50 -11
- data/lib/puppet/pops/loader/base_loader.rb +1 -1
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +15 -0
- data/lib/puppet/pops/loader/module_loaders.rb +17 -13
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +18 -13
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +55 -0
- data/lib/puppet/pops/loaders.rb +51 -9
- data/lib/puppet/pops/lookup/explainer.rb +73 -3
- data/lib/puppet/pops/lookup/invocation.rb +21 -19
- data/lib/puppet/pops/lookup.rb +17 -12
- data/lib/puppet/pops/merge_strategy.rb +16 -19
- data/lib/puppet/pops/model/factory.rb +179 -157
- data/lib/puppet/pops/model/model.rb +17 -8
- data/lib/puppet/pops/model/model_label_provider.rb +14 -7
- data/lib/puppet/pops/model/model_meta.rb +17 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +8 -0
- data/lib/puppet/pops/parser/egrammar.ra +38 -14
- data/lib/puppet/pops/parser/eparser.rb +1353 -1276
- data/lib/puppet/pops/parser/epp_support.rb +11 -7
- data/lib/puppet/pops/parser/evaluating_parser.rb +17 -13
- data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
- data/lib/puppet/pops/parser/lexer2.rb +428 -403
- data/lib/puppet/pops/parser/lexer_support.rb +85 -7
- data/lib/puppet/pops/parser/locator.rb +21 -0
- data/lib/puppet/pops/parser/parser_support.rb +19 -16
- data/lib/puppet/pops/parser/slurp_support.rb +16 -8
- data/lib/puppet/pops/types/class_loader.rb +23 -19
- data/lib/puppet/pops/types/enumeration.rb +9 -26
- data/lib/puppet/pops/types/iterable.rb +308 -0
- data/lib/puppet/pops/types/recursion_guard.rb +82 -0
- data/lib/puppet/pops/types/type_acceptor.rb +25 -0
- data/lib/puppet/pops/types/type_asserter.rb +10 -9
- data/lib/puppet/pops/types/type_calculator.rb +140 -387
- data/lib/puppet/pops/types/type_factory.rb +91 -57
- data/lib/puppet/pops/types/type_formatter.rb +334 -0
- data/lib/puppet/pops/types/type_mismatch_describer.rb +226 -59
- data/lib/puppet/pops/types/type_parser.rb +159 -112
- data/lib/puppet/pops/types/types.rb +2057 -1253
- data/lib/puppet/pops/utils.rb +11 -10
- data/lib/puppet/pops/validation/checker4_0.rb +115 -63
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
- data/lib/puppet/pops/validation.rb +11 -9
- data/lib/puppet/pops.rb +0 -8
- data/lib/puppet/provider/aixobject.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/group/windows_adsi.rb +2 -2
- data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
- data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
- data/lib/puppet/provider/package/appdmg.rb +3 -2
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +16 -9
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +3 -2
- data/lib/puppet/provider/package/pkgng.rb +13 -4
- data/lib/puppet/provider/package/rpm.rb +0 -1
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +2 -2
- data/lib/puppet/provider/package/zypper.rb +19 -0
- data/lib/puppet/provider/service/debian.rb +7 -20
- data/lib/puppet/provider/service/init.rb +7 -0
- data/lib/puppet/provider/service/launchd.rb +6 -12
- data/lib/puppet/provider/service/systemd.rb +9 -2
- data/lib/puppet/provider/sshkey/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +33 -58
- data/lib/puppet/provider/user/windows_adsi.rb +2 -2
- data/lib/puppet/provider/yumrepo/inifile.rb +6 -3
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/provider/zpool/zpool.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/resource/capability_finder.rb +20 -13
- data/lib/puppet/resource/catalog.rb +60 -3
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/resource/type.rb +33 -42
- data/lib/puppet/resource.rb +15 -12
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +13 -5
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/ssl/certificate_factory.rb +3 -3
- data/lib/puppet/ssl/certificate_request.rb +4 -4
- data/lib/puppet/ssl/certificate_signer.rb +1 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +16 -4
- data/lib/puppet/transaction/additional_resource_generator.rb +23 -5
- data/lib/puppet/transaction/report.rb +31 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -25
- data/lib/puppet/transaction.rb +15 -2
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +12 -12
- data/lib/puppet/type/file/checksum_value.rb +53 -0
- data/lib/puppet/type/file/content.rb +26 -111
- data/lib/puppet/type/file/data_sync.rb +84 -0
- data/lib/puppet/type/file/ensure.rb +17 -14
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file/source.rb +103 -18
- data/lib/puppet/type/file.rb +91 -39
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/group.rb +6 -2
- data/lib/puppet/type/interface.rb +8 -3
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/package.rb +6 -0
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/stage.rb +1 -1
- data/lib/puppet/type/user.rb +19 -17
- data/lib/puppet/type/yumrepo.rb +20 -0
- data/lib/puppet/type.rb +11 -11
- data/lib/puppet/util/autoload.rb +16 -11
- data/lib/puppet/util/checksums.rb +74 -31
- data/lib/puppet/util/execution.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +72 -0
- data/lib/puppet/util/log.rb +2 -0
- data/lib/puppet/util/logging.rb +43 -1
- data/lib/puppet/util/monkey_patches.rb +2 -2
- data/lib/puppet/util/multi_match.rb +51 -0
- data/lib/puppet/util/network_device/cisco/device.rb +10 -2
- data/lib/puppet/util/network_device/cisco/interface.rb +21 -8
- data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
- data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
- data/lib/puppet/util/plist.rb +130 -0
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/run_mode.rb +2 -2
- data/lib/puppet/util/skip_tags.rb +9 -0
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/access_control_list.rb +3 -3
- data/lib/puppet/util/windows/adsi.rb +65 -28
- data/lib/puppet/util/windows/api_types.rb +24 -18
- data/lib/puppet/util/windows/com.rb +3 -3
- data/lib/puppet/util/windows/error.rb +1 -1
- data/lib/puppet/util/windows/file.rb +8 -8
- data/lib/puppet/util/windows/principal.rb +190 -0
- data/lib/puppet/util/windows/process.rb +78 -11
- data/lib/puppet/util/windows/registry.rb +22 -16
- data/lib/puppet/util/windows/root_certs.rb +5 -5
- data/lib/puppet/util/windows/security.rb +33 -35
- data/lib/puppet/util/windows/security_descriptor.rb +1 -1
- data/lib/puppet/util/windows/sid.rb +84 -15
- data/lib/puppet/util/windows/taskscheduler.rb +15 -15
- data/lib/puppet/util/windows/user.rb +10 -10
- data/lib/puppet/util/windows.rb +4 -0
- data/lib/puppet/util.rb +109 -22
- data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
- data/lib/puppet/vendor/pathspec/LICENSE +2 -2
- data/lib/puppet/vendor/pathspec/README.md +1 -1
- data/lib/puppet/vendor/rgen/README.rdoc +1 -1
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +17 -0
- data/lib/semver.rb +17 -1
- data/man/man5/puppet.conf.5 +12 -12
- data/man/man8/extlookup2hiera.8 +1 -1
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +2 -2
- data/man/man8/puppet-catalog.8 +2 -2
- data/man/man8/puppet-cert.8 +2 -2
- data/man/man8/puppet-certificate.8 +2 -2
- data/man/man8/puppet-certificate_request.8 +2 -2
- data/man/man8/puppet-certificate_revocation_list.8 +2 -2
- data/man/man8/puppet-config.8 +3 -3
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +2 -2
- data/man/man8/puppet-facts.8 +2 -2
- data/man/man8/puppet-file.8 +2 -2
- data/man/man8/puppet-filebucket.8 +2 -2
- data/man/man8/puppet-help.8 +2 -2
- data/man/man8/puppet-inspect.8 +2 -2
- data/man/man8/puppet-key.8 +2 -2
- data/man/man8/puppet-man.8 +2 -2
- data/man/man8/puppet-master.8 +2 -2
- data/man/man8/puppet-module.8 +9 -9
- data/man/man8/puppet-node.8 +2 -2
- data/man/man8/puppet-parser.8 +2 -2
- data/man/man8/puppet-plugin.8 +2 -2
- data/man/man8/puppet-report.8 +2 -2
- data/man/man8/puppet-resource.8 +2 -2
- data/man/man8/puppet-resource_type.8 +2 -2
- data/man/man8/puppet-status.8 +3 -3
- data/man/man8/puppet.8 +1 -1
- data/spec/fixtures/module.tar.gz +0 -0
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +4 -0
- data/spec/fixtures/unit/application/environments/production/manifests/site.pp +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/data.pp +10 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +6 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +2 -1
- data/spec/fixtures/unit/module/trailing-comma.json +1 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +6 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +8 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +81 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/metadata.json +2 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
- data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
- data/spec/integration/defaults_spec.rb +14 -2
- data/spec/integration/file_system/uniquefile_spec.rb +29 -0
- data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
- data/spec/integration/node/environment_spec.rb +13 -0
- data/spec/integration/parser/collection_spec.rb +8 -0
- data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
- data/spec/integration/parser/parameter_defaults_spec.rb +336 -0
- data/spec/integration/parser/undef_param_spec.rb +8 -0
- data/spec/integration/provider/yumrepo_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +28 -0
- data/spec/integration/transaction/report_spec.rb +16 -0
- data/spec/integration/transaction_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +194 -4
- data/spec/integration/type/package_spec.rb +5 -1
- data/spec/integration/type/tidy_spec.rb +21 -9
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/principal_spec.rb +201 -0
- data/spec/integration/util/windows/process_spec.rb +31 -0
- data/spec/{unit → integration}/util/windows/registry_spec.rb +91 -1
- data/spec/integration/util/windows/security_spec.rb +8 -8
- data/spec/integration/util/windows/user_spec.rb +1 -1
- data/spec/integration/util_spec.rb +49 -27
- data/spec/lib/puppet_spec/compiler.rb +17 -0
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/pops.rb +13 -0
- data/spec/shared_behaviours/iterative_functions.rb +1 -1
- data/spec/shared_contexts/types_setup.rb +96 -0
- data/spec/unit/agent_spec.rb +1 -0
- data/spec/unit/application/agent_spec.rb +10 -0
- data/spec/unit/application/apply_spec.rb +9 -0
- data/spec/unit/application/lookup_spec.rb +138 -28
- data/spec/unit/configurer/downloader_spec.rb +5 -5
- data/spec/unit/configurer_spec.rb +271 -39
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +182 -5
- data/spec/unit/data_providers/hiera_interpolation_spec.rb +57 -0
- data/spec/unit/defaults_spec.rb +15 -0
- data/spec/unit/environments_spec.rb +24 -4
- data/spec/unit/face/epp_face_spec.rb +2 -2
- data/spec/unit/face/parser_spec.rb +43 -2
- data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
- data/spec/unit/file_serving/metadata_spec.rb +50 -0
- data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
- data/spec/unit/file_system_spec.rb +26 -0
- data/spec/unit/functions/assert_type_spec.rb +36 -2
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +17 -9
- data/spec/unit/functions/inline_epp_spec.rb +4 -4
- data/spec/unit/functions/lookup_spec.rb +88 -16
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/reverse_each_spec.rb +108 -0
- data/spec/unit/functions/step_spec.rb +113 -0
- data/spec/unit/functions/type_spec.rb +35 -0
- data/spec/unit/functions4_spec.rb +62 -6
- data/spec/unit/hiera/scope_spec.rb +5 -2
- data/spec/unit/indirector/catalog/compiler_spec.rb +705 -4
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/indirector/json_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +94 -32
- data/spec/unit/module_spec.rb +14 -0
- data/spec/unit/module_tool/applications/builder_spec.rb +4 -4
- data/spec/unit/network/authstore_spec.rb +1 -1
- data/spec/unit/network/http/connection_spec.rb +1 -0
- data/spec/unit/network/http/pool_spec.rb +30 -0
- data/spec/unit/node_spec.rb +8 -0
- data/spec/unit/parser/compiler_spec.rb +16 -18
- data/spec/unit/parser/scope_spec.rb +28 -11
- data/spec/unit/pops/evaluator/access_ops_spec.rb +7 -7
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -2
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
- data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +6 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +127 -2
- data/spec/unit/pops/parser/lexer2_spec.rb +118 -3
- data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -0
- data/spec/unit/pops/parser/parser_spec.rb +10 -0
- data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
- data/spec/unit/pops/types/iterable_spec.rb +262 -0
- data/spec/unit/pops/types/recursion_guard_spec.rb +91 -0
- data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
- data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +275 -390
- data/spec/unit/pops/types/type_formatter_spec.rb +280 -0
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +152 -0
- data/spec/unit/pops/types/type_parser_spec.rb +58 -13
- data/spec/unit/pops/types/types_spec.rb +241 -0
- data/spec/unit/pops/validator/validator_spec.rb +159 -15
- data/spec/unit/provider/cron/parsed_spec.rb +1 -0
- data/spec/unit/provider/group/windows_adsi_spec.rb +8 -8
- data/spec/unit/provider/macauthorization_spec.rb +5 -2
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
- data/spec/unit/provider/package/appdmg_spec.rb +3 -3
- data/spec/unit/provider/package/dnf_spec.rb +16 -0
- data/spec/unit/provider/package/pip3_spec.rb +60 -42
- data/spec/unit/provider/package/pip_spec.rb +88 -47
- data/spec/unit/provider/package/pkgdmg_spec.rb +18 -9
- data/spec/unit/provider/package/pkgng_spec.rb +4 -2
- data/spec/unit/provider/package/rpm_spec.rb +2 -25
- data/spec/unit/provider/package/yum_spec.rb +12 -1
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/debian_spec.rb +6 -24
- data/spec/unit/provider/service/init_spec.rb +11 -1
- data/spec/unit/provider/service/launchd_spec.rb +18 -25
- data/spec/unit/provider/service/systemd_spec.rb +25 -12
- data/spec/unit/provider/service/upstart_spec.rb +57 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
- data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
- data/spec/unit/provider/user/windows_adsi_spec.rb +5 -5
- data/spec/unit/provider/yumrepo/inifile_spec.rb +16 -0
- data/spec/unit/resource/capability_finder_spec.rb +28 -15
- data/spec/unit/resource/catalog_spec.rb +33 -1
- data/spec/unit/resource/type_spec.rb +149 -7
- data/spec/unit/resource_spec.rb +99 -50
- data/spec/unit/settings/environment_conf_spec.rb +18 -1
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
- data/spec/unit/transaction/report_spec.rb +27 -0
- data/spec/unit/transaction/resource_harness_spec.rb +0 -47
- data/spec/unit/transaction_spec.rb +5 -0
- data/spec/unit/type/file/checksum_spec.rb +6 -0
- data/spec/unit/type/file/checksum_value_spec.rb +286 -0
- data/spec/unit/type/file/content_spec.rb +12 -193
- data/spec/unit/type/file/source_spec.rb +211 -119
- data/spec/unit/type/file_spec.rb +133 -34
- data/spec/unit/type/interface_spec.rb +32 -0
- data/spec/unit/type/macauthorization_spec.rb +4 -1
- data/spec/unit/type/yumrepo_spec.rb +2 -2
- data/spec/unit/util/filetype_spec.rb +1 -1
- data/spec/unit/util/http_proxy_spec.rb +2 -2
- data/spec/unit/util/log/destinations_spec.rb +0 -2
- data/spec/unit/util/logging_spec.rb +69 -0
- data/spec/unit/util/multi_match_spec.rb +39 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
- data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
- data/spec/unit/util/plist_spec.rb +110 -0
- data/spec/unit/util/resource_template_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -3
- data/spec/unit/util/windows/adsi_spec.rb +46 -38
- data/spec/unit/util/windows/api_types_spec.rb +42 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
- data/spec/unit/util/windows/sid_spec.rb +48 -11
- data/spec/unit/util_spec.rb +123 -13
- data/tasks/cfpropertylist.rake +15 -0
- metadata +3342 -3195
- data/lib/puppet/vendor/load_plist.rb +0 -1
- data/lib/puppet/vendor/plist/CHANGELOG +0 -82
- data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
- data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/plist/README +0 -36
- data/lib/puppet/vendor/plist/Rakefile +0 -144
- data/lib/puppet/vendor/plist/docs/USAGE +0 -104
- data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
- data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
- data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
- data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
- data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
- data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
- data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
- data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
- data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
- data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
- data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
- data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
- data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
- data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
- data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
- /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{usee → modules/usee}/lib/puppet/functions/usee/callee.rb +0 -0
- /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/lib/puppet/functions/user/caller.rb +0 -0
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
module Puppet::Pops
|
|
2
|
+
module Binder
|
|
1
3
|
# This module contains the various producers used by Puppet Bindings.
|
|
2
|
-
|
|
4
|
+
|
|
5
|
+
# The main (abstract) class is {Producers::Producer} which documents the
|
|
3
6
|
# Producer API and serves as a base class for all other producers.
|
|
4
7
|
# It is required that custom producers inherit from this producer (directly or indirectly).
|
|
5
8
|
#
|
|
6
9
|
# The selection of a Producer is typically performed by the Innjector when it configures itself
|
|
7
|
-
# from a Bindings model where a {
|
|
10
|
+
# from a Bindings model where a {Bindings::ProducerDescriptor} describes
|
|
8
11
|
# which producer to use. The configuration uses this to create the concrete producer.
|
|
9
12
|
# It is possible to describe that a particular producer class is to be used, and also to describe that
|
|
10
13
|
# a custom producer (derived from Producer) should be used. This is available for both regular
|
|
@@ -13,7 +16,7 @@
|
|
|
13
16
|
#
|
|
14
17
|
# @api public
|
|
15
18
|
#
|
|
16
|
-
module
|
|
19
|
+
module Producers
|
|
17
20
|
# Producer is an abstract base class representing the base contract for a bound producer.
|
|
18
21
|
# Typically, when a lookup is performed it is the value that is returned (via a producer), but
|
|
19
22
|
# it is also possible to lookup the producer, and ask it to produce the value (the producer may
|
|
@@ -48,10 +51,10 @@ module Puppet::Pops::Binder::Producers
|
|
|
48
51
|
# Creates a Producer.
|
|
49
52
|
# Derived classes should call this constructor to get support for transformer lambda.
|
|
50
53
|
#
|
|
51
|
-
# @param injector [
|
|
52
|
-
# @param binding [
|
|
54
|
+
# @param injector [Injector] The injector where the lookup originates
|
|
55
|
+
# @param binding [Bindings::Binding, nil] The binding using this producer
|
|
53
56
|
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
|
54
|
-
# @option options [
|
|
57
|
+
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
|
55
58
|
# @api public
|
|
56
59
|
#
|
|
57
60
|
def initialize(injector, binding, scope, options)
|
|
@@ -60,9 +63,9 @@ module Puppet::Pops::Binder::Producers
|
|
|
60
63
|
raise ArgumentError, "Transformer Proc must take one argument; value." unless transformer_lambda.arity == 1
|
|
61
64
|
@transformer = transformer_lambda
|
|
62
65
|
else
|
|
63
|
-
raise ArgumentError, "Transformer must be a LambdaExpression" unless transformer_lambda.is_a?(
|
|
66
|
+
raise ArgumentError, "Transformer must be a LambdaExpression" unless transformer_lambda.is_a?(Model::LambdaExpression)
|
|
64
67
|
raise ArgumentError, "Transformer lambda must take one argument; value." unless transformer_lambda.parameters.size() == 1
|
|
65
|
-
@transformer =
|
|
68
|
+
@transformer = Parser::EvaluatingParser.new.closure(transformer_lambda, scope)
|
|
66
69
|
end
|
|
67
70
|
end
|
|
68
71
|
end
|
|
@@ -81,9 +84,9 @@ module Puppet::Pops::Binder::Producers
|
|
|
81
84
|
# This implementation returns `self`. A derived class may want to override this method
|
|
82
85
|
# to perform initialization/refresh of its internal state. This method is called when
|
|
83
86
|
# a producer is requested.
|
|
84
|
-
# @see
|
|
87
|
+
# @see ProducerProducer for an example of implementation.
|
|
85
88
|
# @param scope [Puppet::Parser:Scope] the scope to use for evaluation
|
|
86
|
-
# @return [
|
|
89
|
+
# @return [Producer] the producer to use
|
|
87
90
|
# @api public
|
|
88
91
|
#
|
|
89
92
|
def producer(scope)
|
|
@@ -123,11 +126,11 @@ module Puppet::Pops::Binder::Producers
|
|
|
123
126
|
# @api public
|
|
124
127
|
attr_reader :value
|
|
125
128
|
|
|
126
|
-
# @param injector [
|
|
127
|
-
# @param binding [
|
|
129
|
+
# @param injector [Injector] The injector where the lookup originates
|
|
130
|
+
# @param binding [Bindings::Binding, nil] The binding using this producer
|
|
128
131
|
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
|
129
|
-
# @option options [
|
|
130
|
-
# @option options [
|
|
132
|
+
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
|
133
|
+
# @option options [Model::LambdaExpression, nil] :value (nil) the value to produce
|
|
131
134
|
# @api public
|
|
132
135
|
#
|
|
133
136
|
def initialize(injector, binding, scope, options)
|
|
@@ -182,10 +185,10 @@ module Puppet::Pops::Binder::Producers
|
|
|
182
185
|
# @api public
|
|
183
186
|
attr_reader :binding
|
|
184
187
|
|
|
185
|
-
# @param injector [
|
|
186
|
-
# @param binding [
|
|
188
|
+
# @param injector [Injector] The injector where the lookup originates
|
|
189
|
+
# @param binding [Bindings::Binding, nil] The binding using this producer
|
|
187
190
|
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
|
188
|
-
# @option options [
|
|
191
|
+
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
|
189
192
|
# @api public
|
|
190
193
|
#
|
|
191
194
|
def initialize(injector, binding, scope, options)
|
|
@@ -204,10 +207,10 @@ module Puppet::Pops::Binder::Producers
|
|
|
204
207
|
# @api public
|
|
205
208
|
attr_reader :init_args
|
|
206
209
|
|
|
207
|
-
# @param injector [
|
|
208
|
-
# @param binding [
|
|
210
|
+
# @param injector [Injector] The injector where the lookup originates
|
|
211
|
+
# @param binding [Bindings::Binding, nil] The binding using this producer
|
|
209
212
|
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
|
210
|
-
# @option options [
|
|
213
|
+
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
|
211
214
|
# @option options [String] :class_name The name of the class to create instance of
|
|
212
215
|
# @option options [Array<Object>] :init_args ([]) Optional arguments to class constructor
|
|
213
216
|
# @api public
|
|
@@ -220,7 +223,7 @@ module Puppet::Pops::Binder::Producers
|
|
|
220
223
|
class_name = options[:class_name]
|
|
221
224
|
raise ArgumentError, "Option 'class_name' must be given for an InstantiatingProducer" unless class_name
|
|
222
225
|
# get class by name
|
|
223
|
-
@the_class =
|
|
226
|
+
@the_class = Types::ClassLoader.provide(class_name)
|
|
224
227
|
@init_args = options[:init_args] || []
|
|
225
228
|
raise ArgumentError, "Can not load the class #{class_name} specified in binding named: '#{binding.name}'" unless @the_class
|
|
226
229
|
end
|
|
@@ -255,11 +258,11 @@ module Puppet::Pops::Binder::Producers
|
|
|
255
258
|
# @api public
|
|
256
259
|
attr_reader :producers
|
|
257
260
|
|
|
258
|
-
# @param injector [
|
|
259
|
-
# @param binding [
|
|
261
|
+
# @param injector [Injector] The injector where the lookup originates
|
|
262
|
+
# @param binding [Bindings::Binding, nil] The binding using this producer
|
|
260
263
|
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
|
261
|
-
# @option options [
|
|
262
|
-
# @option options [Array<
|
|
264
|
+
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
|
265
|
+
# @option options [Array<Producers::Producer>] :producers list of producers to consult. Required.
|
|
263
266
|
# @api public
|
|
264
267
|
#
|
|
265
268
|
def initialize(injector, binding, scope, options)
|
|
@@ -288,11 +291,11 @@ module Puppet::Pops::Binder::Producers
|
|
|
288
291
|
#
|
|
289
292
|
attr_reader :expression
|
|
290
293
|
|
|
291
|
-
# @param injector [
|
|
292
|
-
# @param binding [
|
|
294
|
+
# @param injector [Injector] The injector where the lookup originates
|
|
295
|
+
# @param binding [Bindings::Binding, nil] The binding using this producer
|
|
293
296
|
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
|
294
|
-
# @option options [
|
|
295
|
-
# @option options [Array<
|
|
297
|
+
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
|
298
|
+
# @option options [Array<Model::Expression>] :expression The expression to evaluate
|
|
296
299
|
# @api public
|
|
297
300
|
#
|
|
298
301
|
def initialize(injector, binding, scope, options)
|
|
@@ -303,7 +306,7 @@ module Puppet::Pops::Binder::Producers
|
|
|
303
306
|
|
|
304
307
|
# @api private
|
|
305
308
|
def internal_produce(scope)
|
|
306
|
-
|
|
309
|
+
Parser::EvaluatingParser.new.evaluate(scope, expression)
|
|
307
310
|
end
|
|
308
311
|
end
|
|
309
312
|
|
|
@@ -316,11 +319,11 @@ module Puppet::Pops::Binder::Producers
|
|
|
316
319
|
# @api public
|
|
317
320
|
attr_reader :name
|
|
318
321
|
|
|
319
|
-
# @param injector [
|
|
320
|
-
# @param binder [
|
|
322
|
+
# @param injector [Injector] The injector where the lookup originates
|
|
323
|
+
# @param binder [Bindings::Binding, nil] The binding using this producer
|
|
321
324
|
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
|
322
|
-
# @option options [
|
|
323
|
-
# @option options [
|
|
325
|
+
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
|
326
|
+
# @option options [Types::PAnyType] :type The type to lookup
|
|
324
327
|
# @option options [String] :name ('') The name to lookup
|
|
325
328
|
# @api public
|
|
326
329
|
#
|
|
@@ -345,13 +348,13 @@ module Puppet::Pops::Binder::Producers
|
|
|
345
348
|
# @api public
|
|
346
349
|
attr_reader :key
|
|
347
350
|
|
|
348
|
-
# @param injector [
|
|
349
|
-
# @param binder [
|
|
351
|
+
# @param injector [Injector] The injector where the lookup originates
|
|
352
|
+
# @param binder [Bindings::Binding, nil] The binding using this producer
|
|
350
353
|
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
|
351
|
-
# @option options [
|
|
352
|
-
# @option options [
|
|
354
|
+
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
|
355
|
+
# @option options [Types::PAnyType] :type The type to lookup
|
|
353
356
|
# @option options [String] :name ('') The name to lookup
|
|
354
|
-
# @option options [
|
|
357
|
+
# @option options [Types::PAnyType] :key The key to lookup in the hash
|
|
355
358
|
# @api public
|
|
356
359
|
#
|
|
357
360
|
def initialize(injector, binder, scope, options)
|
|
@@ -379,11 +382,11 @@ module Puppet::Pops::Binder::Producers
|
|
|
379
382
|
# @api public
|
|
380
383
|
attr_reader :value_producer
|
|
381
384
|
|
|
382
|
-
# @param injector [
|
|
383
|
-
# @param binding [
|
|
385
|
+
# @param injector [Injector] The injector where the lookup originates
|
|
386
|
+
# @param binding [Bindings::Binding, nil] The binding using this producer
|
|
384
387
|
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
|
385
|
-
# @option options [
|
|
386
|
-
# @option options [
|
|
388
|
+
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
|
389
|
+
# @option options [Model::LambdaExpression] :producer_producer a producer of a value producer (required)
|
|
387
390
|
# @api public
|
|
388
391
|
#
|
|
389
392
|
def initialize(injector, binding, scope, options)
|
|
@@ -420,11 +423,11 @@ module Puppet::Pops::Binder::Producers
|
|
|
420
423
|
|
|
421
424
|
# Creates new ProducerProducer given a producer.
|
|
422
425
|
#
|
|
423
|
-
# @param injector [
|
|
424
|
-
# @param binding [
|
|
426
|
+
# @param injector [Injector] The injector where the lookup originates
|
|
427
|
+
# @param binding [Bindings::Binding, nil] The binding using this producer
|
|
425
428
|
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
|
426
|
-
# @option options [
|
|
427
|
-
# @option options [
|
|
429
|
+
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
|
430
|
+
# @option options [Producer] :producer_producer a producer of a value producer (required)
|
|
428
431
|
#
|
|
429
432
|
# @api public
|
|
430
433
|
#
|
|
@@ -512,10 +515,10 @@ module Puppet::Pops::Binder::Producers
|
|
|
512
515
|
class MultibindProducer < AbstractArgumentedProducer
|
|
513
516
|
attr_reader :contributions_key
|
|
514
517
|
|
|
515
|
-
# @param injector [
|
|
516
|
-
# @param binding [
|
|
518
|
+
# @param injector [Injector] The injector where the lookup originates
|
|
519
|
+
# @param binding [Bindings::Binding, nil] The binding using this producer
|
|
517
520
|
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
|
518
|
-
# @option options [
|
|
521
|
+
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
|
519
522
|
#
|
|
520
523
|
# @api public
|
|
521
524
|
#
|
|
@@ -524,8 +527,8 @@ module Puppet::Pops::Binder::Producers
|
|
|
524
527
|
@contributions_key = injector.key_factory.multibind_contributions(binding.id)
|
|
525
528
|
end
|
|
526
529
|
|
|
527
|
-
# @param expected [Array<
|
|
528
|
-
# @param actual [Object,
|
|
530
|
+
# @param expected [Array<Types::PAnyType>, Types::PAnyType] expected type or types
|
|
531
|
+
# @param actual [Object, Types::PAnyType> the actual value (or its type)
|
|
529
532
|
# @return [String] a formatted string for inclusion as detail in an error message
|
|
530
533
|
# @api private
|
|
531
534
|
#
|
|
@@ -533,8 +536,8 @@ module Puppet::Pops::Binder::Producers
|
|
|
533
536
|
tc = injector.type_calculator
|
|
534
537
|
expected = [expected] unless expected.is_a?(Array)
|
|
535
538
|
actual_t = tc.is_ptype?(actual) ? actual : tc.infer(actual)
|
|
536
|
-
expstrs = expected.collect {|t|
|
|
537
|
-
"expected: #{expstrs.join(', or ')}, got: #{
|
|
539
|
+
expstrs = expected.collect {|t| t.to_s }
|
|
540
|
+
"expected: #{expstrs.join(', or ')}, got: #{actual_t}"
|
|
538
541
|
end
|
|
539
542
|
end
|
|
540
543
|
|
|
@@ -578,10 +581,10 @@ module Puppet::Pops::Binder::Producers
|
|
|
578
581
|
# @api public
|
|
579
582
|
attr_reader :priority_on_unnamed
|
|
580
583
|
|
|
581
|
-
# @param injector [
|
|
582
|
-
# @param binding [
|
|
584
|
+
# @param injector [Injector] The injector where the lookup originates
|
|
585
|
+
# @param binding [Bindings::Binding, nil] The binding using this producer
|
|
583
586
|
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
|
584
|
-
# @option options [
|
|
587
|
+
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
|
585
588
|
# @option options [Boolean] :uniq (false) if collected result should be post-processed to contain only unique entries
|
|
586
589
|
# @option options [Boolean, Integer] :flatten (false) if collected result should be post-processed so all contained arrays
|
|
587
590
|
# are flattened. May be set to an Integer value to indicate the level of recursion (-1 is endless, 0 is none).
|
|
@@ -680,10 +683,10 @@ module Puppet::Pops::Binder::Producers
|
|
|
680
683
|
# By default, the hash is produced using `:priority` resolution - the highest entry is selected, the rest are
|
|
681
684
|
# ignored unless they have the same priority which is an error.
|
|
682
685
|
#
|
|
683
|
-
# @param injector [
|
|
684
|
-
# @param binding [
|
|
686
|
+
# @param injector [Injector] The injector where the lookup originates
|
|
687
|
+
# @param binding [Bindings::Binding, nil] The binding using this producer
|
|
685
688
|
# @param scope [Puppet::Parser::Scope] The scope to use for evaluation
|
|
686
|
-
# @option options [
|
|
689
|
+
# @option options [Model::LambdaExpression] :transformer (nil) a transformer of produced value
|
|
687
690
|
# @option options [Symbol, String] :conflict_resolution (:priority) One of `:error`, `:merge`, `:append`, `:priority`, `:ignore`
|
|
688
691
|
# <ul><li> `ignore` the first found highest priority contribution is used, the rest are ignored</li>
|
|
689
692
|
# <li>`error` any duplicate key is an error</li>
|
|
@@ -720,13 +723,13 @@ module Puppet::Pops::Binder::Producers
|
|
|
720
723
|
|
|
721
724
|
if uniq || flatten || conflict_resolution.to_s == 'append'
|
|
722
725
|
etype = binding.type.element_type
|
|
723
|
-
unless etype.class ==
|
|
726
|
+
unless etype.class == Types::PDataType || etype.is_a?(Types::PArrayType)
|
|
724
727
|
detail = []
|
|
725
728
|
detail << ":uniq" if uniq
|
|
726
729
|
detail << ":flatten" if flatten
|
|
727
730
|
detail << ":conflict_resolution => :append" if conflict_resolution.to_s == 'append'
|
|
728
731
|
raise ArgumentError, ["Options #{detail.join(', and ')} cannot be used with a Multibind ",
|
|
729
|
-
"of type #{
|
|
732
|
+
"of type #{binding.type}"].join()
|
|
730
733
|
end
|
|
731
734
|
end
|
|
732
735
|
end
|
|
@@ -824,3 +827,5 @@ module Puppet::Pops::Binder::Producers
|
|
|
824
827
|
end
|
|
825
828
|
|
|
826
829
|
end
|
|
830
|
+
end
|
|
831
|
+
end
|