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
|
@@ -156,7 +156,7 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
|
|
|
156
156
|
if $SAFE > 0
|
|
157
157
|
tmp = @@systmpdir
|
|
158
158
|
else
|
|
159
|
-
for dir in [
|
|
159
|
+
for dir in [ Puppet::Util.get_env('TMPDIR'), Puppet::Util.get_env('TMP'), Puppet::Util.get_env('TEMP'), @@systmpdir, '/tmp']
|
|
160
160
|
if dir and stat = File.stat(dir) and stat.directory? and stat.writable?
|
|
161
161
|
tmp = dir
|
|
162
162
|
break
|
data/lib/puppet/file_system.rb
CHANGED
|
@@ -122,8 +122,8 @@ module Puppet::FileSystem
|
|
|
122
122
|
#
|
|
123
123
|
# @api public
|
|
124
124
|
#
|
|
125
|
-
def self.read(path)
|
|
126
|
-
@impl.read(assert_path(path))
|
|
125
|
+
def self.read(path, opts = {})
|
|
126
|
+
@impl.read(assert_path(path), opts)
|
|
127
127
|
end
|
|
128
128
|
|
|
129
129
|
# Read a file keeping the original line endings intact. This
|
|
@@ -90,7 +90,7 @@ class Puppet::Forge
|
|
|
90
90
|
# @raise [Puppet::Forge::Errors::SSLVerifyError] if there is a problem
|
|
91
91
|
# verifying the remote SSL certificate
|
|
92
92
|
def read_response(request, io = nil)
|
|
93
|
-
http_object = get_http_object
|
|
93
|
+
http_object = Puppet::Util::HttpProxy.get_http_object(uri)
|
|
94
94
|
|
|
95
95
|
http_object.start do |http|
|
|
96
96
|
response = http.request(request)
|
|
@@ -121,36 +121,6 @@ class Puppet::Forge
|
|
|
121
121
|
end
|
|
122
122
|
end
|
|
123
123
|
|
|
124
|
-
# Return a Net::HTTP::Proxy object constructed from the settings provided
|
|
125
|
-
# accessing the repository.
|
|
126
|
-
#
|
|
127
|
-
# This method optionally configures SSL correctly if the URI scheme is
|
|
128
|
-
# 'https', including setting up the root certificate store so remote server
|
|
129
|
-
# SSL certificates can be validated.
|
|
130
|
-
#
|
|
131
|
-
# @return [Net::HTTP::Proxy] object constructed from repo settings
|
|
132
|
-
def get_http_object
|
|
133
|
-
proxy = Puppet::Util::HttpProxy.proxy(@uri)
|
|
134
|
-
|
|
135
|
-
if @uri.scheme == 'https'
|
|
136
|
-
cert_store = OpenSSL::X509::Store.new
|
|
137
|
-
cert_store.set_default_paths
|
|
138
|
-
|
|
139
|
-
proxy.use_ssl = true
|
|
140
|
-
proxy.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
|
141
|
-
proxy.cert_store = cert_store
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
if Puppet[:http_debug]
|
|
145
|
-
proxy.set_debug_output($stderr)
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
proxy.open_timeout = Puppet[:http_connect_timeout]
|
|
149
|
-
proxy.read_timeout = Puppet[:http_read_timeout]
|
|
150
|
-
|
|
151
|
-
proxy
|
|
152
|
-
end
|
|
153
|
-
|
|
154
124
|
# Return the local file name containing the data downloaded from the
|
|
155
125
|
# repository at +release+ (e.g. "myuser-mymodule").
|
|
156
126
|
def retrieve(release)
|
data/lib/puppet/forge.rb
CHANGED
|
@@ -38,7 +38,7 @@ class Puppet::Forge < Semantic::Dependency::Source
|
|
|
38
38
|
# "releases" => [{"version"=>"0.0.1"}, {"version"=>"0.0.2"}],
|
|
39
39
|
# "full_name" => "puppetlabs/bacula",
|
|
40
40
|
# "version" => "0.0.2",
|
|
41
|
-
# "project_url" => "
|
|
41
|
+
# "project_url" => "https://github.com/puppetlabs/puppetlabs-bacula",
|
|
42
42
|
# "desc" => "bacula"
|
|
43
43
|
# }
|
|
44
44
|
# ]
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
#
|
|
51
51
|
# @since 4.0.0
|
|
52
52
|
#
|
|
53
|
-
Puppet::Functions.create_function(:assert_type) do
|
|
53
|
+
Puppet::Functions.create_function(:assert_type, Puppet::Functions::InternalFunction) do
|
|
54
54
|
dispatch :assert_type do
|
|
55
55
|
param 'Type', :type
|
|
56
56
|
param 'Any', :value
|
|
@@ -58,6 +58,7 @@ Puppet::Functions.create_function(:assert_type) do
|
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
dispatch :assert_type_s do
|
|
61
|
+
scope_param
|
|
61
62
|
param 'String', :type_string
|
|
62
63
|
param 'Any', :value
|
|
63
64
|
optional_block_param 'Callable[Type, Type]', :block
|
|
@@ -70,26 +71,25 @@ Puppet::Functions.create_function(:assert_type) do
|
|
|
70
71
|
unless Puppet::Pops::Types::TypeCalculator.instance?(type,value)
|
|
71
72
|
inferred_type = Puppet::Pops::Types::TypeCalculator.infer(value)
|
|
72
73
|
if block_given?
|
|
73
|
-
# Give the inferred type to allow richer
|
|
74
|
+
# Give the inferred type to allow richer comparison in the given block (if generalized
|
|
74
75
|
# information is lost).
|
|
75
76
|
#
|
|
76
77
|
value = yield(type, inferred_type)
|
|
77
78
|
else
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
actual = Puppet::Pops::Types::TypeCalculator.generalize(inferred_type)
|
|
82
|
-
raise Puppet::Pops::Types::TypeAssertionError.new("assert_type(): Expected type #{type} does not match actual: #{actual}", type,actual)
|
|
79
|
+
raise Puppet::Pops::Types::TypeAssertionError.new(
|
|
80
|
+
Puppet::Pops::Types::TypeMismatchDescriber.singleton.describe_mismatch('assert_type():', type, inferred_type),
|
|
81
|
+
type, inferred_type)
|
|
83
82
|
end
|
|
84
83
|
end
|
|
85
84
|
value
|
|
86
85
|
end
|
|
87
86
|
|
|
87
|
+
# @param scope [Puppet::Parser::Scope] scope used when obtaining loader for defined types
|
|
88
88
|
# @param type_string [String] the type the value must be an instance of given in String form
|
|
89
89
|
# @param value [Object] the value to assert
|
|
90
90
|
#
|
|
91
|
-
def assert_type_s(type_string, value, &proc)
|
|
92
|
-
t = Puppet::Pops::Types::TypeParser.new.parse(type_string)
|
|
91
|
+
def assert_type_s(scope, type_string, value, &proc)
|
|
92
|
+
t = Puppet::Pops::Types::TypeParser.new.parse(type_string, scope)
|
|
93
93
|
block_given? ? assert_type(t, value, &proc) : assert_type(t, value)
|
|
94
94
|
end
|
|
95
95
|
end
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
#
|
|
4
4
|
# This function takes two mandatory arguments, in this order:
|
|
5
5
|
#
|
|
6
|
-
# 1. An array or
|
|
6
|
+
# 1. An array, hash, or other iterable object that the function will iterate over.
|
|
7
7
|
# 2. A lambda, which the function calls for each element in the first argument. It can
|
|
8
8
|
# request one or two parameters.
|
|
9
9
|
#
|
|
@@ -106,12 +106,12 @@ Puppet::Functions.create_function(:each) do
|
|
|
106
106
|
end
|
|
107
107
|
|
|
108
108
|
dispatch :foreach_Enumerable_2 do
|
|
109
|
-
param '
|
|
109
|
+
param 'Iterable', :enumerable
|
|
110
110
|
block_param 'Callable[2,2]', :block
|
|
111
111
|
end
|
|
112
112
|
|
|
113
113
|
dispatch :foreach_Enumerable_1 do
|
|
114
|
-
param '
|
|
114
|
+
param 'Iterable', :enumerable
|
|
115
115
|
block_param 'Callable[1,1]', :block
|
|
116
116
|
end
|
|
117
117
|
|
|
@@ -134,7 +134,7 @@ Puppet::Functions.create_function(:each) do
|
|
|
134
134
|
end
|
|
135
135
|
|
|
136
136
|
def foreach_Enumerable_1(enumerable)
|
|
137
|
-
enum =
|
|
137
|
+
enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
|
|
138
138
|
begin
|
|
139
139
|
loop { yield(enum.next) }
|
|
140
140
|
rescue StopIteration
|
|
@@ -144,7 +144,7 @@ Puppet::Functions.create_function(:each) do
|
|
|
144
144
|
end
|
|
145
145
|
|
|
146
146
|
def foreach_Enumerable_2(enumerable)
|
|
147
|
-
enum =
|
|
147
|
+
enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
|
|
148
148
|
index = 0
|
|
149
149
|
begin
|
|
150
150
|
loop do
|
|
@@ -156,12 +156,4 @@ Puppet::Functions.create_function(:each) do
|
|
|
156
156
|
# produces the receiver
|
|
157
157
|
enumerable
|
|
158
158
|
end
|
|
159
|
-
|
|
160
|
-
def asserted_enumerable(obj)
|
|
161
|
-
unless enum = Puppet::Pops::Types::Enumeration.enumerator(obj)
|
|
162
|
-
raise ArgumentError, ("#{self.class.name}(): wrong argument type (#{obj.class}; must be something enumerable.")
|
|
163
|
-
end
|
|
164
|
-
enum
|
|
165
|
-
end
|
|
166
|
-
|
|
167
159
|
end
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
#
|
|
5
5
|
# This function takes two mandatory arguments, in this order:
|
|
6
6
|
#
|
|
7
|
-
# 1. An array or
|
|
7
|
+
# 1. An array, hash, or other iterable object that the function will iterate over.
|
|
8
8
|
# 2. A lambda, which the function calls for each element in the first argument. It can
|
|
9
9
|
# request one or two parameters.
|
|
10
10
|
#
|
|
@@ -80,12 +80,12 @@ Puppet::Functions.create_function(:filter) do
|
|
|
80
80
|
end
|
|
81
81
|
|
|
82
82
|
dispatch :filter_Enumerable_2 do
|
|
83
|
-
param '
|
|
83
|
+
param 'Iterable', :enumerable
|
|
84
84
|
block_param 'Callable[2,2]', :block
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
dispatch :filter_Enumerable_1 do
|
|
88
|
-
param '
|
|
88
|
+
param 'Iterable', :enumerable
|
|
89
89
|
block_param 'Callable[1,1]', :block
|
|
90
90
|
end
|
|
91
91
|
|
|
@@ -105,8 +105,7 @@ Puppet::Functions.create_function(:filter) do
|
|
|
105
105
|
|
|
106
106
|
def filter_Enumerable_1(enumerable)
|
|
107
107
|
result = []
|
|
108
|
-
|
|
109
|
-
enum = asserted_enumerable(enumerable)
|
|
108
|
+
enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
|
|
110
109
|
begin
|
|
111
110
|
loop do
|
|
112
111
|
it = enum.next
|
|
@@ -122,7 +121,7 @@ Puppet::Functions.create_function(:filter) do
|
|
|
122
121
|
def filter_Enumerable_2(enumerable)
|
|
123
122
|
result = []
|
|
124
123
|
index = 0
|
|
125
|
-
enum =
|
|
124
|
+
enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
|
|
126
125
|
begin
|
|
127
126
|
loop do
|
|
128
127
|
it = enum.next
|
|
@@ -135,12 +134,4 @@ Puppet::Functions.create_function(:filter) do
|
|
|
135
134
|
end
|
|
136
135
|
result
|
|
137
136
|
end
|
|
138
|
-
|
|
139
|
-
def asserted_enumerable(obj)
|
|
140
|
-
unless enum = Puppet::Pops::Types::Enumeration.enumerator(obj)
|
|
141
|
-
raise ArgumentError, ("#{self.class.name}(): wrong argument type (#{obj.class}; must be something enumerable.")
|
|
142
|
-
end
|
|
143
|
-
enum
|
|
144
|
-
end
|
|
145
|
-
|
|
146
137
|
end
|
|
@@ -1,153 +1,129 @@
|
|
|
1
|
-
#
|
|
2
|
-
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
#
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
#
|
|
19
|
-
#
|
|
20
|
-
# lookup
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
#
|
|
27
|
-
#
|
|
28
|
-
#
|
|
29
|
-
#
|
|
30
|
-
#
|
|
31
|
-
#
|
|
32
|
-
#
|
|
33
|
-
#
|
|
34
|
-
#
|
|
35
|
-
#
|
|
36
|
-
#
|
|
37
|
-
#
|
|
38
|
-
#
|
|
39
|
-
#
|
|
40
|
-
#
|
|
41
|
-
#
|
|
42
|
-
#
|
|
43
|
-
#
|
|
44
|
-
#
|
|
45
|
-
#
|
|
46
|
-
#
|
|
47
|
-
#
|
|
48
|
-
#
|
|
49
|
-
# `
|
|
50
|
-
#
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
#
|
|
54
|
-
#
|
|
55
|
-
#
|
|
56
|
-
#
|
|
57
|
-
#
|
|
58
|
-
#
|
|
59
|
-
#
|
|
60
|
-
#
|
|
61
|
-
#
|
|
62
|
-
#
|
|
63
|
-
#
|
|
64
|
-
#
|
|
65
|
-
#
|
|
66
|
-
#
|
|
67
|
-
#
|
|
68
|
-
#
|
|
69
|
-
#
|
|
70
|
-
#
|
|
71
|
-
#
|
|
72
|
-
#
|
|
73
|
-
#
|
|
74
|
-
#
|
|
75
|
-
#
|
|
76
|
-
#
|
|
77
|
-
#
|
|
78
|
-
#
|
|
79
|
-
#
|
|
80
|
-
#
|
|
81
|
-
#
|
|
82
|
-
#
|
|
83
|
-
#
|
|
84
|
-
#
|
|
85
|
-
#
|
|
86
|
-
#
|
|
87
|
-
#
|
|
88
|
-
#
|
|
89
|
-
#
|
|
90
|
-
#
|
|
91
|
-
#
|
|
92
|
-
#
|
|
93
|
-
#
|
|
94
|
-
#
|
|
95
|
-
#
|
|
96
|
-
#
|
|
97
|
-
#
|
|
98
|
-
#
|
|
99
|
-
#
|
|
100
|
-
#
|
|
101
|
-
#
|
|
102
|
-
#
|
|
103
|
-
#
|
|
104
|
-
#
|
|
105
|
-
#
|
|
106
|
-
#
|
|
107
|
-
#
|
|
108
|
-
#
|
|
109
|
-
#
|
|
110
|
-
#
|
|
111
|
-
#
|
|
112
|
-
#
|
|
113
|
-
#
|
|
114
|
-
#
|
|
115
|
-
#
|
|
116
|
-
#
|
|
117
|
-
#
|
|
118
|
-
#
|
|
119
|
-
#
|
|
120
|
-
#
|
|
121
|
-
#
|
|
122
|
-
#
|
|
123
|
-
#
|
|
124
|
-
#
|
|
125
|
-
#
|
|
126
|
-
#
|
|
127
|
-
# lookup('the_name', Array[String], 'unique', [Fred])
|
|
128
|
-
#
|
|
129
|
-
# Using a lambda to provide a default value by calling a function:
|
|
130
|
-
#
|
|
131
|
-
# lookup('the_size', Integer[1,100]) |$name| {
|
|
132
|
-
# obtain_size_default()
|
|
133
|
-
# }
|
|
134
|
-
#
|
|
135
|
-
# There are two ways to make lookup return undef when no matching key was found instead of raising an error.
|
|
136
|
-
# Either call it with four arguments (the `merge` argument must be present even when using the default strategy
|
|
137
|
-
# to ensure that the four argument variant is used):
|
|
138
|
-
#
|
|
139
|
-
# $are_you_there = lookup('peekaboo', Optional[String], undef, undef)
|
|
140
|
-
#
|
|
141
|
-
# or call it using an options hash:
|
|
142
|
-
#
|
|
143
|
-
# $are_you_there = lookup('peekaboo', { 'default_value' => undef })
|
|
144
|
-
# $are_you_there = lookup({ 'name' => 'peekaboo', 'default_value' => undef })
|
|
145
|
-
#
|
|
146
|
-
# or with a block that produces an undef value:
|
|
147
|
-
#
|
|
148
|
-
# $are_you_there = lookup('peekaboo', Optional[String]) |$name| { undef }
|
|
149
|
-
#
|
|
150
|
-
# - Since 4.0.0
|
|
1
|
+
# Uses the Puppet lookup system to retrieve a value for a given key. By default,
|
|
2
|
+
# this returns the first value found (and fails compilation if no values are
|
|
3
|
+
# available), but you can configure it to merge multiple values into one, fail
|
|
4
|
+
# gracefully, and more.
|
|
5
|
+
#
|
|
6
|
+
# When looking up a key, Puppet will search up to three tiers of data, in the
|
|
7
|
+
# following order:
|
|
8
|
+
#
|
|
9
|
+
# 1. Hiera.
|
|
10
|
+
# 2. The current environment's data provider.
|
|
11
|
+
# 3. The indicated module's data provider, if the key is of the form
|
|
12
|
+
# `<MODULE NAME>::<SOMETHING>`.
|
|
13
|
+
#
|
|
14
|
+
# #### Arguments
|
|
15
|
+
#
|
|
16
|
+
# You must provide the name of a key to look up, and can optionally provide other
|
|
17
|
+
# arguments. You can combine these arguments in the following ways:
|
|
18
|
+
#
|
|
19
|
+
# * `lookup( <NAME>, [<VALUE TYPE>], [<MERGE BEHAVIOR>], [<DEFAULT VALUE>] )`
|
|
20
|
+
# * `lookup( [<NAME>], <OPTIONS HASH> )`
|
|
21
|
+
# * `lookup( as above ) |$key| { # lambda returns a default value }`
|
|
22
|
+
#
|
|
23
|
+
# Arguments in `[square brackets]` are optional.
|
|
24
|
+
#
|
|
25
|
+
# The arguments accepted by `lookup` are as follows:
|
|
26
|
+
#
|
|
27
|
+
# 1. `<NAME>` (string or array) --- The name of the key to look up.
|
|
28
|
+
# * This can also be an array of keys. If Puppet doesn't find anything for the
|
|
29
|
+
# first key, it will try again with the subsequent ones, only resorting to a
|
|
30
|
+
# default value if none of them succeed.
|
|
31
|
+
# 2. `<VALUE TYPE>` (data type) --- A
|
|
32
|
+
# [data type](https://docs.puppetlabs.com/puppet/latest/reference/lang_data_type.html)
|
|
33
|
+
# that must match the retrieved value; if not, the lookup (and catalog
|
|
34
|
+
# compilation) will fail. Defaults to `Data` (accepts any normal value).
|
|
35
|
+
# 3. `<MERGE BEHAVIOR>` (string or hash; see **"Merge Behaviors"** below) ---
|
|
36
|
+
# Whether (and how) to combine multiple values. If present, this overrides any
|
|
37
|
+
# merge behavior specified in the data sources. Defaults to no value; Puppet will
|
|
38
|
+
# use merge behavior from the data sources if present, and will otherwise do a
|
|
39
|
+
# first-found lookup.
|
|
40
|
+
# 4. `<DEFAULT VALUE>` (any normal value) --- If present, `lookup` returns this
|
|
41
|
+
# when it can't find a normal value. Default values are never merged with found
|
|
42
|
+
# values. Like a normal value, the default must match the value type. Defaults to
|
|
43
|
+
# no value; if Puppet can't find a normal value, the lookup (and compilation) will
|
|
44
|
+
# fail.
|
|
45
|
+
# 5. `<OPTIONS HASH>` (hash) --- Alternate way to set the arguments above, plus
|
|
46
|
+
# some less-common extra options. If you pass an options hash, you can't combine
|
|
47
|
+
# it with any regular arguments (except `<NAME>`). An options hash can have the
|
|
48
|
+
# following keys:
|
|
49
|
+
# * `'name'` --- Same as `<NAME>` (argument 1). You can pass this as an
|
|
50
|
+
# argument or in the hash, but not both.
|
|
51
|
+
# * `'value_type'` --- Same as `<VALUE TYPE>` (argument 2).
|
|
52
|
+
# * `'merge'` --- Same as `<MERGE BEHAVIOR>` (argument 3).
|
|
53
|
+
# * `'default_value'` --- Same as `<DEFAULT VALUE>` (argument 4).
|
|
54
|
+
# * `'default_values_hash'` (hash) --- A hash of lookup keys and default
|
|
55
|
+
# values. If Puppet can't find a normal value, it will check this hash for the
|
|
56
|
+
# requested key before giving up. You can combine this with `default_value` or
|
|
57
|
+
# a lambda, which will be used if the key isn't present in this hash. Defaults
|
|
58
|
+
# to an empty hash.
|
|
59
|
+
# * `'override'` (hash) --- A hash of lookup keys and override values. Puppet
|
|
60
|
+
# will check for the requested key in the overrides hash _first;_ if found, it
|
|
61
|
+
# returns that value as the _final_ value, ignoring merge behavior. Defaults
|
|
62
|
+
# to an empty hash.
|
|
63
|
+
#
|
|
64
|
+
# Finally, `lookup` can take a lambda, which must accept a single parameter.
|
|
65
|
+
# This is yet another way to set a default value for the lookup; if no results are
|
|
66
|
+
# found, Puppet will pass the requested key to the lambda and use its result as
|
|
67
|
+
# the default value.
|
|
68
|
+
#
|
|
69
|
+
# #### Merge Behaviors
|
|
70
|
+
#
|
|
71
|
+
# Puppet lookup uses a hierarchy of data sources, and a given key might have
|
|
72
|
+
# values in multiple sources. By default, Puppet returns the first value it finds,
|
|
73
|
+
# but it can also continue searching and merge all the values together.
|
|
74
|
+
#
|
|
75
|
+
# > **Note:** Data sources can use the special `lookup_options` metadata key to
|
|
76
|
+
# request a specific merge behavior for a key. The `lookup` function will use that
|
|
77
|
+
# requested behavior unless you explicitly specify one.
|
|
78
|
+
#
|
|
79
|
+
# The valid merge behaviors are:
|
|
80
|
+
#
|
|
81
|
+
# * `'first'` --- Returns the first value found, with no merging. Puppet lookup's
|
|
82
|
+
# default behavior.
|
|
83
|
+
# * `'unique'` (called "array merge" in classic Hiera) --- Combines any number of
|
|
84
|
+
# arrays and scalar values to return a merged, flattened array with all duplicate
|
|
85
|
+
# values removed. The lookup will fail if any hash values are found.
|
|
86
|
+
# * `'hash'` --- Combines the keys and values of any number of hashes to return a
|
|
87
|
+
# merged hash. If the same key exists in multiple source hashes, Puppet will use
|
|
88
|
+
# the value from the highest-priority data source; it won't recursively merge the
|
|
89
|
+
# values.
|
|
90
|
+
# * `'deep'` --- Combines the keys and values of any number of hashes to return a
|
|
91
|
+
# merged hash. If the same key exists in multiple source hashes, Puppet will
|
|
92
|
+
# recursively merge hash or array values (with duplicate values removed from
|
|
93
|
+
# arrays). For conflicting scalar values, the highest-priority value will win.
|
|
94
|
+
# * `{'strategy' => 'first|unique|hash'}` --- Same as the string versions of these
|
|
95
|
+
# merge behaviors.
|
|
96
|
+
# * `{'strategy' => 'deep', <DEEP OPTION> => <VALUE>, ...}` --- Same as `'deep'`,
|
|
97
|
+
# but can adjust the merge with additional options. The available options are:
|
|
98
|
+
# * `'knockout_prefix'` (string or undef) --- A string prefix to indicate a
|
|
99
|
+
# value should be _removed_ from the final result. Defaults to `undef`, which
|
|
100
|
+
# disables this feature.
|
|
101
|
+
# * `'sort_merged_arrays'` (boolean) --- Whether to sort all arrays that are
|
|
102
|
+
# merged together. Defaults to `false`.
|
|
103
|
+
# * `'unpack_arrays'` (string or undef) --- A delimiter string; Puppet will
|
|
104
|
+
# join merged arrays with this delimiter, then split them again. Defaults to
|
|
105
|
+
# `undef`, which disables this feature.
|
|
106
|
+
# * `'merge_hash_arrays'` (boolean) --- Whether to merge hashes within arrays.
|
|
107
|
+
# Defaults to `false`.
|
|
108
|
+
#
|
|
109
|
+
# @example Look up a key and return the first value found
|
|
110
|
+
#
|
|
111
|
+
# lookup('ntp::service_name')
|
|
112
|
+
#
|
|
113
|
+
# @example Do a unique merge lookup of class names, then add all of those classes to the catalog (like `hiera_include`)
|
|
114
|
+
#
|
|
115
|
+
# lookup('classes', Array[String], 'unique').include
|
|
116
|
+
#
|
|
117
|
+
# @example Do a deep hash merge lookup of user data, but let higher priority sources remove values by prefixing them with `--`
|
|
118
|
+
#
|
|
119
|
+
# lookup( { 'name' => 'users',
|
|
120
|
+
# 'merge' => {
|
|
121
|
+
# 'strategy' => 'deep',
|
|
122
|
+
# 'knockout_prefix' => '--',
|
|
123
|
+
# },
|
|
124
|
+
# })
|
|
125
|
+
#
|
|
126
|
+
# @since 4.0.0
|
|
151
127
|
Puppet::Functions.create_function(:lookup, Puppet::Functions::InternalFunction) do
|
|
152
128
|
name_t = 'Variant[String,Array[String]]'
|
|
153
129
|
value_type_t = 'Type'
|
data/lib/puppet/functions/map.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
# Applies a [lambda](
|
|
1
|
+
# Applies a [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html)
|
|
2
2
|
# to every value in a data structure and returns an array containing the results.
|
|
3
3
|
#
|
|
4
4
|
# This function takes two mandatory arguments, in this order:
|
|
5
5
|
#
|
|
6
|
-
# 1. An array or
|
|
6
|
+
# 1. An array, hash, or other iterable object that the function will iterate over.
|
|
7
7
|
# 2. A lambda, which the function calls for each element in the first argument. It can
|
|
8
8
|
# request one or two parameters.
|
|
9
9
|
#
|
|
@@ -78,12 +78,12 @@ Puppet::Functions.create_function(:map) do
|
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
dispatch :map_Enumerable_2 do
|
|
81
|
-
param '
|
|
81
|
+
param 'Iterable', :enumerable
|
|
82
82
|
block_param 'Callable[2,2]', :block
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
dispatch :map_Enumerable_1 do
|
|
86
|
-
param '
|
|
86
|
+
param 'Iterable', :enumerable
|
|
87
87
|
block_param 'Callable[1,1]', :block
|
|
88
88
|
end
|
|
89
89
|
|
|
@@ -98,7 +98,7 @@ Puppet::Functions.create_function(:map) do
|
|
|
98
98
|
def map_Enumerable_1(enumerable)
|
|
99
99
|
result = []
|
|
100
100
|
index = 0
|
|
101
|
-
enum =
|
|
101
|
+
enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
|
|
102
102
|
begin
|
|
103
103
|
loop { result << yield(enum.next) }
|
|
104
104
|
rescue StopIteration
|
|
@@ -109,7 +109,7 @@ Puppet::Functions.create_function(:map) do
|
|
|
109
109
|
def map_Enumerable_2(enumerable)
|
|
110
110
|
result = []
|
|
111
111
|
index = 0
|
|
112
|
-
enum =
|
|
112
|
+
enum = Puppet::Pops::Types::Iterable.asserted_iterable(self, enumerable)
|
|
113
113
|
begin
|
|
114
114
|
loop do
|
|
115
115
|
result << yield(index, enum.next)
|
|
@@ -119,12 +119,4 @@ Puppet::Functions.create_function(:map) do
|
|
|
119
119
|
end
|
|
120
120
|
result
|
|
121
121
|
end
|
|
122
|
-
|
|
123
|
-
def asserted_enumerable(obj)
|
|
124
|
-
unless enum = Puppet::Pops::Types::Enumeration.enumerator(obj)
|
|
125
|
-
raise ArgumentError, ("#{self.class.name}(): wrong argument type (#{obj.class}; must be something enumerable.")
|
|
126
|
-
end
|
|
127
|
-
enum
|
|
128
|
-
end
|
|
129
|
-
|
|
130
122
|
end
|