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
|
@@ -48,7 +48,7 @@ OPTIONS
|
|
|
48
48
|
Any configuration setting which is valid in the configuration file is
|
|
49
49
|
also a valid long argument, e.g. '--server=master.domain.com'. See the
|
|
50
50
|
configuration file documentation at
|
|
51
|
-
|
|
51
|
+
https://docs.puppetlabs.com/references/latest/configuration.html for
|
|
52
52
|
the full list of acceptable settings.
|
|
53
53
|
|
|
54
54
|
* --archive_files:
|
|
@@ -12,11 +12,7 @@ class Puppet::Application::Lookup < Puppet::Application
|
|
|
12
12
|
|
|
13
13
|
# Options for lookup
|
|
14
14
|
option('--merge TYPE') do |arg|
|
|
15
|
-
|
|
16
|
-
options[:merge] = arg
|
|
17
|
-
else
|
|
18
|
-
raise "The --merge option only accepts 'unique', 'hash', or 'deep'.\n#{RUN_HELP}"
|
|
19
|
-
end
|
|
15
|
+
options[:merge] = arg
|
|
20
16
|
end
|
|
21
17
|
|
|
22
18
|
option('--debug', '-d')
|
|
@@ -31,6 +27,8 @@ class Puppet::Application::Lookup < Puppet::Application
|
|
|
31
27
|
options[:type] = arg
|
|
32
28
|
end
|
|
33
29
|
|
|
30
|
+
option('--compile', '-c')
|
|
31
|
+
|
|
34
32
|
option('--knock-out-prefix PREFIX_STRING') do |arg|
|
|
35
33
|
options[:prefix] = arg
|
|
36
34
|
end
|
|
@@ -45,6 +43,8 @@ class Puppet::Application::Lookup < Puppet::Application
|
|
|
45
43
|
|
|
46
44
|
option('--explain')
|
|
47
45
|
|
|
46
|
+
option('--explain-options')
|
|
47
|
+
|
|
48
48
|
option('--default VALUE') do |arg|
|
|
49
49
|
options[:default_value] = arg
|
|
50
50
|
end
|
|
@@ -96,31 +96,6 @@ class Puppet::Application::Lookup < Puppet::Application
|
|
|
96
96
|
Puppet::FileBucket::File.indirection.terminus_class = :file
|
|
97
97
|
end
|
|
98
98
|
|
|
99
|
-
def setup_ssl
|
|
100
|
-
# Configure all of the SSL stuff.
|
|
101
|
-
if Puppet::SSL::CertificateAuthority.ca?
|
|
102
|
-
Puppet::SSL::Host.ca_location = :local
|
|
103
|
-
Puppet.settings.use :ca
|
|
104
|
-
Puppet::SSL::CertificateAuthority.instance
|
|
105
|
-
else
|
|
106
|
-
Puppet::SSL::Host.ca_location = :none
|
|
107
|
-
end
|
|
108
|
-
# These lines are not on stable (seems like a copy was made from master)
|
|
109
|
-
#
|
|
110
|
-
# Puppet::SSL::Oids.register_puppet_oids
|
|
111
|
-
# Puppet::SSL::Oids.load_custom_oid_file(Puppet[:trusted_oid_mapping_file])
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
# Sets up a special node cache "write only yaml" that collects and stores node data in yaml
|
|
115
|
-
# but never finds or reads anything (this since a real cache causes stale data to be served
|
|
116
|
-
# in circumstances when the cache can not be cleared).
|
|
117
|
-
# @see puppet issue 16753
|
|
118
|
-
# @see Puppet::Node::WriteOnlyYaml
|
|
119
|
-
# @return [void]
|
|
120
|
-
def setup_node_cache
|
|
121
|
-
Puppet::Node.indirection.cache_class = Puppet[:node_cache_terminus]
|
|
122
|
-
end
|
|
123
|
-
|
|
124
99
|
def setup
|
|
125
100
|
setup_logs
|
|
126
101
|
|
|
@@ -129,11 +104,6 @@ class Puppet::Application::Lookup < Puppet::Application
|
|
|
129
104
|
Puppet.settings.use :main, :master, :ssl, :metrics
|
|
130
105
|
|
|
131
106
|
setup_terminuses
|
|
132
|
-
|
|
133
|
-
# TODO: Do we need this in lookup? It sets up a write only cache
|
|
134
|
-
setup_node_cache
|
|
135
|
-
|
|
136
|
-
setup_ssl
|
|
137
107
|
end
|
|
138
108
|
|
|
139
109
|
def help
|
|
@@ -156,6 +126,7 @@ puppet lookup [--help] [--type <TYPESTRING>] [--merge unique|hash|deep]
|
|
|
156
126
|
[--knock-out-prefix <PREFIX-STRING>] [--sort-merged-arrays]
|
|
157
127
|
[--unpack-arrays <STRING-VALUE>] [--merge-hash-arrays] [--explain]
|
|
158
128
|
[--default <VALUE>] [--node <NODE-NAME>] [--facts <FILE>]
|
|
129
|
+
[--compile]
|
|
159
130
|
[--render-as s|json|yaml|binary|msgpack] <keys>
|
|
160
131
|
|
|
161
132
|
DESCRIPTION
|
|
@@ -214,6 +185,10 @@ the puppet lookup function linked to above.
|
|
|
214
185
|
than the value returned for the key. The explaination will describe how
|
|
215
186
|
the result was obtained or why lookup failed to obtain the result.
|
|
216
187
|
|
|
188
|
+
* --explain-options
|
|
189
|
+
Explain if a lookup_options hash will be used and how it was assembled
|
|
190
|
+
when performing a lookup.
|
|
191
|
+
|
|
217
192
|
* --default <VALUE>
|
|
218
193
|
A value produced if no value was found in the lookup.
|
|
219
194
|
|
|
@@ -227,6 +202,11 @@ the puppet lookup function linked to above.
|
|
|
227
202
|
override the facts for the current node. Any facts not specified by the
|
|
228
203
|
user will maintain their original value.
|
|
229
204
|
|
|
205
|
+
* --compile
|
|
206
|
+
Perform a full catalog compilation prior to the lookup. This is meaningful when
|
|
207
|
+
the catalog changes global variables that are referenced in interpolated values.
|
|
208
|
+
No catalog compilation takes place unless this flag is given.
|
|
209
|
+
|
|
230
210
|
* --render-as s|json|yaml|binary|msgpack
|
|
231
211
|
Determines how the results will be rendered to the standard output where
|
|
232
212
|
s means plain text. The default when lookup is producing a value is yaml
|
|
@@ -234,7 +214,7 @@ the puppet lookup function linked to above.
|
|
|
234
214
|
|
|
235
215
|
EXAMPLE
|
|
236
216
|
-------
|
|
237
|
-
If you wanted to lookup 'key_name' within the scope of the master, you would
|
|
217
|
+
If you wanted to lookup 'key_name' within the scope of the master, you would
|
|
238
218
|
call lookup like this:
|
|
239
219
|
$ puppet lookup key_name
|
|
240
220
|
|
|
@@ -266,7 +246,6 @@ Copyright (c) 2015 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
|
266
246
|
|
|
267
247
|
def main
|
|
268
248
|
keys = command_line.args
|
|
269
|
-
raise 'No keys were given to lookup.' if keys.empty?
|
|
270
249
|
|
|
271
250
|
#unless options[:node]
|
|
272
251
|
# raise "No node was given via the '--node' flag for the scope of the lookup.\n#{RUN_HELP}"
|
|
@@ -279,8 +258,15 @@ Copyright (c) 2015 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
|
279
258
|
use_default_value = !options[:default_value].nil?
|
|
280
259
|
merge_options = nil
|
|
281
260
|
|
|
282
|
-
|
|
283
|
-
|
|
261
|
+
merge = options[:merge]
|
|
262
|
+
unless merge.nil?
|
|
263
|
+
strategies = Puppet::Pops::MergeStrategy.strategy_keys
|
|
264
|
+
unless strategies.include?(merge.to_sym)
|
|
265
|
+
strategies = strategies.map {|k| "'#{k}'"}
|
|
266
|
+
raise "The --merge option only accepts #{strategies[0...-1].join(', ')}, or #{strategies.last}\n#{RUN_HELP}"
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
if merge == 'deep'
|
|
284
270
|
merge_options = {'strategy' => 'deep',
|
|
285
271
|
'sort_merge_arrays' => !options[:sort_merge_arrays].nil?,
|
|
286
272
|
'merge_hash_arrays' => !options[:merge_hash_arrays].nil?}
|
|
@@ -294,22 +280,33 @@ Copyright (c) 2015 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
|
294
280
|
end
|
|
295
281
|
|
|
296
282
|
else
|
|
297
|
-
merge_options = {'strategy' =>
|
|
283
|
+
merge_options = {'strategy' => merge}
|
|
298
284
|
end
|
|
299
285
|
end
|
|
300
286
|
|
|
301
|
-
|
|
287
|
+
explain_data = !!options[:explain]
|
|
288
|
+
explain_options = !!options[:explain_options]
|
|
289
|
+
only_explain_options = explain_options && !explain_data
|
|
290
|
+
if keys.empty?
|
|
291
|
+
if only_explain_options
|
|
292
|
+
# Explain lookup_options for lookup of an unqualified value.
|
|
293
|
+
keys = Puppet::Pops::Lookup::GLOBAL
|
|
294
|
+
else
|
|
295
|
+
raise 'No keys were given to lookup.'
|
|
296
|
+
end
|
|
297
|
+
end
|
|
298
|
+
explain = explain_data || explain_options
|
|
302
299
|
|
|
303
300
|
# Format defaults to text (:s) when producing an explanation and :yaml when producing the value
|
|
304
301
|
format = options[:render_as] || (explain ? :s : :yaml)
|
|
305
302
|
renderer = Puppet::Network::FormatHandler.format(format == :json ? :pson : format)
|
|
306
303
|
raise "Unknown rendering format '#{format}'" if renderer.nil?
|
|
307
304
|
|
|
308
|
-
type = options.include?(:type) ? Puppet::Pops::Types::TypeParser.new.parse(options[:type]) : nil
|
|
309
305
|
|
|
310
306
|
generate_scope do |scope|
|
|
311
|
-
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(scope, {}, {}, explain)
|
|
307
|
+
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(scope, {}, {}, explain ? Puppet::Pops::Lookup::Explainer.new(explain_options, only_explain_options) : nil)
|
|
312
308
|
begin
|
|
309
|
+
type = options.include?(:type) ? Puppet::Pops::Types::TypeParser.new.parse(options[:type], scope) : nil
|
|
313
310
|
result = Puppet::Pops::Lookup.lookup(keys, type, options[:default_value], use_default_value, merge_options, lookup_invocation)
|
|
314
311
|
puts renderer.render(result) unless explain
|
|
315
312
|
rescue Puppet::DataBinding::LookupError
|
|
@@ -336,20 +333,21 @@ Copyright (c) 2015 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
|
336
333
|
fact_file = options[:fact_file]
|
|
337
334
|
|
|
338
335
|
if fact_file
|
|
339
|
-
original_facts = node.
|
|
336
|
+
original_facts = node.parameters
|
|
340
337
|
if fact_file.end_with?("json")
|
|
341
|
-
given_facts = JSON.parse(
|
|
338
|
+
given_facts = JSON.parse(Puppet::FileSystem.read(fact_file, :encoding => 'utf-8'))
|
|
342
339
|
else
|
|
343
|
-
given_facts = YAML.load(
|
|
340
|
+
given_facts = YAML.load(Puppet::FileSystem.read(fact_file, :encoding => 'utf-8'))
|
|
344
341
|
end
|
|
345
342
|
|
|
346
343
|
unless given_facts.instance_of?(Hash)
|
|
347
344
|
raise "Incorrect formatted data in #{fact_file} given via the --facts flag"
|
|
348
345
|
end
|
|
349
346
|
|
|
350
|
-
node.
|
|
347
|
+
node.parameters = original_facts.merge(given_facts)
|
|
351
348
|
end
|
|
352
349
|
|
|
350
|
+
Puppet[:code] = 'undef' unless options[:compile]
|
|
353
351
|
compiler = Puppet::Parser::Compiler.new(node)
|
|
354
352
|
compiler.compile { |catalog| yield(compiler.topscope); catalog }
|
|
355
353
|
end
|
|
@@ -61,7 +61,7 @@ specify '--server <servername>' as an argument. Boolean settings translate into
|
|
|
61
61
|
'--setting' and '--no-setting' pairs.
|
|
62
62
|
|
|
63
63
|
See the configuration file documentation at
|
|
64
|
-
|
|
64
|
+
https://docs.puppetlabs.com/references/stable/configuration.html for the
|
|
65
65
|
full list of acceptable settings. A commented list of all settings can also be
|
|
66
66
|
generated by running puppet master with '--genconfig'.
|
|
67
67
|
|
|
@@ -92,7 +92,7 @@ generated by running puppet master with '--genconfig'.
|
|
|
92
92
|
valid JSON.
|
|
93
93
|
|
|
94
94
|
* --masterport:
|
|
95
|
-
The port on which to listen for traffic.
|
|
95
|
+
The port on which to listen for traffic. The default port is 8140.
|
|
96
96
|
(This is a Puppet setting, and can go in puppet.conf.)
|
|
97
97
|
|
|
98
98
|
* --verbose:
|
|
@@ -72,7 +72,7 @@ setting, so you can specify '--ssldir <directory>' as an
|
|
|
72
72
|
argument.
|
|
73
73
|
|
|
74
74
|
See the configuration file documentation at
|
|
75
|
-
|
|
75
|
+
https://docs.puppetlabs.com/references/stable/configuration.html for the
|
|
76
76
|
full list of acceptable parameters. A commented list of all
|
|
77
77
|
configuration options can also be generated by running puppet with
|
|
78
78
|
'--genconfig'.
|
data/lib/puppet/configurer.rb
CHANGED
|
@@ -22,6 +22,18 @@ class Puppet::Configurer
|
|
|
22
22
|
"Puppet configuration client"
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
+
def self.should_pluginsync?
|
|
26
|
+
if Puppet.settings.set_by_cli?(:pluginsync) || Puppet.settings.set_by_config?(:pluginsync)
|
|
27
|
+
Puppet[:pluginsync]
|
|
28
|
+
else
|
|
29
|
+
if Puppet[:use_cached_catalog]
|
|
30
|
+
false
|
|
31
|
+
else
|
|
32
|
+
true
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
25
37
|
def execute_postrun_command
|
|
26
38
|
execute_from_setting(:postrun_command)
|
|
27
39
|
end
|
|
@@ -47,26 +59,46 @@ class Puppet::Configurer
|
|
|
47
59
|
def initialize(factory = Puppet::Configurer::DownloaderFactory.new)
|
|
48
60
|
@running = false
|
|
49
61
|
@splayed = false
|
|
62
|
+
@cached_catalog_status = 'not_used'
|
|
50
63
|
@environment = Puppet[:environment]
|
|
51
64
|
@transaction_uuid = SecureRandom.uuid
|
|
65
|
+
@static_catalog = true
|
|
66
|
+
@checksum_type = Puppet[:supported_checksum_types]
|
|
52
67
|
@handler = Puppet::Configurer::PluginHandler.new(factory)
|
|
53
68
|
end
|
|
54
69
|
|
|
55
70
|
# Get the remote catalog, yo. Returns nil if no catalog can be found.
|
|
56
71
|
def retrieve_catalog(query_options)
|
|
57
72
|
query_options ||= {}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
73
|
+
if (Puppet[:use_cached_catalog] && result = retrieve_catalog_from_cache(query_options))
|
|
74
|
+
@cached_catalog_status = 'explicitly_requested'
|
|
75
|
+
|
|
76
|
+
Puppet.info "Using cached catalog from environment '#{result.environment}'"
|
|
77
|
+
else
|
|
78
|
+
result = retrieve_new_catalog(query_options)
|
|
79
|
+
|
|
80
|
+
if !result
|
|
81
|
+
if !Puppet[:usecacheonfailure]
|
|
82
|
+
Puppet.warning "Not using cache on failed catalog"
|
|
83
|
+
return nil
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
result = retrieve_catalog_from_cache(query_options)
|
|
87
|
+
|
|
88
|
+
if result
|
|
89
|
+
# don't use use cached catalog if it doesn't match server specified environment
|
|
90
|
+
if @node_environment && result.environment != @environment
|
|
91
|
+
Puppet.err "Not using cached catalog because its environment '#{result.environment}' does not match '#{@environment}'"
|
|
92
|
+
return nil
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
@cached_catalog_status = 'on_failure'
|
|
96
|
+
Puppet.info "Using cached catalog from environment '#{result.environment}'"
|
|
97
|
+
end
|
|
63
98
|
end
|
|
64
|
-
result = retrieve_catalog_from_cache(query_options)
|
|
65
99
|
end
|
|
66
100
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
convert_catalog(result, @duration)
|
|
101
|
+
result
|
|
70
102
|
end
|
|
71
103
|
|
|
72
104
|
# Convert a plain resource catalog into our full host catalog.
|
|
@@ -100,12 +132,32 @@ class Puppet::Configurer
|
|
|
100
132
|
def prepare_and_retrieve_catalog(options, query_options)
|
|
101
133
|
# set report host name now that we have the fact
|
|
102
134
|
options[:report].host = Puppet[:node_name_value]
|
|
135
|
+
query_options[:transaction_uuid] = @transaction_uuid
|
|
136
|
+
query_options[:static_catalog] = @static_catalog
|
|
137
|
+
|
|
138
|
+
# Query params don't enforce ordered evaluation, so munge this list into a
|
|
139
|
+
# dot-separated string.
|
|
140
|
+
query_options[:checksum_type] = @checksum_type.join('.')
|
|
141
|
+
|
|
142
|
+
# apply passes in ral catalog
|
|
143
|
+
catalog = options.delete(:catalog)
|
|
144
|
+
return catalog if catalog
|
|
103
145
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
146
|
+
# retrieve_catalog returns json catalog
|
|
147
|
+
catalog = retrieve_catalog(query_options)
|
|
148
|
+
return convert_catalog(catalog, @duration) if catalog
|
|
149
|
+
|
|
150
|
+
Puppet.err "Could not retrieve catalog; skipping run"
|
|
151
|
+
nil
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def prepare_and_retrieve_catalog_from_cache
|
|
155
|
+
result = retrieve_catalog_from_cache({:transaction_uuid => @transaction_uuid, :static_catalog => @static_catalog})
|
|
156
|
+
if result
|
|
157
|
+
Puppet.info "Using cached catalog from environment '#{result.environment}'"
|
|
158
|
+
return convert_catalog(result, @duration)
|
|
107
159
|
end
|
|
108
|
-
|
|
160
|
+
nil
|
|
109
161
|
end
|
|
110
162
|
|
|
111
163
|
# Retrieve (optionally) and apply a catalog. If a catalog is passed in
|
|
@@ -149,6 +201,28 @@ class Puppet::Configurer
|
|
|
149
201
|
|
|
150
202
|
Puppet::Util::Log.newdestination(report)
|
|
151
203
|
|
|
204
|
+
# If a cached catalog is explicitly requested, attempt to retrieve it. Skip the node request,
|
|
205
|
+
# don't pluginsync and switch to the catalog's environment if we successfully retrieve it.
|
|
206
|
+
if Puppet[:use_cached_catalog]
|
|
207
|
+
if catalog = prepare_and_retrieve_catalog_from_cache
|
|
208
|
+
options[:catalog] = catalog
|
|
209
|
+
@cached_catalog_status = 'explicitly_requested'
|
|
210
|
+
|
|
211
|
+
if @environment != catalog.environment && !Puppet[:strict_environment_mode]
|
|
212
|
+
Puppet.notice "Local environment: '#{@environment}' doesn't match the environment of the cached catalog '#{catalog.environment}', switching agent to '#{catalog.environment}'."
|
|
213
|
+
@environment = catalog.environment
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
report.environment = @environment
|
|
217
|
+
else
|
|
218
|
+
# Don't try to retrieve a catalog from the cache again after we've already
|
|
219
|
+
# failed to do so the first time.
|
|
220
|
+
Puppet[:use_cached_catalog] = false
|
|
221
|
+
Puppet[:usecacheonfailure] = false
|
|
222
|
+
options[:pluginsync] = Puppet::Configurer.should_pluginsync?
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
|
|
152
226
|
begin
|
|
153
227
|
unless Puppet[:node_name_fact].empty?
|
|
154
228
|
query_options = get_facts(options)
|
|
@@ -157,7 +231,7 @@ class Puppet::Configurer
|
|
|
157
231
|
configured_environment = Puppet[:environment] if Puppet.settings.set_by_config?(:environment)
|
|
158
232
|
|
|
159
233
|
# We only need to find out the environment to run in if we don't already have a catalog
|
|
160
|
-
unless options[:catalog]
|
|
234
|
+
unless (options[:catalog] || Puppet[:strict_environment_mode])
|
|
161
235
|
begin
|
|
162
236
|
if node = Puppet::Node.indirection.find(Puppet[:node_name_value],
|
|
163
237
|
:environment => Puppet::Node::Environment.remote(@environment),
|
|
@@ -172,6 +246,8 @@ class Puppet::Configurer
|
|
|
172
246
|
node.environment = Puppet::Node::Environment.remote(node.environment_name)
|
|
173
247
|
end
|
|
174
248
|
|
|
249
|
+
@node_environment = node.environment.to_s
|
|
250
|
+
|
|
175
251
|
if node.environment.to_s != @environment
|
|
176
252
|
Puppet.notice "Local environment: '#{@environment}' doesn't match server specified node environment '#{node.environment}', switching agent to '#{node.environment}'."
|
|
177
253
|
@environment = node.environment.to_s
|
|
@@ -200,13 +276,17 @@ class Puppet::Configurer
|
|
|
200
276
|
Puppet.push_context({:current_environment => local_node_environment}, "Local node environment for configurer transaction")
|
|
201
277
|
|
|
202
278
|
query_options = get_facts(options) unless query_options
|
|
203
|
-
query_options[:transaction_uuid] = @transaction_uuid
|
|
204
279
|
query_options[:configured_environment] = configured_environment
|
|
205
280
|
|
|
206
281
|
unless catalog = prepare_and_retrieve_catalog(options, query_options)
|
|
207
282
|
return nil
|
|
208
283
|
end
|
|
209
284
|
|
|
285
|
+
if Puppet[:strict_environment_mode] && catalog.environment != @environment
|
|
286
|
+
Puppet.err "Not using catalog because its environment '#{catalog.environment}' does not match agent specified environment '#{@environment}' and strict_environment_mode is set"
|
|
287
|
+
return nil
|
|
288
|
+
end
|
|
289
|
+
|
|
210
290
|
# Here we set the local environment based on what we get from the
|
|
211
291
|
# catalog. Since a change in environment means a change in facts, and
|
|
212
292
|
# facts may be used to determine which catalog we get, we need to
|
|
@@ -221,7 +301,6 @@ class Puppet::Configurer
|
|
|
221
301
|
report.environment = @environment
|
|
222
302
|
|
|
223
303
|
query_options = get_facts(options)
|
|
224
|
-
query_options[:transaction_uuid] = @transaction_uuid
|
|
225
304
|
query_options[:configured_environment] = configured_environment
|
|
226
305
|
|
|
227
306
|
return nil unless catalog = prepare_and_retrieve_catalog(options, query_options)
|
|
@@ -229,6 +308,10 @@ class Puppet::Configurer
|
|
|
229
308
|
end
|
|
230
309
|
|
|
231
310
|
execute_prerun_command or return nil
|
|
311
|
+
|
|
312
|
+
options[:report].code_id = catalog.code_id
|
|
313
|
+
options[:report].catalog_uuid = catalog.catalog_uuid
|
|
314
|
+
options[:report].cached_catalog_status = @cached_catalog_status
|
|
232
315
|
apply_catalog(catalog, options)
|
|
233
316
|
report.exit_status
|
|
234
317
|
rescue => detail
|
|
@@ -238,11 +321,7 @@ class Puppet::Configurer
|
|
|
238
321
|
execute_postrun_command or return nil
|
|
239
322
|
end
|
|
240
323
|
ensure
|
|
241
|
-
|
|
242
|
-
# pick up on new functions installed by gems or new modules being added
|
|
243
|
-
# without the daemon being restarted.
|
|
244
|
-
$env_module_directories = nil
|
|
245
|
-
|
|
324
|
+
report.cached_catalog_status ||= @cached_catalog_status
|
|
246
325
|
Puppet::Util::Log.close(report)
|
|
247
326
|
send_report(report)
|
|
248
327
|
Puppet.pop_context
|
|
@@ -286,7 +365,6 @@ class Puppet::Configurer
|
|
|
286
365
|
result = Puppet::Resource::Catalog.indirection.find(Puppet[:node_name_value],
|
|
287
366
|
query_options.merge(:ignore_terminus => true, :environment => Puppet::Node::Environment.remote(@environment)))
|
|
288
367
|
end
|
|
289
|
-
Puppet.notice "Using cached catalog"
|
|
290
368
|
result
|
|
291
369
|
rescue => detail
|
|
292
370
|
Puppet.log_exception(detail, "Could not retrieve catalog from cache: #{detail}")
|
|
@@ -27,6 +27,8 @@ module Puppet::DataProviders
|
|
|
27
27
|
Hash[struct.map { |k,v| [k.to_s, symkeys_to_string(v)] }]
|
|
28
28
|
when Array
|
|
29
29
|
struct.map { |v| symkeys_to_string(v) }
|
|
30
|
+
when nil
|
|
31
|
+
{}
|
|
30
32
|
else
|
|
31
33
|
struct
|
|
32
34
|
end
|
|
@@ -70,6 +72,18 @@ module Puppet::DataProviders
|
|
|
70
72
|
end
|
|
71
73
|
|
|
72
74
|
def create_data_providers(lookup_invocation)
|
|
75
|
+
Puppet.deprecation_warning('Method HieraConfig#create_data_providers is deprecated. Use create_configured_data_providers instead')
|
|
76
|
+
create_configured_data_providers(lookup_invocation, nil)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Creates the data providers for this config
|
|
80
|
+
#
|
|
81
|
+
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] Invocation data containing scope, overrides, and defaults
|
|
82
|
+
# @param parent_data_provider [Puppet::Plugins::DataProviders::DataProvider] The data provider that loaded this configuration
|
|
83
|
+
# @return [Array[DataProvider]] the created providers
|
|
84
|
+
#
|
|
85
|
+
# @api private
|
|
86
|
+
def create_configured_data_providers(lookup_invocation, parent_data_provider)
|
|
73
87
|
injector = Puppet.lookup(:injector)
|
|
74
88
|
service_type = Registry.hash_of_path_based_data_provider_factories
|
|
75
89
|
default_datadir = @config['datadir']
|
|
@@ -92,14 +106,25 @@ module Puppet::DataProviders
|
|
|
92
106
|
raise Puppet::DataBinding::LookupError, "#{@config_path}: No data provider is registered for backend '#{provider_name}' " unless provider_factory
|
|
93
107
|
|
|
94
108
|
datadir = @config_root + (he['datadir'] || default_datadir)
|
|
95
|
-
|
|
96
|
-
|
|
109
|
+
data_providers[name] = create_data_provider(parent_data_provider, provider_factory, name,
|
|
110
|
+
provider_factory.resolve_paths(datadir, original_paths, paths, lookup_invocation))
|
|
97
111
|
end
|
|
98
112
|
data_providers.values
|
|
99
113
|
end
|
|
100
114
|
|
|
115
|
+
def create_data_provider(parent_data_provider, provider_factory, name, resolved_paths)
|
|
116
|
+
provider_factory_version = provider_factory.respond_to?(:version) ? provider_factory.version : 1
|
|
117
|
+
if provider_factory_version == 1
|
|
118
|
+
# Version 1 is not aware of the parent provider
|
|
119
|
+
provider_factory.create(name, resolved_paths)
|
|
120
|
+
else
|
|
121
|
+
provider_factory.create(name, resolved_paths, parent_data_provider)
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
private :create_data_provider
|
|
125
|
+
|
|
101
126
|
def validate_config(hiera_config)
|
|
102
|
-
Puppet::Pops::Types::TypeAsserter.assert_instance_of(@config_path, self.class.config_type, hiera_config)
|
|
127
|
+
Puppet::Pops::Types::TypeAsserter.assert_instance_of(["The Hiera Configuration at '%s'", @config_path], self.class.config_type, hiera_config)
|
|
103
128
|
end
|
|
104
129
|
private :validate_config
|
|
105
130
|
end
|
|
@@ -5,31 +5,46 @@ require_relative 'hiera_config'
|
|
|
5
5
|
#
|
|
6
6
|
module Puppet::DataProviders::HieraInterpolate
|
|
7
7
|
def interpolate(subject, lookup_invocation, allow_methods)
|
|
8
|
-
|
|
8
|
+
case subject
|
|
9
|
+
when String
|
|
10
|
+
subject.index('%{').nil? ? subject : interpolate_string(subject, lookup_invocation, allow_methods)
|
|
11
|
+
when Array
|
|
12
|
+
subject.map { |element| interpolate(element, lookup_invocation, allow_methods) }
|
|
13
|
+
when Hash
|
|
14
|
+
Hash[subject.map { |k, v| [k, interpolate(v, lookup_invocation, allow_methods)] }]
|
|
15
|
+
else
|
|
16
|
+
subject
|
|
17
|
+
end
|
|
18
|
+
end
|
|
9
19
|
|
|
10
|
-
|
|
11
|
-
subject.gsub(/%\{([^\}]+)\}/) do |match|
|
|
12
|
-
method_key, key = get_method_and_data($1, allow_methods)
|
|
13
|
-
is_alias = method_key == 'alias'
|
|
20
|
+
private
|
|
14
21
|
|
|
15
|
-
|
|
16
|
-
|
|
22
|
+
def interpolate_string(subject, lookup_invocation, allow_methods)
|
|
23
|
+
lookup_invocation.with(:interpolate, subject) do
|
|
24
|
+
subject.gsub(/%\{([^\}]*)\}/) do |match|
|
|
25
|
+
expr = $1
|
|
26
|
+
# Leading and trailing spaces inside an interpolation expression are insignificant
|
|
27
|
+
expr.strip!
|
|
28
|
+
unless expr.empty? || expr == '::'
|
|
29
|
+
method_key, key = get_method_and_data(expr, allow_methods)
|
|
30
|
+
is_alias = method_key == 'alias'
|
|
17
31
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
value = qualified_lookup(segments.drop(1), value) if segments.size > 1
|
|
21
|
-
value = lookup_invocation.check(key) { interpolate(value, lookup_invocation, allow_methods) } if value.is_a?(String)
|
|
32
|
+
# Alias is only permitted if the entire string is equal to the interpolate expression
|
|
33
|
+
raise Puppet::DataBinding::LookupError, "'alias' interpolation is only permitted if the expression is equal to the entire string" if is_alias && subject != match
|
|
22
34
|
|
|
23
|
-
|
|
24
|
-
|
|
35
|
+
segments = key.split('.')
|
|
36
|
+
value = interpolate_method(method_key).call(segments[0], lookup_invocation)
|
|
37
|
+
value = qualified_lookup(segments.drop(1), value) if segments.size > 1
|
|
38
|
+
value = lookup_invocation.check(key) { interpolate(value, lookup_invocation, allow_methods) }
|
|
25
39
|
|
|
40
|
+
# break gsub and return value immediately if this was an alias substitution. The value might be something other than a String
|
|
41
|
+
return value if is_alias
|
|
42
|
+
end
|
|
26
43
|
value || ''
|
|
27
44
|
end
|
|
28
45
|
end
|
|
29
46
|
end
|
|
30
47
|
|
|
31
|
-
private
|
|
32
|
-
|
|
33
48
|
def interpolate_method(method_key)
|
|
34
49
|
@@interpolate_methods ||= begin
|
|
35
50
|
global_lookup = lambda { |key, lookup_invocation| Puppet::Pops::Lookup.lookup(key, nil, '', true, nil, lookup_invocation) }
|
|
@@ -31,7 +31,7 @@ module Puppet::DataProviders::HieraSupport
|
|
|
31
31
|
|
|
32
32
|
def data_providers(data_key, lookup_invocation)
|
|
33
33
|
@hiera_config ||= Puppet::DataProviders::HieraConfig.new(provider_root(data_key, lookup_invocation.scope))
|
|
34
|
-
@data_providers ||= @hiera_config.
|
|
34
|
+
@data_providers ||= @hiera_config.create_configured_data_providers(lookup_invocation, self)
|
|
35
35
|
end
|
|
36
36
|
private :data_providers
|
|
37
37
|
end
|
|
@@ -5,8 +5,8 @@ require_relative 'hiera_interpolate'
|
|
|
5
5
|
|
|
6
6
|
module Puppet::DataProviders
|
|
7
7
|
class JsonDataProviderFactory < Puppet::Plugins::DataProviders::FileBasedDataProviderFactory
|
|
8
|
-
def create(name, paths)
|
|
9
|
-
JsonDataProvider.new(name, paths)
|
|
8
|
+
def create(name, paths, parent_data_provider)
|
|
9
|
+
JsonDataProvider.new(name, paths, parent_data_provider)
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def path_extension
|