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
|
@@ -369,12 +369,34 @@ describe Puppet::Configurer do
|
|
|
369
369
|
expect(report.environment).to eq("second_env")
|
|
370
370
|
end
|
|
371
371
|
|
|
372
|
-
it "
|
|
373
|
-
|
|
372
|
+
it "sends the transaction uuid in a catalog request" do
|
|
373
|
+
@agent.instance_variable_set(:@transaction_uuid, 'aaa')
|
|
374
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with(anything, has_entries(:transaction_uuid => 'aaa'))
|
|
375
|
+
@agent.run
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
it "sets the static_catalog query param to true in a catalog request" do
|
|
379
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with(anything, has_entries(:static_catalog => true))
|
|
380
|
+
@agent.run
|
|
381
|
+
end
|
|
374
382
|
|
|
383
|
+
it "sets the checksum_type query param to the default supported_checksum_types in a catalog request" do
|
|
384
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with(anything,
|
|
385
|
+
has_entries(:checksum_type => 'md5.sha256'))
|
|
375
386
|
@agent.run
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
it "sets the checksum_type query param to the supported_checksum_types setting in a catalog request" do
|
|
390
|
+
# Regenerate the agent to pick up the new setting
|
|
391
|
+
Puppet[:supported_checksum_types] = ['sha256']
|
|
392
|
+
@agent = Puppet::Configurer.new
|
|
393
|
+
@agent.stubs(:init_storage)
|
|
394
|
+
@agent.stubs(:download_plugins)
|
|
395
|
+
@agent.stubs(:send_report)
|
|
396
|
+
@agent.stubs(:save_last_run_summary)
|
|
376
397
|
|
|
377
|
-
|
|
398
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with(anything, has_entries(:checksum_type => 'sha256'))
|
|
399
|
+
@agent.run
|
|
378
400
|
end
|
|
379
401
|
|
|
380
402
|
describe "when not using a REST terminus for catalogs" do
|
|
@@ -544,17 +566,42 @@ describe Puppet::Configurer do
|
|
|
544
566
|
end
|
|
545
567
|
end
|
|
546
568
|
|
|
569
|
+
def expects_new_catalog_only(catalog)
|
|
570
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns catalog
|
|
571
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.never
|
|
572
|
+
end
|
|
573
|
+
|
|
574
|
+
def expects_cached_catalog_only(catalog)
|
|
575
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns catalog
|
|
576
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.never
|
|
577
|
+
end
|
|
578
|
+
|
|
579
|
+
def expects_fallback_to_cached_catalog(catalog)
|
|
580
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns nil
|
|
581
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns catalog
|
|
582
|
+
end
|
|
583
|
+
|
|
584
|
+
def expects_fallback_to_new_catalog(catalog)
|
|
585
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns nil
|
|
586
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns catalog
|
|
587
|
+
end
|
|
588
|
+
|
|
589
|
+
def expects_neither_new_or_cached_catalog
|
|
590
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns nil
|
|
591
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns nil
|
|
592
|
+
end
|
|
593
|
+
|
|
547
594
|
describe "when retrieving a catalog" do
|
|
548
595
|
before do
|
|
549
596
|
Puppet.settings.stubs(:use).returns(true)
|
|
550
597
|
@agent.stubs(:facts_for_uploading).returns({})
|
|
598
|
+
@agent.stubs(:download_plugins)
|
|
551
599
|
|
|
552
|
-
|
|
600
|
+
# retrieve a catalog in the current environment, so we don't try to converge unexpectedly
|
|
601
|
+
@catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote(Puppet[:environment].to_sym))
|
|
553
602
|
|
|
554
603
|
# this is the default when using a Configurer instance
|
|
555
604
|
Puppet::Resource::Catalog.indirection.stubs(:terminus_class).returns :rest
|
|
556
|
-
|
|
557
|
-
@agent.stubs(:convert_catalog).returns @catalog
|
|
558
605
|
end
|
|
559
606
|
|
|
560
607
|
describe "and configured to only retrieve a catalog from the cache" do
|
|
@@ -563,18 +610,123 @@ describe Puppet::Configurer do
|
|
|
563
610
|
end
|
|
564
611
|
|
|
565
612
|
it "should first look in the cache for a catalog" do
|
|
566
|
-
|
|
567
|
-
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.never
|
|
613
|
+
expects_cached_catalog_only(@catalog)
|
|
568
614
|
|
|
569
615
|
expect(@agent.retrieve_catalog({})).to eq(@catalog)
|
|
570
616
|
end
|
|
571
617
|
|
|
618
|
+
it "should not make a node request or pluginsync when a cached catalog is successfully retrieved" do
|
|
619
|
+
Puppet::Node.indirection.expects(:find).never
|
|
620
|
+
expects_cached_catalog_only(@catalog)
|
|
621
|
+
@agent.expects(:download_plugins).never
|
|
622
|
+
|
|
623
|
+
@agent.run
|
|
624
|
+
end
|
|
625
|
+
|
|
626
|
+
it "should make a node request and pluginsync when a cached catalog cannot be retrieved" do
|
|
627
|
+
Puppet::Node.indirection.expects(:find).returns nil
|
|
628
|
+
expects_fallback_to_new_catalog(@catalog)
|
|
629
|
+
@agent.expects(:download_plugins)
|
|
630
|
+
|
|
631
|
+
@agent.run
|
|
632
|
+
end
|
|
633
|
+
|
|
634
|
+
it "should set its cached_catalog_status to 'explicitly_requested'" do
|
|
635
|
+
expects_cached_catalog_only(@catalog)
|
|
636
|
+
|
|
637
|
+
@agent.retrieve_catalog({})
|
|
638
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('explicitly_requested')
|
|
639
|
+
end
|
|
640
|
+
|
|
641
|
+
it "should set its cached_catalog_status to 'explicitly requested' if the cached catalog is from a different environment" do
|
|
642
|
+
cached_catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote('second_env'))
|
|
643
|
+
expects_cached_catalog_only(cached_catalog)
|
|
644
|
+
|
|
645
|
+
@agent.retrieve_catalog({})
|
|
646
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('explicitly_requested')
|
|
647
|
+
end
|
|
648
|
+
|
|
572
649
|
it "should compile a new catalog if none is found in the cache" do
|
|
573
|
-
|
|
574
|
-
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns @catalog
|
|
650
|
+
expects_fallback_to_new_catalog(@catalog)
|
|
575
651
|
|
|
576
652
|
expect(@agent.retrieve_catalog({})).to eq(@catalog)
|
|
577
653
|
end
|
|
654
|
+
|
|
655
|
+
it "should set its cached_catalog_status to 'not_used' if no catalog is found in the cache" do
|
|
656
|
+
expects_fallback_to_new_catalog(@catalog)
|
|
657
|
+
|
|
658
|
+
@agent.retrieve_catalog({})
|
|
659
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('not_used')
|
|
660
|
+
end
|
|
661
|
+
|
|
662
|
+
it "should not attempt to retrieve a cached catalog again if the first attempt failed" do
|
|
663
|
+
Puppet::Node.indirection.expects(:find).returns(nil)
|
|
664
|
+
expects_neither_new_or_cached_catalog
|
|
665
|
+
|
|
666
|
+
@agent.run
|
|
667
|
+
end
|
|
668
|
+
|
|
669
|
+
it "should return the cached catalog when the environment doesn't match" do
|
|
670
|
+
cached_catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote('second_env'))
|
|
671
|
+
expects_cached_catalog_only(cached_catalog)
|
|
672
|
+
|
|
673
|
+
Puppet.expects(:info).with("Using cached catalog from environment 'second_env'")
|
|
674
|
+
expect(@agent.retrieve_catalog({})).to eq(cached_catalog)
|
|
675
|
+
end
|
|
676
|
+
end
|
|
677
|
+
|
|
678
|
+
describe "and strict environment mode is set" do
|
|
679
|
+
before do
|
|
680
|
+
@catalog.stubs(:to_ral).returns(@catalog)
|
|
681
|
+
@catalog.stubs(:write_class_file)
|
|
682
|
+
@catalog.stubs(:write_resource_file)
|
|
683
|
+
@agent.stubs(:send_report)
|
|
684
|
+
@agent.stubs(:save_last_run_summary)
|
|
685
|
+
Puppet.settings[:strict_environment_mode] = true
|
|
686
|
+
end
|
|
687
|
+
|
|
688
|
+
it "should not make a node request" do
|
|
689
|
+
Puppet::Node.indirection.expects(:find).never
|
|
690
|
+
|
|
691
|
+
@agent.run
|
|
692
|
+
end
|
|
693
|
+
|
|
694
|
+
it "should return nil when the catalog's environment doesn't match the agent specified environment" do
|
|
695
|
+
@agent.instance_variable_set(:@environment, 'second_env')
|
|
696
|
+
expects_new_catalog_only(@catalog)
|
|
697
|
+
|
|
698
|
+
Puppet.expects(:err).with("Not using catalog because its environment 'production' does not match agent specified environment 'second_env' and strict_environment_mode is set")
|
|
699
|
+
expect(@agent.run).to be_nil
|
|
700
|
+
end
|
|
701
|
+
|
|
702
|
+
it "should not return nil when the catalog's environment matches the agent specified environment" do
|
|
703
|
+
@agent.instance_variable_set(:@environment, 'production')
|
|
704
|
+
expects_new_catalog_only(@catalog)
|
|
705
|
+
|
|
706
|
+
expect(@agent.run).to eq(0)
|
|
707
|
+
end
|
|
708
|
+
|
|
709
|
+
describe "and a cached catalog is explicitly requested" do
|
|
710
|
+
before do
|
|
711
|
+
Puppet.settings[:use_cached_catalog] = true
|
|
712
|
+
end
|
|
713
|
+
|
|
714
|
+
it "should return nil when the cached catalog's environment doesn't match the agent specified environment" do
|
|
715
|
+
@agent.instance_variable_set(:@environment, 'second_env')
|
|
716
|
+
expects_cached_catalog_only(@catalog)
|
|
717
|
+
|
|
718
|
+
Puppet.expects(:err).with("Not using catalog because its environment 'production' does not match agent specified environment 'second_env' and strict_environment_mode is set")
|
|
719
|
+
expect(@agent.run).to be_nil
|
|
720
|
+
end
|
|
721
|
+
|
|
722
|
+
it "should proceed with the cached catalog if its environment matchs the local environment" do
|
|
723
|
+
Puppet.settings[:use_cached_catalog] = true
|
|
724
|
+
@agent.instance_variable_set(:@environment, 'production')
|
|
725
|
+
expects_cached_catalog_only(@catalog)
|
|
726
|
+
|
|
727
|
+
expect(@agent.run).to eq(0)
|
|
728
|
+
end
|
|
729
|
+
end
|
|
578
730
|
end
|
|
579
731
|
|
|
580
732
|
it "should use the Catalog class to get its catalog" do
|
|
@@ -583,6 +735,13 @@ describe Puppet::Configurer do
|
|
|
583
735
|
@agent.retrieve_catalog({})
|
|
584
736
|
end
|
|
585
737
|
|
|
738
|
+
it "should set its cached_catalog_status to 'not_used' when downloading a new catalog" do
|
|
739
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns @catalog
|
|
740
|
+
|
|
741
|
+
@agent.retrieve_catalog({})
|
|
742
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('not_used')
|
|
743
|
+
end
|
|
744
|
+
|
|
586
745
|
it "should use its node_name_value to retrieve the catalog" do
|
|
587
746
|
Facter.stubs(:value).returns "eh"
|
|
588
747
|
Puppet.settings[:node_name_value] = "myhost.domain.com"
|
|
@@ -598,17 +757,21 @@ describe Puppet::Configurer do
|
|
|
598
757
|
end
|
|
599
758
|
|
|
600
759
|
it "should log and return the cached catalog when no catalog can be retrieved from the server" do
|
|
601
|
-
|
|
602
|
-
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns @catalog
|
|
603
|
-
|
|
604
|
-
Puppet.expects(:notice)
|
|
760
|
+
expects_fallback_to_cached_catalog(@catalog)
|
|
605
761
|
|
|
762
|
+
Puppet.expects(:info).with("Using cached catalog from environment 'production'")
|
|
606
763
|
expect(@agent.retrieve_catalog({})).to eq(@catalog)
|
|
607
764
|
end
|
|
608
765
|
|
|
766
|
+
it "should set its cached_catalog_status to 'on_failure' when no catalog can be retrieved from the server" do
|
|
767
|
+
expects_fallback_to_cached_catalog(@catalog)
|
|
768
|
+
|
|
769
|
+
@agent.retrieve_catalog({})
|
|
770
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('on_failure')
|
|
771
|
+
end
|
|
772
|
+
|
|
609
773
|
it "should not look in the cache for a catalog if one is returned from the server" do
|
|
610
|
-
|
|
611
|
-
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.never
|
|
774
|
+
expects_new_catalog_only(@catalog)
|
|
612
775
|
|
|
613
776
|
expect(@agent.retrieve_catalog({})).to eq(@catalog)
|
|
614
777
|
end
|
|
@@ -620,72 +783,141 @@ describe Puppet::Configurer do
|
|
|
620
783
|
expect(@agent.retrieve_catalog({})).to eq(@catalog)
|
|
621
784
|
end
|
|
622
785
|
|
|
786
|
+
it "should set its cached_catalog_status to 'on_failure' when retrieving the remote catalog throws an exception" do
|
|
787
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.raises "eh"
|
|
788
|
+
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns @catalog
|
|
789
|
+
|
|
790
|
+
@agent.retrieve_catalog({})
|
|
791
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('on_failure')
|
|
792
|
+
end
|
|
793
|
+
|
|
623
794
|
it "should log and return nil if no catalog can be retrieved from the server and :usecacheonfailure is disabled" do
|
|
624
795
|
Puppet[:usecacheonfailure] = false
|
|
625
796
|
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns nil
|
|
626
797
|
|
|
627
|
-
Puppet.expects(:warning)
|
|
798
|
+
Puppet.expects(:warning).with('Not using cache on failed catalog')
|
|
628
799
|
|
|
629
800
|
expect(@agent.retrieve_catalog({})).to be_nil
|
|
630
801
|
end
|
|
631
802
|
|
|
632
|
-
it "should
|
|
803
|
+
it "should set its cached_catalog_status to 'not_used' if no catalog can be retrieved from the server and :usecacheonfailure is disabled or fails to retrieve a catalog" do
|
|
804
|
+
Puppet[:usecacheonfailure] = false
|
|
633
805
|
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_cache] == true }.returns nil
|
|
634
|
-
Puppet::Resource::Catalog.indirection.expects(:find).with { |name, options| options[:ignore_terminus] == true }.returns nil
|
|
635
806
|
|
|
636
|
-
|
|
807
|
+
@agent.retrieve_catalog({})
|
|
808
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('not_used')
|
|
637
809
|
end
|
|
638
810
|
|
|
639
|
-
it "should
|
|
640
|
-
|
|
811
|
+
it "should return nil if no cached catalog is available and no catalog can be retrieved from the server" do
|
|
812
|
+
expects_neither_new_or_cached_catalog
|
|
641
813
|
|
|
642
|
-
@agent.
|
|
643
|
-
expect(@agent.retrieve_catalog({})).to eq("converted catalog")
|
|
814
|
+
expect(@agent.retrieve_catalog({})).to be_nil
|
|
644
815
|
end
|
|
645
816
|
|
|
646
|
-
it "should return nil if
|
|
647
|
-
Puppet::Resource::Catalog.
|
|
817
|
+
it "should return nil if its cached catalog environment doesn't match server-specified environment" do
|
|
818
|
+
cached_catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote('second_env'))
|
|
819
|
+
@agent.instance_variable_set(:@node_environment, 'production')
|
|
820
|
+
|
|
821
|
+
expects_fallback_to_cached_catalog(cached_catalog)
|
|
648
822
|
|
|
823
|
+
Puppet.expects(:err).with("Not using cached catalog because its environment 'second_env' does not match 'production'")
|
|
649
824
|
expect(@agent.retrieve_catalog({})).to be_nil
|
|
650
825
|
end
|
|
826
|
+
|
|
827
|
+
it "should set its cached_catalog_status to 'not_used' if the cached catalog environment doesn't match server-specified environment" do
|
|
828
|
+
cached_catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote('second_env'))
|
|
829
|
+
@agent.instance_variable_set(:@node_environment, 'production')
|
|
830
|
+
|
|
831
|
+
expects_fallback_to_cached_catalog(cached_catalog)
|
|
832
|
+
|
|
833
|
+
@agent.retrieve_catalog({})
|
|
834
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('not_used')
|
|
835
|
+
end
|
|
836
|
+
|
|
837
|
+
it "should return its cached catalog if the environment matches the server-specified environment" do
|
|
838
|
+
cached_catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote(Puppet[:environment]))
|
|
839
|
+
@agent.instance_variable_set(:@node_environment, cached_catalog.environment)
|
|
840
|
+
|
|
841
|
+
expects_fallback_to_cached_catalog(cached_catalog)
|
|
842
|
+
|
|
843
|
+
expect(@agent.retrieve_catalog({})).to eq(cached_catalog)
|
|
844
|
+
end
|
|
845
|
+
|
|
846
|
+
it "should set its cached_catalog_status to 'on_failure' if the cached catalog environment matches server-specified environment" do
|
|
847
|
+
cached_catalog = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote(Puppet[:environment]))
|
|
848
|
+
@agent.instance_variable_set(:@node_environment, cached_catalog.environment)
|
|
849
|
+
|
|
850
|
+
expects_fallback_to_cached_catalog(cached_catalog)
|
|
851
|
+
|
|
852
|
+
@agent.retrieve_catalog({})
|
|
853
|
+
expect(@agent.instance_variable_get(:@cached_catalog_status)).to eq('on_failure')
|
|
854
|
+
end
|
|
651
855
|
end
|
|
652
856
|
|
|
653
857
|
describe "when converting the catalog" do
|
|
654
858
|
before do
|
|
655
859
|
Puppet.settings.stubs(:use).returns(true)
|
|
656
860
|
|
|
657
|
-
|
|
658
|
-
@oldcatalog = stub 'old_catalog', :to_ral => @catalog
|
|
861
|
+
catalog.stubs(:to_ral).returns ral_catalog
|
|
659
862
|
end
|
|
660
863
|
|
|
661
|
-
|
|
662
|
-
|
|
864
|
+
let (:catalog) { Puppet::Resource::Catalog.new('tester', Puppet::Node::Environment.remote(Puppet[:environment].to_sym)) }
|
|
865
|
+
let (:ral_catalog) { Puppet::Resource::Catalog.new('tester', Puppet::Node::Environment.remote(Puppet[:environment].to_sym)) }
|
|
663
866
|
|
|
664
|
-
|
|
867
|
+
it "should convert the catalog to a RAL-formed catalog" do
|
|
868
|
+
expect(@agent.convert_catalog(catalog, 10)).to equal(ral_catalog)
|
|
665
869
|
end
|
|
666
870
|
|
|
667
871
|
it "should finalize the catalog" do
|
|
668
|
-
|
|
872
|
+
ral_catalog.expects(:finalize)
|
|
669
873
|
|
|
670
|
-
@agent.convert_catalog(
|
|
874
|
+
@agent.convert_catalog(catalog, 10)
|
|
671
875
|
end
|
|
672
876
|
|
|
673
877
|
it "should record the passed retrieval time with the RAL catalog" do
|
|
674
|
-
|
|
878
|
+
ral_catalog.expects(:retrieval_duration=).with 10
|
|
675
879
|
|
|
676
|
-
@agent.convert_catalog(
|
|
880
|
+
@agent.convert_catalog(catalog, 10)
|
|
677
881
|
end
|
|
678
882
|
|
|
679
883
|
it "should write the RAL catalog's class file" do
|
|
680
|
-
|
|
884
|
+
ral_catalog.expects(:write_class_file)
|
|
681
885
|
|
|
682
|
-
@agent.convert_catalog(
|
|
886
|
+
@agent.convert_catalog(catalog, 10)
|
|
683
887
|
end
|
|
684
888
|
|
|
685
889
|
it "should write the RAL catalog's resource file" do
|
|
686
|
-
|
|
890
|
+
ral_catalog.expects(:write_resource_file)
|
|
891
|
+
|
|
892
|
+
@agent.convert_catalog(catalog, 10)
|
|
893
|
+
end
|
|
894
|
+
end
|
|
895
|
+
|
|
896
|
+
describe "when determining whether to pluginsync" do
|
|
897
|
+
it "should default to Puppet[:pluginsync] when explicitly set by the commandline" do
|
|
898
|
+
Puppet.settings[:pluginsync] = false
|
|
899
|
+
Puppet.settings.expects(:set_by_cli?).returns(true)
|
|
900
|
+
|
|
901
|
+
expect(described_class).not_to be_should_pluginsync
|
|
902
|
+
end
|
|
903
|
+
|
|
904
|
+
it "should default to Puppet[:pluginsync] when explicitly set by config" do
|
|
905
|
+
Puppet.settings[:pluginsync] = false
|
|
906
|
+
Puppet.settings.expects(:set_by_config?).returns(true)
|
|
907
|
+
|
|
908
|
+
expect(described_class).not_to be_should_pluginsync
|
|
909
|
+
end
|
|
910
|
+
|
|
911
|
+
it "should be true if use_cached_catalog is false" do
|
|
912
|
+
Puppet.settings[:use_cached_catalog] = false
|
|
913
|
+
|
|
914
|
+
expect(described_class).to be_should_pluginsync
|
|
915
|
+
end
|
|
916
|
+
|
|
917
|
+
it "should be false if use_cached_catalog is true" do
|
|
918
|
+
Puppet.settings[:use_cached_catalog] = true
|
|
687
919
|
|
|
688
|
-
|
|
920
|
+
expect(described_class).not_to be_should_pluginsync
|
|
689
921
|
end
|
|
690
922
|
end
|
|
691
923
|
end
|
|
@@ -53,6 +53,12 @@ describe "when using a hiera data provider" do
|
|
|
53
53
|
expect(resources).to include('module data param_a is 100, module data param_b is 200, module data param_c is 300, module data param_d is 400, module data param_e is 500')
|
|
54
54
|
end
|
|
55
55
|
|
|
56
|
+
it 'keeps lookup_options in one module separate from lookup_options in another' do
|
|
57
|
+
resources1 = compile('hiera_modules', 'include one').resources.select {|r| r.ref.start_with?('Class[One]')}
|
|
58
|
+
resources2 = compile('hiera_modules', 'include two').resources.select {|r| r.ref.start_with?('Class[One]')}
|
|
59
|
+
expect(resources1).to eq(resources2)
|
|
60
|
+
end
|
|
61
|
+
|
|
56
62
|
it 'does not perform merge of values declared in environment and module when resolving parameters' do
|
|
57
63
|
resources = compile_and_get_notifications('hiera_misc')
|
|
58
64
|
expect(resources).to include('env 1, ')
|
|
@@ -81,10 +87,8 @@ describe "when using a hiera data provider" do
|
|
|
81
87
|
expect(resources[0]).to eq('A, B, C, MA, MB, MC')
|
|
82
88
|
end
|
|
83
89
|
|
|
84
|
-
it "
|
|
85
|
-
|
|
86
|
-
expect(resources.size).to eq(1)
|
|
87
|
-
expect(resources[0]).to eq('deep')
|
|
90
|
+
it "will not find 'lookup_options' as a regular value" do
|
|
91
|
+
expect { compile_and_get_notifications('hiera_misc', '$r = lookup("lookup_options")') }.to raise_error(Puppet::DataBinding::LookupError, /did not find a value/)
|
|
88
92
|
end
|
|
89
93
|
|
|
90
94
|
it 'does find unqualified keys in the environment' do
|
|
@@ -180,16 +184,189 @@ Merge strategy first
|
|
|
180
184
|
ConfigurationPath "#{environmentpath}/hiera_misc/hiera.yaml"
|
|
181
185
|
Data Provider "common"
|
|
182
186
|
Path "#{environmentpath}/hiera_misc/data/common.yaml"
|
|
183
|
-
Original path: common
|
|
187
|
+
Original path: "common"
|
|
184
188
|
Interpolation on "Value from interpolation %{scope("target_scope")}"
|
|
185
189
|
Global Scope"
|
|
186
190
|
Found key: "target_scope" value: "with scope"
|
|
187
191
|
Found key: "km_scope" value: "Value from interpolation with scope"
|
|
188
192
|
Merged result: "Value from interpolation with scope"
|
|
193
|
+
EOS
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
it 'will report that merge options was found in the lookup_options hash' do
|
|
198
|
+
compile('hiera_misc', '$target_scope = "with scope"') do |compiler|
|
|
199
|
+
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(compiler.topscope, {}, {}, true)
|
|
200
|
+
value = Puppet::Pops::Lookup.lookup('one::loptsm_test::hash', nil, nil, nil, nil, lookup_invocation)
|
|
201
|
+
expect(lookup_invocation.explainer.to_s).to eq(<<EOS)
|
|
202
|
+
Using merge options from "lookup_options" hash
|
|
203
|
+
Merge strategy deep
|
|
204
|
+
Data Binding "hiera"
|
|
205
|
+
No such key: "one::loptsm_test::hash"
|
|
206
|
+
Data Provider "Hiera Data Provider, version 4"
|
|
207
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/hiera.yaml"
|
|
208
|
+
Data Provider "common"
|
|
209
|
+
Path "#{environmentpath}/hiera_misc/data/common.yaml"
|
|
210
|
+
Original path: "common"
|
|
211
|
+
Found key: "one::loptsm_test::hash" value: {
|
|
212
|
+
"a" => "A",
|
|
213
|
+
"b" => "B",
|
|
214
|
+
"m" => {
|
|
215
|
+
"ma" => "MA",
|
|
216
|
+
"mb" => "MB"
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
Module "one" using Data Provider "Hiera Data Provider, version 4"
|
|
220
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/modules/one/hiera.yaml"
|
|
221
|
+
Data Provider "common"
|
|
222
|
+
Path "#{environmentpath}/hiera_misc/modules/one/data/common.yaml"
|
|
223
|
+
Original path: "common"
|
|
224
|
+
Found key: "one::loptsm_test::hash" value: {
|
|
225
|
+
"a" => "A",
|
|
226
|
+
"c" => "C",
|
|
227
|
+
"m" => {
|
|
228
|
+
"ma" => "MA",
|
|
229
|
+
"mc" => "MC",
|
|
230
|
+
"mb" => "MB"
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
Merged result: {
|
|
234
|
+
"a" => "A",
|
|
235
|
+
"c" => "C",
|
|
236
|
+
"m" => {
|
|
237
|
+
"ma" => "MA",
|
|
238
|
+
"mc" => "MC",
|
|
239
|
+
"mb" => "MB"
|
|
240
|
+
},
|
|
241
|
+
"b" => "B"
|
|
242
|
+
}
|
|
243
|
+
EOS
|
|
244
|
+
end
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
it 'will report lookup_options details in combination with details of found value' do
|
|
248
|
+
compile('hiera_misc', '$target_scope = "with scope"') do |compiler|
|
|
249
|
+
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(compiler.topscope, {}, {}, Puppet::Pops::Lookup::Explainer.new(true))
|
|
250
|
+
value = Puppet::Pops::Lookup.lookup('one::loptsm_test::hash', nil, nil, nil, nil, lookup_invocation)
|
|
251
|
+
expect(lookup_invocation.explainer.to_s).to eq(<<EOS)
|
|
252
|
+
Searching for "lookup_options"
|
|
253
|
+
Merge strategy hash
|
|
254
|
+
Data Binding "hiera"
|
|
255
|
+
No such key: "lookup_options"
|
|
256
|
+
Data Provider "Hiera Data Provider, version 4"
|
|
257
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/hiera.yaml"
|
|
258
|
+
Data Provider "common"
|
|
259
|
+
Path "#{environmentpath}/hiera_misc/data/common.yaml"
|
|
260
|
+
Original path: "common"
|
|
261
|
+
Found key: "lookup_options" value: {
|
|
262
|
+
"one::lopts_test::hash" => {
|
|
263
|
+
"merge" => "deep"
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
Module "one" using Data Provider "Hiera Data Provider, version 4"
|
|
267
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/modules/one/hiera.yaml"
|
|
268
|
+
Data Provider "common"
|
|
269
|
+
Path "#{environmentpath}/hiera_misc/modules/one/data/common.yaml"
|
|
270
|
+
Original path: "common"
|
|
271
|
+
Found key: "lookup_options" value: {
|
|
272
|
+
"one::loptsm_test::hash" => {
|
|
273
|
+
"merge" => "deep"
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
Merged result: {
|
|
277
|
+
"one::loptsm_test::hash" => {
|
|
278
|
+
"merge" => "deep"
|
|
279
|
+
},
|
|
280
|
+
"one::lopts_test::hash" => {
|
|
281
|
+
"merge" => "deep"
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
Searching for "one::loptsm_test::hash"
|
|
285
|
+
Merge strategy deep
|
|
286
|
+
Data Binding "hiera"
|
|
287
|
+
No such key: "one::loptsm_test::hash"
|
|
288
|
+
Data Provider "Hiera Data Provider, version 4"
|
|
289
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/hiera.yaml"
|
|
290
|
+
Data Provider "common"
|
|
291
|
+
Path "#{environmentpath}/hiera_misc/data/common.yaml"
|
|
292
|
+
Original path: "common"
|
|
293
|
+
Found key: "one::loptsm_test::hash" value: {
|
|
294
|
+
"a" => "A",
|
|
295
|
+
"b" => "B",
|
|
296
|
+
"m" => {
|
|
297
|
+
"ma" => "MA",
|
|
298
|
+
"mb" => "MB"
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
Module "one" using Data Provider "Hiera Data Provider, version 4"
|
|
302
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/modules/one/hiera.yaml"
|
|
303
|
+
Data Provider "common"
|
|
304
|
+
Path "#{environmentpath}/hiera_misc/modules/one/data/common.yaml"
|
|
305
|
+
Original path: "common"
|
|
306
|
+
Found key: "one::loptsm_test::hash" value: {
|
|
307
|
+
"a" => "A",
|
|
308
|
+
"c" => "C",
|
|
309
|
+
"m" => {
|
|
310
|
+
"ma" => "MA",
|
|
311
|
+
"mc" => "MC",
|
|
312
|
+
"mb" => "MB"
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
Merged result: {
|
|
316
|
+
"a" => "A",
|
|
317
|
+
"c" => "C",
|
|
318
|
+
"m" => {
|
|
319
|
+
"ma" => "MA",
|
|
320
|
+
"mc" => "MC",
|
|
321
|
+
"mb" => "MB"
|
|
322
|
+
},
|
|
323
|
+
"b" => "B"
|
|
324
|
+
}
|
|
325
|
+
EOS
|
|
326
|
+
end
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
it 'will report config path (original and resolved), data path (original and resolved), and interpolation (before and after)' do
|
|
330
|
+
compile('hiera_misc', '$target_scope = "with scope"') do |compiler|
|
|
331
|
+
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(compiler.topscope, {}, {}, Puppet::Pops::Lookup::Explainer.new(true, true))
|
|
332
|
+
value = Puppet::Pops::Lookup.lookup('one::loptsm_test::hash', nil, nil, nil, nil, lookup_invocation)
|
|
333
|
+
expect(lookup_invocation.explainer.to_s).to eq(<<EOS)
|
|
334
|
+
Merge strategy hash
|
|
335
|
+
Data Binding "hiera"
|
|
336
|
+
No such key: "lookup_options"
|
|
337
|
+
Data Provider "Hiera Data Provider, version 4"
|
|
338
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/hiera.yaml"
|
|
339
|
+
Data Provider "common"
|
|
340
|
+
Path "#{environmentpath}/hiera_misc/data/common.yaml"
|
|
341
|
+
Original path: "common"
|
|
342
|
+
Found key: "lookup_options" value: {
|
|
343
|
+
"one::lopts_test::hash" => {
|
|
344
|
+
"merge" => "deep"
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
Module "one" using Data Provider "Hiera Data Provider, version 4"
|
|
348
|
+
ConfigurationPath "#{environmentpath}/hiera_misc/modules/one/hiera.yaml"
|
|
349
|
+
Data Provider "common"
|
|
350
|
+
Path "#{environmentpath}/hiera_misc/modules/one/data/common.yaml"
|
|
351
|
+
Original path: "common"
|
|
352
|
+
Found key: "lookup_options" value: {
|
|
353
|
+
"one::loptsm_test::hash" => {
|
|
354
|
+
"merge" => "deep"
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
Merged result: {
|
|
358
|
+
"one::loptsm_test::hash" => {
|
|
359
|
+
"merge" => "deep"
|
|
360
|
+
},
|
|
361
|
+
"one::lopts_test::hash" => {
|
|
362
|
+
"merge" => "deep"
|
|
363
|
+
}
|
|
364
|
+
}
|
|
189
365
|
EOS
|
|
190
366
|
end
|
|
191
367
|
end
|
|
192
368
|
end
|
|
369
|
+
|
|
193
370
|
def parent_fixture(dir_name)
|
|
194
371
|
File.absolute_path(File.join(my_fixture_dir(), "../#{dir_name}"))
|
|
195
372
|
end
|