puppet 8.4.0-universal-darwin → 8.5.1-universal-darwin
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 +4 -4
- data/Gemfile +4 -1
- data/Gemfile.lock +78 -61
- data/ext/project_data.yaml +4 -4
- data/ext/windows/service/daemon.rb +8 -8
- data/lib/hiera/puppet_function.rb +4 -4
- data/lib/hiera/scope.rb +5 -4
- data/lib/hiera_puppet.rb +0 -1
- data/lib/puppet/agent/disabler.rb +2 -2
- data/lib/puppet/agent.rb +3 -3
- data/lib/puppet/application/agent.rb +80 -78
- data/lib/puppet/application/apply.rb +45 -45
- data/lib/puppet/application/describe.rb +21 -21
- data/lib/puppet/application/device.rb +49 -49
- data/lib/puppet/application/doc.rb +27 -27
- data/lib/puppet/application/face_base.rb +2 -3
- data/lib/puppet/application/filebucket.rb +58 -58
- data/lib/puppet/application/generate.rb +1 -1
- data/lib/puppet/application/lookup.rb +44 -44
- data/lib/puppet/application/resource.rb +34 -34
- data/lib/puppet/application/script.rb +29 -29
- data/lib/puppet/application/ssl.rb +18 -18
- data/lib/puppet/application.rb +7 -7
- data/lib/puppet/application_support.rb +1 -1
- data/lib/puppet/compilable_resource_type.rb +2 -2
- data/lib/puppet/concurrent/lock.rb +0 -1
- data/lib/puppet/configurer/fact_handler.rb +3 -3
- data/lib/puppet/configurer.rb +8 -7
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/confine/boolean.rb +1 -1
- data/lib/puppet/confine/exists.rb +1 -1
- data/lib/puppet/confine/false.rb +1 -1
- data/lib/puppet/confine/feature.rb +1 -2
- data/lib/puppet/confine/true.rb +1 -1
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/confine_collection.rb +1 -1
- data/lib/puppet/context/trusted_information.rb +4 -4
- data/lib/puppet/daemon.rb +6 -6
- data/lib/puppet/datatypes.rb +3 -2
- data/lib/puppet/defaults.rb +12 -12
- data/lib/puppet/environments.rb +7 -7
- data/lib/puppet/error.rb +7 -6
- data/lib/puppet/etc.rb +3 -2
- data/lib/puppet/external/dot.rb +25 -25
- data/lib/puppet/face/catalog/select.rb +1 -1
- data/lib/puppet/face/config.rb +1 -1
- data/lib/puppet/face/epp.rb +9 -9
- data/lib/puppet/face/facts.rb +2 -2
- data/lib/puppet/face/generate.rb +1 -1
- data/lib/puppet/face/help.rb +17 -21
- data/lib/puppet/face/module/install.rb +4 -3
- data/lib/puppet/face/module/list.rb +7 -8
- data/lib/puppet/face/module/upgrade.rb +4 -3
- data/lib/puppet/face/parser.rb +6 -6
- data/lib/puppet/feature/base.rb +2 -2
- data/lib/puppet/feature/libuser.rb +2 -2
- data/lib/puppet/ffi/posix/constants.rb +1 -1
- data/lib/puppet/ffi/windows/functions.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +8 -6
- data/lib/puppet/file_bucket/file.rb +2 -2
- data/lib/puppet/file_serving/configuration.rb +1 -1
- data/lib/puppet/file_serving/fileset.rb +2 -2
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/metadata.rb +4 -5
- data/lib/puppet/file_serving/terminus_selector.rb +1 -1
- data/lib/puppet/file_system/file_impl.rb +4 -4
- data/lib/puppet/file_system/uniquefile.rb +4 -4
- data/lib/puppet/file_system/windows.rb +7 -7
- data/lib/puppet/file_system.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +1 -1
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/functions/abs.rb +4 -3
- data/lib/puppet/functions/all.rb +1 -1
- data/lib/puppet/functions/any.rb +1 -1
- data/lib/puppet/functions/assert_type.rb +3 -2
- data/lib/puppet/functions/break.rb +1 -1
- data/lib/puppet/functions/camelcase.rb +2 -2
- data/lib/puppet/functions/capitalize.rb +2 -2
- data/lib/puppet/functions/chomp.rb +1 -1
- data/lib/puppet/functions/chop.rb +1 -1
- data/lib/puppet/functions/compare.rb +1 -1
- data/lib/puppet/functions/contain.rb +5 -4
- data/lib/puppet/functions/dig.rb +3 -3
- data/lib/puppet/functions/downcase.rb +2 -2
- data/lib/puppet/functions/eyaml_lookup_key.rb +1 -1
- data/lib/puppet/functions/filter.rb +6 -7
- data/lib/puppet/functions/get.rb +1 -1
- data/lib/puppet/functions/getvar.rb +4 -4
- data/lib/puppet/functions/group_by.rb +2 -2
- data/lib/puppet/functions/include.rb +3 -2
- data/lib/puppet/functions/index.rb +1 -1
- data/lib/puppet/functions/join.rb +1 -1
- data/lib/puppet/functions/lookup.rb +2 -2
- data/lib/puppet/functions/lstrip.rb +1 -1
- data/lib/puppet/functions/map.rb +2 -2
- data/lib/puppet/functions/match.rb +4 -4
- data/lib/puppet/functions/max.rb +2 -2
- data/lib/puppet/functions/min.rb +2 -2
- data/lib/puppet/functions/next.rb +1 -1
- data/lib/puppet/functions/require.rb +3 -2
- data/lib/puppet/functions/rstrip.rb +1 -1
- data/lib/puppet/functions/slice.rb +1 -1
- data/lib/puppet/functions/strftime.rb +1 -1
- data/lib/puppet/functions/strip.rb +1 -1
- data/lib/puppet/functions/tree_each.rb +2 -2
- data/lib/puppet/functions/unique.rb +8 -8
- data/lib/puppet/functions/upcase.rb +2 -2
- data/lib/puppet/functions.rb +18 -18
- data/lib/puppet/generate/models/type/property.rb +1 -1
- data/lib/puppet/generate/models/type/type.rb +2 -2
- data/lib/puppet/generate/type.rb +3 -3
- data/lib/puppet/graph/rb_tree_map.rb +5 -5
- data/lib/puppet/graph/relationship_graph.rb +17 -17
- data/lib/puppet/graph/simple_graph.rb +25 -25
- data/lib/puppet/http/client.rb +4 -4
- data/lib/puppet/http/dns.rb +2 -3
- data/lib/puppet/http/errors.rb +2 -2
- data/lib/puppet/http/factory.rb +1 -1
- data/lib/puppet/http/proxy.rb +2 -2
- data/lib/puppet/http/redirector.rb +1 -1
- data/lib/puppet/http/resolver/server_list.rb +3 -3
- data/lib/puppet/http/response_converter.rb +2 -3
- data/lib/puppet/http/service/ca.rb +3 -3
- data/lib/puppet/http/service/compiler.rb +2 -2
- data/lib/puppet/http/service/file_server.rb +1 -1
- data/lib/puppet/http/service/puppetserver.rb +1 -1
- data/lib/puppet/http/service.rb +6 -9
- data/lib/puppet/http/session.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +17 -19
- data/lib/puppet/indirector/data_binding/hiera.rb +0 -1
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/face.rb +3 -3
- data/lib/puppet/indirector/fact_search.rb +1 -1
- data/lib/puppet/indirector/facts/json.rb +1 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +5 -5
- data/lib/puppet/indirector/file_bucket_file/selector.rb +0 -1
- data/lib/puppet/indirector/file_metadata/http.rb +2 -2
- data/lib/puppet/indirector/hiera.rb +2 -3
- data/lib/puppet/indirector/indirection.rb +12 -12
- data/lib/puppet/indirector/json.rb +2 -2
- data/lib/puppet/indirector/msgpack.rb +2 -2
- data/lib/puppet/indirector/node/exec.rb +2 -4
- data/lib/puppet/indirector/none.rb +0 -1
- data/lib/puppet/indirector/report/json.rb +1 -1
- data/lib/puppet/indirector/report/msgpack.rb +1 -1
- data/lib/puppet/indirector/report/yaml.rb +1 -1
- data/lib/puppet/indirector/request.rb +3 -3
- data/lib/puppet/indirector/resource/ral.rb +6 -6
- data/lib/puppet/indirector/rest.rb +1 -1
- data/lib/puppet/indirector/yaml.rb +2 -2
- data/lib/puppet/info_service/class_information_service.rb +8 -10
- data/lib/puppet/info_service/plan_information_service.rb +3 -3
- data/lib/puppet/info_service/task_information_service.rb +3 -3
- data/lib/puppet/interface/action.rb +13 -13
- data/lib/puppet/interface/action_builder.rb +1 -1
- data/lib/puppet/interface/action_manager.rb +2 -2
- data/lib/puppet/interface/documentation.rb +15 -15
- data/lib/puppet/interface/face_collection.rb +5 -5
- data/lib/puppet/interface/option.rb +6 -6
- data/lib/puppet/interface/option_manager.rb +2 -2
- data/lib/puppet/interface.rb +1 -1
- data/lib/puppet/metatype/manager.rb +4 -5
- data/lib/puppet/module/plan.rb +3 -3
- data/lib/puppet/module/task.rb +16 -16
- data/lib/puppet/module.rb +6 -5
- data/lib/puppet/module_tool/applications/checksummer.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +3 -3
- data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
- data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.rb +4 -4
- data/lib/puppet/module_tool/contents_description.rb +3 -3
- data/lib/puppet/module_tool/dependency.rb +2 -2
- data/lib/puppet/module_tool/errors/installer.rb +1 -1
- data/lib/puppet/module_tool/errors/shared.rb +3 -3
- data/lib/puppet/module_tool/installed_modules.rb +2 -2
- data/lib/puppet/module_tool/local_tarball.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +2 -2
- data/lib/puppet/module_tool/shared_behaviors.rb +11 -11
- data/lib/puppet/module_tool/tar/mini.rb +1 -1
- data/lib/puppet/module_tool/tar.rb +1 -1
- data/lib/puppet/module_tool.rb +4 -4
- data/lib/puppet/network/client_request.rb +0 -1
- data/lib/puppet/network/format.rb +1 -1
- data/lib/puppet/network/format_handler.rb +5 -5
- data/lib/puppet/network/format_support.rb +0 -1
- data/lib/puppet/network/formats.rb +15 -13
- data/lib/puppet/network/http/api/indirected_routes.rb +27 -15
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/api/master/v3.rb +0 -1
- data/lib/puppet/network/http/api/server/v3/environments.rb +2 -3
- data/lib/puppet/network/http/api/server/v3.rb +6 -6
- data/lib/puppet/network/http/api.rb +11 -11
- data/lib/puppet/network/http/connection.rb +3 -3
- data/lib/puppet/network/http/error.rb +2 -2
- data/lib/puppet/network/http/handler.rb +5 -5
- data/lib/puppet/network/http/request.rb +9 -5
- data/lib/puppet/network/http_pool.rb +1 -2
- data/lib/puppet/node/environment.rb +13 -13
- data/lib/puppet/node/facts.rb +6 -8
- data/lib/puppet/node.rb +4 -6
- data/lib/puppet/pal/compiler.rb +4 -4
- data/lib/puppet/pal/function_signature.rb +2 -2
- data/lib/puppet/pal/pal_impl.rb +39 -44
- data/lib/puppet/pal/plan_signature.rb +1 -1
- data/lib/puppet/pal/task_signature.rb +2 -2
- data/lib/puppet/parameter/path.rb +3 -3
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parameter/value_collection.rb +5 -5
- data/lib/puppet/parameter.rb +4 -4
- data/lib/puppet/parser/abstract_compiler.rb +1 -1
- data/lib/puppet/parser/ast/hostclass.rb +1 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +5 -5
- data/lib/puppet/parser/ast/resource.rb +1 -1
- data/lib/puppet/parser/ast/resourceparam.rb +1 -1
- data/lib/puppet/parser/catalog_compiler.rb +1 -1
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +0 -2
- data/lib/puppet/parser/compiler.rb +11 -11
- data/lib/puppet/parser/e4_parser_adapter.rb +1 -1
- data/lib/puppet/parser/files.rb +2 -2
- data/lib/puppet/parser/functions/assert_type.rb +15 -15
- data/lib/puppet/parser/functions/binary_file.rb +6 -6
- data/lib/puppet/parser/functions/break.rb +9 -9
- data/lib/puppet/parser/functions/contain.rb +1 -1
- data/lib/puppet/parser/functions/create_resources.rb +6 -5
- data/lib/puppet/parser/functions/defined.rb +24 -24
- data/lib/puppet/parser/functions/dig.rb +10 -10
- data/lib/puppet/parser/functions/digest.rb +1 -1
- data/lib/puppet/parser/functions/each.rb +21 -21
- data/lib/puppet/parser/functions/epp.rb +1 -1
- data/lib/puppet/parser/functions/fail.rb +1 -1
- data/lib/puppet/parser/functions/file.rb +1 -1
- data/lib/puppet/parser/functions/filter.rb +20 -20
- data/lib/puppet/parser/functions/find_file.rb +6 -7
- data/lib/puppet/parser/functions/fqdn_rand.rb +4 -4
- data/lib/puppet/parser/functions/generate.rb +2 -2
- data/lib/puppet/parser/functions/hiera.rb +21 -21
- data/lib/puppet/parser/functions/hiera_array.rb +19 -20
- data/lib/puppet/parser/functions/hiera_hash.rb +21 -22
- data/lib/puppet/parser/functions/hiera_include.rb +21 -22
- data/lib/puppet/parser/functions/include.rb +2 -2
- data/lib/puppet/parser/functions/inline_epp.rb +1 -1
- data/lib/puppet/parser/functions/inline_template.rb +3 -2
- data/lib/puppet/parser/functions/lest.rb +11 -11
- data/lib/puppet/parser/functions/lookup.rb +22 -22
- data/lib/puppet/parser/functions/map.rb +20 -20
- data/lib/puppet/parser/functions/match.rb +11 -11
- data/lib/puppet/parser/functions/md5.rb +1 -1
- data/lib/puppet/parser/functions/new.rb +236 -237
- data/lib/puppet/parser/functions/next.rb +8 -8
- data/lib/puppet/parser/functions/realize.rb +4 -3
- data/lib/puppet/parser/functions/reduce.rb +27 -27
- data/lib/puppet/parser/functions/regsubst.rb +4 -3
- data/lib/puppet/parser/functions/require.rb +3 -2
- data/lib/puppet/parser/functions/return.rb +18 -18
- data/lib/puppet/parser/functions/reverse_each.rb +22 -22
- data/lib/puppet/parser/functions/scanf.rb +6 -6
- data/lib/puppet/parser/functions/sha1.rb +1 -1
- data/lib/puppet/parser/functions/sha256.rb +1 -1
- data/lib/puppet/parser/functions/slice.rb +10 -10
- data/lib/puppet/parser/functions/split.rb +2 -1
- data/lib/puppet/parser/functions/sprintf.rb +4 -4
- data/lib/puppet/parser/functions/step.rb +20 -20
- data/lib/puppet/parser/functions/strftime.rb +43 -43
- data/lib/puppet/parser/functions/tag.rb +3 -2
- data/lib/puppet/parser/functions/tagged.rb +3 -2
- data/lib/puppet/parser/functions/template.rb +3 -2
- data/lib/puppet/parser/functions/then.rb +17 -17
- data/lib/puppet/parser/functions/type.rb +15 -15
- data/lib/puppet/parser/functions/versioncmp.rb +1 -1
- data/lib/puppet/parser/functions/with.rb +4 -4
- data/lib/puppet/parser/functions.rb +6 -6
- data/lib/puppet/parser/relationship.rb +2 -2
- data/lib/puppet/parser/resource.rb +12 -17
- data/lib/puppet/parser/scope.rb +49 -48
- data/lib/puppet/parser/script_compiler.rb +5 -5
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +3 -3
- data/lib/puppet/plugins.rb +1 -1
- data/lib/puppet/pops/adaptable.rb +0 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +61 -63
- data/lib/puppet/pops/evaluator/closure.rb +9 -11
- data/lib/puppet/pops/evaluator/collector_transformer.rb +2 -2
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +2 -2
- data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +2 -3
- data/lib/puppet/pops/evaluator/compare_operator.rb +12 -10
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +17 -15
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +6 -6
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +80 -79
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +2 -3
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +18 -6
- data/lib/puppet/pops/evaluator/puppet_proc.rb +3 -3
- data/lib/puppet/pops/evaluator/relationship_operator.rb +6 -6
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +10 -9
- data/lib/puppet/pops/evaluator/runtime3_support.rb +15 -14
- data/lib/puppet/pops/functions/dispatch.rb +5 -7
- data/lib/puppet/pops/functions/dispatcher.rb +4 -4
- data/lib/puppet/pops/functions/function.rb +2 -2
- data/lib/puppet/pops/issue_reporter.rb +3 -3
- data/lib/puppet/pops/issues.rb +5 -1
- data/lib/puppet/pops/label_provider.rb +2 -2
- data/lib/puppet/pops/loader/base_loader.rb +1 -2
- data/lib/puppet/pops/loader/dependency_loader.rb +2 -2
- data/lib/puppet/pops/loader/gem_support.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +6 -7
- data/lib/puppet/pops/loader/module_loaders.rb +13 -18
- data/lib/puppet/pops/loader/predefined_loader.rb +1 -1
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +2 -1
- data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +2 -1
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +4 -4
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +7 -6
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +1 -1
- data/lib/puppet/pops/loader/simple_environment_loader.rb +1 -1
- data/lib/puppet/pops/loader/static_loader.rb +2 -2
- data/lib/puppet/pops/loader/task_instantiator.rb +2 -2
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +2 -1
- data/lib/puppet/pops/loader/typed_name.rb +1 -1
- data/lib/puppet/pops/loader/uri_helper.rb +1 -1
- data/lib/puppet/pops/loaders.rb +3 -3
- data/lib/puppet/pops/lookup/context.rb +32 -25
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +2 -2
- data/lib/puppet/pops/lookup/explainer.rb +9 -9
- data/lib/puppet/pops/lookup/global_data_provider.rb +2 -2
- data/lib/puppet/pops/lookup/hiera_config.rb +23 -20
- data/lib/puppet/pops/lookup/interpolation.rb +4 -3
- data/lib/puppet/pops/lookup/key_recorder.rb +1 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +7 -5
- data/lib/puppet/pops/lookup/lookup_key.rb +1 -1
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/lookup.rb +1 -2
- data/lib/puppet/pops/merge_strategy.rb +10 -8
- data/lib/puppet/pops/migration/migration_checker.rb +3 -3
- data/lib/puppet/pops/model/ast_transformer.rb +7 -7
- data/lib/puppet/pops/model/factory.rb +12 -13
- data/lib/puppet/pops/model/model_label_provider.rb +3 -1
- data/lib/puppet/pops/model/model_tree_dumper.rb +21 -21
- data/lib/puppet/pops/model/tree_dumper.rb +3 -3
- data/lib/puppet/pops/parser/code_merger.rb +2 -2
- data/lib/puppet/pops/parser/epp_parser.rb +2 -2
- data/lib/puppet/pops/parser/epp_support.rb +5 -5
- data/lib/puppet/pops/parser/evaluating_parser.rb +4 -4
- data/lib/puppet/pops/parser/heredoc_support.rb +4 -4
- data/lib/puppet/pops/parser/interpolation_support.rb +20 -20
- data/lib/puppet/pops/parser/lexer2.rb +30 -29
- data/lib/puppet/pops/parser/lexer_support.rb +20 -18
- data/lib/puppet/pops/parser/locator.rb +11 -11
- data/lib/puppet/pops/parser/parser_support.rb +7 -7
- data/lib/puppet/pops/parser/pn_parser.rb +1 -1
- data/lib/puppet/pops/parser/slurp_support.rb +10 -10
- data/lib/puppet/pops/pcore.rb +1 -1
- data/lib/puppet/pops/pn.rb +1 -2
- data/lib/puppet/pops/resource/param.rb +11 -12
- data/lib/puppet/pops/resource/resource_type_impl.rb +34 -34
- data/lib/puppet/pops/semantic_error.rb +1 -1
- data/lib/puppet/pops/serialization/abstract_writer.rb +2 -2
- data/lib/puppet/pops/serialization/from_data_converter.rb +12 -9
- data/lib/puppet/pops/serialization/json.rb +2 -2
- data/lib/puppet/pops/serialization/object.rb +1 -2
- data/lib/puppet/pops/serialization/serializer.rb +13 -14
- data/lib/puppet/pops/serialization/to_data_converter.rb +3 -3
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +5 -5
- data/lib/puppet/pops/time/timespan.rb +7 -6
- data/lib/puppet/pops/time/timestamp.rb +4 -2
- data/lib/puppet/pops/types/annotation.rb +3 -3
- data/lib/puppet/pops/types/class_loader.rb +8 -7
- data/lib/puppet/pops/types/implementation_registry.rb +2 -1
- data/lib/puppet/pops/types/iterable.rb +9 -9
- data/lib/puppet/pops/types/p_binary_type.rb +2 -2
- data/lib/puppet/pops/types/p_init_type.rb +2 -3
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_object_type.rb +52 -51
- data/lib/puppet/pops/types/p_object_type_extension.rb +1 -2
- data/lib/puppet/pops/types/p_runtime_type.rb +1 -2
- data/lib/puppet/pops/types/p_sem_ver_type.rb +4 -5
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
- data/lib/puppet/pops/types/p_timespan_type.rb +3 -4
- data/lib/puppet/pops/types/p_timestamp_type.rb +1 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +29 -31
- data/lib/puppet/pops/types/p_uri_type.rb +8 -8
- data/lib/puppet/pops/types/ruby_generator.rb +7 -6
- data/lib/puppet/pops/types/ruby_method.rb +6 -7
- data/lib/puppet/pops/types/string_converter.rb +29 -32
- data/lib/puppet/pops/types/tree_iterators.rb +6 -8
- data/lib/puppet/pops/types/type_asserter.rb +3 -3
- data/lib/puppet/pops/types/type_calculator.rb +36 -36
- data/lib/puppet/pops/types/type_factory.rb +9 -8
- data/lib/puppet/pops/types/type_formatter.rb +34 -38
- data/lib/puppet/pops/types/type_mismatch_describer.rb +25 -22
- data/lib/puppet/pops/types/type_parser.rb +12 -10
- data/lib/puppet/pops/types/type_with_members.rb +0 -1
- data/lib/puppet/pops/types/types.rb +85 -97
- data/lib/puppet/pops/utils.rb +2 -2
- data/lib/puppet/pops/validation/checker4_0.rb +51 -38
- data/lib/puppet/pops/validation/tasks_checker.rb +3 -3
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +2 -0
- data/lib/puppet/pops/validation.rb +15 -15
- data/lib/puppet/pops/visitor.rb +1 -1
- data/lib/puppet/property/ensure.rb +0 -1
- data/lib/puppet/property/keyvalue.rb +5 -6
- data/lib/puppet/property/list.rb +1 -1
- data/lib/puppet/property.rb +8 -10
- data/lib/puppet/provider/aix_object.rb +9 -9
- data/lib/puppet/provider/exec/posix.rb +1 -1
- data/lib/puppet/provider/exec.rb +3 -3
- data/lib/puppet/provider/file/windows.rb +3 -3
- data/lib/puppet/provider/group/groupadd.rb +2 -2
- data/lib/puppet/provider/group/pw.rb +0 -1
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/ldap.rb +2 -3
- data/lib/puppet/provider/nameservice/directoryservice.rb +11 -11
- data/lib/puppet/provider/nameservice/pw.rb +0 -1
- data/lib/puppet/provider/nameservice.rb +9 -10
- data/lib/puppet/provider/package/aix.rb +4 -4
- data/lib/puppet/provider/package/appdmg.rb +3 -3
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +7 -3
- data/lib/puppet/provider/package/aptrpm.rb +6 -4
- data/lib/puppet/provider/package/blastwave.rb +3 -3
- data/lib/puppet/provider/package/dnf.rb +5 -0
- data/lib/puppet/provider/package/dnfmodule.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +8 -8
- data/lib/puppet/provider/package/gem.rb +6 -7
- data/lib/puppet/provider/package/hpux.rb +2 -2
- data/lib/puppet/provider/package/nim.rb +4 -4
- data/lib/puppet/provider/package/openbsd.rb +8 -8
- data/lib/puppet/provider/package/opkg.rb +6 -6
- data/lib/puppet/provider/package/pacman.rb +2 -2
- data/lib/puppet/provider/package/pip.rb +8 -8
- data/lib/puppet/provider/package/pkg.rb +19 -19
- data/lib/puppet/provider/package/pkgdmg.rb +5 -5
- data/lib/puppet/provider/package/pkgin.rb +6 -6
- data/lib/puppet/provider/package/pkgng.rb +1 -1
- data/lib/puppet/provider/package/pkgutil.rb +11 -11
- data/lib/puppet/provider/package/portage.rb +3 -3
- data/lib/puppet/provider/package/portupgrade.rb +5 -7
- data/lib/puppet/provider/package/puppet_gem.rb +2 -2
- data/lib/puppet/provider/package/puppetserver_gem.rb +4 -4
- data/lib/puppet/provider/package/rpm.rb +9 -9
- data/lib/puppet/provider/package/sun.rb +2 -2
- data/lib/puppet/provider/package/tdnf.rb +6 -1
- data/lib/puppet/provider/package/windows/exe_package.rb +2 -2
- data/lib/puppet/provider/package/windows/package.rb +3 -3
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +25 -14
- data/lib/puppet/provider/package/zypper.rb +7 -7
- data/lib/puppet/provider/package.rb +1 -1
- data/lib/puppet/provider/package_targetable.rb +2 -2
- data/lib/puppet/provider/parsedfile.rb +5 -7
- data/lib/puppet/provider/service/base.rb +0 -1
- data/lib/puppet/provider/service/daemontools.rb +10 -10
- data/lib/puppet/provider/service/debian.rb +2 -2
- data/lib/puppet/provider/service/freebsd.rb +15 -17
- data/lib/puppet/provider/service/init.rb +2 -3
- data/lib/puppet/provider/service/launchd.rb +3 -3
- data/lib/puppet/provider/service/openrc.rb +1 -1
- data/lib/puppet/provider/service/redhat.rb +2 -1
- data/lib/puppet/provider/service/runit.rb +2 -3
- data/lib/puppet/provider/service/service.rb +0 -1
- data/lib/puppet/provider/service/smf.rb +4 -4
- data/lib/puppet/provider/service/src.rb +3 -4
- data/lib/puppet/provider/service/systemd.rb +3 -2
- data/lib/puppet/provider/service/upstart.rb +6 -8
- data/lib/puppet/provider/service/windows.rb +15 -15
- data/lib/puppet/provider/user/aix.rb +14 -14
- data/lib/puppet/provider/user/directoryservice.rb +8 -8
- data/lib/puppet/provider/user/hpux.rb +9 -9
- data/lib/puppet/provider/user/ldap.rb +4 -4
- data/lib/puppet/provider/user/openbsd.rb +1 -1
- data/lib/puppet/provider/user/pw.rb +1 -2
- data/lib/puppet/provider/user/user_role_add.rb +9 -9
- data/lib/puppet/provider/user/useradd.rb +4 -4
- data/lib/puppet/provider/user/windows_adsi.rb +6 -6
- data/lib/puppet/provider.rb +2 -2
- data/lib/puppet/reference/configuration.rb +15 -14
- data/lib/puppet/reference/indirection.rb +14 -14
- data/lib/puppet/reference/providers.rb +2 -2
- data/lib/puppet/reference/type.rb +1 -1
- data/lib/puppet/relationship.rb +2 -2
- data/lib/puppet/reports/log.rb +0 -1
- data/lib/puppet/reports/store.rb +2 -2
- data/lib/puppet/resource/catalog.rb +26 -30
- data/lib/puppet/resource/status.rb +4 -3
- data/lib/puppet/resource/type.rb +10 -11
- data/lib/puppet/resource/type_collection.rb +5 -5
- data/lib/puppet/resource.rb +35 -30
- data/lib/puppet/scheduler/scheduler.rb +1 -1
- data/lib/puppet/scheduler.rb +1 -1
- data/lib/puppet/settings/base_setting.rb +2 -2
- data/lib/puppet/settings/boolean_setting.rb +1 -1
- data/lib/puppet/settings/config_file.rb +2 -2
- data/lib/puppet/settings/duration_setting.rb +2 -3
- data/lib/puppet/settings/environment_conf.rb +6 -4
- data/lib/puppet/settings/errors.rb +3 -3
- data/lib/puppet/settings/integer_setting.rb +1 -1
- data/lib/puppet/settings/priority_setting.rb +3 -4
- data/lib/puppet/settings/server_list_setting.rb +4 -4
- data/lib/puppet/settings/ttl_setting.rb +3 -4
- data/lib/puppet/settings/value_translator.rb +1 -1
- data/lib/puppet/settings.rb +39 -36
- data/lib/puppet/ssl/base.rb +2 -2
- data/lib/puppet/ssl/certificate.rb +2 -2
- data/lib/puppet/ssl/certificate_request.rb +10 -10
- data/lib/puppet/ssl/certificate_request_attributes.rb +1 -1
- data/lib/puppet/ssl/oids.rb +4 -4
- data/lib/puppet/ssl/ssl_provider.rb +8 -6
- data/lib/puppet/ssl/state_machine.rb +11 -11
- data/lib/puppet/syntax_checkers/base64.rb +1 -1
- data/lib/puppet/syntax_checkers/epp.rb +2 -2
- data/lib/puppet/syntax_checkers/json.rb +2 -2
- data/lib/puppet/syntax_checkers/pp.rb +2 -2
- data/lib/puppet/syntax_checkers.rb +1 -1
- data/lib/puppet/test/test_helper.rb +10 -9
- data/lib/puppet/transaction/additional_resource_generator.rb +5 -5
- data/lib/puppet/transaction/event_manager.rb +2 -3
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +14 -16
- data/lib/puppet/transaction/resource_harness.rb +2 -2
- data/lib/puppet/transaction.rb +11 -11
- data/lib/puppet/trusted_external.rb +1 -1
- data/lib/puppet/type/exec.rb +7 -11
- data/lib/puppet/type/file/checksum_value.rb +2 -2
- data/lib/puppet/type/file/content.rb +5 -5
- data/lib/puppet/type/file/ctime.rb +0 -1
- data/lib/puppet/type/file/data_sync.rb +2 -2
- data/lib/puppet/type/file/ensure.rb +6 -9
- data/lib/puppet/type/file/owner.rb +0 -1
- data/lib/puppet/type/file/selcontext.rb +0 -1
- data/lib/puppet/type/file/source.rb +2 -2
- data/lib/puppet/type/file/target.rb +2 -3
- data/lib/puppet/type/file/type.rb +0 -1
- data/lib/puppet/type/file.rb +22 -26
- data/lib/puppet/type/group.rb +2 -2
- data/lib/puppet/type/package.rb +8 -8
- data/lib/puppet/type/resources.rb +8 -8
- data/lib/puppet/type/schedule.rb +4 -4
- data/lib/puppet/type/service.rb +4 -4
- data/lib/puppet/type/tidy.rb +7 -7
- data/lib/puppet/type/user.rb +20 -19
- data/lib/puppet/type.rb +44 -49
- data/lib/puppet/util/at_fork/solaris.rb +4 -4
- data/lib/puppet/util/autoload.rb +2 -2
- data/lib/puppet/util/backups.rb +3 -3
- data/lib/puppet/util/checksums.rb +1 -1
- data/lib/puppet/util/classgen.rb +2 -3
- data/lib/puppet/util/colors.rb +33 -33
- data/lib/puppet/util/command_line/puppet_option_parser.rb +5 -4
- data/lib/puppet/util/command_line/trollop.rb +38 -34
- data/lib/puppet/util/command_line.rb +1 -1
- data/lib/puppet/util/diff.rb +4 -4
- data/lib/puppet/util/docs.rb +3 -3
- data/lib/puppet/util/errors.rb +2 -2
- data/lib/puppet/util/execution.rb +12 -11
- data/lib/puppet/util/feature.rb +6 -8
- data/lib/puppet/util/fileparsing.rb +9 -12
- data/lib/puppet/util/filetype.rb +3 -3
- data/lib/puppet/util/inifile.rb +1 -1
- data/lib/puppet/util/ldap/manager.rb +6 -7
- data/lib/puppet/util/libuser.rb +1 -1
- data/lib/puppet/util/log/destination.rb +0 -1
- data/lib/puppet/util/log/destinations.rb +2 -4
- data/lib/puppet/util/log.rb +7 -6
- data/lib/puppet/util/logging.rb +6 -7
- data/lib/puppet/util/metaid.rb +0 -1
- data/lib/puppet/util/metric.rb +3 -3
- data/lib/puppet/util/monkey_patches.rb +1 -1
- data/lib/puppet/util/multi_match.rb +4 -4
- data/lib/puppet/util/network_device/base.rb +1 -1
- data/lib/puppet/util/network_device/config.rb +2 -2
- data/lib/puppet/util/package/version/pip.rb +2 -2
- data/lib/puppet/util/package/version/range/lt.rb +1 -1
- data/lib/puppet/util/package/version/range.rb +5 -5
- data/lib/puppet/util/package.rb +1 -1
- data/lib/puppet/util/pidlock.rb +1 -1
- data/lib/puppet/util/plist.rb +6 -5
- data/lib/puppet/util/posix.rb +3 -4
- data/lib/puppet/util/profiler/aggregate.rb +2 -3
- data/lib/puppet/util/profiler/logging.rb +1 -1
- data/lib/puppet/util/profiler/wall_clock.rb +2 -3
- data/lib/puppet/util/provider_features.rb +1 -2
- data/lib/puppet/util/rdoc/code_objects.rb +11 -10
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +37 -34
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +17 -15
- data/lib/puppet/util/rdoc.rb +8 -8
- data/lib/puppet/util/reference.rb +2 -2
- data/lib/puppet/util/resource_template.rb +0 -1
- data/lib/puppet/util/retry_action.rb +2 -2
- data/lib/puppet/util/rpm_compare.rb +7 -7
- data/lib/puppet/util/rubygems.rb +0 -1
- data/lib/puppet/util/run_mode.rb +3 -3
- data/lib/puppet/util/selinux.rb +3 -3
- data/lib/puppet/util/storage.rb +1 -1
- data/lib/puppet/util/suidmanager.rb +13 -15
- data/lib/puppet/util/symbolic_file_mode.rb +8 -7
- data/lib/puppet/util/tagging.rb +2 -2
- data/lib/puppet/util/user_attr.rb +1 -1
- data/lib/puppet/util/watched_file.rb +2 -1
- data/lib/puppet/util/watcher/periodic_watcher.rb +0 -1
- data/lib/puppet/util/windows/access_control_list.rb +5 -4
- data/lib/puppet/util/windows/adsi.rb +14 -14
- data/lib/puppet/util/windows/com.rb +2 -2
- data/lib/puppet/util/windows/daemon.rb +8 -8
- data/lib/puppet/util/windows/eventlog.rb +4 -4
- data/lib/puppet/util/windows/file.rb +16 -12
- data/lib/puppet/util/windows/monkey_patches/process.rb +1 -1
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +28 -22
- data/lib/puppet/util/windows/registry.rb +47 -14
- data/lib/puppet/util/windows/root_certs.rb +1 -1
- data/lib/puppet/util/windows/security.rb +20 -18
- data/lib/puppet/util/windows/service.rb +4 -4
- data/lib/puppet/util/windows/sid.rb +8 -7
- data/lib/puppet/util/windows/user.rb +4 -2
- data/lib/puppet/util/windows.rb +1 -1
- data/lib/puppet/util.rb +14 -16
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509/cert_provider.rb +12 -12
- data/lib/puppet.rb +8 -7
- data/locales/puppet.pot +2008 -2004
- data/man/man5/puppet.conf.5 +2 -2
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- 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 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/tasks/generate_cert_fixtures.rake +1 -0
- metadata +3 -2455
- data/spec/fixtures/faulty_face/puppet/face/syntax.rb +0 -8
- data/spec/fixtures/hiera.yaml +0 -9
- data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -92
- data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +0 -3
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +0 -2
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +0 -25
- data/spec/fixtures/integration/application/module/environments/direnv/modules/nginx/README +0 -3
- data/spec/fixtures/integration/application/module/environments/direnv/modules/nginx/manifests/init.pp +0 -17
- data/spec/fixtures/integration/application/module/environments/direnv/modules/nginx/metadata.json +0 -20
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +0 -4
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +0 -3
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +0 -8
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +0 -25
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +0 -19
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +0 -20
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +0 -8
- data/spec/fixtures/integration/node/environment/sitedir/00_a.pp +0 -2
- data/spec/fixtures/integration/node/environment/sitedir/01_b.pp +0 -6
- data/spec/fixtures/integration/node/environment/sitedir/03_empty.pp +0 -0
- data/spec/fixtures/integration/node/environment/sitedir/04_include.pp +0 -2
- data/spec/fixtures/integration/node/environment/sitedir2/00_a.pp +0 -2
- data/spec/fixtures/integration/node/environment/sitedir2/02_folder/01_b.pp +0 -6
- data/spec/fixtures/integration/node/environment/sitedir2/03_c.pp +0 -1
- data/spec/fixtures/integration/node/environment/sitedir2/04_include.pp +0 -2
- data/spec/fixtures/java.tgz +0 -0
- data/spec/fixtures/manifests/site.pp +0 -0
- data/spec/fixtures/module.tar.gz +0 -0
- data/spec/fixtures/releases/jamtur01-apache/Modulefile +0 -2
- data/spec/fixtures/releases/jamtur01-apache/files/httpd +0 -24
- data/spec/fixtures/releases/jamtur01-apache/files/test.vhost +0 -18
- data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +0 -21
- data/spec/fixtures/releases/jamtur01-apache/lib/puppet/type/a2mod.rb +0 -12
- data/spec/fixtures/releases/jamtur01-apache/manifests/dev.pp +0 -5
- data/spec/fixtures/releases/jamtur01-apache/manifests/init.pp +0 -34
- data/spec/fixtures/releases/jamtur01-apache/manifests/params.pp +0 -17
- data/spec/fixtures/releases/jamtur01-apache/manifests/php.pp +0 -5
- data/spec/fixtures/releases/jamtur01-apache/manifests/ssl.pp +0 -15
- data/spec/fixtures/releases/jamtur01-apache/manifests/vhost.pp +0 -15
- data/spec/fixtures/releases/jamtur01-apache/metadata.json +0 -1
- data/spec/fixtures/releases/jamtur01-apache/templates/vhost-default.conf.erb +0 -20
- data/spec/fixtures/releases/jamtur01-apache/tests/apache.pp +0 -1
- data/spec/fixtures/releases/jamtur01-apache/tests/dev.pp +0 -1
- data/spec/fixtures/releases/jamtur01-apache/tests/init.pp +0 -1
- data/spec/fixtures/releases/jamtur01-apache/tests/php.pp +0 -1
- data/spec/fixtures/releases/jamtur01-apache/tests/ssl.pp +0 -1
- data/spec/fixtures/releases/jamtur01-apache/tests/vhost.pp +0 -2
- data/spec/fixtures/ssl/127.0.0.1-key.pem +0 -117
- data/spec/fixtures/ssl/127.0.0.1.pem +0 -70
- data/spec/fixtures/ssl/bad-basic-constraints.pem +0 -81
- data/spec/fixtures/ssl/bad-int-basic-constraints.pem +0 -81
- data/spec/fixtures/ssl/ca.pem +0 -81
- data/spec/fixtures/ssl/crl.pem +0 -40
- data/spec/fixtures/ssl/ec-key-openssl.pem +0 -8
- data/spec/fixtures/ssl/ec-key-pk8.pem +0 -5
- data/spec/fixtures/ssl/ec-key.pem +0 -18
- data/spec/fixtures/ssl/ec.pem +0 -50
- data/spec/fixtures/ssl/encrypted-ec-key.pem +0 -21
- data/spec/fixtures/ssl/encrypted-key.pem +0 -120
- data/spec/fixtures/ssl/intermediate-agent-crl.pem +0 -40
- data/spec/fixtures/ssl/intermediate-agent.pem +0 -81
- data/spec/fixtures/ssl/intermediate-crl.pem +0 -46
- data/spec/fixtures/ssl/intermediate.pem +0 -81
- data/spec/fixtures/ssl/netlock-arany-utf8.pem +0 -23
- data/spec/fixtures/ssl/oid-key.pem +0 -117
- data/spec/fixtures/ssl/oid.pem +0 -70
- data/spec/fixtures/ssl/pluto-key.pem +0 -117
- data/spec/fixtures/ssl/pluto.pem +0 -67
- data/spec/fixtures/ssl/renewed.pem +0 -67
- data/spec/fixtures/ssl/request-key.pem +0 -117
- data/spec/fixtures/ssl/request.pem +0 -62
- data/spec/fixtures/ssl/revoked-key.pem +0 -117
- data/spec/fixtures/ssl/revoked.pem +0 -67
- data/spec/fixtures/ssl/signed-key.pem +0 -117
- data/spec/fixtures/ssl/signed.pem +0 -67
- data/spec/fixtures/ssl/tampered-cert.pem +0 -67
- data/spec/fixtures/ssl/tampered-csr.pem +0 -62
- data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +0 -117
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +0 -70
- data/spec/fixtures/ssl/unknown-ca-key.pem +0 -117
- data/spec/fixtures/ssl/unknown-ca.pem +0 -81
- data/spec/fixtures/stdlib.tgz +0 -0
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +0 -24
- data/spec/fixtures/unit/application/environments/production/environment.conf +0 -1
- data/spec/fixtures/unit/application/environments/production/manifests/site.pp +0 -1
- data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +0 -1
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/environment/data.pp +0 -10
- data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +0 -1
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +0 -3
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +0 -5
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +0 -5
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +0 -3
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +0 -5
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +0 -5
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +0 -1
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +0 -5
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +0 -9
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +0 -3
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +0 -3
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json +0 -3
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml +0 -3
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +0 -22
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +0 -5
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +0 -48
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +0 -1
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +0 -30
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +0 -13
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +0 -9
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +0 -4
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +0 -4
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +0 -7
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +0 -1
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +0 -3
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +0 -3
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server1.yaml +0 -1
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server2.yaml +0 -1
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +0 -20
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +0 -5
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +0 -9
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +0 -4
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +0 -4
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +0 -7
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +0 -1
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +0 -6
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +0 -5
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +0 -2
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +0 -9
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +0 -4
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +0 -5
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +0 -3
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +0 -9
- data/spec/fixtures/unit/data_providers/environments/production/environment.conf +0 -2
- data/spec/fixtures/unit/data_providers/environments/production/lib/puppet/functions/environment/data.rb +0 -9
- data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -9
- data/spec/fixtures/unit/data_providers/environments/production/modules/abc/manifests/init.pp +0 -10
- data/spec/fixtures/unit/data_providers/environments/production/modules/abc/metadata.json +0 -9
- data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/functions/data.pp +0 -6
- data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/manifests/init.pp +0 -9
- data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/metadata.json +0 -9
- data/spec/fixtures/unit/forge/bacula-releases.json +0 -128
- data/spec/fixtures/unit/forge/bacula.json +0 -76
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/fixtures/unit/functions/hiera/hiera/backend/hieraspec_backend.rb +0 -22
- data/spec/fixtures/unit/functions/lookup/data/common.yaml +0 -19
- data/spec/fixtures/unit/functions/lookup/hiera/backend/custom_backend.rb +0 -18
- data/spec/fixtures/unit/functions/lookup/hiera/backend/other_backend.rb +0 -7
- data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +0 -19
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/environment.conf +0 -2
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/lib/puppet/functions/environment/data.rb +0 -13
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/manifests/init.pp +0 -8
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/metadata.json +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -7
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/manifests/init.pp +0 -2
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/metadata.json +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/manifests/init.pp +0 -2
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/metadata.json +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/hiera.yaml +0 -5
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/manifests/init.pp +0 -2
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/metadata.json +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/data/empty_key.json +0 -1
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/hiera.yaml +0 -5
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/manifests/init.pp +0 -2
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/metadata.json +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -1
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/hiera.yaml +0 -5
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -2
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/metadata.json +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/data/empty.yaml +0 -2
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/hiera.yaml +0 -5
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/manifests/init.pp +0 -2
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/metadata.json +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/data/first.json +0 -4
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/hiera.yaml +0 -8
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/manifests/init.pp +0 -5
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/metadata.json +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/manifests/init.pp +0 -3
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/metadata.json +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/no_provider/manifests/init.pp +0 -2
- data/spec/fixtures/unit/indirector/data_binding/hiera/global.yaml +0 -10
- data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +0 -1
- data/spec/fixtures/unit/indirector/hiera/global.yaml +0 -10
- data/spec/fixtures/unit/indirector/hiera/invalid.yaml +0 -1
- data/spec/fixtures/unit/module/trailing-comma.json +0 -24
- data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/init.pp +0 -3
- data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/wrongdefine.pp +0 -3
- data/spec/fixtures/unit/parser/lexer/aliastest.pp +0 -16
- data/spec/fixtures/unit/parser/lexer/append.pp +0 -11
- data/spec/fixtures/unit/parser/lexer/argumentdefaults.pp +0 -14
- data/spec/fixtures/unit/parser/lexer/arithmetic_expression.pp +0 -8
- data/spec/fixtures/unit/parser/lexer/arraytrailingcomma.pp +0 -3
- data/spec/fixtures/unit/parser/lexer/casestatement.pp +0 -65
- data/spec/fixtures/unit/parser/lexer/classheirarchy.pp +0 -15
- data/spec/fixtures/unit/parser/lexer/classincludes.pp +0 -17
- data/spec/fixtures/unit/parser/lexer/classpathtest.pp +0 -11
- data/spec/fixtures/unit/parser/lexer/collection.pp +0 -10
- data/spec/fixtures/unit/parser/lexer/collection_override.pp +0 -8
- data/spec/fixtures/unit/parser/lexer/collection_within_virtual_definitions.pp +0 -20
- data/spec/fixtures/unit/parser/lexer/componentmetaparams.pp +0 -11
- data/spec/fixtures/unit/parser/lexer/componentrequire.pp +0 -8
- data/spec/fixtures/unit/parser/lexer/deepclassheirarchy.pp +0 -23
- data/spec/fixtures/unit/parser/lexer/defineoverrides.pp +0 -17
- data/spec/fixtures/unit/parser/lexer/emptyclass.pp +0 -9
- data/spec/fixtures/unit/parser/lexer/emptyexec.pp +0 -3
- data/spec/fixtures/unit/parser/lexer/emptyifelse.pp +0 -9
- data/spec/fixtures/unit/parser/lexer/falsevalues.pp +0 -3
- data/spec/fixtures/unit/parser/lexer/filecreate.pp +0 -11
- data/spec/fixtures/unit/parser/lexer/fqdefinition.pp +0 -5
- data/spec/fixtures/unit/parser/lexer/fqparents.pp +0 -11
- data/spec/fixtures/unit/parser/lexer/funccomma.pp +0 -5
- data/spec/fixtures/unit/parser/lexer/hash.pp +0 -33
- data/spec/fixtures/unit/parser/lexer/ifexpression.pp +0 -12
- data/spec/fixtures/unit/parser/lexer/implicititeration.pp +0 -15
- data/spec/fixtures/unit/parser/lexer/multilinecomments.pp +0 -10
- data/spec/fixtures/unit/parser/lexer/multipleclass.pp +0 -9
- data/spec/fixtures/unit/parser/lexer/multipleinstances.pp +0 -7
- data/spec/fixtures/unit/parser/lexer/multisubs.pp +0 -13
- data/spec/fixtures/unit/parser/lexer/namevartest.pp +0 -9
- data/spec/fixtures/unit/parser/lexer/scopetest.pp +0 -13
- data/spec/fixtures/unit/parser/lexer/selectorvalues.pp +0 -49
- data/spec/fixtures/unit/parser/lexer/simpledefaults.pp +0 -5
- data/spec/fixtures/unit/parser/lexer/simpleselector.pp +0 -38
- data/spec/fixtures/unit/parser/lexer/singleary.pp +0 -19
- data/spec/fixtures/unit/parser/lexer/singlequote.pp +0 -11
- data/spec/fixtures/unit/parser/lexer/singleselector.pp +0 -22
- data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +0 -11
- data/spec/fixtures/unit/parser/lexer/tag.pp +0 -9
- data/spec/fixtures/unit/parser/lexer/tagged.pp +0 -35
- data/spec/fixtures/unit/parser/lexer/virtualresources.pp +0 -14
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +0 -10
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/lib/puppet/bindings/confdirtest.rb +0 -10
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet/bindings/awesome2/default.rb +0 -20
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +0 -18
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/lib/puppet/bindings/bad/default.rb +0 -5
- data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/lib/puppet/bindings/good/default.rb +0 -6
- data/spec/fixtures/unit/pops/binder/config/binder_config/nolayer/binder_config.yaml +0 -6
- data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +0 -9
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +0 -3
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/callee.rb +0 -5
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +0 -6
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/type/usee_type.rb +0 -5
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +0 -8
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +0 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +0 -5
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +0 -5
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +0 -5
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +0 -5
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller.rb +0 -5
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +0 -5
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +0 -5
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +0 -5
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +0 -5
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +0 -87
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/metadata.json +0 -10
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +0 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +0 -1
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load.rb +0 -11
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load2.rb +0 -11
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load3.rb +0 -11
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load4.rb +0 -11
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load5.rb +0 -12
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee.rb +0 -8
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee_ws.rb +0 -8
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/func_with_syntax_error.rb +0 -9
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/good_func_load.rb +0 -9
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/metadata.json +0 -9
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcalled.pp +0 -3
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller.pp +0 -3
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller4.pp +0 -3
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/caller.rb +0 -5
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/caller_ws.rb +0 -12
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/callingpuppet.rb +0 -5
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/metadata.json +0 -9
- data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/functions/hello.pp +0 -3
- data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/manifests/init.pp +0 -3
- data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/metadata.json +0 -10
- data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +0 -10
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/hello.pp +0 -3
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/subspace/hello.pp +0 -3
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/modulea/rb_func_a.rb +0 -5
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/rb_func_a.rb +0 -5
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/manifests/init.pp +0 -3
- data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/metadata.json +0 -10
- data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/lib/puppet/functions/moduleb/rb_func_b.rb +0 -6
- data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/manifests/init.pp +0 -3
- data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +0 -16
- data/spec/fixtures/unit/pops/parser/lexer/append.pp +0 -11
- data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +0 -14
- data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +0 -8
- data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +0 -3
- data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +0 -65
- data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +0 -15
- data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +0 -17
- data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +0 -11
- data/spec/fixtures/unit/pops/parser/lexer/collection.pp +0 -10
- data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +0 -8
- data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +0 -20
- data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +0 -11
- data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +0 -8
- data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +0 -23
- data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +0 -17
- data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +0 -9
- data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +0 -3
- data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +0 -9
- data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +0 -3
- data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +0 -11
- data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +0 -5
- data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +0 -11
- data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +0 -5
- data/spec/fixtures/unit/pops/parser/lexer/hash.pp +0 -33
- data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +0 -12
- data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +0 -15
- data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +0 -10
- data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +0 -9
- data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +0 -7
- data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +0 -13
- data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +0 -9
- data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +0 -13
- data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +0 -49
- data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +0 -5
- data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +0 -38
- data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +0 -19
- data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +0 -11
- data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +0 -22
- data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +0 -11
- data/spec/fixtures/unit/pops/parser/lexer/tag.pp +0 -9
- data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +0 -35
- data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +0 -14
- data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_input.out +0 -1
- data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_output.out +0 -1
- data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +0 -272
- data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +0 -3
- data/spec/fixtures/unit/provider/cron/parsed/managed +0 -6
- data/spec/fixtures/unit/provider/cron/parsed/simple +0 -9
- data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +0 -19
- data/spec/fixtures/unit/provider/package/gem/gem-list-single-package +0 -4
- data/spec/fixtures/unit/provider/package/gem/line-with-1.8.5-warning +0 -14
- data/spec/fixtures/unit/provider/package/openbsd/pkginfo.detail +0 -19
- data/spec/fixtures/unit/provider/package/openbsd/pkginfo.list +0 -10
- data/spec/fixtures/unit/provider/package/openbsd/pkginfo.query +0 -1
- data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +0 -2
- data/spec/fixtures/unit/provider/package/pkg/dummy_implicit_version +0 -3
- data/spec/fixtures/unit/provider/package/pkg/dummy_solaris10 +0 -1
- data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.certificate_warning +0 -2
- data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.installed +0 -1
- data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.known +0 -1
- data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.installed +0 -1
- data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.known +0 -1
- data/spec/fixtures/unit/provider/package/pkg/incomplete +0 -1
- data/spec/fixtures/unit/provider/package/pkg/solaris11 +0 -2
- data/spec/fixtures/unit/provider/package/pkg/unknown_status +0 -12
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query +0 -7
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +0 -1
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +0 -5
- data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +0 -30
- data/spec/fixtures/unit/provider/package/sun/dummy.server +0 -12
- data/spec/fixtures/unit/provider/package/sun/simple +0 -24
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +0 -187
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-multiline.txt +0 -201
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-obsoletes.txt +0 -195
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-plugin-output.txt +0 -36
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +0 -184
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-simple.txt +0 -13
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +0 -9
- data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-SLES11sp1.out +0 -369
- data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-empty.out +0 -3
- data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +0 -13
- data/spec/fixtures/unit/provider/parsedfile/aliases.txt +0 -2
- data/spec/fixtures/unit/provider/parsedfile/simple.txt +0 -7
- data/spec/fixtures/unit/provider/service/base/ps_ef.mixed_encoding +0 -3
- data/spec/fixtures/unit/provider/service/gentoo/rc_update_show +0 -30
- data/spec/fixtures/unit/provider/service/openbsd/rcctl_getall +0 -6
- data/spec/fixtures/unit/provider/service/openrc/rcservice_list +0 -8
- data/spec/fixtures/unit/provider/service/openrc/rcstatus +0 -43
- data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +0 -6
- data/spec/fixtures/unit/provider/service/smf/svcs_instances.out +0 -4
- data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +0 -13
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +0 -16
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
- data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -36
- data/spec/fixtures/unit/reports/tagmail/tagmail_email.conf +0 -2
- data/spec/fixtures/unit/reports/tagmail/tagmail_failers.conf +0 -3
- data/spec/fixtures/unit/reports/tagmail/tagmail_passers.conf +0 -30
- data/spec/fixtures/unit/ssl/certificate/old-style-cert-exts.pem +0 -33
- data/spec/fixtures/unit/ssl/certificate_request/old-style-cert-request.pem +0 -28
- data/spec/fixtures/unit/type/user/authorized_keys +0 -6
- data/spec/fixtures/unit/util/filetype/aixtab_output +0 -44
- data/spec/fixtures/unit/util/filetype/suntab_output +0 -9
- data/spec/fixtures/unit/util/monkey_patches/x509.pem +0 -32
- data/spec/fixtures/unit/util/rdoc/basic.pp +0 -16
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +0 -104
- 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 +0 -108
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +0 -108
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +0 -104
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +0 -100
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +0 -104
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +0 -104
- data/spec/fixtures/yaml/report2.6.x.yaml +0 -190
- data/spec/fixtures/yaml/test.local.yaml +0 -16
- data/spec/integration/agent/logging_spec.rb +0 -179
- data/spec/integration/application/agent_spec.rb +0 -1067
- data/spec/integration/application/apply_spec.rb +0 -781
- data/spec/integration/application/doc_spec.rb +0 -24
- data/spec/integration/application/filebucket_spec.rb +0 -255
- data/spec/integration/application/help_spec.rb +0 -44
- data/spec/integration/application/lookup_spec.rb +0 -275
- data/spec/integration/application/module_spec.rb +0 -230
- data/spec/integration/application/plugin_spec.rb +0 -145
- data/spec/integration/application/resource_spec.rb +0 -68
- data/spec/integration/application/ssl_spec.rb +0 -20
- data/spec/integration/configurer_spec.rb +0 -166
- data/spec/integration/data_binding_spec.rb +0 -278
- data/spec/integration/defaults_spec.rb +0 -279
- data/spec/integration/directory_environments_spec.rb +0 -67
- data/spec/integration/environments/default_manifest_spec.rb +0 -215
- data/spec/integration/environments/setting_hooks_spec.rb +0 -27
- data/spec/integration/environments/settings_interpolation_spec.rb +0 -106
- data/spec/integration/environments/settings_spec.rb +0 -128
- data/spec/integration/http/client_spec.rb +0 -229
- data/spec/integration/indirector/catalog/compiler_spec.rb +0 -75
- data/spec/integration/indirector/direct_file_server_spec.rb +0 -90
- data/spec/integration/indirector/facts/facter_spec.rb +0 -168
- data/spec/integration/indirector/file_content/file_server_spec.rb +0 -106
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -75
- data/spec/integration/l10n/compiler_spec.rb +0 -37
- data/spec/integration/network/formats_spec.rb +0 -90
- data/spec/integration/network/http/api/indirected_routes_spec.rb +0 -60
- data/spec/integration/network/http_pool_spec.rb +0 -275
- data/spec/integration/node/environment_spec.rb +0 -170
- data/spec/integration/node/facts_spec.rb +0 -40
- data/spec/integration/node_spec.rb +0 -77
- data/spec/integration/parser/catalog_spec.rb +0 -68
- data/spec/integration/parser/class_spec.rb +0 -33
- data/spec/integration/parser/collection_spec.rb +0 -362
- data/spec/integration/parser/compiler_spec.rb +0 -1221
- data/spec/integration/parser/conditionals_spec.rb +0 -95
- data/spec/integration/parser/dynamic_scoping_spec.rb +0 -66
- data/spec/integration/parser/environment_spec.rb +0 -47
- data/spec/integration/parser/node_spec.rb +0 -163
- data/spec/integration/parser/parameter_defaults_spec.rb +0 -358
- data/spec/integration/parser/pcore_resource_spec.rb +0 -243
- data/spec/integration/parser/resource_expressions_spec.rb +0 -222
- data/spec/integration/parser/scope_spec.rb +0 -735
- data/spec/integration/parser/script_compiler_spec.rb +0 -113
- data/spec/integration/parser/undef_param_spec.rb +0 -95
- data/spec/integration/provider/file/windows_spec.rb +0 -162
- data/spec/integration/resource/catalog_spec.rb +0 -47
- data/spec/integration/resource/type_collection_spec.rb +0 -88
- data/spec/integration/transaction/report_spec.rb +0 -706
- data/spec/integration/transaction_spec.rb +0 -553
- data/spec/integration/type/exec_spec.rb +0 -114
- data/spec/integration/type/file_spec.rb +0 -2012
- data/spec/integration/type/notify_spec.rb +0 -46
- data/spec/integration/type/package_spec.rb +0 -200
- data/spec/integration/type/tidy_spec.rb +0 -45
- data/spec/integration/type_spec.rb +0 -30
- data/spec/integration/util/autoload_spec.rb +0 -104
- data/spec/integration/util/execution_spec.rb +0 -104
- data/spec/integration/util/rdoc/parser_spec.rb +0 -171
- data/spec/integration/util/settings_spec.rb +0 -115
- data/spec/integration/util/windows/adsi_spec.rb +0 -207
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +0 -231
- data/spec/integration/util/windows/principal_spec.rb +0 -279
- data/spec/integration/util/windows/process_spec.rb +0 -96
- data/spec/integration/util/windows/registry_spec.rb +0 -334
- data/spec/integration/util/windows/security_spec.rb +0 -1010
- data/spec/integration/util/windows/user_spec.rb +0 -226
- data/spec/integration/util_spec.rb +0 -104
- data/spec/lib/matchers/containment_matchers.rb +0 -52
- data/spec/lib/matchers/include_in_order.rb +0 -20
- data/spec/lib/matchers/include_in_order_spec.rb +0 -30
- data/spec/lib/matchers/json.rb +0 -132
- data/spec/lib/matchers/match_tokens2.rb +0 -74
- data/spec/lib/matchers/relationship_graph_matchers.rb +0 -48
- data/spec/lib/matchers/resource.rb +0 -74
- data/spec/lib/puppet/certificate_factory.rb +0 -218
- data/spec/lib/puppet/face/1.0.0/huzzah.rb +0 -8
- data/spec/lib/puppet/face/basetest.rb +0 -51
- data/spec/lib/puppet/face/huzzah/obsolete.rb +0 -6
- data/spec/lib/puppet/face/huzzah.rb +0 -8
- data/spec/lib/puppet/face/version_matching.rb +0 -12
- data/spec/lib/puppet/indirector/indirector_testing/json.rb +0 -6
- data/spec/lib/puppet/indirector/indirector_testing/memory.rb +0 -7
- data/spec/lib/puppet/indirector/indirector_testing/msgpack.rb +0 -6
- data/spec/lib/puppet/indirector_proxy.rb +0 -34
- data/spec/lib/puppet/indirector_testing.rb +0 -31
- data/spec/lib/puppet/test_ca.rb +0 -157
- data/spec/lib/puppet_spec/character_encoding.rb +0 -12
- data/spec/lib/puppet_spec/compiler.rb +0 -112
- data/spec/lib/puppet_spec/files.rb +0 -107
- data/spec/lib/puppet_spec/fixtures.rb +0 -52
- data/spec/lib/puppet_spec/handler.rb +0 -53
- data/spec/lib/puppet_spec/https.rb +0 -95
- data/spec/lib/puppet_spec/language.rb +0 -75
- data/spec/lib/puppet_spec/matchers.rb +0 -68
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +0 -56
- data/spec/lib/puppet_spec/module_tool/stub_source.rb +0 -136
- data/spec/lib/puppet_spec/modules.rb +0 -82
- data/spec/lib/puppet_spec/network.rb +0 -127
- data/spec/lib/puppet_spec/pops.rb +0 -29
- data/spec/lib/puppet_spec/puppetserver.rb +0 -180
- data/spec/lib/puppet_spec/scope.rb +0 -13
- data/spec/lib/puppet_spec/settings.rb +0 -39
- data/spec/lib/puppet_spec/ssl.rb +0 -265
- data/spec/lib/puppet_spec/unindent.rb +0 -5
- data/spec/lib/puppet_spec/verbose.rb +0 -20
- data/spec/shared_behaviours/all_parsedfile_providers.rb +0 -21
- data/spec/shared_behaviours/an_indirector_face.rb +0 -6
- data/spec/shared_behaviours/documentation_on_faces.rb +0 -261
- data/spec/shared_behaviours/file_server_terminus.rb +0 -38
- data/spec/shared_behaviours/file_serving.rb +0 -73
- data/spec/shared_behaviours/hiera_indirections.rb +0 -98
- data/spec/shared_behaviours/iterative_functions.rb +0 -68
- data/spec/shared_behaviours/memory_terminus.rb +0 -28
- data/spec/shared_behaviours/path_parameters.rb +0 -160
- data/spec/shared_behaviours/store_configs_terminus.rb +0 -21
- data/spec/shared_behaviours/things_that_declare_options.rb +0 -262
- data/spec/shared_contexts/checksum.rb +0 -65
- data/spec/shared_contexts/digests.rb +0 -100
- data/spec/shared_contexts/https.rb +0 -29
- data/spec/shared_contexts/l10n.rb +0 -32
- data/spec/shared_contexts/provider.rb +0 -16
- data/spec/shared_contexts/types_setup.rb +0 -204
- data/spec/shared_examples/rhel_package_provider.rb +0 -398
- data/spec/spec_helper.rb +0 -240
- data/spec/unit/agent/disabler_spec.rb +0 -63
- data/spec/unit/agent/locker_spec.rb +0 -99
- data/spec/unit/agent_spec.rb +0 -411
- data/spec/unit/application/agent_spec.rb +0 -640
- data/spec/unit/application/apply_spec.rb +0 -559
- data/spec/unit/application/config_spec.rb +0 -232
- data/spec/unit/application/describe_spec.rb +0 -135
- data/spec/unit/application/device_spec.rb +0 -616
- data/spec/unit/application/doc_spec.rb +0 -333
- data/spec/unit/application/face_base_spec.rb +0 -454
- data/spec/unit/application/facts_spec.rb +0 -139
- data/spec/unit/application/filebucket_spec.rb +0 -319
- data/spec/unit/application/indirection_base_spec.rb +0 -50
- data/spec/unit/application/lookup_spec.rb +0 -698
- data/spec/unit/application/resource_spec.rb +0 -229
- data/spec/unit/application/ssl_spec.rb +0 -507
- data/spec/unit/application_spec.rb +0 -730
- data/spec/unit/certificate_factory_spec.rb +0 -170
- data/spec/unit/concurrent/lock_spec.rb +0 -29
- data/spec/unit/concurrent/thread_local_singleton_spec.rb +0 -39
- data/spec/unit/configurer/downloader_spec.rb +0 -252
- data/spec/unit/configurer/fact_handler_spec.rb +0 -147
- data/spec/unit/configurer/plugin_handler_spec.rb +0 -152
- data/spec/unit/configurer_spec.rb +0 -1488
- data/spec/unit/confine/exists_spec.rb +0 -82
- data/spec/unit/confine/false_spec.rb +0 -78
- data/spec/unit/confine/feature_spec.rb +0 -59
- data/spec/unit/confine/true_spec.rb +0 -78
- data/spec/unit/confine/variable_spec.rb +0 -105
- data/spec/unit/confine_collection_spec.rb +0 -132
- data/spec/unit/confine_spec.rb +0 -99
- data/spec/unit/confiner_spec.rb +0 -61
- data/spec/unit/context/trusted_information_spec.rb +0 -213
- data/spec/unit/context_spec.rb +0 -217
- data/spec/unit/daemon_spec.rb +0 -176
- data/spec/unit/data_binding_spec.rb +0 -11
- data/spec/unit/data_providers/function_data_provider_spec.rb +0 -122
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +0 -362
- data/spec/unit/datatypes_spec.rb +0 -352
- data/spec/unit/defaults_spec.rb +0 -182
- data/spec/unit/environments_spec.rb +0 -1186
- data/spec/unit/etc_spec.rb +0 -465
- data/spec/unit/external/pson_spec.rb +0 -58
- data/spec/unit/face/config_spec.rb +0 -402
- data/spec/unit/face/epp_face_spec.rb +0 -385
- data/spec/unit/face/facts_spec.rb +0 -78
- data/spec/unit/face/generate_spec.rb +0 -293
- data/spec/unit/face/help_spec.rb +0 -208
- data/spec/unit/face/module/install_spec.rb +0 -40
- data/spec/unit/face/module/list_spec.rb +0 -256
- data/spec/unit/face/module/uninstall_spec.rb +0 -45
- data/spec/unit/face/module/upgrade_spec.rb +0 -26
- data/spec/unit/face/node_spec.rb +0 -129
- data/spec/unit/face/parser_spec.rb +0 -310
- data/spec/unit/face/plugin_spec.rb +0 -158
- data/spec/unit/face_spec.rb +0 -1
- data/spec/unit/facter_impl_spec.rb +0 -31
- data/spec/unit/file_bucket/dipper_spec.rb +0 -405
- data/spec/unit/file_bucket/file_spec.rb +0 -58
- data/spec/unit/file_serving/base_spec.rb +0 -164
- data/spec/unit/file_serving/configuration/parser_spec.rb +0 -206
- data/spec/unit/file_serving/configuration_spec.rb +0 -240
- data/spec/unit/file_serving/content_spec.rb +0 -98
- data/spec/unit/file_serving/fileset_spec.rb +0 -417
- data/spec/unit/file_serving/http_metadata_spec.rb +0 -109
- data/spec/unit/file_serving/metadata_spec.rb +0 -551
- data/spec/unit/file_serving/mount/file_spec.rb +0 -188
- data/spec/unit/file_serving/mount/locales_spec.rb +0 -72
- data/spec/unit/file_serving/mount/modules_spec.rb +0 -69
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +0 -72
- data/spec/unit/file_serving/mount/plugins_spec.rb +0 -72
- data/spec/unit/file_serving/mount/scripts_spec.rb +0 -69
- data/spec/unit/file_serving/mount/tasks_spec.rb +0 -71
- data/spec/unit/file_serving/mount_spec.rb +0 -30
- data/spec/unit/file_serving/terminus_helper_spec.rb +0 -114
- data/spec/unit/file_serving/terminus_selector_spec.rb +0 -84
- data/spec/unit/file_system/path_pattern_spec.rb +0 -153
- data/spec/unit/file_system/uniquefile_spec.rb +0 -245
- data/spec/unit/file_system_spec.rb +0 -1198
- data/spec/unit/forge/errors_spec.rb +0 -80
- data/spec/unit/forge/forge_spec.rb +0 -69
- data/spec/unit/forge/module_release_spec.rb +0 -331
- data/spec/unit/forge/repository_spec.rb +0 -154
- data/spec/unit/forge_spec.rb +0 -210
- data/spec/unit/functions/abs_spec.rb +0 -70
- data/spec/unit/functions/all_spec.rb +0 -97
- data/spec/unit/functions/annotate_spec.rb +0 -175
- data/spec/unit/functions/any_spec.rb +0 -109
- data/spec/unit/functions/assert_type_spec.rb +0 -97
- data/spec/unit/functions/binary_file_spec.rb +0 -46
- data/spec/unit/functions/break_spec.rb +0 -207
- data/spec/unit/functions/call_spec.rb +0 -131
- data/spec/unit/functions/camelcase_spec.rb +0 -34
- data/spec/unit/functions/capitalize_spec.rb +0 -34
- data/spec/unit/functions/ceiling_spec.rb +0 -65
- data/spec/unit/functions/chomp_spec.rb +0 -46
- data/spec/unit/functions/chop_spec.rb +0 -38
- data/spec/unit/functions/compare_spec.rb +0 -147
- data/spec/unit/functions/contain_spec.rb +0 -297
- data/spec/unit/functions/convert_to_spec.rb +0 -25
- data/spec/unit/functions/defined_spec.rb +0 -288
- data/spec/unit/functions/dig_spec.rb +0 -58
- data/spec/unit/functions/downcase_spec.rb +0 -34
- data/spec/unit/functions/each_spec.rb +0 -107
- data/spec/unit/functions/empty_spec.rb +0 -87
- data/spec/unit/functions/epp_spec.rb +0 -178
- data/spec/unit/functions/filter_spec.rb +0 -145
- data/spec/unit/functions/find_file_spec.rb +0 -69
- data/spec/unit/functions/find_template_spec.rb +0 -69
- data/spec/unit/functions/flatten_spec.rb +0 -31
- data/spec/unit/functions/floor_spec.rb +0 -65
- data/spec/unit/functions/get_spec.rb +0 -135
- data/spec/unit/functions/getvar_spec.rb +0 -121
- data/spec/unit/functions/group_by_spec.rb +0 -40
- data/spec/unit/functions/hiera_spec.rb +0 -495
- data/spec/unit/functions/include_spec.rb +0 -186
- data/spec/unit/functions/index_spec.rb +0 -184
- data/spec/unit/functions/inline_epp_spec.rb +0 -120
- data/spec/unit/functions/join_spec.rb +0 -33
- data/spec/unit/functions/keys_spec.rb +0 -31
- data/spec/unit/functions/length_spec.rb +0 -50
- data/spec/unit/functions/lest_spec.rb +0 -34
- data/spec/unit/functions/logging_spec.rb +0 -62
- data/spec/unit/functions/lookup_fixture_spec.rb +0 -687
- data/spec/unit/functions/lookup_spec.rb +0 -3415
- data/spec/unit/functions/lstrip_spec.rb +0 -30
- data/spec/unit/functions/map_spec.rb +0 -163
- data/spec/unit/functions/match_spec.rb +0 -74
- data/spec/unit/functions/max_spec.rb +0 -158
- data/spec/unit/functions/min_spec.rb +0 -158
- data/spec/unit/functions/module_directory_spec.rb +0 -43
- data/spec/unit/functions/new_spec.rb +0 -776
- data/spec/unit/functions/next_spec.rb +0 -93
- data/spec/unit/functions/partition_spec.rb +0 -40
- data/spec/unit/functions/reduce_spec.rb +0 -85
- data/spec/unit/functions/regsubst_spec.rb +0 -114
- data/spec/unit/functions/require_spec.rb +0 -82
- data/spec/unit/functions/return_spec.rb +0 -109
- data/spec/unit/functions/reverse_each_spec.rb +0 -108
- data/spec/unit/functions/round_spec.rb +0 -41
- data/spec/unit/functions/rstrip_spec.rb +0 -30
- data/spec/unit/functions/scanf_spec.rb +0 -32
- data/spec/unit/functions/shared.rb +0 -94
- data/spec/unit/functions/size_spec.rb +0 -50
- data/spec/unit/functions/slice_spec.rb +0 -136
- data/spec/unit/functions/sort_spec.rb +0 -79
- data/spec/unit/functions/split_spec.rb +0 -59
- data/spec/unit/functions/step_spec.rb +0 -113
- data/spec/unit/functions/strftime_spec.rb +0 -152
- data/spec/unit/functions/strip_spec.rb +0 -30
- data/spec/unit/functions/then_spec.rb +0 -40
- data/spec/unit/functions/tree_each_spec.rb +0 -493
- data/spec/unit/functions/type_spec.rb +0 -35
- data/spec/unit/functions/unique_spec.rb +0 -111
- data/spec/unit/functions/unwrap_spec.rb +0 -37
- data/spec/unit/functions/upcase_spec.rb +0 -34
- data/spec/unit/functions/values_spec.rb +0 -30
- data/spec/unit/functions/versioncmp_spec.rb +0 -70
- data/spec/unit/functions/with_spec.rb +0 -31
- data/spec/unit/functions4_spec.rb +0 -1046
- data/spec/unit/gettext/config_spec.rb +0 -156
- data/spec/unit/gettext/module_loading_spec.rb +0 -53
- data/spec/unit/graph/key_spec.rb +0 -41
- data/spec/unit/graph/rb_tree_map_spec.rb +0 -570
- data/spec/unit/graph/relationship_graph_spec.rb +0 -401
- data/spec/unit/graph/sequential_prioritizer_spec.rb +0 -32
- data/spec/unit/graph/simple_graph_spec.rb +0 -759
- data/spec/unit/hiera/scope_spec.rb +0 -105
- data/spec/unit/hiera_puppet_spec.rb +0 -159
- data/spec/unit/http/client_spec.rb +0 -937
- data/spec/unit/http/dns_spec.rb +0 -281
- data/spec/unit/http/external_client_spec.rb +0 -201
- data/spec/unit/http/factory_spec.rb +0 -160
- data/spec/unit/http/pool_entry_spec.rb +0 -49
- data/spec/unit/http/pool_spec.rb +0 -401
- data/spec/unit/http/proxy_spec.rb +0 -347
- data/spec/unit/http/resolver_spec.rb +0 -133
- data/spec/unit/http/response_spec.rb +0 -75
- data/spec/unit/http/service/ca_spec.rb +0 -281
- data/spec/unit/http/service/compiler_spec.rb +0 -746
- data/spec/unit/http/service/file_server_spec.rb +0 -309
- data/spec/unit/http/service/puppetserver_spec.rb +0 -112
- data/spec/unit/http/service/report_spec.rb +0 -107
- data/spec/unit/http/service_spec.rb +0 -137
- data/spec/unit/http/session_spec.rb +0 -309
- data/spec/unit/http/site_spec.rb +0 -96
- data/spec/unit/indirector/catalog/compiler_spec.rb +0 -1238
- data/spec/unit/indirector/catalog/json_spec.rb +0 -66
- data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -11
- data/spec/unit/indirector/catalog/rest_spec.rb +0 -91
- data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -16
- data/spec/unit/indirector/catalog/yaml_spec.rb +0 -23
- data/spec/unit/indirector/data_binding/hiera_spec.rb +0 -19
- data/spec/unit/indirector/data_binding/none_spec.rb +0 -28
- data/spec/unit/indirector/direct_file_server_spec.rb +0 -87
- data/spec/unit/indirector/envelope_spec.rb +0 -32
- data/spec/unit/indirector/exec_spec.rb +0 -63
- data/spec/unit/indirector/face_spec.rb +0 -80
- data/spec/unit/indirector/facts/facter_spec.rb +0 -290
- data/spec/unit/indirector/facts/json_spec.rb +0 -255
- data/spec/unit/indirector/facts/network_device_spec.rb +0 -77
- data/spec/unit/indirector/facts/rest_spec.rb +0 -99
- data/spec/unit/indirector/facts/store_configs_spec.rb +0 -16
- data/spec/unit/indirector/facts/yaml_spec.rb +0 -255
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +0 -426
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -89
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +0 -46
- data/spec/unit/indirector/file_content/file_server_spec.rb +0 -13
- data/spec/unit/indirector/file_content/file_spec.rb +0 -13
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -60
- data/spec/unit/indirector/file_content/selector_spec.rb +0 -9
- data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -13
- data/spec/unit/indirector/file_metadata/file_spec.rb +0 -57
- data/spec/unit/indirector/file_metadata/http_spec.rb +0 -194
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -116
- data/spec/unit/indirector/file_metadata/selector_spec.rb +0 -10
- data/spec/unit/indirector/file_server_spec.rb +0 -288
- data/spec/unit/indirector/hiera_spec.rb +0 -22
- data/spec/unit/indirector/indirection_spec.rb +0 -916
- data/spec/unit/indirector/json_spec.rb +0 -200
- data/spec/unit/indirector/memory_spec.rb +0 -26
- data/spec/unit/indirector/msgpack_spec.rb +0 -199
- data/spec/unit/indirector/node/exec_spec.rb +0 -107
- data/spec/unit/indirector/node/json_spec.rb +0 -33
- data/spec/unit/indirector/node/memory_spec.rb +0 -16
- data/spec/unit/indirector/node/msgpack_spec.rb +0 -23
- data/spec/unit/indirector/node/plain_spec.rb +0 -34
- data/spec/unit/indirector/node/rest_spec.rb +0 -66
- data/spec/unit/indirector/node/store_configs_spec.rb +0 -16
- data/spec/unit/indirector/node/yaml_spec.rb +0 -23
- data/spec/unit/indirector/none_spec.rb +0 -33
- data/spec/unit/indirector/plain_spec.rb +0 -26
- data/spec/unit/indirector/report/json_spec.rb +0 -72
- data/spec/unit/indirector/report/msgpack_spec.rb +0 -27
- data/spec/unit/indirector/report/processor_spec.rb +0 -99
- data/spec/unit/indirector/report/rest_spec.rb +0 -58
- data/spec/unit/indirector/report/yaml_spec.rb +0 -91
- data/spec/unit/indirector/request_spec.rb +0 -295
- data/spec/unit/indirector/resource/ral_spec.rb +0 -89
- data/spec/unit/indirector/resource/store_configs_spec.rb +0 -20
- data/spec/unit/indirector/rest_spec.rb +0 -149
- data/spec/unit/indirector/terminus_spec.rb +0 -264
- data/spec/unit/indirector/yaml_spec.rb +0 -188
- data/spec/unit/indirector_spec.rb +0 -148
- data/spec/unit/info_service_spec.rb +0 -575
- data/spec/unit/interface/action_builder_spec.rb +0 -216
- data/spec/unit/interface/action_manager_spec.rb +0 -254
- data/spec/unit/interface/action_spec.rb +0 -670
- data/spec/unit/interface/documentation_spec.rb +0 -32
- data/spec/unit/interface/face_collection_spec.rb +0 -219
- data/spec/unit/interface/option_builder_spec.rb +0 -86
- data/spec/unit/interface/option_spec.rb +0 -156
- data/spec/unit/interface_spec.rb +0 -305
- data/spec/unit/module_spec.rb +0 -985
- data/spec/unit/module_tool/application_spec.rb +0 -25
- data/spec/unit/module_tool/applications/checksummer_spec.rb +0 -115
- data/spec/unit/module_tool/applications/installer_spec.rb +0 -473
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +0 -181
- data/spec/unit/module_tool/applications/unpacker_spec.rb +0 -75
- data/spec/unit/module_tool/applications/upgrader_spec.rb +0 -337
- data/spec/unit/module_tool/install_directory_spec.rb +0 -70
- data/spec/unit/module_tool/installed_modules_spec.rb +0 -49
- data/spec/unit/module_tool/metadata_spec.rb +0 -330
- data/spec/unit/module_tool/tar/gnu_spec.rb +0 -23
- data/spec/unit/module_tool/tar/mini_spec.rb +0 -109
- data/spec/unit/module_tool/tar_spec.rb +0 -36
- data/spec/unit/module_tool_spec.rb +0 -304
- data/spec/unit/network/authconfig_spec.rb +0 -8
- data/spec/unit/network/authorization_spec.rb +0 -8
- data/spec/unit/network/format_handler_spec.rb +0 -93
- data/spec/unit/network/format_spec.rb +0 -205
- data/spec/unit/network/format_support_spec.rb +0 -199
- data/spec/unit/network/formats_spec.rb +0 -584
- data/spec/unit/network/http/api/indirected_routes_spec.rb +0 -425
- data/spec/unit/network/http/api/master_spec.rb +0 -38
- data/spec/unit/network/http/api/server/v3/environments_spec.rb +0 -51
- data/spec/unit/network/http/api/server/v3_spec.rb +0 -78
- data/spec/unit/network/http/api_spec.rb +0 -109
- data/spec/unit/network/http/connection_spec.rb +0 -636
- data/spec/unit/network/http/error_spec.rb +0 -30
- data/spec/unit/network/http/handler_spec.rb +0 -164
- data/spec/unit/network/http/request_spec.rb +0 -108
- data/spec/unit/network/http/response_spec.rb +0 -106
- data/spec/unit/network/http/route_spec.rb +0 -90
- data/spec/unit/network/http_pool_spec.rb +0 -145
- data/spec/unit/network/uri_spec.rb +0 -47
- data/spec/unit/node/environment_spec.rb +0 -612
- data/spec/unit/node/facts_spec.rb +0 -225
- data/spec/unit/node_spec.rb +0 -434
- data/spec/unit/other/selinux_spec.rb +0 -27
- data/spec/unit/parameter/boolean_spec.rb +0 -35
- data/spec/unit/parameter/package_options_spec.rb +0 -43
- data/spec/unit/parameter/path_spec.rb +0 -23
- data/spec/unit/parameter/value_collection_spec.rb +0 -160
- data/spec/unit/parameter/value_spec.rb +0 -82
- data/spec/unit/parameter_spec.rb +0 -272
- data/spec/unit/parser/ast/block_expression_spec.rb +0 -66
- data/spec/unit/parser/ast/leaf_spec.rb +0 -136
- data/spec/unit/parser/compiler_spec.rb +0 -1020
- data/spec/unit/parser/files_spec.rb +0 -101
- data/spec/unit/parser/functions/create_resources_spec.rb +0 -326
- data/spec/unit/parser/functions/digest_spec.rb +0 -26
- data/spec/unit/parser/functions/fail_spec.rb +0 -23
- data/spec/unit/parser/functions/file_spec.rb +0 -99
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +0 -87
- data/spec/unit/parser/functions/generate_spec.rb +0 -124
- data/spec/unit/parser/functions/hiera_array_spec.rb +0 -12
- data/spec/unit/parser/functions/hiera_hash_spec.rb +0 -12
- data/spec/unit/parser/functions/hiera_include_spec.rb +0 -12
- data/spec/unit/parser/functions/hiera_spec.rb +0 -12
- data/spec/unit/parser/functions/inline_template_spec.rb +0 -36
- data/spec/unit/parser/functions/lookup_spec.rb +0 -14
- data/spec/unit/parser/functions/realize_spec.rb +0 -70
- data/spec/unit/parser/functions/regsubst_spec.rb +0 -19
- data/spec/unit/parser/functions/scanf_spec.rb +0 -25
- data/spec/unit/parser/functions/shellquote_spec.rb +0 -66
- data/spec/unit/parser/functions/split_spec.rb +0 -13
- data/spec/unit/parser/functions/sprintf_spec.rb +0 -68
- data/spec/unit/parser/functions/tag_spec.rb +0 -30
- data/spec/unit/parser/functions/tagged_spec.rb +0 -36
- data/spec/unit/parser/functions/template_spec.rb +0 -93
- data/spec/unit/parser/functions/versioncmp_spec.rb +0 -28
- data/spec/unit/parser/functions_spec.rb +0 -156
- data/spec/unit/parser/relationship_spec.rb +0 -74
- data/spec/unit/parser/resource/param_spec.rb +0 -32
- data/spec/unit/parser/resource_spec.rb +0 -657
- data/spec/unit/parser/scope_spec.rb +0 -698
- data/spec/unit/parser/templatewrapper_spec.rb +0 -111
- data/spec/unit/parser/type_loader_spec.rb +0 -202
- data/spec/unit/plan_spec.rb +0 -65
- data/spec/unit/pops/adaptable_spec.rb +0 -139
- data/spec/unit/pops/benchmark_spec.rb +0 -123
- data/spec/unit/pops/containment_spec.rb +0 -0
- data/spec/unit/pops/evaluator/access_ops_spec.rb +0 -560
- data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +0 -317
- data/spec/unit/pops/evaluator/basic_expressions_spec.rb +0 -101
- data/spec/unit/pops/evaluator/collections_ops_spec.rb +0 -108
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +0 -267
- data/spec/unit/pops/evaluator/conditionals_spec.rb +0 -189
- data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -46
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -1639
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +0 -75
- data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +0 -63
- data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +0 -43
- data/spec/unit/pops/evaluator/logical_ops_spec.rb +0 -89
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -181
- data/spec/unit/pops/evaluator/string_interpolation_spec.rb +0 -43
- data/spec/unit/pops/evaluator/variables_spec.rb +0 -88
- data/spec/unit/pops/factory_rspec_helper.rb +0 -65
- data/spec/unit/pops/factory_spec.rb +0 -309
- data/spec/unit/pops/issues_spec.rb +0 -210
- data/spec/unit/pops/label_provider_spec.rb +0 -46
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +0 -122
- data/spec/unit/pops/loaders/environment_loader_spec.rb +0 -172
- data/spec/unit/pops/loaders/loader_paths_spec.rb +0 -43
- data/spec/unit/pops/loaders/loader_spec.rb +0 -516
- data/spec/unit/pops/loaders/loaders_spec.rb +0 -863
- data/spec/unit/pops/loaders/module_loaders_spec.rb +0 -268
- data/spec/unit/pops/loaders/static_loader_spec.rb +0 -85
- data/spec/unit/pops/lookup/context_spec.rb +0 -333
- data/spec/unit/pops/lookup/interpolation_spec.rb +0 -389
- data/spec/unit/pops/lookup/lookup_spec.rb +0 -375
- data/spec/unit/pops/merge_strategy_spec.rb +0 -17
- data/spec/unit/pops/migration_spec.rb +0 -51
- data/spec/unit/pops/model/model_spec.rb +0 -41
- data/spec/unit/pops/model/pn_transformer_spec.rb +0 -56
- data/spec/unit/pops/parser/epp_parser_spec.rb +0 -115
- data/spec/unit/pops/parser/evaluating_parser_spec.rb +0 -89
- data/spec/unit/pops/parser/lexer2_spec.rb +0 -942
- data/spec/unit/pops/parser/locator_spec.rb +0 -86
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -380
- data/spec/unit/pops/parser/parse_calls_spec.rb +0 -171
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +0 -184
- data/spec/unit/pops/parser/parse_containers_spec.rb +0 -247
- data/spec/unit/pops/parser/parse_functions_spec.rb +0 -19
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +0 -276
- data/spec/unit/pops/parser/parse_lambda_spec.rb +0 -19
- data/spec/unit/pops/parser/parse_plan_spec.rb +0 -47
- data/spec/unit/pops/parser/parse_resource_spec.rb +0 -328
- data/spec/unit/pops/parser/parser_rspec_helper.rb +0 -17
- data/spec/unit/pops/parser/parser_spec.rb +0 -211
- data/spec/unit/pops/parser/parsing_typed_parameters_spec.rb +0 -65
- data/spec/unit/pops/parser/pn_parser_spec.rb +0 -100
- data/spec/unit/pops/pn_spec.rb +0 -147
- data/spec/unit/pops/puppet_stack_spec.rb +0 -108
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -37
- data/spec/unit/pops/serialization/packer_spec.rb +0 -162
- data/spec/unit/pops/serialization/serialization_spec.rb +0 -458
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +0 -649
- data/spec/unit/pops/serialization/to_stringified_spec.rb +0 -162
- data/spec/unit/pops/time/timespan_spec.rb +0 -121
- data/spec/unit/pops/time/timestamp_spec.rb +0 -13
- data/spec/unit/pops/types/class_loader_spec.rb +0 -10
- data/spec/unit/pops/types/deferred_spec.rb +0 -87
- data/spec/unit/pops/types/error_spec.rb +0 -207
- data/spec/unit/pops/types/iterable_spec.rb +0 -262
- data/spec/unit/pops/types/p_binary_type_spec.rb +0 -243
- data/spec/unit/pops/types/p_init_type_spec.rb +0 -383
- data/spec/unit/pops/types/p_object_type_spec.rb +0 -1730
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -340
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -191
- data/spec/unit/pops/types/p_timespan_type_spec.rb +0 -323
- data/spec/unit/pops/types/p_timestamp_type_spec.rb +0 -391
- data/spec/unit/pops/types/p_type_set_type_spec.rb +0 -549
- data/spec/unit/pops/types/p_uri_type_spec.rb +0 -191
- data/spec/unit/pops/types/recursion_guard_spec.rb +0 -93
- data/spec/unit/pops/types/ruby_generator_spec.rb +0 -874
- data/spec/unit/pops/types/string_converter_spec.rb +0 -1202
- data/spec/unit/pops/types/task_spec.rb +0 -411
- data/spec/unit/pops/types/type_acceptor_spec.rb +0 -106
- data/spec/unit/pops/types/type_asserter_spec.rb +0 -43
- data/spec/unit/pops/types/type_calculator_spec.rb +0 -2504
- data/spec/unit/pops/types/type_factory_spec.rb +0 -322
- data/spec/unit/pops/types/type_formatter_spec.rb +0 -427
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -424
- data/spec/unit/pops/types/type_parser_spec.rb +0 -445
- data/spec/unit/pops/types/types_spec.rb +0 -755
- data/spec/unit/pops/utils_spec.rb +0 -70
- data/spec/unit/pops/validation_spec.rb +0 -66
- data/spec/unit/pops/validator/validator_spec.rb +0 -1029
- data/spec/unit/pops/visitor_spec.rb +0 -93
- data/spec/unit/property/boolean_spec.rb +0 -24
- data/spec/unit/property/ensure_spec.rb +0 -11
- data/spec/unit/property/keyvalue_spec.rb +0 -259
- data/spec/unit/property/list_spec.rb +0 -172
- data/spec/unit/property/ordered_list_spec.rb +0 -59
- data/spec/unit/property_spec.rb +0 -563
- data/spec/unit/provider/README.markdown +0 -4
- data/spec/unit/provider/aix_object_spec.rb +0 -821
- data/spec/unit/provider/command_spec.rb +0 -62
- data/spec/unit/provider/exec/posix_spec.rb +0 -232
- data/spec/unit/provider/exec/shell_spec.rb +0 -53
- data/spec/unit/provider/exec/windows_spec.rb +0 -105
- data/spec/unit/provider/exec_spec.rb +0 -244
- data/spec/unit/provider/file/posix_spec.rb +0 -230
- data/spec/unit/provider/file/windows_spec.rb +0 -152
- data/spec/unit/provider/group/aix_spec.rb +0 -91
- data/spec/unit/provider/group/directoryservice_spec.rb +0 -33
- data/spec/unit/provider/group/groupadd_spec.rb +0 -284
- data/spec/unit/provider/group/ldap_spec.rb +0 -98
- data/spec/unit/provider/group/pw_spec.rb +0 -78
- data/spec/unit/provider/group/windows_adsi_spec.rb +0 -398
- data/spec/unit/provider/ldap_spec.rb +0 -242
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +0 -157
- data/spec/unit/provider/nameservice_spec.rb +0 -398
- data/spec/unit/provider/package/aix_spec.rb +0 -158
- data/spec/unit/provider/package/appdmg_spec.rb +0 -42
- data/spec/unit/provider/package/apt_spec.rb +0 -302
- data/spec/unit/provider/package/aptitude_spec.rb +0 -46
- data/spec/unit/provider/package/aptrpm_spec.rb +0 -42
- data/spec/unit/provider/package/base_spec.rb +0 -19
- data/spec/unit/provider/package/dnf_spec.rb +0 -62
- data/spec/unit/provider/package/dnfmodule_spec.rb +0 -276
- data/spec/unit/provider/package/dpkg_spec.rb +0 -444
- data/spec/unit/provider/package/freebsd_spec.rb +0 -51
- data/spec/unit/provider/package/gem_spec.rb +0 -487
- data/spec/unit/provider/package/hpux_spec.rb +0 -48
- data/spec/unit/provider/package/macports_spec.rb +0 -142
- data/spec/unit/provider/package/nim_spec.rb +0 -267
- data/spec/unit/provider/package/openbsd_spec.rb +0 -417
- data/spec/unit/provider/package/opkg_spec.rb +0 -180
- data/spec/unit/provider/package/pacman_spec.rb +0 -438
- data/spec/unit/provider/package/pip2_spec.rb +0 -38
- data/spec/unit/provider/package/pip3_spec.rb +0 -38
- data/spec/unit/provider/package/pip_spec.rb +0 -504
- data/spec/unit/provider/package/pkg_spec.rb +0 -473
- data/spec/unit/provider/package/pkgdmg_spec.rb +0 -166
- data/spec/unit/provider/package/pkgin_spec.rb +0 -185
- data/spec/unit/provider/package/pkgng_spec.rb +0 -228
- data/spec/unit/provider/package/pkgutil_spec.rb +0 -231
- data/spec/unit/provider/package/portage_spec.rb +0 -226
- data/spec/unit/provider/package/puppet_gem_spec.rb +0 -130
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +0 -139
- data/spec/unit/provider/package/rpm_spec.rb +0 -674
- data/spec/unit/provider/package/sun_spec.rb +0 -112
- data/spec/unit/provider/package/tdnf_spec.rb +0 -15
- data/spec/unit/provider/package/up2date_spec.rb +0 -22
- data/spec/unit/provider/package/urpmi_spec.rb +0 -84
- data/spec/unit/provider/package/windows/exe_package_spec.rb +0 -114
- data/spec/unit/provider/package/windows/msi_package_spec.rb +0 -111
- data/spec/unit/provider/package/windows/package_spec.rb +0 -180
- data/spec/unit/provider/package/windows_spec.rb +0 -272
- data/spec/unit/provider/package/yum_spec.rb +0 -512
- data/spec/unit/provider/package/zypper_spec.rb +0 -327
- data/spec/unit/provider/package_targetable_spec.rb +0 -60
- data/spec/unit/provider/parsedfile_spec.rb +0 -263
- data/spec/unit/provider/service/base_spec.rb +0 -109
- data/spec/unit/provider/service/bsd_spec.rb +0 -127
- data/spec/unit/provider/service/daemontools_spec.rb +0 -190
- data/spec/unit/provider/service/debian_spec.rb +0 -158
- data/spec/unit/provider/service/freebsd_spec.rb +0 -92
- data/spec/unit/provider/service/gentoo_spec.rb +0 -250
- data/spec/unit/provider/service/init_spec.rb +0 -316
- data/spec/unit/provider/service/launchd_spec.rb +0 -425
- data/spec/unit/provider/service/openbsd_spec.rb +0 -196
- data/spec/unit/provider/service/openrc_spec.rb +0 -231
- data/spec/unit/provider/service/openwrt_spec.rb +0 -101
- data/spec/unit/provider/service/rcng_spec.rb +0 -40
- data/spec/unit/provider/service/redhat_spec.rb +0 -190
- data/spec/unit/provider/service/runit_spec.rb +0 -164
- data/spec/unit/provider/service/smf_spec.rb +0 -526
- data/spec/unit/provider/service/src_spec.rb +0 -186
- data/spec/unit/provider/service/systemd_spec.rb +0 -578
- data/spec/unit/provider/service/upstart_spec.rb +0 -681
- data/spec/unit/provider/service/windows_spec.rb +0 -475
- data/spec/unit/provider/user/aix_spec.rb +0 -320
- data/spec/unit/provider/user/directoryservice_spec.rb +0 -1256
- data/spec/unit/provider/user/hpux_spec.rb +0 -72
- data/spec/unit/provider/user/ldap_spec.rb +0 -286
- data/spec/unit/provider/user/openbsd_spec.rb +0 -76
- data/spec/unit/provider/user/pw_spec.rb +0 -252
- data/spec/unit/provider/user/user_role_add_spec.rb +0 -374
- data/spec/unit/provider/user/useradd_spec.rb +0 -849
- data/spec/unit/provider/user/windows_adsi_spec.rb +0 -407
- data/spec/unit/provider_spec.rb +0 -904
- data/spec/unit/puppet_pal_2pec.rb +0 -1033
- data/spec/unit/puppet_pal_catalog_spec.rb +0 -962
- data/spec/unit/puppet_pal_spec.rb +0 -3
- data/spec/unit/puppet_spec.rb +0 -127
- data/spec/unit/relationship_spec.rb +0 -202
- data/spec/unit/reports/http_spec.rb +0 -119
- data/spec/unit/reports/store_spec.rb +0 -69
- data/spec/unit/reports_spec.rb +0 -68
- data/spec/unit/resource/catalog_spec.rb +0 -1160
- data/spec/unit/resource/status_spec.rb +0 -216
- data/spec/unit/resource/type_collection_spec.rb +0 -332
- data/spec/unit/resource/type_spec.rb +0 -876
- data/spec/unit/resource_spec.rb +0 -1189
- data/spec/unit/scheduler/job_spec.rb +0 -78
- data/spec/unit/scheduler/scheduler_spec.rb +0 -115
- data/spec/unit/scheduler/splay_job_spec.rb +0 -34
- data/spec/unit/settings/array_setting_spec.rb +0 -39
- data/spec/unit/settings/autosign_setting_spec.rb +0 -104
- data/spec/unit/settings/certificate_revocation_setting_spec.rb +0 -37
- data/spec/unit/settings/config_file_spec.rb +0 -147
- data/spec/unit/settings/directory_setting_spec.rb +0 -27
- data/spec/unit/settings/duration_setting_spec.rb +0 -48
- data/spec/unit/settings/enum_setting_spec.rb +0 -27
- data/spec/unit/settings/environment_conf_spec.rb +0 -133
- data/spec/unit/settings/file_setting_spec.rb +0 -344
- data/spec/unit/settings/http_extra_headers_spec.rb +0 -62
- data/spec/unit/settings/ini_file_spec.rb +0 -550
- data/spec/unit/settings/integer_setting_spec.rb +0 -42
- data/spec/unit/settings/path_setting_spec.rb +0 -29
- data/spec/unit/settings/port_setting_spec.rb +0 -31
- data/spec/unit/settings/priority_setting_spec.rb +0 -65
- data/spec/unit/settings/server_list_setting_spec.rb +0 -21
- data/spec/unit/settings/string_setting_spec.rb +0 -74
- data/spec/unit/settings/terminus_setting_spec.rb +0 -27
- data/spec/unit/settings/value_translator_spec.rb +0 -75
- data/spec/unit/settings_spec.rb +0 -2343
- data/spec/unit/ssl/base_spec.rb +0 -125
- data/spec/unit/ssl/certificate_request_attributes_spec.rb +0 -80
- data/spec/unit/ssl/certificate_request_spec.rb +0 -373
- data/spec/unit/ssl/certificate_signer_spec.rb +0 -17
- data/spec/unit/ssl/certificate_spec.rb +0 -183
- data/spec/unit/ssl/digest_spec.rb +0 -34
- data/spec/unit/ssl/oids_spec.rb +0 -73
- data/spec/unit/ssl/ssl_provider_spec.rb +0 -657
- data/spec/unit/ssl/state_machine_spec.rb +0 -1117
- data/spec/unit/ssl/verifier_spec.rb +0 -102
- data/spec/unit/task_spec.rb +0 -345
- data/spec/unit/test/test_helper_spec.rb +0 -17
- data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -534
- data/spec/unit/transaction/event_manager_spec.rb +0 -365
- data/spec/unit/transaction/event_spec.rb +0 -198
- data/spec/unit/transaction/persistence_spec.rb +0 -276
- data/spec/unit/transaction/report_spec.rb +0 -772
- data/spec/unit/transaction/resource_harness_spec.rb +0 -625
- data/spec/unit/transaction_spec.rb +0 -1037
- data/spec/unit/type/README.markdown +0 -4
- data/spec/unit/type/component_spec.rb +0 -52
- data/spec/unit/type/exec_spec.rb +0 -937
- data/spec/unit/type/file/checksum_spec.rb +0 -104
- data/spec/unit/type/file/checksum_value_spec.rb +0 -285
- data/spec/unit/type/file/content_spec.rb +0 -440
- data/spec/unit/type/file/ctime_spec.rb +0 -33
- data/spec/unit/type/file/ensure_spec.rb +0 -121
- data/spec/unit/type/file/group_spec.rb +0 -65
- data/spec/unit/type/file/mode_spec.rb +0 -220
- data/spec/unit/type/file/mtime_spec.rb +0 -33
- data/spec/unit/type/file/owner_spec.rb +0 -63
- data/spec/unit/type/file/selinux_spec.rb +0 -86
- data/spec/unit/type/file/source_spec.rb +0 -730
- data/spec/unit/type/file/type_spec.rb +0 -18
- data/spec/unit/type/file_spec.rb +0 -1746
- data/spec/unit/type/filebucket_spec.rb +0 -104
- data/spec/unit/type/group_spec.rb +0 -105
- data/spec/unit/type/noop_metaparam_spec.rb +0 -37
- data/spec/unit/type/package/package_settings_spec.rb +0 -156
- data/spec/unit/type/package_spec.rb +0 -396
- data/spec/unit/type/resources_spec.rb +0 -362
- data/spec/unit/type/schedule_spec.rb +0 -621
- data/spec/unit/type/service_spec.rb +0 -458
- data/spec/unit/type/stage_spec.rb +0 -7
- data/spec/unit/type/tidy_spec.rb +0 -493
- data/spec/unit/type/user_spec.rb +0 -553
- data/spec/unit/type/whit_spec.rb +0 -9
- data/spec/unit/type_spec.rb +0 -1473
- data/spec/unit/util/at_fork_spec.rb +0 -150
- data/spec/unit/util/autoload_spec.rb +0 -330
- data/spec/unit/util/backups_spec.rb +0 -130
- data/spec/unit/util/character_encoding_spec.rb +0 -186
- data/spec/unit/util/checksums_spec.rb +0 -223
- data/spec/unit/util/colors_spec.rb +0 -44
- data/spec/unit/util/command_line_spec.rb +0 -200
- data/spec/unit/util/command_line_utils/puppet_option_parser_spec.rb +0 -129
- data/spec/unit/util/constant_inflector_spec.rb +0 -55
- data/spec/unit/util/diff_spec.rb +0 -46
- data/spec/unit/util/docs_spec.rb +0 -100
- data/spec/unit/util/errors_spec.rb +0 -36
- data/spec/unit/util/execution_spec.rb +0 -943
- data/spec/unit/util/execution_stub_spec.rb +0 -38
- data/spec/unit/util/feature_spec.rb +0 -129
- data/spec/unit/util/filetype_spec.rb +0 -223
- data/spec/unit/util/inifile_spec.rb +0 -510
- data/spec/unit/util/json_lockfile_spec.rb +0 -48
- data/spec/unit/util/json_spec.rb +0 -126
- data/spec/unit/util/ldap/connection_spec.rb +0 -162
- data/spec/unit/util/ldap/generator_spec.rb +0 -49
- data/spec/unit/util/ldap/manager_spec.rb +0 -612
- data/spec/unit/util/lockfile_spec.rb +0 -117
- data/spec/unit/util/log/destinations_spec.rb +0 -258
- data/spec/unit/util/log_spec.rb +0 -479
- data/spec/unit/util/logging_spec.rb +0 -618
- data/spec/unit/util/metric_spec.rb +0 -89
- data/spec/unit/util/monkey_patches_spec.rb +0 -161
- data/spec/unit/util/multi_match_spec.rb +0 -38
- data/spec/unit/util/network_device/config_spec.rb +0 -91
- data/spec/unit/util/network_device/transport/base_spec.rb +0 -40
- data/spec/unit/util/network_device_spec.rb +0 -43
- data/spec/unit/util/package/version/debian_spec.rb +0 -83
- data/spec/unit/util/package/version/pip_spec.rb +0 -464
- data/spec/unit/util/package/version/range_spec.rb +0 -175
- data/spec/unit/util/package/version/rpm_spec.rb +0 -121
- data/spec/unit/util/package_spec.rb +0 -19
- data/spec/unit/util/pidlock_spec.rb +0 -333
- data/spec/unit/util/plist_spec.rb +0 -168
- data/spec/unit/util/posix_spec.rb +0 -630
- data/spec/unit/util/profiler/aggregate_spec.rb +0 -55
- data/spec/unit/util/profiler/around_profiler_spec.rb +0 -61
- data/spec/unit/util/profiler/logging_spec.rb +0 -70
- data/spec/unit/util/profiler/object_counts_spec.rb +0 -13
- data/spec/unit/util/profiler/wall_clock_spec.rb +0 -13
- data/spec/unit/util/profiler_spec.rb +0 -47
- data/spec/unit/util/rdoc_spec.rb +0 -55
- data/spec/unit/util/reference_spec.rb +0 -38
- data/spec/unit/util/resource_template_spec.rb +0 -57
- data/spec/unit/util/retry_action_spec.rb +0 -84
- data/spec/unit/util/rpm_compare_spec.rb +0 -196
- data/spec/unit/util/rubygems_spec.rb +0 -47
- data/spec/unit/util/run_mode_spec.rb +0 -185
- data/spec/unit/util/selinux_spec.rb +0 -422
- data/spec/unit/util/skip_tags_spec.rb +0 -14
- data/spec/unit/util/splayer_spec.rb +0 -44
- data/spec/unit/util/storage_spec.rb +0 -330
- data/spec/unit/util/suidmanager_spec.rb +0 -278
- data/spec/unit/util/symbolic_file_mode_spec.rb +0 -180
- data/spec/unit/util/tag_set_spec.rb +0 -52
- data/spec/unit/util/tagging_spec.rb +0 -246
- data/spec/unit/util/terminal_spec.rb +0 -41
- data/spec/unit/util/user_attr_spec.rb +0 -45
- data/spec/unit/util/warnings_spec.rb +0 -45
- data/spec/unit/util/watched_file_spec.rb +0 -52
- data/spec/unit/util/watcher/periodic_watcher_spec.rb +0 -52
- data/spec/unit/util/watcher_spec.rb +0 -86
- data/spec/unit/util/windows/access_control_entry_spec.rb +0 -66
- data/spec/unit/util/windows/access_control_list_spec.rb +0 -132
- data/spec/unit/util/windows/adsi_spec.rb +0 -704
- data/spec/unit/util/windows/api_types_spec.rb +0 -184
- data/spec/unit/util/windows/eventlog_spec.rb +0 -120
- data/spec/unit/util/windows/file_spec.rb +0 -88
- data/spec/unit/util/windows/root_certs_spec.rb +0 -16
- data/spec/unit/util/windows/security_descriptor_spec.rb +0 -115
- data/spec/unit/util/windows/service_spec.rb +0 -677
- data/spec/unit/util/windows/sid_spec.rb +0 -338
- data/spec/unit/util/windows/string_spec.rb +0 -55
- data/spec/unit/util/windows_spec.rb +0 -23
- data/spec/unit/util/yaml_spec.rb +0 -171
- data/spec/unit/util_spec.rb +0 -960
- data/spec/unit/version_spec.rb +0 -61
- data/spec/unit/x509/cert_provider_spec.rb +0 -663
- data/spec/unit/x509/pem_store_spec.rb +0 -160
@@ -1,3415 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'puppet_spec/compiler'
|
3
|
-
require 'puppet_spec/files'
|
4
|
-
require 'puppet/pops'
|
5
|
-
require 'deep_merge/core'
|
6
|
-
|
7
|
-
describe "The lookup function" do
|
8
|
-
include PuppetSpec::Compiler
|
9
|
-
include PuppetSpec::Files
|
10
|
-
|
11
|
-
let(:env_name) { 'spec' }
|
12
|
-
let(:code_dir_files) { {} }
|
13
|
-
let(:code_dir) { tmpdir('code') }
|
14
|
-
let(:ruby_dir) { tmpdir('ruby') }
|
15
|
-
let(:env_modules) { {} }
|
16
|
-
let(:env_hiera_yaml) do
|
17
|
-
<<-YAML.unindent
|
18
|
-
---
|
19
|
-
version: 5
|
20
|
-
hierarchy:
|
21
|
-
- name: "Common"
|
22
|
-
data_hash: yaml_data
|
23
|
-
path: "common.yaml"
|
24
|
-
YAML
|
25
|
-
end
|
26
|
-
|
27
|
-
let(:env_data) { {} }
|
28
|
-
|
29
|
-
let(:environment_files) do
|
30
|
-
{
|
31
|
-
env_name => {
|
32
|
-
'modules' => env_modules,
|
33
|
-
'hiera.yaml' => env_hiera_yaml,
|
34
|
-
'data' => env_data
|
35
|
-
}
|
36
|
-
}
|
37
|
-
end
|
38
|
-
|
39
|
-
let(:logs) { [] }
|
40
|
-
let(:scope_additions ) { {} }
|
41
|
-
let(:notices) { logs.select { |log| log.level == :notice }.map { |log| log.message } }
|
42
|
-
let(:warnings) { logs.select { |log| log.level == :warning }.map { |log| log.message } }
|
43
|
-
let(:debugs) { logs.select { |log| log.level == :debug }.map { |log| log.message } }
|
44
|
-
let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(populated_env_dir, env_name, 'modules')]) }
|
45
|
-
let(:environments) { Puppet::Environments::Directories.new(populated_env_dir, []) }
|
46
|
-
let(:node) { Puppet::Node.new('test_lookup', :environment => env) }
|
47
|
-
let(:compiler) { Puppet::Parser::Compiler.new(node) }
|
48
|
-
let(:lookup_func) { Puppet.lookup(:loaders).puppet_system_loader.load(:function, 'lookup') }
|
49
|
-
let(:invocation_with_explain) { Puppet::Pops::Lookup::Invocation.new(compiler.topscope, {}, {}, true) }
|
50
|
-
let(:explanation) { invocation_with_explain.explainer.explain }
|
51
|
-
|
52
|
-
let(:populated_code_dir) do
|
53
|
-
dir_contained_in(code_dir, code_dir_files)
|
54
|
-
code_dir
|
55
|
-
end
|
56
|
-
|
57
|
-
let(:env_dir) do
|
58
|
-
d = File.join(populated_code_dir, 'environments')
|
59
|
-
Dir.mkdir(d)
|
60
|
-
d
|
61
|
-
end
|
62
|
-
|
63
|
-
let(:populated_env_dir) do
|
64
|
-
dir_contained_in(env_dir, environment_files)
|
65
|
-
env_dir
|
66
|
-
end
|
67
|
-
|
68
|
-
before(:each) do
|
69
|
-
Puppet.settings[:codedir] = code_dir
|
70
|
-
Puppet.push_context(:environments => environments, :current_environment => env)
|
71
|
-
end
|
72
|
-
|
73
|
-
after(:each) do
|
74
|
-
Puppet.pop_context
|
75
|
-
if Object.const_defined?(:Hiera)
|
76
|
-
Hiera.send(:remove_instance_variable, :@config) if Hiera.instance_variable_defined?(:@config)
|
77
|
-
Hiera.send(:remove_instance_variable, :@logger) if Hiera.instance_variable_defined?(:@logger)
|
78
|
-
if Hiera.const_defined?(:Config)
|
79
|
-
Hiera::Config.send(:remove_instance_variable, :@config) if Hiera::Config.instance_variable_defined?(:@config)
|
80
|
-
end
|
81
|
-
if Hiera.const_defined?(:Backend) && Hiera::Backend.respond_to?(:clear!)
|
82
|
-
Hiera::Backend.clear!
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
def collect_notices(code, explain = false, &block)
|
88
|
-
Puppet[:code] = code
|
89
|
-
Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
|
90
|
-
scope = compiler.topscope
|
91
|
-
scope['domain'] = 'example.com'
|
92
|
-
scope_additions.each_pair { |k, v| scope[k] = v }
|
93
|
-
if explain
|
94
|
-
begin
|
95
|
-
invocation_with_explain.lookup('dummy', nil) do
|
96
|
-
if block_given?
|
97
|
-
compiler.compile { |catalog| block.call(compiler.topscope); catalog }
|
98
|
-
else
|
99
|
-
compiler.compile
|
100
|
-
end
|
101
|
-
end
|
102
|
-
rescue RuntimeError => e
|
103
|
-
invocation_with_explain.report_text { e.message }
|
104
|
-
end
|
105
|
-
else
|
106
|
-
if block_given?
|
107
|
-
compiler.compile { |catalog| block.call(compiler.topscope); catalog }
|
108
|
-
else
|
109
|
-
compiler.compile
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
nil
|
114
|
-
end
|
115
|
-
|
116
|
-
def lookup(key, options = {}, explain = false, type = nil)
|
117
|
-
value_type = type ? ", #{type}" : ''
|
118
|
-
nc_opts = options.empty? ? '' : ", #{Puppet::Pops::Types::TypeFormatter.string(options)}"
|
119
|
-
keys = key.is_a?(Array) ? key : [key]
|
120
|
-
collect_notices(keys.map { |k| "notice(String(lookup('#{k}'#{value_type}#{nc_opts}), '%p'))" }.join("\n"), explain)
|
121
|
-
if explain
|
122
|
-
explanation
|
123
|
-
else
|
124
|
-
result = notices.map { |n| Puppet::Pops::Types::TypeParser.singleton.parse_literal(n) }
|
125
|
-
key.is_a?(Array) ? result : result[0]
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
def explain(key, options = {})
|
130
|
-
lookup(key, options, true)[1]
|
131
|
-
explanation
|
132
|
-
end
|
133
|
-
|
134
|
-
context 'with faulty hiera.yaml configuration' do
|
135
|
-
context 'in global layer' do
|
136
|
-
let(:global_data) do
|
137
|
-
{
|
138
|
-
'common.yaml' => <<-YAML.unindent
|
139
|
-
a: value a (from global)
|
140
|
-
YAML
|
141
|
-
}
|
142
|
-
end
|
143
|
-
|
144
|
-
let(:code_dir_files) do
|
145
|
-
{
|
146
|
-
'hiera.yaml' => hiera_yaml,
|
147
|
-
'data' => global_data
|
148
|
-
}
|
149
|
-
end
|
150
|
-
|
151
|
-
before(:each) do
|
152
|
-
# Need to set here since spec_helper defines these settings in its "before each"
|
153
|
-
Puppet.settings[:codedir] = populated_code_dir
|
154
|
-
Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
|
155
|
-
end
|
156
|
-
|
157
|
-
context 'using a not yet supported hiera version' do
|
158
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
159
|
-
version: 6
|
160
|
-
YAML
|
161
|
-
|
162
|
-
it 'fails and reports error' do
|
163
|
-
expect { lookup('a') }.to raise_error("This runtime does not support hiera.yaml version 6 (file: #{code_dir}/hiera.yaml)")
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
context 'with multiply defined backend using hiera version 3' do
|
168
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
169
|
-
:version: 3
|
170
|
-
:backends:
|
171
|
-
- yaml
|
172
|
-
- json
|
173
|
-
- yaml
|
174
|
-
YAML
|
175
|
-
|
176
|
-
it 'fails and reports error' do
|
177
|
-
expect { lookup('a') }.to raise_error(
|
178
|
-
"Backend 'yaml' is defined more than once. First defined at (line: 3) (file: #{code_dir}/hiera.yaml, line: 5)")
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
|
-
context 'using hiera version 4' do
|
183
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
184
|
-
version: 4
|
185
|
-
YAML
|
186
|
-
|
187
|
-
it 'fails and reports error' do
|
188
|
-
expect { lookup('a') }.to raise_error(
|
189
|
-
"hiera.yaml version 4 cannot be used in the global layer (file: #{code_dir}/hiera.yaml)")
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
context 'using hiera version 5' do
|
194
|
-
context 'with multiply defined hierarchy' do
|
195
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
196
|
-
version: 5
|
197
|
-
hierarchy:
|
198
|
-
- name: Common
|
199
|
-
path: common.yaml
|
200
|
-
- name: Other
|
201
|
-
path: other.yaml
|
202
|
-
- name: Common
|
203
|
-
path: common.yaml
|
204
|
-
YAML
|
205
|
-
|
206
|
-
it 'fails and reports error' do
|
207
|
-
expect { lookup('a') }.to raise_error(
|
208
|
-
"Hierarchy name 'Common' defined more than once. First defined at (line: 3) (file: #{code_dir}/hiera.yaml, line: 7)")
|
209
|
-
end
|
210
|
-
end
|
211
|
-
|
212
|
-
context 'with hiera3_backend that is provided as data_hash function' do
|
213
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
214
|
-
version: 5
|
215
|
-
hierarchy:
|
216
|
-
- name: Common
|
217
|
-
hiera3_backend: hocon
|
218
|
-
path: common.conf
|
219
|
-
YAML
|
220
|
-
|
221
|
-
it 'fails and reports error' do
|
222
|
-
expect { lookup('a') }.to raise_error(
|
223
|
-
"Use \"data_hash: hocon_data\" instead of \"hiera3_backend: hocon\" (file: #{code_dir}/hiera.yaml, line: 4)")
|
224
|
-
end
|
225
|
-
end
|
226
|
-
|
227
|
-
context 'with no data provider function defined' do
|
228
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
229
|
-
version: 5
|
230
|
-
defaults:
|
231
|
-
datadir: data
|
232
|
-
hierarchy:
|
233
|
-
- name: Common
|
234
|
-
path: common.txt
|
235
|
-
YAML
|
236
|
-
|
237
|
-
it 'fails and reports error' do
|
238
|
-
expect { lookup('a') }.to raise_error(
|
239
|
-
"One of data_hash, lookup_key, data_dig, or hiera3_backend must be defined in hierarchy 'Common' (file: #{code_dir}/hiera.yaml)")
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
|
-
context 'with multiple data providers in defaults' do
|
244
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
245
|
-
version: 5
|
246
|
-
defaults:
|
247
|
-
data_hash: yaml_data
|
248
|
-
lookup_key: eyaml_lookup_key
|
249
|
-
datadir: data
|
250
|
-
hierarchy:
|
251
|
-
- name: Common
|
252
|
-
path: common.txt
|
253
|
-
YAML
|
254
|
-
|
255
|
-
it 'fails and reports error' do
|
256
|
-
expect { lookup('a') }.to raise_error(
|
257
|
-
"Only one of data_hash, lookup_key, data_dig, or hiera3_backend can be defined in defaults (file: #{code_dir}/hiera.yaml)")
|
258
|
-
end
|
259
|
-
end
|
260
|
-
|
261
|
-
context 'with non existing data provider function' do
|
262
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
263
|
-
version: 5
|
264
|
-
hierarchy:
|
265
|
-
- name: Common
|
266
|
-
data_hash: nonesuch_txt_data
|
267
|
-
path: common.yaml
|
268
|
-
YAML
|
269
|
-
|
270
|
-
it 'fails and reports error' do
|
271
|
-
Puppet[:strict] = :error
|
272
|
-
expect { lookup('a') }.to raise_error(
|
273
|
-
"Unable to find 'data_hash' function named 'nonesuch_txt_data' (file: #{code_dir}/hiera.yaml)")
|
274
|
-
end
|
275
|
-
end
|
276
|
-
|
277
|
-
context 'with a declared default_hierarchy' do
|
278
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
279
|
-
version: 5
|
280
|
-
hierarchy:
|
281
|
-
- name: Common
|
282
|
-
path: common.yaml
|
283
|
-
default_hierarchy:
|
284
|
-
- name: Defaults
|
285
|
-
path: defaults.yaml
|
286
|
-
YAML
|
287
|
-
|
288
|
-
it 'fails and reports error' do
|
289
|
-
expect { lookup('a') }.to raise_error(
|
290
|
-
"'default_hierarchy' is only allowed in the module layer (file: #{code_dir}/hiera.yaml, line: 5)")
|
291
|
-
end
|
292
|
-
end
|
293
|
-
|
294
|
-
context 'with missing variables' do
|
295
|
-
let(:scope_additions) { { 'fqdn' => 'test.example.com' } }
|
296
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
297
|
-
version: 5
|
298
|
-
hierarchy:
|
299
|
-
- name: Common # don't report this line %{::nonesuch}
|
300
|
-
path: "%{::fqdn}/%{::nonesuch}/data.yaml"
|
301
|
-
YAML
|
302
|
-
|
303
|
-
it 'fails and reports errors when strict == error' do
|
304
|
-
expect { lookup('a') }.to raise_error("Function lookup() did not find a value for the name 'a'")
|
305
|
-
end
|
306
|
-
end
|
307
|
-
|
308
|
-
context 'using interpolation functions' do
|
309
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
310
|
-
version: 5
|
311
|
-
hierarchy:
|
312
|
-
- name: Common # don't report this line %{::nonesuch}
|
313
|
-
path: "%{lookup('fqdn')}/data.yaml"
|
314
|
-
YAML
|
315
|
-
|
316
|
-
it 'fails and reports errors when strict == error' do
|
317
|
-
expect { lookup('a') }.to raise_error("Interpolation using method syntax is not allowed in this context (file: #{code_dir}/hiera.yaml)")
|
318
|
-
end
|
319
|
-
end
|
320
|
-
end
|
321
|
-
end
|
322
|
-
|
323
|
-
context 'in environment layer' do
|
324
|
-
context 'using hiera version 4' do
|
325
|
-
context 'with an unknown backend' do
|
326
|
-
let(:env_hiera_yaml) { <<-YAML.unindent }
|
327
|
-
version: 4
|
328
|
-
hierarchy:
|
329
|
-
- name: Common
|
330
|
-
backend: nonesuch
|
331
|
-
path: common.yaml
|
332
|
-
YAML
|
333
|
-
|
334
|
-
it 'fails and reports error' do
|
335
|
-
expect { lookup('a') }.to raise_error(
|
336
|
-
"No data provider is registered for backend 'nonesuch' (file: #{env_dir}/spec/hiera.yaml, line: 4)")
|
337
|
-
end
|
338
|
-
end
|
339
|
-
|
340
|
-
context 'with multiply defined hierarchy' do
|
341
|
-
let(:env_hiera_yaml) { <<-YAML.unindent }
|
342
|
-
version: 4
|
343
|
-
hierarchy:
|
344
|
-
- name: Common
|
345
|
-
backend: yaml
|
346
|
-
path: common.yaml
|
347
|
-
- name: Other
|
348
|
-
backend: yaml
|
349
|
-
path: other.yaml
|
350
|
-
- name: Common
|
351
|
-
backend: yaml
|
352
|
-
path: common.yaml
|
353
|
-
YAML
|
354
|
-
|
355
|
-
it 'fails and reports error' do
|
356
|
-
expect { lookup('a') }.to raise_error(
|
357
|
-
"Hierarchy name 'Common' defined more than once. First defined at (line: 3) (file: #{env_dir}/spec/hiera.yaml, line: 9)")
|
358
|
-
end
|
359
|
-
end
|
360
|
-
end
|
361
|
-
|
362
|
-
context 'using hiera version 5' do
|
363
|
-
context 'with a hiera3_backend declaration' do
|
364
|
-
let(:env_hiera_yaml) { <<-YAML.unindent }
|
365
|
-
version: 5
|
366
|
-
hierarchy:
|
367
|
-
- name: Common
|
368
|
-
hiera3_backend: something
|
369
|
-
YAML
|
370
|
-
|
371
|
-
it 'fails and reports error' do
|
372
|
-
expect { lookup('a') }.to raise_error(
|
373
|
-
"'hiera3_backend' is only allowed in the global layer (file: #{env_dir}/spec/hiera.yaml, line: 4)")
|
374
|
-
end
|
375
|
-
end
|
376
|
-
|
377
|
-
context 'with a declared default_hierarchy' do
|
378
|
-
let(:env_hiera_yaml) { <<-YAML.unindent }
|
379
|
-
version: 5
|
380
|
-
hierarchy:
|
381
|
-
- name: Common
|
382
|
-
path: common.yaml
|
383
|
-
default_hierarchy:
|
384
|
-
- name: Defaults
|
385
|
-
path: defaults.yaml
|
386
|
-
YAML
|
387
|
-
|
388
|
-
it 'fails and reports error' do
|
389
|
-
Puppet[:strict] = :error
|
390
|
-
expect { lookup('a') }.to raise_error(
|
391
|
-
"'default_hierarchy' is only allowed in the module layer (file: #{env_dir}/spec/hiera.yaml, line: 5)")
|
392
|
-
end
|
393
|
-
end
|
394
|
-
end
|
395
|
-
end
|
396
|
-
end
|
397
|
-
|
398
|
-
context 'with an environment' do
|
399
|
-
let(:env_data) do
|
400
|
-
{
|
401
|
-
'common.yaml' => <<-YAML.unindent
|
402
|
-
---
|
403
|
-
a: value a (from environment)
|
404
|
-
c:
|
405
|
-
c_b: value c_b (from environment)
|
406
|
-
mod_a::a: value mod_a::a (from environment)
|
407
|
-
mod_a::hash_a:
|
408
|
-
a: value mod_a::hash_a.a (from environment)
|
409
|
-
mod_a::hash_b:
|
410
|
-
a: value mod_a::hash_b.a (from environment)
|
411
|
-
hash_b:
|
412
|
-
hash_ba:
|
413
|
-
bab: value hash_b.hash_ba.bab (from environment)
|
414
|
-
hash_c:
|
415
|
-
hash_ca:
|
416
|
-
caa: value hash_c.hash_ca.caa (from environment)
|
417
|
-
lookup_options:
|
418
|
-
mod_a::hash_b:
|
419
|
-
merge: hash
|
420
|
-
hash_c:
|
421
|
-
merge: hash
|
422
|
-
YAML
|
423
|
-
}
|
424
|
-
end
|
425
|
-
|
426
|
-
it 'finds data in the environment' do
|
427
|
-
expect(lookup('a')).to eql('value a (from environment)')
|
428
|
-
end
|
429
|
-
|
430
|
-
context 'with log-level debug' do
|
431
|
-
before(:each) { Puppet[:log_level] = 'debug' }
|
432
|
-
|
433
|
-
it 'does not report a regular lookup as APL' do
|
434
|
-
expect(lookup('a')).to eql('value a (from environment)')
|
435
|
-
expect(debugs.count { |dbg| dbg =~ /\A\s*Automatic Parameter Lookup of/ }).to eql(0)
|
436
|
-
end
|
437
|
-
|
438
|
-
it 'reports regular lookup as lookup' do
|
439
|
-
expect(lookup('a')).to eql('value a (from environment)')
|
440
|
-
expect(debugs.count { |dbg| dbg =~ /\A\s*Lookup of/ }).to eql(1)
|
441
|
-
end
|
442
|
-
|
443
|
-
it 'does not report APL as lookup' do
|
444
|
-
collect_notices("class mod_a($a) { notice($a) }; include mod_a")
|
445
|
-
expect(debugs.count { |dbg| dbg =~ /\A\s*Lookup of/ }).to eql(0)
|
446
|
-
end
|
447
|
-
|
448
|
-
it 'reports APL as APL' do
|
449
|
-
collect_notices("class mod_a($a) { notice($a) }; include mod_a")
|
450
|
-
expect(debugs.count { |dbg| dbg =~ /\A\s*Automatic Parameter Lookup of/ }).to eql(1)
|
451
|
-
end
|
452
|
-
end
|
453
|
-
|
454
|
-
context 'that has no lookup configured' do
|
455
|
-
let(:environment_files) do
|
456
|
-
{
|
457
|
-
env_name => {
|
458
|
-
'data' => env_data
|
459
|
-
}
|
460
|
-
}
|
461
|
-
end
|
462
|
-
|
463
|
-
it 'does not find data in the environment' do
|
464
|
-
expect { lookup('a') }.to raise_error(Puppet::DataBinding::LookupError, /did not find a value for the name 'a'/)
|
465
|
-
end
|
466
|
-
|
467
|
-
context "but an environment.conf with 'environment_data_provider=hiera'" do
|
468
|
-
let(:environment_files) do
|
469
|
-
{
|
470
|
-
env_name => {
|
471
|
-
'environment.conf' => "environment_data_provider=hiera\n",
|
472
|
-
'data' => env_data
|
473
|
-
}
|
474
|
-
}
|
475
|
-
end
|
476
|
-
|
477
|
-
it 'finds data in the environment and reports deprecation warning for environment.conf' do
|
478
|
-
expect(lookup('a')).to eql('value a (from environment)')
|
479
|
-
expect(warnings).to include(/Defining environment_data_provider='hiera' in environment.conf is deprecated. A 'hiera.yaml' file should be used instead/)
|
480
|
-
end
|
481
|
-
|
482
|
-
context 'and a hiera.yaml file' do
|
483
|
-
let(:env_hiera_yaml) do
|
484
|
-
<<-YAML.unindent
|
485
|
-
---
|
486
|
-
version: 4
|
487
|
-
hierarchy:
|
488
|
-
- name: common
|
489
|
-
backend: yaml
|
490
|
-
YAML
|
491
|
-
end
|
492
|
-
|
493
|
-
let(:environment_files) do
|
494
|
-
{
|
495
|
-
env_name => {
|
496
|
-
'hiera.yaml' => env_hiera_yaml,
|
497
|
-
'environment.conf' => "environment_data_provider=hiera\n",
|
498
|
-
'data' => env_data
|
499
|
-
}
|
500
|
-
}
|
501
|
-
end
|
502
|
-
|
503
|
-
it 'finds data in the environment and reports deprecation warnings for both environment.conf and hiera.yaml' do
|
504
|
-
expect(lookup('a')).to eql('value a (from environment)')
|
505
|
-
expect(warnings).to include(/Defining environment_data_provider='hiera' in environment.conf is deprecated/)
|
506
|
-
expect(warnings).to include(/Use of 'hiera.yaml' version 4 is deprecated. It should be converted to version 5/)
|
507
|
-
end
|
508
|
-
end
|
509
|
-
end
|
510
|
-
|
511
|
-
context "but an environment.conf with 'environment_data_provider=function'" do
|
512
|
-
let(:environment_files) do
|
513
|
-
{
|
514
|
-
env_name => {
|
515
|
-
'environment.conf' => "environment_data_provider=function\n",
|
516
|
-
'functions' => {
|
517
|
-
'environment' => { 'data.pp' => <<-PUPPET.unindent }
|
518
|
-
function environment::data() {
|
519
|
-
{ 'a' => 'value a' }
|
520
|
-
}
|
521
|
-
PUPPET
|
522
|
-
}
|
523
|
-
}
|
524
|
-
}
|
525
|
-
end
|
526
|
-
|
527
|
-
it 'finds data in the environment and reports deprecation warning for environment.conf' do
|
528
|
-
expect(lookup('a')).to eql('value a')
|
529
|
-
expect(warnings).to include(/Defining environment_data_provider='function' in environment.conf is deprecated. A 'hiera.yaml' file should be used instead/)
|
530
|
-
expect(warnings).to include(/Using of legacy data provider function 'environment::data'. Please convert to a 'data_hash' function/)
|
531
|
-
end
|
532
|
-
end
|
533
|
-
end
|
534
|
-
|
535
|
-
context 'that has interpolated paths configured' do
|
536
|
-
let(:env_hiera_yaml) do
|
537
|
-
<<-YAML.unindent
|
538
|
-
---
|
539
|
-
version: 5
|
540
|
-
hierarchy:
|
541
|
-
- name: "Varying"
|
542
|
-
data_hash: yaml_data
|
543
|
-
path: "#{data_path}"
|
544
|
-
YAML
|
545
|
-
end
|
546
|
-
|
547
|
-
let(:environment_files) do
|
548
|
-
{
|
549
|
-
env_name => {
|
550
|
-
'hiera.yaml' => env_hiera_yaml,
|
551
|
-
'modules' => {},
|
552
|
-
'data' => {
|
553
|
-
'x.yaml' => <<-YAML.unindent,
|
554
|
-
y: value y from x
|
555
|
-
YAML
|
556
|
-
'x_d.yaml' => <<-YAML.unindent,
|
557
|
-
y: value y from x_d
|
558
|
-
YAML
|
559
|
-
'x_e.yaml' => <<-YAML.unindent,
|
560
|
-
y: value y from x_e
|
561
|
-
YAML
|
562
|
-
}
|
563
|
-
}
|
564
|
-
}
|
565
|
-
end
|
566
|
-
|
567
|
-
context 'using local variable reference' do
|
568
|
-
let(:data_path) { 'x%{var.sub}.yaml' }
|
569
|
-
|
570
|
-
it 'reloads the configuration if interpolated values change' do
|
571
|
-
Puppet[:log_level] = 'debug'
|
572
|
-
collect_notices("notice('success')") do |scope|
|
573
|
-
scope['var'] = {}
|
574
|
-
expect(lookup_func.call(scope, 'y')).to eql('value y from x')
|
575
|
-
nested_scope = scope.compiler.newscope(scope)
|
576
|
-
nested_scope['var'] = { 'sub' => '_d' }
|
577
|
-
expect(lookup_func.call(nested_scope, 'y')).to eql('value y from x_d')
|
578
|
-
nested_scope = scope.compiler.newscope(scope)
|
579
|
-
nested_scope['var'] = { 'sub' => '_e' }
|
580
|
-
expect(lookup_func.call(nested_scope, 'y')).to eql('value y from x_e')
|
581
|
-
end
|
582
|
-
expect(notices).to eql(['success'])
|
583
|
-
expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_truthy
|
584
|
-
end
|
585
|
-
|
586
|
-
it 'does not include the lookups performed during stability check in explain output' do
|
587
|
-
Puppet[:log_level] = 'debug'
|
588
|
-
collect_notices("notice('success')") do |scope|
|
589
|
-
var = { 'sub' => '_d' }
|
590
|
-
scope['var'] = var
|
591
|
-
expect(lookup_func.call(scope, 'y')).to eql('value y from x_d')
|
592
|
-
|
593
|
-
# Second call triggers the check
|
594
|
-
expect(lookup_func.call(scope, 'y')).to eql('value y from x_d')
|
595
|
-
end
|
596
|
-
expect(notices).to eql(['success'])
|
597
|
-
expect(debugs.any? { |m| m =~ /Sub key: "sub"/ }).to be_falsey
|
598
|
-
end
|
599
|
-
end
|
600
|
-
|
601
|
-
context 'using global variable reference' do
|
602
|
-
let(:data_path) { 'x%{::var.sub}.yaml' }
|
603
|
-
|
604
|
-
it 'does not raise an error when reloads the configuration if interpolating undefined values' do
|
605
|
-
collect_notices("notice('success')") do |scope|
|
606
|
-
expect { lookup_func.call(scope, 'y') }.to_not raise_error
|
607
|
-
end
|
608
|
-
end
|
609
|
-
|
610
|
-
it 'does not reload the configuration if value changes locally' do
|
611
|
-
Puppet[:log_level] = 'debug'
|
612
|
-
collect_notices("notice('success')") do |scope|
|
613
|
-
scope['var'] = { 'sub' => '_d' }
|
614
|
-
expect(lookup_func.call(scope, 'y')).to eql('value y from x_d')
|
615
|
-
nested_scope = scope.compiler.newscope(scope)
|
616
|
-
nested_scope['var'] = { 'sub' => '_e' }
|
617
|
-
expect(lookup_func.call(nested_scope, 'y')).to eql('value y from x_d')
|
618
|
-
end
|
619
|
-
expect(notices).to eql(['success'])
|
620
|
-
expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_falsey
|
621
|
-
end
|
622
|
-
end
|
623
|
-
end
|
624
|
-
|
625
|
-
context 'that uses reserved' do
|
626
|
-
let(:environment_files) do
|
627
|
-
{ env_name => { 'hiera.yaml' => hiera_yaml } }
|
628
|
-
end
|
629
|
-
|
630
|
-
context 'option' do
|
631
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
632
|
-
version: 5
|
633
|
-
hierarchy:
|
634
|
-
- name: "Illegal"
|
635
|
-
options:
|
636
|
-
#{opt_spec}
|
637
|
-
data_hash: yaml_data
|
638
|
-
YAML
|
639
|
-
|
640
|
-
context 'path' do
|
641
|
-
let(:opt_spec) { 'path: data/foo.yaml' }
|
642
|
-
|
643
|
-
it 'fails and reports the reserved option key' do
|
644
|
-
expect { lookup('a') }.to raise_error do |e|
|
645
|
-
expect(e.message).to match(/Option key 'path' used in hierarchy 'Illegal' is reserved by Puppet/)
|
646
|
-
end
|
647
|
-
end
|
648
|
-
end
|
649
|
-
|
650
|
-
context 'uri' do
|
651
|
-
let(:opt_spec) { 'uri: file:///data/foo.yaml' }
|
652
|
-
|
653
|
-
it 'fails and reports the reserved option key' do
|
654
|
-
expect { lookup('a') }.to raise_error do |e|
|
655
|
-
expect(e.message).to match(/Option key 'uri' used in hierarchy 'Illegal' is reserved by Puppet/)
|
656
|
-
end
|
657
|
-
end
|
658
|
-
end
|
659
|
-
end
|
660
|
-
|
661
|
-
context 'default option' do
|
662
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
663
|
-
---
|
664
|
-
version: 5
|
665
|
-
defaults:
|
666
|
-
options:
|
667
|
-
#{opt_spec}
|
668
|
-
hierarchy:
|
669
|
-
- name: "Illegal"
|
670
|
-
data_hash: yaml_data
|
671
|
-
YAML
|
672
|
-
|
673
|
-
context 'path' do
|
674
|
-
let(:opt_spec) { 'path: data/foo.yaml' }
|
675
|
-
|
676
|
-
it 'fails and reports the reserved option key' do
|
677
|
-
expect { lookup('a') }.to raise_error do |e|
|
678
|
-
expect(e.message).to match(/Option key 'path' used in defaults is reserved by Puppet/)
|
679
|
-
end
|
680
|
-
end
|
681
|
-
end
|
682
|
-
|
683
|
-
context 'uri' do
|
684
|
-
let(:opt_spec) { 'uri: file:///data/foo.yaml' }
|
685
|
-
|
686
|
-
it 'fails and reports the reserved option key' do
|
687
|
-
expect { lookup('a') }.to raise_error do |e|
|
688
|
-
expect(e.message).to match(/Option key 'uri' used in defaults is reserved by Puppet/)
|
689
|
-
end
|
690
|
-
end
|
691
|
-
end
|
692
|
-
end
|
693
|
-
end
|
694
|
-
|
695
|
-
context 'with yaml data file' do
|
696
|
-
let(:environment_files) do
|
697
|
-
{
|
698
|
-
env_name => {
|
699
|
-
'hiera.yaml' => <<-YAML.unindent,
|
700
|
-
---
|
701
|
-
version: 5
|
702
|
-
YAML
|
703
|
-
'data' => {
|
704
|
-
'common.yaml' => common_yaml
|
705
|
-
}
|
706
|
-
}
|
707
|
-
}
|
708
|
-
end
|
709
|
-
|
710
|
-
context 'that contains hash values with interpolated keys' do
|
711
|
-
let(:common_yaml) do
|
712
|
-
<<-YAML.unindent
|
713
|
-
---
|
714
|
-
a:
|
715
|
-
"%{key}": "the %{value}"
|
716
|
-
b: "Detail in %{lookup('a.a_key')}"
|
717
|
-
YAML
|
718
|
-
end
|
719
|
-
|
720
|
-
it 'interpolates both key and value"' do
|
721
|
-
Puppet[:log_level] = 'debug'
|
722
|
-
collect_notices("notice('success')") do |scope|
|
723
|
-
scope['key'] = ''
|
724
|
-
scope['value'] = ''
|
725
|
-
expect(lookup_func.call(scope, 'a')).to eql({'' => 'the '})
|
726
|
-
nested_scope = scope.compiler.newscope(scope)
|
727
|
-
nested_scope['key'] = 'a_key'
|
728
|
-
nested_scope['value'] = 'interpolated value'
|
729
|
-
expect(lookup_func.call(nested_scope, 'a')).to eql({'a_key' => 'the interpolated value'})
|
730
|
-
end
|
731
|
-
expect(notices).to eql(['success'])
|
732
|
-
end
|
733
|
-
|
734
|
-
it 'navigates to a value behind an interpolated key"' do
|
735
|
-
Puppet[:log_level] = 'debug'
|
736
|
-
collect_notices("notice('success')") do |scope|
|
737
|
-
scope['key'] = 'a_key'
|
738
|
-
scope['value'] = 'interpolated value'
|
739
|
-
expect(lookup_func.call(scope, 'a.a_key')).to eql('the interpolated value')
|
740
|
-
end
|
741
|
-
expect(notices).to eql(['success'])
|
742
|
-
end
|
743
|
-
|
744
|
-
it 'navigates to a value behind an interpolated key using an interpolated value"' do
|
745
|
-
Puppet[:log_level] = 'debug'
|
746
|
-
collect_notices("notice('success')") do |scope|
|
747
|
-
scope['key'] = 'a_key'
|
748
|
-
scope['value'] = 'interpolated value'
|
749
|
-
expect(lookup_func.call(scope, 'b')).to eql('Detail in the interpolated value')
|
750
|
-
end
|
751
|
-
expect(notices).to eql(['success'])
|
752
|
-
end
|
753
|
-
end
|
754
|
-
|
755
|
-
context 'that is empty' do
|
756
|
-
let(:common_yaml) { '' }
|
757
|
-
|
758
|
-
it 'fails with a "did not find"' do
|
759
|
-
expect { lookup('a') }.to raise_error do |e|
|
760
|
-
expect(e.message).to match(/did not find a value for the name 'a'/)
|
761
|
-
end
|
762
|
-
end
|
763
|
-
|
764
|
-
it 'logs a warning that the file does not contain a hash' do
|
765
|
-
expect { lookup('a') }.to raise_error(Puppet::DataBinding::LookupError)
|
766
|
-
expect(warnings).to include(/spec\/data\/common.yaml: file does not contain a valid yaml hash/)
|
767
|
-
end
|
768
|
-
end
|
769
|
-
|
770
|
-
context 'that contains illegal yaml' do
|
771
|
-
let(:common_yaml) { "@!#%**&:\n" }
|
772
|
-
|
773
|
-
it 'fails lookup and that the key is not found' do
|
774
|
-
expect { lookup('a') }.to raise_error do |e|
|
775
|
-
expect(e.message).to match(/Unable to parse/)
|
776
|
-
end
|
777
|
-
end
|
778
|
-
end
|
779
|
-
|
780
|
-
context 'that contains a legal yaml that is not a hash' do
|
781
|
-
let(:common_yaml) { "- A list\n- of things" }
|
782
|
-
|
783
|
-
it 'fails with a "invalid yaml hash"' do
|
784
|
-
expect { lookup('a') }.to raise_error do |e|
|
785
|
-
expect(e.message).to match(/spec\/data\/common.yaml: file does not contain a valid yaml hash/)
|
786
|
-
end
|
787
|
-
end
|
788
|
-
|
789
|
-
context 'when strict mode is off' do
|
790
|
-
before :each do
|
791
|
-
Puppet[:strict] = :warning
|
792
|
-
end
|
793
|
-
it 'fails with a "did not find"' do
|
794
|
-
expect { lookup('a') }.to raise_error do |e|
|
795
|
-
expect(e.message).to match(/did not find a value for the name 'a'/)
|
796
|
-
end
|
797
|
-
end
|
798
|
-
|
799
|
-
it 'logs a warning that the file does not contain a hash' do
|
800
|
-
expect { lookup('a') }.to raise_error(Puppet::DataBinding::LookupError)
|
801
|
-
expect(warnings).to include(/spec\/data\/common.yaml: file does not contain a valid yaml hash/)
|
802
|
-
end
|
803
|
-
end
|
804
|
-
end
|
805
|
-
|
806
|
-
context 'that contains a legal yaml hash with illegal types' do
|
807
|
-
let(:common_yaml) do
|
808
|
-
<<-YAML.unindent
|
809
|
-
---
|
810
|
-
a: !ruby/object:Puppet::Graph::Key
|
811
|
-
value: x
|
812
|
-
YAML
|
813
|
-
end
|
814
|
-
|
815
|
-
it 'fails lookup and reports parsing failed' do
|
816
|
-
expect { lookup('a') }.to raise_error do |e|
|
817
|
-
expect(e.message).to match(/Unable to parse .*: Tried to load unspecified class: Puppet::Graph::Key/)
|
818
|
-
end
|
819
|
-
end
|
820
|
-
end
|
821
|
-
|
822
|
-
context 'that contains a legal yaml hash with unexpected types' do
|
823
|
-
let(:common_yaml) do
|
824
|
-
<<-YAML.unindent
|
825
|
-
---
|
826
|
-
a: 123
|
827
|
-
YAML
|
828
|
-
end
|
829
|
-
|
830
|
-
it 'fails lookup and reports a type mismatch' do
|
831
|
-
expect { lookup('a', {}, false, String) }.to raise_error do |e|
|
832
|
-
expect(e.message).to match(/Found value has wrong type, expects a String value, got Integer \(line: 1, column: \d+\)/)
|
833
|
-
end
|
834
|
-
end
|
835
|
-
end
|
836
|
-
|
837
|
-
context 'that contains illegal interpolations' do
|
838
|
-
context 'in the form of an alias that is not the entire string' do
|
839
|
-
let(:common_yaml) { <<-YAML.unindent }
|
840
|
-
a: "%{alias('x')} and then some"
|
841
|
-
x: value x
|
842
|
-
YAML
|
843
|
-
|
844
|
-
it 'fails lookup and reports a type mismatch' do
|
845
|
-
expect { lookup('a') }.to raise_error("'alias' interpolation is only permitted if the expression is equal to the entire string")
|
846
|
-
end
|
847
|
-
end
|
848
|
-
|
849
|
-
context 'in the form of an unknown function name' do
|
850
|
-
let(:common_yaml) { <<-YAML.unindent }
|
851
|
-
a: "%{what('x')}"
|
852
|
-
x: value x
|
853
|
-
YAML
|
854
|
-
|
855
|
-
it 'fails lookup and reports a type mismatch' do
|
856
|
-
expect { lookup('a') }.to raise_error("Unknown interpolation method 'what'")
|
857
|
-
end
|
858
|
-
end
|
859
|
-
end
|
860
|
-
|
861
|
-
context 'that contains an array with duplicates' do
|
862
|
-
let(:common_yaml) { <<-YAML.unindent }
|
863
|
-
a:
|
864
|
-
- alpha
|
865
|
-
- bravo
|
866
|
-
- charlie
|
867
|
-
- bravo
|
868
|
-
YAML
|
869
|
-
|
870
|
-
it 'retains the duplicates when using default merge strategy' do
|
871
|
-
expect(lookup('a')).to eql(%w(alpha bravo charlie bravo))
|
872
|
-
end
|
873
|
-
|
874
|
-
it 'does deduplification when using merge strategy "unique"' do
|
875
|
-
expect(lookup('a', :merge => 'unique')).to eql(%w(alpha bravo charlie))
|
876
|
-
end
|
877
|
-
end
|
878
|
-
end
|
879
|
-
|
880
|
-
context 'with lookup_options' do
|
881
|
-
let(:environment_files) do
|
882
|
-
{
|
883
|
-
env_name => {
|
884
|
-
'hiera.yaml' => <<-YAML.unindent,
|
885
|
-
---
|
886
|
-
version: 5
|
887
|
-
YAML
|
888
|
-
'data' => {
|
889
|
-
'common.yaml' => common_yaml
|
890
|
-
}
|
891
|
-
}
|
892
|
-
}
|
893
|
-
end
|
894
|
-
|
895
|
-
context 'that are empty' do
|
896
|
-
let(:common_yaml) { <<-YAML.unindent }
|
897
|
-
lookup_options:
|
898
|
-
a: b
|
899
|
-
YAML
|
900
|
-
|
901
|
-
it 'ignores empty options' do
|
902
|
-
expect(lookup('a')).to eq("b")
|
903
|
-
end
|
904
|
-
end
|
905
|
-
|
906
|
-
context 'that contains a legal yaml hash with unexpected types' do
|
907
|
-
let(:common_yaml) { <<-YAML.unindent }
|
908
|
-
lookup_options:
|
909
|
-
:invalid_symbol
|
910
|
-
YAML
|
911
|
-
|
912
|
-
it 'fails lookup and reports a type mismatch' do
|
913
|
-
expect {
|
914
|
-
lookup('a')
|
915
|
-
}.to raise_error(Puppet::DataBinding::LookupError, /has wrong type, expects Puppet::LookupValue, got Runtime\[ruby, 'Symbol'\]/)
|
916
|
-
end
|
917
|
-
end
|
918
|
-
end
|
919
|
-
|
920
|
-
context 'with lookup_options configured using patterns' do
|
921
|
-
let(:mod_common) {
|
922
|
-
<<-YAML.unindent
|
923
|
-
mod::hash_a:
|
924
|
-
aa:
|
925
|
-
aaa: aaa (from module)
|
926
|
-
ab:
|
927
|
-
aba: aba (from module)
|
928
|
-
mod::hash_b:
|
929
|
-
ba:
|
930
|
-
baa: baa (from module)
|
931
|
-
bb:
|
932
|
-
bba: bba (from module)
|
933
|
-
lookup_options:
|
934
|
-
'^mod::ha.*_a':
|
935
|
-
merge: deep
|
936
|
-
'^mod::ha.*_b':
|
937
|
-
merge: deep
|
938
|
-
YAML
|
939
|
-
}
|
940
|
-
|
941
|
-
let(:mod_base) do
|
942
|
-
{
|
943
|
-
'hiera.yaml' => <<-YAML.unindent,
|
944
|
-
version: 5
|
945
|
-
YAML
|
946
|
-
'data' => {
|
947
|
-
'common.yaml' => mod_common
|
948
|
-
}
|
949
|
-
}
|
950
|
-
end
|
951
|
-
|
952
|
-
let(:env_modules) do
|
953
|
-
{
|
954
|
-
'mod' => mod_base
|
955
|
-
}
|
956
|
-
end
|
957
|
-
|
958
|
-
let(:env_hiera_yaml) do
|
959
|
-
<<-YAML.unindent
|
960
|
-
---
|
961
|
-
version: 5
|
962
|
-
hierarchy:
|
963
|
-
- name: X
|
964
|
-
paths:
|
965
|
-
- first.yaml
|
966
|
-
- second.yaml
|
967
|
-
YAML
|
968
|
-
end
|
969
|
-
|
970
|
-
let(:env_lookup_options) { <<-YAML.unindent }
|
971
|
-
lookup_options:
|
972
|
-
b:
|
973
|
-
merge: hash
|
974
|
-
'^[^b]$':
|
975
|
-
merge: deep
|
976
|
-
'^c':
|
977
|
-
merge: first
|
978
|
-
'^b':
|
979
|
-
merge: first
|
980
|
-
'^mod::ha.*_b':
|
981
|
-
merge: hash
|
982
|
-
YAML
|
983
|
-
|
984
|
-
let(:env_data) do
|
985
|
-
{
|
986
|
-
'first.yaml' => <<-YAML.unindent + env_lookup_options,
|
987
|
-
a:
|
988
|
-
aa:
|
989
|
-
aaa: a.aa.aaa
|
990
|
-
b:
|
991
|
-
ba:
|
992
|
-
baa: b.ba.baa
|
993
|
-
bb:
|
994
|
-
bba: b.bb.bba
|
995
|
-
c:
|
996
|
-
ca:
|
997
|
-
caa: c.ca.caa
|
998
|
-
mod::hash_a:
|
999
|
-
aa:
|
1000
|
-
aab: aab (from environment)
|
1001
|
-
ab:
|
1002
|
-
aba: aba (from environment)
|
1003
|
-
abb: abb (from environment)
|
1004
|
-
mod::hash_b:
|
1005
|
-
ba:
|
1006
|
-
bab: bab (from environment)
|
1007
|
-
bc:
|
1008
|
-
bca: bca (from environment)
|
1009
|
-
sa:
|
1010
|
-
sa1: ['e', 'd', '--f']
|
1011
|
-
YAML
|
1012
|
-
'second.yaml' => <<-YAML.unindent,
|
1013
|
-
a:
|
1014
|
-
aa:
|
1015
|
-
aab: a.aa.aab
|
1016
|
-
b:
|
1017
|
-
ba:
|
1018
|
-
bab: b.ba.bab
|
1019
|
-
bb:
|
1020
|
-
bbb: b.bb.bbb
|
1021
|
-
c:
|
1022
|
-
ca:
|
1023
|
-
cab: c.ca.cab
|
1024
|
-
sa:
|
1025
|
-
sa1: ['b', 'a', 'f', 'c']
|
1026
|
-
YAML
|
1027
|
-
}
|
1028
|
-
end
|
1029
|
-
|
1030
|
-
it 'finds lookup_options that matches a pattern' do
|
1031
|
-
expect(lookup('a')).to eql({'aa' => { 'aaa' => 'a.aa.aaa', 'aab' => 'a.aa.aab' }})
|
1032
|
-
end
|
1033
|
-
|
1034
|
-
it 'gives a direct key match higher priority than a matching pattern' do
|
1035
|
-
expect(lookup('b')).to eql({'ba' => { 'baa' => 'b.ba.baa' }, 'bb' => { 'bba'=>'b.bb.bba' }})
|
1036
|
-
end
|
1037
|
-
|
1038
|
-
it 'uses the first matching pattern' do
|
1039
|
-
expect(lookup('c')).to eql({'ca' => { 'caa' => 'c.ca.caa', 'cab' => 'c.ca.cab' }})
|
1040
|
-
end
|
1041
|
-
|
1042
|
-
it 'uses lookup_option found by pattern from module' do
|
1043
|
-
expect(lookup('mod::hash_a')).to eql({
|
1044
|
-
'aa' => {
|
1045
|
-
'aaa' => 'aaa (from module)',
|
1046
|
-
'aab' => 'aab (from environment)'
|
1047
|
-
},
|
1048
|
-
'ab' => {
|
1049
|
-
'aba' => 'aba (from environment)',
|
1050
|
-
'abb' => 'abb (from environment)'
|
1051
|
-
}
|
1052
|
-
})
|
1053
|
-
end
|
1054
|
-
|
1055
|
-
it 'merges lookup_options found by pattern in environment and module (environment wins)' do
|
1056
|
-
expect(lookup('mod::hash_b')).to eql({
|
1057
|
-
'ba' => {
|
1058
|
-
'bab' => 'bab (from environment)'
|
1059
|
-
},
|
1060
|
-
'bb' => {
|
1061
|
-
'bba' => 'bba (from module)'
|
1062
|
-
},
|
1063
|
-
'bc' => {
|
1064
|
-
'bca' => 'bca (from environment)'
|
1065
|
-
}
|
1066
|
-
})
|
1067
|
-
end
|
1068
|
-
|
1069
|
-
context 'and lookup_options is empty' do
|
1070
|
-
let(:mod_common) { <<-YAML.unindent }
|
1071
|
-
lookup_options:
|
1072
|
-
mod::a: b
|
1073
|
-
YAML
|
1074
|
-
|
1075
|
-
it 'ignores empty options' do
|
1076
|
-
expect(lookup('mod::a')).to eq("b")
|
1077
|
-
end
|
1078
|
-
end
|
1079
|
-
|
1080
|
-
context 'and lookup_options contains a legal hash with unexpected types' do
|
1081
|
-
let(:mod_common) { <<-YAML.unindent }
|
1082
|
-
lookup_options:
|
1083
|
-
:invalid_symbol
|
1084
|
-
YAML
|
1085
|
-
|
1086
|
-
it 'fails lookup and reports a type mismatch' do
|
1087
|
-
expect {
|
1088
|
-
lookup('mod::a')
|
1089
|
-
}.to raise_error(Puppet::DataBinding::LookupError, /has wrong type, expects Puppet::LookupValue, got Runtime\[ruby, 'Symbol'\]/)
|
1090
|
-
end
|
1091
|
-
end
|
1092
|
-
|
1093
|
-
context 'and patterns in module are not limited to module keys' do
|
1094
|
-
let(:mod_common) {
|
1095
|
-
<<-YAML.unindent
|
1096
|
-
mod::hash_a:
|
1097
|
-
aa:
|
1098
|
-
aaa: aaa (from module)
|
1099
|
-
ab:
|
1100
|
-
aba: aba (from module)
|
1101
|
-
lookup_options:
|
1102
|
-
'^.*_a':
|
1103
|
-
merge: deep
|
1104
|
-
YAML
|
1105
|
-
}
|
1106
|
-
|
1107
|
-
it 'fails with error' do
|
1108
|
-
expect { lookup('mod::a') }.to raise_error(Puppet::DataBinding::LookupError, /all lookup_options patterns must match a key starting with module name/)
|
1109
|
-
end
|
1110
|
-
end
|
1111
|
-
|
1112
|
-
context 'and there are no lookup options that do not use patterns' do
|
1113
|
-
|
1114
|
-
let(:env_lookup_options) { <<-YAML.unindent }
|
1115
|
-
lookup_options:
|
1116
|
-
'^[^b]$':
|
1117
|
-
merge: deep
|
1118
|
-
'^c':
|
1119
|
-
merge: first
|
1120
|
-
'^b':
|
1121
|
-
merge: first
|
1122
|
-
'^mod::ha.*_b':
|
1123
|
-
merge: hash
|
1124
|
-
YAML
|
1125
|
-
|
1126
|
-
it 'finds lookup_options that matches a pattern' do
|
1127
|
-
expect(lookup('a')).to eql({'aa' => { 'aaa' => 'a.aa.aaa', 'aab' => 'a.aa.aab' }})
|
1128
|
-
end
|
1129
|
-
end
|
1130
|
-
|
1131
|
-
context 'and lookup options use a hash' do
|
1132
|
-
|
1133
|
-
let(:env_lookup_options) { <<-YAML.unindent }
|
1134
|
-
lookup_options:
|
1135
|
-
'sa':
|
1136
|
-
merge:
|
1137
|
-
strategy: deep
|
1138
|
-
knockout_prefix: --
|
1139
|
-
sort_merged_arrays: true
|
1140
|
-
YAML
|
1141
|
-
|
1142
|
-
it 'applies knockout_prefix and sort_merged_arrays' do
|
1143
|
-
expect(lookup('sa')).to eql({ 'sa1' => %w(a b c d e) })
|
1144
|
-
end
|
1145
|
-
|
1146
|
-
it 'overrides knockout_prefix and sort_merged_arrays with explicitly given values' do
|
1147
|
-
expect(
|
1148
|
-
lookup('sa', 'merge' => { 'strategy' => 'deep', 'knockout_prefix' => '##', 'sort_merged_arrays' => false })).to(
|
1149
|
-
eql({ 'sa1' => %w(b a f c e d --f) }))
|
1150
|
-
end
|
1151
|
-
end
|
1152
|
-
end
|
1153
|
-
|
1154
|
-
context 'and an environment Hiera v5 configuration using globs' do
|
1155
|
-
let(:env_hiera_yaml) do
|
1156
|
-
<<-YAML.unindent
|
1157
|
-
---
|
1158
|
-
version: 5
|
1159
|
-
hierarchy:
|
1160
|
-
- name: Globs
|
1161
|
-
globs:
|
1162
|
-
- "globs/*.yaml"
|
1163
|
-
- "globs_%{domain}/*.yaml"
|
1164
|
-
YAML
|
1165
|
-
end
|
1166
|
-
|
1167
|
-
let(:env_data) do
|
1168
|
-
{
|
1169
|
-
'globs' => {
|
1170
|
-
'a.yaml' => <<-YAML.unindent,
|
1171
|
-
glob_a: value glob_a
|
1172
|
-
YAML
|
1173
|
-
'b.yaml' => <<-YAML.unindent
|
1174
|
-
glob_b:
|
1175
|
-
a: value glob_b.a
|
1176
|
-
b: value glob_b.b
|
1177
|
-
YAML
|
1178
|
-
},
|
1179
|
-
'globs_example.com' => {
|
1180
|
-
'a.yaml' => <<-YAML.unindent,
|
1181
|
-
glob_c: value glob_a
|
1182
|
-
YAML
|
1183
|
-
'b.yaml' => <<-YAML.unindent
|
1184
|
-
glob_d:
|
1185
|
-
a: value glob_d.a
|
1186
|
-
b: value glob_d.b
|
1187
|
-
YAML
|
1188
|
-
|
1189
|
-
}
|
1190
|
-
}
|
1191
|
-
end
|
1192
|
-
|
1193
|
-
it 'finds environment data using globs' do
|
1194
|
-
expect(lookup('glob_a')).to eql('value glob_a')
|
1195
|
-
expect(warnings).to be_empty
|
1196
|
-
end
|
1197
|
-
|
1198
|
-
it 'finds environment data using interpolated globs' do
|
1199
|
-
expect(lookup('glob_d.a')).to eql('value glob_d.a')
|
1200
|
-
expect(warnings).to be_empty
|
1201
|
-
end
|
1202
|
-
end
|
1203
|
-
|
1204
|
-
context 'and an environment Hiera v5 configuration using uris' do
|
1205
|
-
let(:env_hiera_yaml) do
|
1206
|
-
<<-YAML.unindent
|
1207
|
-
---
|
1208
|
-
version: 5
|
1209
|
-
hierarchy:
|
1210
|
-
- name: Uris
|
1211
|
-
uris:
|
1212
|
-
- "http://test.example.com"
|
1213
|
-
- "/some/arbitrary/path"
|
1214
|
-
- "urn:with:opaque:path"
|
1215
|
-
- "dothis%20-f%20bar"
|
1216
|
-
data_hash: mod::uri_test_func
|
1217
|
-
YAML
|
1218
|
-
end
|
1219
|
-
|
1220
|
-
let(:env_modules) do
|
1221
|
-
{
|
1222
|
-
'mod' => { 'lib' => { 'puppet' => { 'functions' => { 'mod' => { 'uri_test_func.rb' => <<-RUBY } } } } }
|
1223
|
-
Puppet::Functions.create_function(:'mod::uri_test_func') do
|
1224
|
-
dispatch :uri_test_func do
|
1225
|
-
param 'Hash', :options
|
1226
|
-
param 'Puppet::LookupContext', :context
|
1227
|
-
end
|
1228
|
-
|
1229
|
-
def uri_test_func(options, context)
|
1230
|
-
{ 'uri' => [ options['uri'] ] }
|
1231
|
-
end
|
1232
|
-
end
|
1233
|
-
RUBY
|
1234
|
-
}
|
1235
|
-
end
|
1236
|
-
|
1237
|
-
it 'The uris are propagated in the options hash' do
|
1238
|
-
expect(lookup('uri', 'merge' => 'unique')).to eql(
|
1239
|
-
%w(http://test.example.com /some/arbitrary/path urn:with:opaque:path dothis%20-f%20bar))
|
1240
|
-
expect(warnings).to be_empty
|
1241
|
-
end
|
1242
|
-
|
1243
|
-
context 'and a uri uses bad syntax' do
|
1244
|
-
let(:env_hiera_yaml) do
|
1245
|
-
<<-YAML.unindent
|
1246
|
-
---
|
1247
|
-
version: 5
|
1248
|
-
hierarchy:
|
1249
|
-
- name: Uris
|
1250
|
-
uri: "dothis -f bar"
|
1251
|
-
data_hash: mod::uri_test_func
|
1252
|
-
YAML
|
1253
|
-
end
|
1254
|
-
|
1255
|
-
it 'an attempt to lookup raises InvalidURIError' do
|
1256
|
-
expect{ lookup('uri', 'merge' => 'unique') }.to raise_error(/bad URI/)
|
1257
|
-
end
|
1258
|
-
end
|
1259
|
-
end
|
1260
|
-
|
1261
|
-
context 'and an environment Hiera v5 configuration using mapped_paths' do
|
1262
|
-
let(:scope_additions) do
|
1263
|
-
{
|
1264
|
-
'mapped' => {
|
1265
|
-
'array_var' => ['a', 'b', 'c'],
|
1266
|
-
'hash_var' => { 'x' => 'a', 'y' => 'b', 'z' => 'c' },
|
1267
|
-
'string_var' => 's' },
|
1268
|
-
'var' => 'global_var' # overridden by mapped path variable
|
1269
|
-
}
|
1270
|
-
end
|
1271
|
-
|
1272
|
-
let(:env_hiera_yaml) do
|
1273
|
-
<<-YAML.unindent
|
1274
|
-
---
|
1275
|
-
version: 5
|
1276
|
-
hierarchy:
|
1277
|
-
- name: Mapped Paths
|
1278
|
-
mapped_paths: #{mapped_paths}
|
1279
|
-
- name: Global Path
|
1280
|
-
path: "%{var}.yaml"
|
1281
|
-
YAML
|
1282
|
-
end
|
1283
|
-
|
1284
|
-
let(:environment_files) do
|
1285
|
-
{
|
1286
|
-
env_name => {
|
1287
|
-
'hiera.yaml' => env_hiera_yaml,
|
1288
|
-
'data' => env_data
|
1289
|
-
}
|
1290
|
-
}
|
1291
|
-
end
|
1292
|
-
|
1293
|
-
context 'that originates from an array' do
|
1294
|
-
let (:mapped_paths) { '[mapped.array_var, var, "paths/%{var}.yaml"]' }
|
1295
|
-
|
1296
|
-
let(:env_data) do
|
1297
|
-
{
|
1298
|
-
'paths' => {
|
1299
|
-
'a.yaml' => <<-YAML.unindent,
|
1300
|
-
path_a: value path_a
|
1301
|
-
path_h:
|
1302
|
-
a: value path_h.a
|
1303
|
-
c: value path_h.c
|
1304
|
-
YAML
|
1305
|
-
'b.yaml' => <<-YAML.unindent,
|
1306
|
-
path_h:
|
1307
|
-
b: value path_h.b
|
1308
|
-
d: value path_h.d
|
1309
|
-
YAML
|
1310
|
-
'd.yaml' => <<-YAML.unindent
|
1311
|
-
path_h:
|
1312
|
-
b: value path_h.b (from d.yaml)
|
1313
|
-
d: value path_h.d (from d.yaml)
|
1314
|
-
YAML
|
1315
|
-
},
|
1316
|
-
'global_var.yaml' => <<-YAML.unindent,
|
1317
|
-
path_h:
|
1318
|
-
e: value path_h.e
|
1319
|
-
YAML
|
1320
|
-
'other_var.yaml' => <<-YAML.unindent
|
1321
|
-
path_h:
|
1322
|
-
e: value path_h.e (from other_var.yaml)
|
1323
|
-
YAML
|
1324
|
-
}
|
1325
|
-
end
|
1326
|
-
|
1327
|
-
it 'finds environment data using mapped_paths' do
|
1328
|
-
expect(lookup('path_a')).to eql('value path_a')
|
1329
|
-
expect(warnings).to be_empty
|
1330
|
-
end
|
1331
|
-
|
1332
|
-
it 'includes mapped path in explain output' do
|
1333
|
-
explanation = explain('path_h', 'merge' => 'deep')
|
1334
|
-
['a', 'b', 'c'].each do |var|
|
1335
|
-
expect(explanation).to match(/^\s+Path "#{env_dir}\/spec\/data\/paths\/#{var}\.yaml"\n\s+Original path: "paths\/%\{var\}\.yaml"/)
|
1336
|
-
end
|
1337
|
-
expect(warnings).to be_empty
|
1338
|
-
end
|
1339
|
-
|
1340
|
-
it 'performs merges between mapped paths and global path interpolated using same key' do
|
1341
|
-
expect(lookup('path_h', 'merge' => 'hash')).to eql(
|
1342
|
-
{
|
1343
|
-
'a' => 'value path_h.a',
|
1344
|
-
'b' => 'value path_h.b',
|
1345
|
-
'c' => 'value path_h.c',
|
1346
|
-
'd' => 'value path_h.d',
|
1347
|
-
'e' => 'value path_h.e'
|
1348
|
-
})
|
1349
|
-
expect(warnings).to be_empty
|
1350
|
-
end
|
1351
|
-
|
1352
|
-
it 'keeps track of changes in key overridden by interpolated key' do
|
1353
|
-
Puppet[:log_level] = 'debug'
|
1354
|
-
collect_notices("notice('success')") do |scope|
|
1355
|
-
expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
|
1356
|
-
{
|
1357
|
-
'a' => 'value path_h.a',
|
1358
|
-
'b' => 'value path_h.b',
|
1359
|
-
'c' => 'value path_h.c',
|
1360
|
-
'd' => 'value path_h.d',
|
1361
|
-
'e' => 'value path_h.e'
|
1362
|
-
})
|
1363
|
-
scope.with_local_scope('var' => 'other_var') do
|
1364
|
-
expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
|
1365
|
-
{
|
1366
|
-
'a' => 'value path_h.a',
|
1367
|
-
'b' => 'value path_h.b',
|
1368
|
-
'c' => 'value path_h.c',
|
1369
|
-
'd' => 'value path_h.d',
|
1370
|
-
'e' => 'value path_h.e (from other_var.yaml)'
|
1371
|
-
})
|
1372
|
-
end
|
1373
|
-
end
|
1374
|
-
expect(notices).to eql(['success'])
|
1375
|
-
expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_truthy
|
1376
|
-
end
|
1377
|
-
|
1378
|
-
it 'keeps track of changes in elements of mapped key' do
|
1379
|
-
Puppet[:log_level] = 'debug'
|
1380
|
-
collect_notices("notice('success')") do |scope|
|
1381
|
-
expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
|
1382
|
-
{
|
1383
|
-
'a' => 'value path_h.a',
|
1384
|
-
'b' => 'value path_h.b',
|
1385
|
-
'c' => 'value path_h.c',
|
1386
|
-
'd' => 'value path_h.d',
|
1387
|
-
'e' => 'value path_h.e'
|
1388
|
-
})
|
1389
|
-
scope['mapped']['array_var'] = ['a', 'c', 'd']
|
1390
|
-
expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
|
1391
|
-
{
|
1392
|
-
'a' => 'value path_h.a',
|
1393
|
-
'b' => 'value path_h.b (from d.yaml)',
|
1394
|
-
'c' => 'value path_h.c',
|
1395
|
-
'd' => 'value path_h.d (from d.yaml)',
|
1396
|
-
'e' => 'value path_h.e'
|
1397
|
-
})
|
1398
|
-
end
|
1399
|
-
expect(notices).to eql(['success'])
|
1400
|
-
expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_truthy
|
1401
|
-
end
|
1402
|
-
end
|
1403
|
-
|
1404
|
-
context 'that originates from a hash' do
|
1405
|
-
let (:mapped_paths) { '[mapped.hash_var, var, "paths/%{var.0}.%{var.1}.yaml"]' }
|
1406
|
-
|
1407
|
-
let(:env_data) do
|
1408
|
-
{
|
1409
|
-
'paths' => {
|
1410
|
-
'x.a.yaml' => <<-YAML.unindent,
|
1411
|
-
path_xa: value path_xa
|
1412
|
-
path_m:
|
1413
|
-
a: value path_m.a
|
1414
|
-
c: value path_m.c
|
1415
|
-
YAML
|
1416
|
-
'y.b.yaml' => <<-YAML.unindent
|
1417
|
-
path_m:
|
1418
|
-
b: value path_m.b
|
1419
|
-
d: value path_m.d
|
1420
|
-
YAML
|
1421
|
-
},
|
1422
|
-
'global_var.yaml' => <<-YAML.unindent
|
1423
|
-
path_m:
|
1424
|
-
e: value path_m.e
|
1425
|
-
YAML
|
1426
|
-
}
|
1427
|
-
end
|
1428
|
-
|
1429
|
-
it 'finds environment data using mapped_paths' do
|
1430
|
-
expect(lookup('path_xa')).to eql('value path_xa')
|
1431
|
-
expect(warnings).to be_empty
|
1432
|
-
end
|
1433
|
-
|
1434
|
-
it 'includes mapped path in explain output' do
|
1435
|
-
explanation = explain('path_h', 'merge' => 'deep')
|
1436
|
-
['x\.a', 'y\.b', 'z\.c'].each do |var|
|
1437
|
-
expect(explanation).to match(/^\s+Path "#{env_dir}\/spec\/data\/paths\/#{var}\.yaml"\n\s+Original path: "paths\/%\{var\.0\}\.%\{var\.1\}\.yaml"/)
|
1438
|
-
end
|
1439
|
-
expect(warnings).to be_empty
|
1440
|
-
end
|
1441
|
-
|
1442
|
-
it 'performs merges between mapped paths' do
|
1443
|
-
expect(lookup('path_m', 'merge' => 'hash')).to eql(
|
1444
|
-
{
|
1445
|
-
'a' => 'value path_m.a',
|
1446
|
-
'b' => 'value path_m.b',
|
1447
|
-
'c' => 'value path_m.c',
|
1448
|
-
'd' => 'value path_m.d',
|
1449
|
-
'e' => 'value path_m.e'
|
1450
|
-
})
|
1451
|
-
expect(warnings).to be_empty
|
1452
|
-
end
|
1453
|
-
end
|
1454
|
-
|
1455
|
-
context 'that originates from a string' do
|
1456
|
-
let (:mapped_paths) { '[mapped.string_var, var, "paths/%{var}.yaml"]' }
|
1457
|
-
|
1458
|
-
let(:env_data) do
|
1459
|
-
{
|
1460
|
-
'paths' => {
|
1461
|
-
's.yaml' => <<-YAML.unindent,
|
1462
|
-
path_s: value path_s
|
1463
|
-
YAML
|
1464
|
-
}
|
1465
|
-
}
|
1466
|
-
end
|
1467
|
-
|
1468
|
-
it 'includes mapped path in explain output' do
|
1469
|
-
expect(explain('path_s')).to match(/^\s+Path "#{env_dir}\/spec\/data\/paths\/s\.yaml"\n\s+Original path: "paths\/%\{var\}\.yaml"/)
|
1470
|
-
expect(warnings).to be_empty
|
1471
|
-
end
|
1472
|
-
|
1473
|
-
it 'finds environment data using mapped_paths' do
|
1474
|
-
expect(lookup('path_s')).to eql('value path_s')
|
1475
|
-
expect(warnings).to be_empty
|
1476
|
-
end
|
1477
|
-
end
|
1478
|
-
|
1479
|
-
context 'where the enty does not exist' do
|
1480
|
-
let (:mapped_paths) { '[mapped.nosuch_var, var, "paths/%{var}.yaml"]' }
|
1481
|
-
|
1482
|
-
it 'finds environment data using mapped_paths' do
|
1483
|
-
expect(explain('hello')).to match(/No such key: "hello"/)
|
1484
|
-
expect(warnings).to be_empty
|
1485
|
-
end
|
1486
|
-
end
|
1487
|
-
end
|
1488
|
-
|
1489
|
-
context 'and an environment Hiera v3 configuration' do
|
1490
|
-
let(:env_hiera_yaml) do
|
1491
|
-
<<-YAML.unindent
|
1492
|
-
---
|
1493
|
-
:backends: yaml
|
1494
|
-
:yaml:
|
1495
|
-
:datadir: #{env_dir}/#{env_name}/hieradata
|
1496
|
-
YAML
|
1497
|
-
end
|
1498
|
-
|
1499
|
-
let(:environment_files) do
|
1500
|
-
{
|
1501
|
-
env_name => {
|
1502
|
-
'hiera.yaml' => env_hiera_yaml,
|
1503
|
-
'hieradata' => {
|
1504
|
-
'common.yaml' => <<-YAML.unindent,
|
1505
|
-
g: Value g
|
1506
|
-
YAML
|
1507
|
-
}
|
1508
|
-
}
|
1509
|
-
}
|
1510
|
-
end
|
1511
|
-
|
1512
|
-
it 'will raise an error if --strict is set to error' do
|
1513
|
-
Puppet[:strict] = :error
|
1514
|
-
expect { lookup('g') }.to raise_error(Puppet::Error, /hiera.yaml version 3 cannot be used in an environment/)
|
1515
|
-
end
|
1516
|
-
|
1517
|
-
it 'will log a warning and ignore the file if --strict is set to warning' do
|
1518
|
-
Puppet[:strict] = :warning
|
1519
|
-
expect { lookup('g') }.to raise_error(Puppet::Error, /did not find a value for the name 'g'/)
|
1520
|
-
end
|
1521
|
-
|
1522
|
-
it 'will not log a warning and ignore the file if --strict is set to off' do
|
1523
|
-
Puppet[:strict] = :off
|
1524
|
-
expect { lookup('g') }.to raise_error(Puppet::Error, /did not find a value for the name 'g'/)
|
1525
|
-
expect(warnings).to include(/hiera.yaml version 3 found at the environment root was ignored/)
|
1526
|
-
end
|
1527
|
-
|
1528
|
-
it 'will use the configuration if appointed by global setting but still warn when encountered by environment data provider' do
|
1529
|
-
Puppet[:strict] = :warning
|
1530
|
-
Puppet.settings[:hiera_config] = File.join(env_dir, env_name, 'hiera.yaml')
|
1531
|
-
expect(lookup('g')).to eql('Value g')
|
1532
|
-
expect(warnings).to include(/hiera.yaml version 3 found at the environment root was ignored/)
|
1533
|
-
end
|
1534
|
-
end
|
1535
|
-
|
1536
|
-
context 'and a global empty Hiera configuration' do
|
1537
|
-
let(:hiera_yaml_path) { File.join(code_dir, 'hiera.yaml') }
|
1538
|
-
let(:code_dir_files) do
|
1539
|
-
{
|
1540
|
-
'hiera.yaml' => '',
|
1541
|
-
}
|
1542
|
-
end
|
1543
|
-
|
1544
|
-
let(:environment_files) do
|
1545
|
-
{
|
1546
|
-
env_name => {
|
1547
|
-
'hieradata' => {
|
1548
|
-
'common.yaml' => <<-YAML.unindent,
|
1549
|
-
x: value x (from environment)
|
1550
|
-
YAML
|
1551
|
-
}
|
1552
|
-
}
|
1553
|
-
}
|
1554
|
-
end
|
1555
|
-
|
1556
|
-
before(:each) do
|
1557
|
-
# Need to set here since spec_helper defines these settings in its "before each"
|
1558
|
-
Puppet.settings[:hiera_config] = hiera_yaml_path
|
1559
|
-
end
|
1560
|
-
|
1561
|
-
it 'uses a Hiera version 3 defaults' do
|
1562
|
-
expect(lookup('x')).to eql('value x (from environment)')
|
1563
|
-
end
|
1564
|
-
|
1565
|
-
context 'obtained using /dev/null', :unless => Puppet::Util::Platform.windows? do
|
1566
|
-
let(:code_dir_files) { {} }
|
1567
|
-
|
1568
|
-
it 'uses a Hiera version 3 defaults' do
|
1569
|
-
Puppet[:hiera_config] = '/dev/null'
|
1570
|
-
expect(lookup('x')).to eql('value x (from environment)')
|
1571
|
-
end
|
1572
|
-
end
|
1573
|
-
end
|
1574
|
-
|
1575
|
-
context 'and a global configuration' do
|
1576
|
-
let(:hiera_yaml) do
|
1577
|
-
<<-YAML.unindent
|
1578
|
-
---
|
1579
|
-
:backends:
|
1580
|
-
- yaml
|
1581
|
-
- json
|
1582
|
-
- custom
|
1583
|
-
- hocon
|
1584
|
-
:yaml:
|
1585
|
-
:datadir: #{code_dir}/hieradata
|
1586
|
-
:json:
|
1587
|
-
:datadir: #{code_dir}/hieradata
|
1588
|
-
:hocon:
|
1589
|
-
:datadir: #{code_dir}/hieradata
|
1590
|
-
:hierarchy:
|
1591
|
-
- common
|
1592
|
-
- "%{domain}"
|
1593
|
-
:merge_behavior: deeper
|
1594
|
-
YAML
|
1595
|
-
end
|
1596
|
-
|
1597
|
-
let(:code_dir_files) do
|
1598
|
-
{
|
1599
|
-
'hiera.yaml' => hiera_yaml,
|
1600
|
-
'hieradata' => {
|
1601
|
-
'common.yaml' => <<-YAML.unindent,
|
1602
|
-
a: value a (from global)
|
1603
|
-
hash_b:
|
1604
|
-
hash_ba:
|
1605
|
-
bab: value hash_b.hash_ba.bab (from global)
|
1606
|
-
hash_c:
|
1607
|
-
hash_ca:
|
1608
|
-
cab: value hash_c.hash_ca.cab (from global)
|
1609
|
-
ipl_hiera_env: "environment value '%{hiera('mod_a::hash_a.a')}'"
|
1610
|
-
ipl_hiera_mod: "module value '%{hiera('mod_a::abc')}'"
|
1611
|
-
ipl_hiera_modc: "module value '%{hiera('mod_a::caller')}'"
|
1612
|
-
YAML
|
1613
|
-
'example.com.yaml' => <<-YAML.unindent,
|
1614
|
-
x: value x (from global example.com.yaml)
|
1615
|
-
YAML
|
1616
|
-
'common.json' => <<-JSON.unindent,
|
1617
|
-
{
|
1618
|
-
"hash_b": {
|
1619
|
-
"hash_ba": {
|
1620
|
-
"bac": "value hash_b.hash_ba.bac (from global json)"
|
1621
|
-
}
|
1622
|
-
},
|
1623
|
-
"hash_c": {
|
1624
|
-
"hash_ca": {
|
1625
|
-
"cac": "value hash_c.hash_ca.cac (from global json)"
|
1626
|
-
}
|
1627
|
-
}
|
1628
|
-
}
|
1629
|
-
JSON
|
1630
|
-
'common.conf' => <<-HOCON.unindent,
|
1631
|
-
// The 'xs' is a value used for testing
|
1632
|
-
xs = { subkey = value xs.subkey (from global hocon) }
|
1633
|
-
HOCON
|
1634
|
-
}
|
1635
|
-
}
|
1636
|
-
end
|
1637
|
-
|
1638
|
-
before(:all) do
|
1639
|
-
$LOAD_PATH.unshift(my_fixture_dir)
|
1640
|
-
end
|
1641
|
-
|
1642
|
-
after(:all) do
|
1643
|
-
if Kernel.const_defined?(:Hiera) && Hiera.const_defined?(:Backend)
|
1644
|
-
Hiera::Backend.send(:remove_const, :Custom_backend) if Hiera::Backend.const_defined?(:Custom_backend)
|
1645
|
-
Hiera::Backend.send(:remove_const, :Other_backend) if Hiera::Backend.const_defined?(:Other_backend)
|
1646
|
-
end
|
1647
|
-
$LOAD_PATH.shift
|
1648
|
-
end
|
1649
|
-
|
1650
|
-
before(:each) do
|
1651
|
-
# Need to set here since spec_helper defines these settings in its "before each"
|
1652
|
-
Puppet.settings[:codedir] = populated_code_dir
|
1653
|
-
Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
|
1654
|
-
end
|
1655
|
-
|
1656
|
-
around(:each) do |example|
|
1657
|
-
Puppet.override(:environments => environments, :current_environment => env) do
|
1658
|
-
example.run
|
1659
|
-
end
|
1660
|
-
end
|
1661
|
-
|
1662
|
-
context 'version 3', :if => Puppet.features.hiera? do
|
1663
|
-
it 'finds data in in global layer and reports deprecation warnings for hiera.yaml' do
|
1664
|
-
expect(lookup('a')).to eql('value a (from global)')
|
1665
|
-
expect(warnings).to include(/Use of 'hiera.yaml' version 3 is deprecated. It should be converted to version 5/)
|
1666
|
-
end
|
1667
|
-
|
1668
|
-
it 'explain contains output from global layer' do
|
1669
|
-
explanation = explain('a')
|
1670
|
-
expect(explanation).to include('Global Data Provider (hiera configuration version 3)')
|
1671
|
-
expect(explanation).to include('Hierarchy entry "yaml"')
|
1672
|
-
expect(explanation).to include('Hierarchy entry "json"')
|
1673
|
-
expect(explanation).to include('Found key: "a" value: "value a (from global)"')
|
1674
|
-
end
|
1675
|
-
|
1676
|
-
it 'ignores merge behavior specified in global hiera.yaml' do
|
1677
|
-
expect(lookup('hash_b')).to eql(
|
1678
|
-
{ 'hash_ba' => { 'bab' => 'value hash_b.hash_ba.bab (from global)'} })
|
1679
|
-
end
|
1680
|
-
|
1681
|
-
it 'uses the merge from lookup options to merge all layers' do
|
1682
|
-
expect(lookup('hash_c')).to eql(
|
1683
|
-
{ 'hash_ca' => { 'cab' => 'value hash_c.hash_ca.cab (from global)' } })
|
1684
|
-
end
|
1685
|
-
|
1686
|
-
it 'uses the explicitly given merge to override lookup options and to merge all layers' do
|
1687
|
-
expect(lookup('hash_c', 'merge' => 'deep')).to eql(
|
1688
|
-
{
|
1689
|
-
'hash_ca' =>
|
1690
|
-
{
|
1691
|
-
'caa' => 'value hash_c.hash_ca.caa (from environment)',
|
1692
|
-
'cab' => 'value hash_c.hash_ca.cab (from global)',
|
1693
|
-
'cac' => 'value hash_c.hash_ca.cac (from global json)',
|
1694
|
-
'cad' => 'value hash_c.hash_ca.cad (from global custom)'
|
1695
|
-
}
|
1696
|
-
})
|
1697
|
-
end
|
1698
|
-
|
1699
|
-
it 'paths are interpolated' do
|
1700
|
-
expect(lookup('x')).to eql('value x (from global example.com.yaml)')
|
1701
|
-
end
|
1702
|
-
|
1703
|
-
it 'backend data sources are propagated to custom backend' do
|
1704
|
-
expect(lookup('datasources')).to eql(['common', 'example.com'])
|
1705
|
-
end
|
1706
|
-
|
1707
|
-
it 'backend specific options are propagated to custom backend' do
|
1708
|
-
expect(lookup('other_option')).to eql('value of other_option')
|
1709
|
-
end
|
1710
|
-
|
1711
|
-
it 'dotted keys are passed down to custom backend' do
|
1712
|
-
expect(lookup('dotted.key')).to eql('custom backend received request for dotted.key value')
|
1713
|
-
end
|
1714
|
-
|
1715
|
-
it 'delegates configured hocon backend to hocon_data function' do
|
1716
|
-
expect(explain('xs')).to match(/Hierarchy entry "hocon"\n.*\n.*\n.*"common"\n\s*Found key: "xs"/m)
|
1717
|
-
end
|
1718
|
-
|
1719
|
-
it 'can dig down into subkeys provided by hocon_data function' do
|
1720
|
-
expect(lookup('xs.subkey')).to eql('value xs.subkey (from global hocon)')
|
1721
|
-
end
|
1722
|
-
|
1723
|
-
it 'multiple hiera3_backend declarations can be used and are merged into the generated config' do
|
1724
|
-
expect(lookup(['datasources', 'other_option'])).to eql([['common', 'example.com'], 'value of other_option'])
|
1725
|
-
expect(Hiera::Config.instance_variable_get(:@config)).to eql(
|
1726
|
-
{
|
1727
|
-
:backends => ['custom', 'other'],
|
1728
|
-
:hierarchy => ['common', '%{domain}'],
|
1729
|
-
:custom => { :datadir => "#{code_dir}/hieradata" },
|
1730
|
-
:other => { :other_option => 'value of other_option', :datadir=>"#{code_dir}/hieradata" },
|
1731
|
-
:logger => 'puppet'
|
1732
|
-
})
|
1733
|
-
end
|
1734
|
-
|
1735
|
-
context 'with a module data provider' do
|
1736
|
-
let(:module_files) do
|
1737
|
-
{
|
1738
|
-
'mod_a' => {
|
1739
|
-
'hiera.yaml' => <<-YAML.unindent,
|
1740
|
-
version: 5
|
1741
|
-
hierarchy:
|
1742
|
-
- name: Common
|
1743
|
-
path: common.yaml
|
1744
|
-
YAML
|
1745
|
-
'data' => {
|
1746
|
-
'common.yaml' => <<-YAML.unindent
|
1747
|
-
mod_a::abc: value mod_a::abc (from module)
|
1748
|
-
mod_a::caller: "calling module is %{calling_module}"
|
1749
|
-
YAML
|
1750
|
-
}
|
1751
|
-
}
|
1752
|
-
}
|
1753
|
-
end
|
1754
|
-
|
1755
|
-
let(:environment_files) do
|
1756
|
-
{
|
1757
|
-
env_name => {
|
1758
|
-
'hiera.yaml' => env_hiera_yaml,
|
1759
|
-
'data' => env_data,
|
1760
|
-
'modules' => module_files
|
1761
|
-
}
|
1762
|
-
}
|
1763
|
-
end
|
1764
|
-
|
1765
|
-
it "interpolation function 'hiera' finds values in environment" do
|
1766
|
-
expect(lookup('ipl_hiera_env')).to eql("environment value 'value mod_a::hash_a.a (from environment)'")
|
1767
|
-
end
|
1768
|
-
|
1769
|
-
it "interpolation function 'hiera' finds values in module" do
|
1770
|
-
expect(lookup('ipl_hiera_mod')).to eql("module value 'value mod_a::abc (from module)'")
|
1771
|
-
end
|
1772
|
-
|
1773
|
-
it "interpolation function 'hiera' finds values in module and that module does not find %{calling_module}" do
|
1774
|
-
expect(lookup('ipl_hiera_modc')).to eql("module value 'calling module is '")
|
1775
|
-
end
|
1776
|
-
|
1777
|
-
context 'but no environment data provider' do
|
1778
|
-
let(:environment_files) do
|
1779
|
-
{
|
1780
|
-
env_name => {
|
1781
|
-
'modules' => module_files
|
1782
|
-
}
|
1783
|
-
}
|
1784
|
-
end
|
1785
|
-
|
1786
|
-
it "interpolation function 'hiera' does not find values in a module" do
|
1787
|
-
expect(lookup('ipl_hiera_mod')).to eql("module value ''")
|
1788
|
-
end
|
1789
|
-
end
|
1790
|
-
end
|
1791
|
-
|
1792
|
-
|
1793
|
-
context 'using an eyaml backend' do
|
1794
|
-
let(:private_key_name) { 'private_key.pkcs7.pem' }
|
1795
|
-
let(:public_key_name) { 'public_key.pkcs7.pem' }
|
1796
|
-
|
1797
|
-
let(:private_key) do
|
1798
|
-
<<-PKCS7.unindent
|
1799
|
-
-----BEGIN RSA PRIVATE KEY-----
|
1800
|
-
MIIEogIBAAKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6f
|
1801
|
-
CR7tyOpYV6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC
|
1802
|
-
2LUuqj1IAErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQ
|
1803
|
-
NlgZwm2/aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2
|
1804
|
-
tPtLsHyRN39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1o
|
1805
|
-
EfQFDQRKaIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABAoIBAE98pNXOe8ab93oI
|
1806
|
-
mtNZYmjCbGAqprTjEoFb71A3SfYbmK2Gf65GxjUdBwx/tBYTiuekSOk+yzKcDoZk
|
1807
|
-
sZnmwKpqDByzaiSmAkxunANFxdZtZvpcX9UfUX0j/t+QCROUa5gF8j6HrUiZ5nkx
|
1808
|
-
sxr1PcuItekaGLJ1nDLz5JsWTQ+H4M+GXQw7/t96x8v8g9el4exTiAHGk6Fv16kD
|
1809
|
-
017T02M9qTTmV3Ab/enDIBmKVD42Ta36K/wc4l1aoUQNiRbIGVh96Cgd1CFXLF3x
|
1810
|
-
CsaNbYT4SmRXaYqoj6MKq+QFEGxadFmJy48NoSd4joirIn2lUjHxJebw3lLbNLDR
|
1811
|
-
uvQnQ2ECgYEA/nD94wEMr6078uMv6nKxPpNGq7fihwSKf0G/PQDqrRmjUCewuW+k
|
1812
|
-
/iXMe1Y/y0PjFeNlSbUsUvKQ5xF7F/1AnpuPHIrn3cjGVLb71W+zen1m8SnhsW/f
|
1813
|
-
7dPgtcb4SCvfhmLgoov+P34YcNfGi6qgPUu6319IqoB3BIi7PvfEomkCgYEAwZ4+
|
1814
|
-
V0bMjFdDn2hnYzjTNcF2aUQ1jPvtuETizGwyCbbMLl9522lrjC2DrH41vvqX35ct
|
1815
|
-
CBJkhQFbtHM8Gnmozv0vxhI2jP+u14mzfePZsaXuYrEgWRj+BCsYUHodXryxnEWj
|
1816
|
-
yVrTNskab1B5jFm2SCJDmKcycBOYpRBLCMx6W7MCgYBA99z7/6KboOIzzKrJdGup
|
1817
|
-
jLV410UyMIikoccQ7pD9jhRTPS80yjsY4dHqlEVJw5XSWvPb9DTTITi6p44EvBep
|
1818
|
-
6BKMuTMnQELUEr0O7KypVCfa4FTOl8BX28f+4kU3OGykxc6R8qkC0VGwTohV1UWB
|
1819
|
-
ITsgGhZV4uOA9uDI3T8KMQKBgEnQY2HwmuDSD/TA39GDA3qV8+ez2lqSXRGIKZLX
|
1820
|
-
mMf9SaBQQ+uzKA4799wWDbVuYeIbB07xfCL83pJP8FUDlqi6+7Celu9wNp7zX1ua
|
1821
|
-
Nw8z/ErhzjxJe+Xo7A8aTwIkG+5A2m1UU/up9YsEeiJYvVaIwY58B42U2vfq20BS
|
1822
|
-
fD9jAoGAX2MscBzIsmN+U9R0ptL4SXcPiVnOl8mqvQWr1B4OLgxX7ghht5Fs956W
|
1823
|
-
bHipxOWMFCPJA/AhNB8q1DvYiD1viZbIALSCJVUkzs4AEFIjiPsCBKxerl7jF6Xp
|
1824
|
-
1WYSaCmfvoCVEpFNt8cKp4Gq+zEBYAV4Q6TkcD2lDtEW49MuN8A=
|
1825
|
-
-----END RSA PRIVATE KEY-----
|
1826
|
-
PKCS7
|
1827
|
-
end
|
1828
|
-
|
1829
|
-
let(:public_key) do
|
1830
|
-
<<-PKCS7.unindent
|
1831
|
-
-----BEGIN CERTIFICATE-----
|
1832
|
-
MIIC2TCCAcGgAwIBAgIBATANBgkqhkiG9w0BAQUFADAAMCAXDTE3MDExMzA5MTY1
|
1833
|
-
MloYDzIwNjcwMTAxMDkxNjUyWjAAMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
1834
|
-
CgKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6fCR7tyOpY
|
1835
|
-
V6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC2LUuqj1I
|
1836
|
-
AErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQNlgZwm2/
|
1837
|
-
aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2tPtLsHyR
|
1838
|
-
N39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1oEfQFDQRK
|
1839
|
-
aIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABo1wwWjAPBgNVHRMBAf8EBTADAQH/
|
1840
|
-
MB0GA1UdDgQWBBSejWrVnw7QaBjNFCHMNFi+doSOcTAoBgNVHSMEITAfgBSejWrV
|
1841
|
-
nw7QaBjNFCHMNFi+doSOcaEEpAIwAIIBATANBgkqhkiG9w0BAQUFAAOCAQEAAe85
|
1842
|
-
BQ1ydAHFqo0ib38VRPOwf5xPHGbYGhvQi4/sU6aTuR7pxaOJPYz05jLhS+utEmy1
|
1843
|
-
sknBq60G67yhQE7IHcfwrl1arirG2WmKGvAbjeYL2K1UiU0pVD3D+Klkv/pK6jIQ
|
1844
|
-
eOJRGb3qNUn0Sq9EoYIOXiGXQ641F0bZZ0+5H92kT1lmnF5oLfCb84ImD9T3snH6
|
1845
|
-
pIr5RKRx/0YmJIcv3WdpoPT903rOJiRIEgIj/hDk9QZTBpm222Ul5yQQ5pBywpSp
|
1846
|
-
xh0bmJKAQWhQm7QlybKfyaQmg5ot1jEzWAvD2I5FjHQxmAlchjb6RreaRhExj+JE
|
1847
|
-
5O117dMBdzDBjcNMOA==
|
1848
|
-
-----END CERTIFICATE-----
|
1849
|
-
PKCS7
|
1850
|
-
end
|
1851
|
-
|
1852
|
-
let(:keys_dir) do
|
1853
|
-
keys = tmpdir('keys')
|
1854
|
-
dir_contained_in(keys, {
|
1855
|
-
private_key_name => private_key,
|
1856
|
-
public_key_name => public_key
|
1857
|
-
})
|
1858
|
-
keys
|
1859
|
-
end
|
1860
|
-
|
1861
|
-
let(:private_key_path) { File.join(keys_dir, private_key_name) }
|
1862
|
-
let(:public_key_path) { File.join(keys_dir, public_key_name) }
|
1863
|
-
let(:hiera_yaml) do
|
1864
|
-
<<-YAML.unindent
|
1865
|
-
:backends:
|
1866
|
-
- eyaml
|
1867
|
-
- yaml
|
1868
|
-
:eyaml:
|
1869
|
-
:datadir: #{code_dir}/hieradata
|
1870
|
-
:pkcs7_private_key: #{private_key_path}
|
1871
|
-
:pkcs7_public_key: #{public_key_path}
|
1872
|
-
:yaml:
|
1873
|
-
:datadir: #{code_dir}/hieradata
|
1874
|
-
:hierarchy:
|
1875
|
-
- common
|
1876
|
-
YAML
|
1877
|
-
end
|
1878
|
-
|
1879
|
-
let(:data_files) do
|
1880
|
-
{
|
1881
|
-
'common.yaml' => <<-YAML.unindent,
|
1882
|
-
b: value 'b' (from global)
|
1883
|
-
c:
|
1884
|
-
c_a: value c_a (from global)
|
1885
|
-
YAML
|
1886
|
-
'common.eyaml' => <<-YAML.unindent
|
1887
|
-
a: >
|
1888
|
-
ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEw
|
1889
|
-
DQYJKoZIhvcNAQEBBQAEggEAH457bsfL8kYw9O50roE3dcE21nCnmPnQ2XSX
|
1890
|
-
LYRJ2C78LarbfFonKz0gvDW7tyhsLWASFCFaiU8T1QPBd2b3hoQK8E4B2Ual
|
1891
|
-
xga/K7r9y3OSgRomTm9tpTltC6re0Ubh3Dy71H61obwxEdNVTqjPe95+m2b8
|
1892
|
-
6zWZVnzZzXXsTG1S17yJn1zaB/LXHbWNy4KyLLKCGAml+Gfl6ZMjmaplTmUA
|
1893
|
-
QIC5rI8abzbPP3TDMmbLOGNkrmLqI+3uS8tSueTMoJmWaMF6c+H/cA7oRxmV
|
1894
|
-
QCeEUVXjyFvCHcmbA+keS/RK9XF+vc07/XS4XkYSPs/I5hLQji1y9bkkGAs0
|
1895
|
-
tehxQjBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDHpA6Fcl/R16aIYcow
|
1896
|
-
oiO4gDAvfFH6jLUwXkcYtagnwdmhkd9TQJtxNWcIwMpvmk036MqIoGwwhQdg
|
1897
|
-
gV4beiCFtLU=]
|
1898
|
-
a_ref: "A reference to %{hiera('a')}"
|
1899
|
-
b_ref: "A reference to %{hiera('b')}"
|
1900
|
-
c_ref: "%{alias('c')}"
|
1901
|
-
:symbol: "A symbol"
|
1902
|
-
YAML
|
1903
|
-
}
|
1904
|
-
end
|
1905
|
-
|
1906
|
-
let(:code_dir_files) do
|
1907
|
-
{
|
1908
|
-
'hiera.yaml' => hiera_yaml,
|
1909
|
-
'hieradata' => data_files
|
1910
|
-
}
|
1911
|
-
end
|
1912
|
-
|
1913
|
-
before(:each) do
|
1914
|
-
Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
|
1915
|
-
end
|
1916
|
-
|
1917
|
-
it 'finds data in the global layer' do
|
1918
|
-
expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
|
1919
|
-
end
|
1920
|
-
|
1921
|
-
it 'can use a hiera interpolation' do
|
1922
|
-
expect(lookup('a_ref')).to eql("A reference to Encrypted value 'a' (from global)")
|
1923
|
-
end
|
1924
|
-
|
1925
|
-
it 'can use a hiera interpolation that refers back to yaml' do
|
1926
|
-
expect(lookup('b_ref')).to eql("A reference to value 'b' (from global)")
|
1927
|
-
end
|
1928
|
-
|
1929
|
-
it 'can use a hiera interpolation that refers back to yaml, but only in global layer' do
|
1930
|
-
expect(lookup(['c', 'c_ref'], 'merge' => 'deep')).to eql([{'c_a' => 'value c_a (from global)', 'c_b' => 'value c_b (from environment)'}, { 'c_a' => 'value c_a (from global)' }])
|
1931
|
-
end
|
1932
|
-
|
1933
|
-
it 'delegates configured eyaml backend to eyaml_lookup_key function' do
|
1934
|
-
expect(explain('a')).to match(/Hierarchy entry "eyaml"\n.*\n.*\n.*"common"\n\s*Found key: "a"/m)
|
1935
|
-
end
|
1936
|
-
end
|
1937
|
-
|
1938
|
-
context 'using deep_merge_options' do
|
1939
|
-
let(:hiera_yaml) do
|
1940
|
-
<<-YAML.unindent
|
1941
|
-
---
|
1942
|
-
:backends:
|
1943
|
-
- yaml
|
1944
|
-
:yaml:
|
1945
|
-
:datadir: #{code_dir}/hieradata
|
1946
|
-
:hierarchy:
|
1947
|
-
- common
|
1948
|
-
- other
|
1949
|
-
:merge_behavior: deeper
|
1950
|
-
:deep_merge_options:
|
1951
|
-
:unpack_arrays: ','
|
1952
|
-
YAML
|
1953
|
-
end
|
1954
|
-
|
1955
|
-
let(:code_dir_files) do
|
1956
|
-
{
|
1957
|
-
'hiera.yaml' => hiera_yaml,
|
1958
|
-
'hieradata' => {
|
1959
|
-
'common.yaml' => <<-YAML.unindent,
|
1960
|
-
hash:
|
1961
|
-
array:
|
1962
|
-
- x1,x2
|
1963
|
-
array:
|
1964
|
-
- x1,x2
|
1965
|
-
str: a string
|
1966
|
-
mixed:
|
1967
|
-
x: hx
|
1968
|
-
y: hy
|
1969
|
-
YAML
|
1970
|
-
'other.yaml' => <<-YAML.unindent,
|
1971
|
-
hash:
|
1972
|
-
array:
|
1973
|
-
- x3
|
1974
|
-
- x4
|
1975
|
-
array:
|
1976
|
-
- x3
|
1977
|
-
- x4
|
1978
|
-
str: another string
|
1979
|
-
mixed:
|
1980
|
-
- h1
|
1981
|
-
- h2
|
1982
|
-
YAML
|
1983
|
-
}
|
1984
|
-
}
|
1985
|
-
end
|
1986
|
-
|
1987
|
-
it 'ignores configured merge_behavior when looking up arrays' do
|
1988
|
-
expect(lookup('array')).to eql(['x1,x2'])
|
1989
|
-
end
|
1990
|
-
|
1991
|
-
it 'ignores configured merge_behavior when merging arrays' do
|
1992
|
-
expect(lookup('array', 'merge' => 'unique')).to eql(['x1,x2', 'x3', 'x4'])
|
1993
|
-
end
|
1994
|
-
|
1995
|
-
it 'ignores configured merge_behavior when looking up hashes' do
|
1996
|
-
expect(lookup('hash')).to eql({'array' => ['x1,x2']})
|
1997
|
-
end
|
1998
|
-
|
1999
|
-
it 'ignores configured merge_behavior when merging hashes' do
|
2000
|
-
expect(lookup('hash', 'merge' => 'hash')).to eql({'array' => ['x1,x2']})
|
2001
|
-
end
|
2002
|
-
end
|
2003
|
-
|
2004
|
-
context 'using relative datadir paths' do
|
2005
|
-
let(:hiera_yaml) do
|
2006
|
-
<<-YAML.unindent
|
2007
|
-
---
|
2008
|
-
:backends:
|
2009
|
-
- yaml
|
2010
|
-
:yaml:
|
2011
|
-
:datadir: relative_data
|
2012
|
-
:hierarchy:
|
2013
|
-
- common
|
2014
|
-
YAML
|
2015
|
-
end
|
2016
|
-
|
2017
|
-
let(:populated_code_dir) do
|
2018
|
-
dir_contained_in(code_dir, code_dir_files.merge({
|
2019
|
-
'fake_cwd' => {
|
2020
|
-
'relative_data' => {
|
2021
|
-
'common.yaml' => <<-YAML.unindent
|
2022
|
-
a: value a (from fake_cwd/relative_data/common.yaml)
|
2023
|
-
YAML
|
2024
|
-
}
|
2025
|
-
}
|
2026
|
-
}))
|
2027
|
-
code_dir
|
2028
|
-
end
|
2029
|
-
|
2030
|
-
around(:each) do |example|
|
2031
|
-
cwd = Dir.pwd
|
2032
|
-
Dir.chdir(File.join(code_dir, 'fake_cwd'))
|
2033
|
-
begin
|
2034
|
-
example.run
|
2035
|
-
ensure
|
2036
|
-
Dir.chdir(cwd)
|
2037
|
-
end
|
2038
|
-
end
|
2039
|
-
|
2040
|
-
it 'finds data from data file beneath relative datadir' do
|
2041
|
-
expect(lookup('a')).to eql('value a (from fake_cwd/relative_data/common.yaml)')
|
2042
|
-
end
|
2043
|
-
end
|
2044
|
-
end
|
2045
|
-
|
2046
|
-
context 'version 5' do
|
2047
|
-
let(:scope_additions) { { 'ipl_datadir' => 'hieradata' } }
|
2048
|
-
let(:hiera_yaml) do
|
2049
|
-
<<-YAML.unindent
|
2050
|
-
---
|
2051
|
-
version: 5
|
2052
|
-
defaults:
|
2053
|
-
datadir: "%{ipl_datadir}"
|
2054
|
-
|
2055
|
-
hierarchy:
|
2056
|
-
- name: Yaml
|
2057
|
-
data_hash: yaml_data
|
2058
|
-
paths:
|
2059
|
-
- common.yaml
|
2060
|
-
- "%{domain}.yaml"
|
2061
|
-
- name: Json
|
2062
|
-
data_hash: json_data
|
2063
|
-
paths:
|
2064
|
-
- common.json
|
2065
|
-
- "%{domain}.json"
|
2066
|
-
- name: Hocon
|
2067
|
-
data_hash: hocon_data
|
2068
|
-
paths:
|
2069
|
-
- common.conf
|
2070
|
-
- "%{domain}.conf"
|
2071
|
-
YAML
|
2072
|
-
end
|
2073
|
-
|
2074
|
-
it 'finds global data and reports no deprecation warnings' do
|
2075
|
-
expect(lookup('a')).to eql('value a (from global)')
|
2076
|
-
expect(warnings).to be_empty
|
2077
|
-
end
|
2078
|
-
|
2079
|
-
it 'explain contains output from global layer' do
|
2080
|
-
explanation = explain('a')
|
2081
|
-
expect(explanation).to include('Global Data Provider (hiera configuration version 5)')
|
2082
|
-
expect(explanation).to include('Hierarchy entry "Yaml"')
|
2083
|
-
expect(explanation).to include('Hierarchy entry "Json"')
|
2084
|
-
expect(explanation).to include('Hierarchy entry "Hocon"')
|
2085
|
-
expect(explanation).to include('Found key: "a" value: "value a (from global)"')
|
2086
|
-
end
|
2087
|
-
|
2088
|
-
it 'uses the explicitly given merge to override lookup options and to merge all layers' do
|
2089
|
-
expect(lookup('hash_c', 'merge' => 'deep')).to eql(
|
2090
|
-
{
|
2091
|
-
'hash_ca' =>
|
2092
|
-
{
|
2093
|
-
'caa' => 'value hash_c.hash_ca.caa (from environment)',
|
2094
|
-
'cab' => 'value hash_c.hash_ca.cab (from global)',
|
2095
|
-
'cac' => 'value hash_c.hash_ca.cac (from global json)',
|
2096
|
-
}
|
2097
|
-
})
|
2098
|
-
end
|
2099
|
-
|
2100
|
-
it 'provides a sensible error message when the hocon library is not loaded' do
|
2101
|
-
allow(Puppet.features).to receive(:hocon?).and_return(false)
|
2102
|
-
|
2103
|
-
expect { lookup('a') }.to raise_error do |e|
|
2104
|
-
expect(e.message).to match(/Lookup using Hocon data_hash function is not supported without hocon library/)
|
2105
|
-
end
|
2106
|
-
end
|
2107
|
-
|
2108
|
-
context 'with missing path declaraion' do
|
2109
|
-
context 'and yaml_data function' do
|
2110
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
2111
|
-
version: 5
|
2112
|
-
hierarchy:
|
2113
|
-
- name: Yaml
|
2114
|
-
data_hash: yaml_data
|
2115
|
-
YAML
|
2116
|
-
|
2117
|
-
it 'fails and reports the missing path' do
|
2118
|
-
expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this data_hash function/)
|
2119
|
-
end
|
2120
|
-
end
|
2121
|
-
|
2122
|
-
context 'and json_data function' do
|
2123
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
2124
|
-
version: 5
|
2125
|
-
hierarchy:
|
2126
|
-
- name: Json
|
2127
|
-
data_hash: json_data
|
2128
|
-
YAML
|
2129
|
-
|
2130
|
-
it 'fails and reports the missing path' do
|
2131
|
-
expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this data_hash function/)
|
2132
|
-
end
|
2133
|
-
end
|
2134
|
-
|
2135
|
-
context 'and hocon_data function' do
|
2136
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
2137
|
-
version: 5
|
2138
|
-
hierarchy:
|
2139
|
-
- name: Hocon
|
2140
|
-
data_hash: hocon_data
|
2141
|
-
YAML
|
2142
|
-
|
2143
|
-
it 'fails and reports the missing path' do
|
2144
|
-
expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this data_hash function/)
|
2145
|
-
end
|
2146
|
-
end
|
2147
|
-
|
2148
|
-
context 'and eyaml_lookup_key function', :if => Puppet.features.hiera_eyaml? do
|
2149
|
-
let(:hiera_yaml) { <<-YAML.unindent }
|
2150
|
-
version: 5
|
2151
|
-
hierarchy:
|
2152
|
-
- name: Yaml
|
2153
|
-
lookup_key: eyaml_lookup_key
|
2154
|
-
YAML
|
2155
|
-
|
2156
|
-
it 'fails and reports the missing path' do
|
2157
|
-
expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this lookup_key function/)
|
2158
|
-
end
|
2159
|
-
end
|
2160
|
-
end
|
2161
|
-
end
|
2162
|
-
|
2163
|
-
context 'with a hiera3_backend that has no paths', :if => Puppet.features.hiera? do
|
2164
|
-
let(:hiera_yaml) do
|
2165
|
-
<<-YAML.unindent
|
2166
|
-
---
|
2167
|
-
version: 5
|
2168
|
-
hierarchy:
|
2169
|
-
- name: Custom
|
2170
|
-
hiera3_backend: custom
|
2171
|
-
YAML
|
2172
|
-
end
|
2173
|
-
|
2174
|
-
it 'calls the backend' do
|
2175
|
-
expect(lookup('hash_c')).to eql(
|
2176
|
-
{ 'hash_ca' => { 'cad' => 'value hash_c.hash_ca.cad (from global custom)' }})
|
2177
|
-
end
|
2178
|
-
end
|
2179
|
-
end
|
2180
|
-
|
2181
|
-
context 'and a module' do
|
2182
|
-
let(:mod_a_files) { {} }
|
2183
|
-
|
2184
|
-
let(:populated_env_dir) do
|
2185
|
-
dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files }))
|
2186
|
-
env_dir
|
2187
|
-
end
|
2188
|
-
|
2189
|
-
context 'that has no lookup configured' do
|
2190
|
-
let(:mod_a_files) do
|
2191
|
-
{
|
2192
|
-
'mod_a' => {
|
2193
|
-
'data' => {
|
2194
|
-
'common.yaml' => <<-YAML.unindent
|
2195
|
-
---
|
2196
|
-
mod_a::b: value mod_a::b (from mod_a)
|
2197
|
-
YAML
|
2198
|
-
}
|
2199
|
-
}
|
2200
|
-
}
|
2201
|
-
end
|
2202
|
-
|
2203
|
-
it 'does not find data in the module' do
|
2204
|
-
expect { lookup('mod_a::b') }.to raise_error(Puppet::DataBinding::LookupError, /did not find a value for the name 'mod_a::b'/)
|
2205
|
-
end
|
2206
|
-
|
2207
|
-
context 'with a Hiera v3 configuration', :if => Puppet.features.hiera? do
|
2208
|
-
let(:mod_a_files) do
|
2209
|
-
{
|
2210
|
-
'mod_a' => {
|
2211
|
-
'hiera.yaml' => <<-YAML.unindent
|
2212
|
-
---
|
2213
|
-
:backends: yaml
|
2214
|
-
YAML
|
2215
|
-
}
|
2216
|
-
}
|
2217
|
-
end
|
2218
|
-
|
2219
|
-
it 'raises a warning' do
|
2220
|
-
expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
|
2221
|
-
expect(warnings).to include(/hiera.yaml version 3 found at module root was ignored/)
|
2222
|
-
end
|
2223
|
-
end
|
2224
|
-
|
2225
|
-
context "but a metadata.json with 'module_data_provider=hiera'" do
|
2226
|
-
let(:mod_a_files_1) { DeepMerge.deep_merge!(mod_a_files, 'mod_a' => { 'metadata.json' => <<-JSON.unindent }) }
|
2227
|
-
{
|
2228
|
-
"name": "example/mod_a",
|
2229
|
-
"version": "0.0.2",
|
2230
|
-
"source": "git@github.com/example/mod_a.git",
|
2231
|
-
"dependencies": [],
|
2232
|
-
"author": "Bob the Builder",
|
2233
|
-
"license": "Apache-2.0",
|
2234
|
-
"data_provider": "hiera"
|
2235
|
-
}
|
2236
|
-
JSON
|
2237
|
-
|
2238
|
-
let(:populated_env_dir) do
|
2239
|
-
dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files_1 }))
|
2240
|
-
env_dir
|
2241
|
-
end
|
2242
|
-
|
2243
|
-
it 'finds data in the module and reports deprecation warning for metadata.json' do
|
2244
|
-
expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
|
2245
|
-
expect(warnings).to include(/Defining "data_provider": "hiera" in metadata.json is deprecated. A 'hiera.yaml' file should be used instead/)
|
2246
|
-
end
|
2247
|
-
|
2248
|
-
context 'and a hiera.yaml file' do
|
2249
|
-
let(:mod_a_files_2) { DeepMerge.deep_merge!(mod_a_files_1, 'mod_a' => { 'hiera.yaml' => <<-YAML.unindent }) }
|
2250
|
-
---
|
2251
|
-
version: 4
|
2252
|
-
hierarchy:
|
2253
|
-
- name: common
|
2254
|
-
backend: yaml
|
2255
|
-
YAML
|
2256
|
-
|
2257
|
-
let(:populated_env_dir) do
|
2258
|
-
dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files_2 }))
|
2259
|
-
env_dir
|
2260
|
-
end
|
2261
|
-
|
2262
|
-
it 'finds data in the module and reports deprecation warnings for both metadata.json and hiera.yaml' do
|
2263
|
-
expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
|
2264
|
-
expect(warnings).to include(/Defining "data_provider": "hiera" in metadata.json is deprecated/)
|
2265
|
-
expect(warnings).to include(/Use of 'hiera.yaml' version 4 is deprecated. It should be converted to version 5/)
|
2266
|
-
end
|
2267
|
-
end
|
2268
|
-
end
|
2269
|
-
end
|
2270
|
-
|
2271
|
-
context 'using deep merge and module values that aliases environment values' do
|
2272
|
-
let(:mod_a_files) do
|
2273
|
-
{
|
2274
|
-
'mod_a' => {
|
2275
|
-
'data' => {
|
2276
|
-
'common.yaml' => <<-YAML.unindent,
|
2277
|
-
---
|
2278
|
-
mod_a::hash:
|
2279
|
-
b: value b (from module)
|
2280
|
-
lookup_options:
|
2281
|
-
mod_a::hash:
|
2282
|
-
merge: deep
|
2283
|
-
YAML
|
2284
|
-
},
|
2285
|
-
'hiera.yaml' => <<-YAML.unindent,
|
2286
|
-
---
|
2287
|
-
version: 5
|
2288
|
-
hierarchy:
|
2289
|
-
- name: "Common"
|
2290
|
-
path: "common.yaml"
|
2291
|
-
- name: "Other"
|
2292
|
-
path: "other.yaml"
|
2293
|
-
YAML
|
2294
|
-
}
|
2295
|
-
}
|
2296
|
-
end
|
2297
|
-
let(:env_data) do
|
2298
|
-
{
|
2299
|
-
'common.yaml' => <<-YAML.unindent
|
2300
|
-
a: value a (from environment)
|
2301
|
-
mod_a::hash:
|
2302
|
-
a: value mod_a::hash.a (from environment)
|
2303
|
-
c: '%{alias("a")}'
|
2304
|
-
YAML
|
2305
|
-
}
|
2306
|
-
end
|
2307
|
-
|
2308
|
-
it 'continues with module lookup after alias is resolved in environment' do
|
2309
|
-
expect(lookup('mod_a::hash')).to eql(
|
2310
|
-
{
|
2311
|
-
'a' => 'value mod_a::hash.a (from environment)',
|
2312
|
-
'b' => 'value b (from module)',
|
2313
|
-
'c' => 'value a (from environment)'
|
2314
|
-
})
|
2315
|
-
end
|
2316
|
-
end
|
2317
|
-
|
2318
|
-
context 'using a data_hash that reads a yaml file' do
|
2319
|
-
let(:defaults) {
|
2320
|
-
{
|
2321
|
-
'mod_a::xd' => 'value mod_a::xd (from default)',
|
2322
|
-
'mod_a::xd_found' => 'value mod_a::xd_found (from default)',
|
2323
|
-
'scope_xd' => 'value scope_xd (from default)'
|
2324
|
-
}}
|
2325
|
-
let(:overrides) {
|
2326
|
-
{
|
2327
|
-
'mod_a::xo' => 'value mod_a::xo (from override)',
|
2328
|
-
'scope_xo' => 'value scope_xo (from override)'
|
2329
|
-
}}
|
2330
|
-
|
2331
|
-
let(:scope_additions) do
|
2332
|
-
{
|
2333
|
-
'scope_scalar' => 'scope scalar value',
|
2334
|
-
'scope_hash' => { 'a' => 'scope hash a', 'b' => 'scope hash b' }
|
2335
|
-
}
|
2336
|
-
end
|
2337
|
-
let(:mod_a_files) do
|
2338
|
-
{
|
2339
|
-
'mod_a' => {
|
2340
|
-
'data' => {
|
2341
|
-
'common.yaml' => <<-YAML.unindent
|
2342
|
-
---
|
2343
|
-
mod_a::a: value mod_a::a (from mod_a)
|
2344
|
-
mod_a::b: value mod_a::b (from mod_a)
|
2345
|
-
mod_a::xo: value mod_a::xo (from mod_a)
|
2346
|
-
mod_a::xd_found: value mod_a::xd_found (from mod_a)
|
2347
|
-
mod_a::interpolate_xo: "-- %{lookup('mod_a::xo')} --"
|
2348
|
-
mod_a::interpolate_xd: "-- %{lookup('mod_a::xd')} --"
|
2349
|
-
mod_a::interpolate_scope_xo: "-- %{scope_xo} --"
|
2350
|
-
mod_a::interpolate_scope_xd: "-- %{scope_xd} --"
|
2351
|
-
mod_a::hash_a:
|
2352
|
-
a: value mod_a::hash_a.a (from mod_a)
|
2353
|
-
b: value mod_a::hash_a.b (from mod_a)
|
2354
|
-
mod_a::hash_b:
|
2355
|
-
a: value mod_a::hash_b.a (from mod_a)
|
2356
|
-
b: value mod_a::hash_b.b (from mod_a)
|
2357
|
-
mod_a::interpolated: "-- %{lookup('mod_a::a')} --"
|
2358
|
-
mod_a::a_a: "-- %{lookup('mod_a::hash_a.a')} --"
|
2359
|
-
mod_a::a_b: "-- %{lookup('mod_a::hash_a.b')} --"
|
2360
|
-
mod_a::b_a: "-- %{lookup('mod_a::hash_b.a')} --"
|
2361
|
-
mod_a::b_b: "-- %{lookup('mod_a::hash_b.b')} --"
|
2362
|
-
mod_a::interpolate_array:
|
2363
|
-
- "-- %{lookup('mod_a::a')} --"
|
2364
|
-
- "-- %{lookup('mod_a::b')} --"
|
2365
|
-
mod_a::interpolate_literal: "-- %{literal('hello')} --"
|
2366
|
-
mod_a::interpolate_scope: "-- %{scope_scalar} --"
|
2367
|
-
mod_a::interpolate_scope_not_found: "-- %{scope_nope} --"
|
2368
|
-
mod_a::interpolate_scope_dig: "-- %{scope_hash.a} --"
|
2369
|
-
mod_a::interpolate_scope_dig_not_found: "-- %{scope_hash.nope} --"
|
2370
|
-
mod_a::quoted_interpolation: '-- %{lookup(''"mod_a::a.quoted.key"'')} --'
|
2371
|
-
"mod_a::a.quoted.key": "value mod_a::a.quoted.key (from mod_a)"
|
2372
|
-
YAML
|
2373
|
-
},
|
2374
|
-
'hiera.yaml' => <<-YAML.unindent,
|
2375
|
-
---
|
2376
|
-
version: 5
|
2377
|
-
hierarchy:
|
2378
|
-
- name: "Common"
|
2379
|
-
data_hash: yaml_data
|
2380
|
-
path: "common.yaml"
|
2381
|
-
YAML
|
2382
|
-
}
|
2383
|
-
}
|
2384
|
-
end
|
2385
|
-
|
2386
|
-
it 'finds data in the module' do
|
2387
|
-
expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
|
2388
|
-
end
|
2389
|
-
|
2390
|
-
it 'environment data has higher priority than module data' do
|
2391
|
-
expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
|
2392
|
-
end
|
2393
|
-
|
2394
|
-
it 'environment data has higher priority than module data in interpolated module data' do
|
2395
|
-
expect(lookup('mod_a::interpolated')).to eql('-- value mod_a::a (from environment) --')
|
2396
|
-
end
|
2397
|
-
|
2398
|
-
it 'overrides have higher priority than found data' do
|
2399
|
-
expect(lookup('mod_a::xo', { 'override' => overrides })).to eql('value mod_a::xo (from override)')
|
2400
|
-
end
|
2401
|
-
|
2402
|
-
it 'overrides have higher priority than found data in lookup interpolations' do
|
2403
|
-
expect(lookup('mod_a::interpolate_xo', { 'override' => overrides })).to eql('-- value mod_a::xo (from override) --')
|
2404
|
-
end
|
2405
|
-
|
2406
|
-
it 'overrides have higher priority than found data in scope interpolations' do
|
2407
|
-
expect(lookup('mod_a::interpolate_scope_xo', { 'override' => overrides })).to eql('-- value scope_xo (from override) --')
|
2408
|
-
end
|
2409
|
-
|
2410
|
-
it 'defaults have lower priority than found data' do
|
2411
|
-
expect(lookup('mod_a::xd_found', { 'default_values_hash' => defaults })).to eql('value mod_a::xd_found (from mod_a)')
|
2412
|
-
end
|
2413
|
-
|
2414
|
-
it 'defaults are used when data is not found' do
|
2415
|
-
expect(lookup('mod_a::xd', { 'default_values_hash' => defaults })).to eql('value mod_a::xd (from default)')
|
2416
|
-
end
|
2417
|
-
|
2418
|
-
it 'defaults are used when data is not found in lookup interpolations' do
|
2419
|
-
expect(lookup('mod_a::interpolate_xd', { 'default_values_hash' => defaults })).to eql('-- value mod_a::xd (from default) --')
|
2420
|
-
end
|
2421
|
-
|
2422
|
-
it 'defaults are used when data is not found in scope interpolations' do
|
2423
|
-
expect(lookup('mod_a::interpolate_scope_xd', { 'default_values_hash' => defaults })).to eql('-- value scope_xd (from default) --')
|
2424
|
-
end
|
2425
|
-
|
2426
|
-
it 'merges hashes from environment and module unless strategy hash is used' do
|
2427
|
-
expect(lookup('mod_a::hash_a')).to eql({'a' => 'value mod_a::hash_a.a (from environment)'})
|
2428
|
-
end
|
2429
|
-
|
2430
|
-
it 'merges hashes from environment and module when merge strategy hash is used' do
|
2431
|
-
expect(lookup('mod_a::hash_a', :merge => 'hash')).to eql(
|
2432
|
-
{'a' => 'value mod_a::hash_a.a (from environment)', 'b' => 'value mod_a::hash_a.b (from mod_a)'})
|
2433
|
-
end
|
2434
|
-
|
2435
|
-
it 'will not merge hashes from environment and module in interpolated expressions' do
|
2436
|
-
expect(lookup(['mod_a::a_a', 'mod_a::a_b'])).to eql(
|
2437
|
-
['-- value mod_a::hash_a.a (from environment) --', '-- --']) # root key found in environment, no hash merge is performed
|
2438
|
-
end
|
2439
|
-
|
2440
|
-
it 'interpolates arrays' do
|
2441
|
-
expect(lookup('mod_a::interpolate_array')).to eql(['-- value mod_a::a (from environment) --', '-- value mod_a::b (from mod_a) --'])
|
2442
|
-
end
|
2443
|
-
|
2444
|
-
it 'can dig into arrays using subkeys' do
|
2445
|
-
expect(lookup('mod_a::interpolate_array.1')).to eql('-- value mod_a::b (from mod_a) --')
|
2446
|
-
end
|
2447
|
-
|
2448
|
-
it 'treats an out of range subkey as not found' do
|
2449
|
-
expect(explain('mod_a::interpolate_array.2')).to match(/No such key: "2"/)
|
2450
|
-
end
|
2451
|
-
|
2452
|
-
it 'interpolates a literal' do
|
2453
|
-
expect(lookup('mod_a::interpolate_literal')).to eql('-- hello --')
|
2454
|
-
end
|
2455
|
-
|
2456
|
-
it 'interpolates scalar from scope' do
|
2457
|
-
expect(lookup('mod_a::interpolate_scope')).to eql('-- scope scalar value --')
|
2458
|
-
end
|
2459
|
-
|
2460
|
-
it 'raises an error when trying to interpolate not found in scope' do
|
2461
|
-
expect { lookup('mod_a::interpolate_scope_not_found')
|
2462
|
-
}.to raise_error(/Evaluation Error: Error while evaluating a Function Call, Undefined variable 'scope_nope';/)
|
2463
|
-
end
|
2464
|
-
|
2465
|
-
it 'interpolates dotted key from scope' do
|
2466
|
-
expect(lookup('mod_a::interpolate_scope_dig')).to eql('-- scope hash a --')
|
2467
|
-
end
|
2468
|
-
|
2469
|
-
it 'treats interpolated dotted key but not found in scope as empty string' do
|
2470
|
-
expect(lookup('mod_a::interpolate_scope_dig_not_found')).to eql('-- --')
|
2471
|
-
end
|
2472
|
-
|
2473
|
-
it 'can use quoted keys in interpolation' do
|
2474
|
-
expect(lookup('mod_a::quoted_interpolation')).to eql('-- value mod_a::a.quoted.key (from mod_a) --') # root key found in environment, no hash merge is performed
|
2475
|
-
end
|
2476
|
-
|
2477
|
-
it 'merges hashes from environment and module in interpolated expressions if hash merge is specified in lookup options' do
|
2478
|
-
expect(lookup(['mod_a::b_a', 'mod_a::b_b'])).to eql(
|
2479
|
-
['-- value mod_a::hash_b.a (from environment) --', '-- value mod_a::hash_b.b (from mod_a) --'])
|
2480
|
-
end
|
2481
|
-
end
|
2482
|
-
|
2483
|
-
context 'using a lookup_key that uses a path' do
|
2484
|
-
let(:mod_a_files) do
|
2485
|
-
{
|
2486
|
-
'mod_a' => {
|
2487
|
-
'functions' => {
|
2488
|
-
'pp_lookup_key.pp' => <<-PUPPET.unindent
|
2489
|
-
function mod_a::pp_lookup_key($key, $options, $context) {
|
2490
|
-
if !$context.cache_has_key(undef) {
|
2491
|
-
$context.cache_all(yaml_data($options, $context))
|
2492
|
-
$context.cache(undef, true)
|
2493
|
-
}
|
2494
|
-
if $context.cache_has_key($key) { $context.cached_value($key) } else { $context.not_found }
|
2495
|
-
}
|
2496
|
-
PUPPET
|
2497
|
-
},
|
2498
|
-
'hiera.yaml' => <<-YAML.unindent,
|
2499
|
-
---
|
2500
|
-
version: 5
|
2501
|
-
hierarchy:
|
2502
|
-
- name: "Common"
|
2503
|
-
lookup_key: mod_a::pp_lookup_key
|
2504
|
-
path: common.yaml
|
2505
|
-
YAML
|
2506
|
-
'data' => {
|
2507
|
-
'common.yaml' => <<-YAML.unindent
|
2508
|
-
mod_a::b: value mod_a::b (from mod_a)
|
2509
|
-
YAML
|
2510
|
-
}
|
2511
|
-
}
|
2512
|
-
}
|
2513
|
-
end
|
2514
|
-
|
2515
|
-
it 'finds data in the module' do
|
2516
|
-
expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
|
2517
|
-
end
|
2518
|
-
end
|
2519
|
-
|
2520
|
-
context 'using a lookup_key that is a puppet function' do
|
2521
|
-
let(:puppet_function) { <<-PUPPET.unindent }
|
2522
|
-
function mod_a::pp_lookup_key(Puppet::LookupKey $key, Hash[String,String] $options, Puppet::LookupContext $context) >> Puppet::LookupValue {
|
2523
|
-
case $key {
|
2524
|
-
'mod_a::really_interpolated': { $context.interpolate("-- %{lookup('mod_a::a')} --") }
|
2525
|
-
'mod_a::recursive': { lookup($key) }
|
2526
|
-
default: {
|
2527
|
-
if $context.cache_has_key(mod_a::a) {
|
2528
|
-
$context.explain || { 'reusing cache' }
|
2529
|
-
} else {
|
2530
|
-
$context.explain || { 'initializing cache' }
|
2531
|
-
$context.cache_all({
|
2532
|
-
mod_a::a => 'value mod_a::a (from mod_a)',
|
2533
|
-
mod_a::b => 'value mod_a::b (from mod_a)',
|
2534
|
-
mod_a::c => 'value mod_a::c (from mod_a)',
|
2535
|
-
mod_a::hash_a => {
|
2536
|
-
a => 'value mod_a::hash_a.a (from mod_a)',
|
2537
|
-
b => 'value mod_a::hash_a.b (from mod_a)'
|
2538
|
-
},
|
2539
|
-
mod_a::hash_b => {
|
2540
|
-
a => 'value mod_a::hash_b.a (from mod_a)',
|
2541
|
-
b => 'value mod_a::hash_b.b (from mod_a)'
|
2542
|
-
},
|
2543
|
-
mod_a::interpolated => "-- %{lookup('mod_a::a')} --",
|
2544
|
-
mod_a::a_a => "-- %{lookup('mod_a::hash_a.a')} --",
|
2545
|
-
mod_a::a_b => "-- %{lookup('mod_a::hash_a.b')} --",
|
2546
|
-
mod_a::b_a => "-- %{lookup('mod_a::hash_b.a')} --",
|
2547
|
-
mod_a::b_b => "-- %{lookup('mod_a::hash_b.b')} --",
|
2548
|
-
'mod_a::a.quoted.key' => 'value mod_a::a.quoted.key (from mod_a)',
|
2549
|
-
mod_a::sensitive => Sensitive('reduct me please'),
|
2550
|
-
mod_a::type => Object[{name => 'FindMe', 'attributes' => {'x' => String}}],
|
2551
|
-
mod_a::version => SemVer('3.4.1'),
|
2552
|
-
mod_a::version_range => SemVerRange('>=3.4.1'),
|
2553
|
-
mod_a::timestamp => Timestamp("1994-03-25T19:30:00"),
|
2554
|
-
mod_a::timespan => Timespan("3-10:00:00")
|
2555
|
-
})
|
2556
|
-
}
|
2557
|
-
if !$context.cache_has_key($key) {
|
2558
|
-
$context.not_found
|
2559
|
-
}
|
2560
|
-
$context.explain || { "returning value for $key" }
|
2561
|
-
$context.cached_value($key)
|
2562
|
-
}
|
2563
|
-
}
|
2564
|
-
}
|
2565
|
-
PUPPET
|
2566
|
-
|
2567
|
-
let(:mod_a_files) do
|
2568
|
-
{
|
2569
|
-
'mod_a' => {
|
2570
|
-
'functions' => {
|
2571
|
-
'pp_lookup_key.pp' => puppet_function
|
2572
|
-
},
|
2573
|
-
'hiera.yaml' => <<-YAML.unindent,
|
2574
|
-
---
|
2575
|
-
version: 5
|
2576
|
-
hierarchy:
|
2577
|
-
- name: "Common"
|
2578
|
-
lookup_key: mod_a::pp_lookup_key
|
2579
|
-
YAML
|
2580
|
-
}
|
2581
|
-
}
|
2582
|
-
end
|
2583
|
-
|
2584
|
-
it 'finds data in the module' do
|
2585
|
-
expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
|
2586
|
-
end
|
2587
|
-
|
2588
|
-
it 'environment data has higher priority than module data' do
|
2589
|
-
expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
|
2590
|
-
end
|
2591
|
-
|
2592
|
-
it 'finds quoted keys in the module' do
|
2593
|
-
expect(lookup('"mod_a::a.quoted.key"')).to eql('value mod_a::a.quoted.key (from mod_a)')
|
2594
|
-
end
|
2595
|
-
|
2596
|
-
it 'will not resolve interpolated expressions' do
|
2597
|
-
expect(lookup('mod_a::interpolated')).to eql("-- %{lookup('mod_a::a')} --")
|
2598
|
-
end
|
2599
|
-
|
2600
|
-
it 'resolves interpolated expressions using Context#interpolate' do
|
2601
|
-
expect(lookup('mod_a::really_interpolated')).to eql("-- value mod_a::a (from environment) --")
|
2602
|
-
end
|
2603
|
-
|
2604
|
-
it 'will not merge hashes from environment and module unless strategy hash is used' do
|
2605
|
-
expect(lookup('mod_a::hash_a')).to eql({ 'a' => 'value mod_a::hash_a.a (from environment)' })
|
2606
|
-
end
|
2607
|
-
|
2608
|
-
it 'merges hashes from environment and module when merge strategy hash is used' do
|
2609
|
-
expect(lookup('mod_a::hash_a', :merge => 'hash')).to eql({ 'a' => 'value mod_a::hash_a.a (from environment)', 'b' => 'value mod_a::hash_a.b (from mod_a)' })
|
2610
|
-
end
|
2611
|
-
|
2612
|
-
it 'traps recursive lookup trapped' do
|
2613
|
-
expect(explain('mod_a::recursive')).to include('Recursive lookup detected')
|
2614
|
-
end
|
2615
|
-
|
2616
|
-
it 'private cache is persisted over multiple calls' do
|
2617
|
-
collect_notices("notice(lookup('mod_a::b')) notice(lookup('mod_a::c'))", true)
|
2618
|
-
expect(notices).to eql(['value mod_a::b (from mod_a)', 'value mod_a::c (from mod_a)'])
|
2619
|
-
expect(explanation).to match(/initializing cache.*reusing cache/m)
|
2620
|
-
expect(explanation).not_to match(/initializing cache.*initializing cache/m)
|
2621
|
-
end
|
2622
|
-
|
2623
|
-
it 'the same key is requested only once' do
|
2624
|
-
collect_notices("notice(lookup('mod_a::b')) notice(lookup('mod_a::b'))", true)
|
2625
|
-
expect(notices).to eql(['value mod_a::b (from mod_a)', 'value mod_a::b (from mod_a)'])
|
2626
|
-
expect(explanation).to match(/Found key: "mod_a::b".*Found key: "mod_a::b"/m)
|
2627
|
-
expect(explanation).to match(/returning value for mod_a::b/m)
|
2628
|
-
expect(explanation).not_to match(/returning value for mod_a::b.*returning value for mod_a::b/m)
|
2629
|
-
end
|
2630
|
-
|
2631
|
-
context 'and calling function via API' do
|
2632
|
-
it 'finds and delivers rich data' do
|
2633
|
-
collect_notices("notice('success')") do |scope|
|
2634
|
-
expect(lookup_func.call(scope, 'mod_a::sensitive')).to be_a(Puppet::Pops::Types::PSensitiveType::Sensitive)
|
2635
|
-
expect(lookup_func.call(scope, 'mod_a::type')).to be_a(Puppet::Pops::Types::PObjectType)
|
2636
|
-
expect(lookup_func.call(scope, 'mod_a::version')).to eql(SemanticPuppet::Version.parse('3.4.1'))
|
2637
|
-
expect(lookup_func.call(scope, 'mod_a::version_range')).to eql(SemanticPuppet::VersionRange.parse('>=3.4.1'))
|
2638
|
-
expect(lookup_func.call(scope, 'mod_a::timestamp')).to eql(Puppet::Pops::Time::Timestamp.parse('1994-03-25T19:30:00'))
|
2639
|
-
expect(lookup_func.call(scope, 'mod_a::timespan')).to eql(Puppet::Pops::Time::Timespan.parse('3-10:00:00'))
|
2640
|
-
end
|
2641
|
-
expect(notices).to eql(['success'])
|
2642
|
-
end
|
2643
|
-
end
|
2644
|
-
|
2645
|
-
context 'with declared but incompatible return_type' do
|
2646
|
-
let(:puppet_function) { <<-PUPPET.unindent }
|
2647
|
-
function mod_a::pp_lookup_key(Puppet::LookupKey $key, Hash[String,String] $options, Puppet::LookupContext $context) >> Runtime['ruby','Symbol'] {
|
2648
|
-
undef
|
2649
|
-
}
|
2650
|
-
PUPPET
|
2651
|
-
|
2652
|
-
it 'fails and reports error' do
|
2653
|
-
expect{lookup('mod_a::a')}.to raise_error(
|
2654
|
-
"Return type of 'lookup_key' function named 'mod_a::pp_lookup_key' is incorrect, expects a RichData value, got Runtime")
|
2655
|
-
end
|
2656
|
-
end
|
2657
|
-
end
|
2658
|
-
|
2659
|
-
context 'using a data_dig that is a ruby function' do
|
2660
|
-
let(:mod_a_files) do
|
2661
|
-
{
|
2662
|
-
'mod_a' => {
|
2663
|
-
'lib' => {
|
2664
|
-
'puppet' => {
|
2665
|
-
'functions' => {
|
2666
|
-
'mod_a' => {
|
2667
|
-
'ruby_dig.rb' => <<-RUBY.unindent
|
2668
|
-
Puppet::Functions.create_function(:'mod_a::ruby_dig') do
|
2669
|
-
dispatch :ruby_dig do
|
2670
|
-
param 'Array[String[1]]', :segments
|
2671
|
-
param 'Hash[String,Any]', :options
|
2672
|
-
param 'Puppet::LookupContext', :context
|
2673
|
-
return_type 'Puppet::LookupValue'
|
2674
|
-
end
|
2675
|
-
|
2676
|
-
def ruby_dig(segments, options, context)
|
2677
|
-
sub_segments = segments.dup
|
2678
|
-
root_key = sub_segments.shift
|
2679
|
-
case root_key
|
2680
|
-
when 'mod_a::options'
|
2681
|
-
hash = { 'mod_a::options' => options }
|
2682
|
-
when 'mod_a::lookup'
|
2683
|
-
return call_function('lookup', segments.join('.'))
|
2684
|
-
else
|
2685
|
-
hash = {
|
2686
|
-
'mod_a::a' => 'value mod_a::a (from mod_a)',
|
2687
|
-
'mod_a::b' => 'value mod_a::b (from mod_a)',
|
2688
|
-
'mod_a::hash_a' => {
|
2689
|
-
'a' => 'value mod_a::hash_a.a (from mod_a)',
|
2690
|
-
'b' => 'value mod_a::hash_a.b (from mod_a)'
|
2691
|
-
},
|
2692
|
-
'mod_a::hash_b' => {
|
2693
|
-
'a' => 'value mod_a::hash_b.a (from mod_a)',
|
2694
|
-
'b' => 'value mod_a::hash_b.b (from mod_a)'
|
2695
|
-
},
|
2696
|
-
'mod_a::interpolated' => "-- %{lookup('mod_a::a')} --",
|
2697
|
-
'mod_a::really_interpolated' => "-- %{lookup('mod_a::a')} --",
|
2698
|
-
'mod_a::a_a' => "-- %{lookup('mod_a::hash_a.a')} --",
|
2699
|
-
'mod_a::a_b' => "-- %{lookup('mod_a::hash_a.b')} --",
|
2700
|
-
'mod_a::b_a' => "-- %{lookup('mod_a::hash_b.a')} --",
|
2701
|
-
'mod_a::b_b' => "-- %{lookup('mod_a::hash_b.b')} --",
|
2702
|
-
'mod_a::bad_type' => :oops,
|
2703
|
-
'mod_a::bad_type_in_hash' => { 'a' => :oops },
|
2704
|
-
}
|
2705
|
-
end
|
2706
|
-
context.not_found unless hash.include?(root_key)
|
2707
|
-
value = sub_segments.reduce(hash[root_key]) do |memo, segment|
|
2708
|
-
context.not_found unless memo.is_a?(Hash) && memo.include?(segment)
|
2709
|
-
memo[segment]
|
2710
|
-
end
|
2711
|
-
root_key == 'mod_a::really_interpolated' ? context.interpolate(value) : value
|
2712
|
-
end
|
2713
|
-
end
|
2714
|
-
RUBY
|
2715
|
-
}
|
2716
|
-
}
|
2717
|
-
}
|
2718
|
-
},
|
2719
|
-
'hiera.yaml' => <<-YAML.unindent,
|
2720
|
-
---
|
2721
|
-
version: 5
|
2722
|
-
defaults:
|
2723
|
-
options:
|
2724
|
-
option_b:
|
2725
|
-
z: Default option value b.z
|
2726
|
-
|
2727
|
-
hierarchy:
|
2728
|
-
- name: "Common"
|
2729
|
-
data_dig: mod_a::ruby_dig
|
2730
|
-
uri: "http://www.example.com/passed/as/option"
|
2731
|
-
options:
|
2732
|
-
option_a: Option value a
|
2733
|
-
option_b:
|
2734
|
-
x: Option value b.x
|
2735
|
-
y: Option value b.y
|
2736
|
-
- name: "Extra"
|
2737
|
-
data_dig: mod_a::ruby_dig
|
2738
|
-
YAML
|
2739
|
-
}
|
2740
|
-
}
|
2741
|
-
end
|
2742
|
-
|
2743
|
-
it 'finds data in the module' do
|
2744
|
-
expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
|
2745
|
-
end
|
2746
|
-
|
2747
|
-
it 'environment data has higher priority than module data' do
|
2748
|
-
expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
|
2749
|
-
end
|
2750
|
-
|
2751
|
-
it 'will not resolve interpolated expressions' do
|
2752
|
-
expect(lookup('mod_a::interpolated')).to eql("-- %{lookup('mod_a::a')} --")
|
2753
|
-
end
|
2754
|
-
|
2755
|
-
it 'resolves interpolated expressions using Context#interpolate' do
|
2756
|
-
expect(lookup('mod_a::really_interpolated')).to eql("-- value mod_a::a (from environment) --")
|
2757
|
-
end
|
2758
|
-
|
2759
|
-
it 'does not accept return of runtime type from function' do
|
2760
|
-
# Message is produced by the called function, not by the lookup framework
|
2761
|
-
expect(explain('mod_a::bad_type')).to include("value returned from function 'ruby_dig' has wrong type")
|
2762
|
-
end
|
2763
|
-
|
2764
|
-
it 'does not accept return of runtime type embedded in hash from function' do
|
2765
|
-
# Message is produced by the called function, not by the lookup framework
|
2766
|
-
expect(explain('mod_a::bad_type_in_hash')).to include("value returned from function 'ruby_dig' has wrong type")
|
2767
|
-
end
|
2768
|
-
|
2769
|
-
it 'will not merge hashes from environment and module unless strategy hash is used' do
|
2770
|
-
expect(lookup('mod_a::hash_a')).to eql({'a' => 'value mod_a::hash_a.a (from environment)'})
|
2771
|
-
end
|
2772
|
-
|
2773
|
-
it 'hierarchy entry options are passed to the function' do
|
2774
|
-
expect(lookup('mod_a::options.option_b.x')).to eql('Option value b.x')
|
2775
|
-
end
|
2776
|
-
|
2777
|
-
it 'default options are passed to the function' do
|
2778
|
-
expect(lookup('mod_a::options.option_b.z')).to eql('Default option value b.z')
|
2779
|
-
end
|
2780
|
-
|
2781
|
-
it 'default options are not merged with hierarchy options' do
|
2782
|
-
expect(lookup('mod_a::options')).to eql(
|
2783
|
-
{
|
2784
|
-
'option_a' => 'Option value a',
|
2785
|
-
'option_b' => {
|
2786
|
-
'y' => 'Option value b.y',
|
2787
|
-
'x' => 'Option value b.x'
|
2788
|
-
},
|
2789
|
-
'uri' => 'http://www.example.com/passed/as/option'
|
2790
|
-
})
|
2791
|
-
end
|
2792
|
-
|
2793
|
-
it 'hierarchy entry "uri" is passed as location option to the function' do
|
2794
|
-
expect(lookup('mod_a::options.uri')).to eql('http://www.example.com/passed/as/option')
|
2795
|
-
end
|
2796
|
-
|
2797
|
-
it 'recursive lookup is trapped' do
|
2798
|
-
expect(explain('mod_a::lookup.mod_a::lookup')).to include('Recursive lookup detected')
|
2799
|
-
end
|
2800
|
-
|
2801
|
-
context 'with merge strategy hash' do
|
2802
|
-
it 'merges hashes from environment and module' do
|
2803
|
-
expect(lookup('mod_a::hash_a', :merge => 'hash')).to eql({'a' => 'value mod_a::hash_a.a (from environment)', 'b' => 'value mod_a::hash_a.b (from mod_a)'})
|
2804
|
-
end
|
2805
|
-
|
2806
|
-
it 'will "undig" value from data_dig function, merge root hashes, and then dig to get values by subkey' do
|
2807
|
-
expect(lookup(['mod_a::hash_a.a', 'mod_a::hash_a.b'], :merge => 'hash')).to eql(
|
2808
|
-
['value mod_a::hash_a.a (from environment)', 'value mod_a::hash_a.b (from mod_a)'])
|
2809
|
-
end
|
2810
|
-
end
|
2811
|
-
end
|
2812
|
-
|
2813
|
-
context 'that has a default_hierarchy' do
|
2814
|
-
let(:mod_a_hiera_yaml) { <<-YAML.unindent }
|
2815
|
-
version: 5
|
2816
|
-
hierarchy:
|
2817
|
-
- name: "Common"
|
2818
|
-
path: common.yaml
|
2819
|
-
- name: "Common 2"
|
2820
|
-
path: common2.yaml
|
2821
|
-
|
2822
|
-
default_hierarchy:
|
2823
|
-
- name: "Default"
|
2824
|
-
path: defaults.yaml
|
2825
|
-
- name: "Default 2"
|
2826
|
-
path: defaults2.yaml
|
2827
|
-
YAML
|
2828
|
-
|
2829
|
-
let(:mod_a_common) { <<-YAML.unindent }
|
2830
|
-
mod_a::a: value mod_a::a (from module)
|
2831
|
-
mod_a::d:
|
2832
|
-
a: value mod_a::d.a (from module)
|
2833
|
-
mod_a::f:
|
2834
|
-
a:
|
2835
|
-
a: value mod_a::f.a.a (from module)
|
2836
|
-
mod_a::to_array1: 'hello'
|
2837
|
-
mod_a::to_array2: 'hello'
|
2838
|
-
mod_a::to_int: 'bananas'
|
2839
|
-
mod_a::to_bad_type: 'pyjamas'
|
2840
|
-
mod_a::undef_value: null
|
2841
|
-
lookup_options:
|
2842
|
-
mod_a::e:
|
2843
|
-
merge: deep
|
2844
|
-
mod_a::to_array1:
|
2845
|
-
merge: deep
|
2846
|
-
convert_to: "Array"
|
2847
|
-
mod_a::to_array2:
|
2848
|
-
convert_to:
|
2849
|
-
- "Array"
|
2850
|
-
- true
|
2851
|
-
mod_a::to_int:
|
2852
|
-
convert_to: "Integer"
|
2853
|
-
mod_a::to_bad_type:
|
2854
|
-
convert_to: "ComicSans"
|
2855
|
-
mod_a::undef_value:
|
2856
|
-
convert_to:
|
2857
|
-
- "Array"
|
2858
|
-
- true
|
2859
|
-
YAML
|
2860
|
-
|
2861
|
-
|
2862
|
-
let(:mod_a_common2) { <<-YAML.unindent }
|
2863
|
-
mod_a::b: value mod_a::b (from module)
|
2864
|
-
mod_a::d:
|
2865
|
-
c: value mod_a::d.c (from module)
|
2866
|
-
mod_a::f:
|
2867
|
-
a:
|
2868
|
-
b: value mod_a::f.a.b (from module)
|
2869
|
-
YAML
|
2870
|
-
|
2871
|
-
let(:mod_a_defaults) { <<-YAML.unindent }
|
2872
|
-
mod_a::a: value mod_a::a (from module defaults)
|
2873
|
-
mod_a::b: value mod_a::b (from module defaults)
|
2874
|
-
mod_a::c: value mod_a::c (from module defaults)
|
2875
|
-
mod_a::d:
|
2876
|
-
b: value mod_a::d.b (from module defaults)
|
2877
|
-
mod_a::e:
|
2878
|
-
a:
|
2879
|
-
a: value mod_a::e.a.a (from module defaults)
|
2880
|
-
mod_a::g:
|
2881
|
-
a:
|
2882
|
-
a: value mod_a::g.a.a (from module defaults)
|
2883
|
-
lookup_options:
|
2884
|
-
mod_a::d:
|
2885
|
-
merge: hash
|
2886
|
-
mod_a::g:
|
2887
|
-
merge: deep
|
2888
|
-
YAML
|
2889
|
-
|
2890
|
-
let(:mod_a_defaults2) { <<-YAML.unindent }
|
2891
|
-
mod_a::e:
|
2892
|
-
a:
|
2893
|
-
b: value mod_a::e.a.b (from module defaults)
|
2894
|
-
mod_a::g:
|
2895
|
-
a:
|
2896
|
-
b: value mod_a::g.a.b (from module defaults)
|
2897
|
-
YAML
|
2898
|
-
|
2899
|
-
let(:mod_a_files) do
|
2900
|
-
{
|
2901
|
-
'mod_a' => {
|
2902
|
-
'data' => {
|
2903
|
-
'common.yaml' => mod_a_common,
|
2904
|
-
'common2.yaml' => mod_a_common2,
|
2905
|
-
'defaults.yaml' => mod_a_defaults,
|
2906
|
-
'defaults2.yaml' => mod_a_defaults2
|
2907
|
-
},
|
2908
|
-
'hiera.yaml' => mod_a_hiera_yaml
|
2909
|
-
}
|
2910
|
-
}
|
2911
|
-
end
|
2912
|
-
|
2913
|
-
it 'the default hierarchy does not interfere with environment hierarchy' do
|
2914
|
-
expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
|
2915
|
-
end
|
2916
|
-
|
2917
|
-
it 'the default hierarchy does not interfere with regular hierarchy in module' do
|
2918
|
-
expect(lookup('mod_a::b')).to eql('value mod_a::b (from module)')
|
2919
|
-
end
|
2920
|
-
|
2921
|
-
it 'the default hierarchy is consulted when no value is found elsewhere' do
|
2922
|
-
expect(lookup('mod_a::c')).to eql('value mod_a::c (from module defaults)')
|
2923
|
-
end
|
2924
|
-
|
2925
|
-
it 'the default hierarchy does not participate in a merge' do
|
2926
|
-
expect(lookup('mod_a::d', 'merge' => 'hash')).to eql('a' => 'value mod_a::d.a (from module)', 'c' => 'value mod_a::d.c (from module)')
|
2927
|
-
end
|
2928
|
-
|
2929
|
-
it 'lookup_options from regular hierarchy does not effect values found in the default hierarchy' do
|
2930
|
-
expect(lookup('mod_a::e')).to eql('a' => { 'a' => 'value mod_a::e.a.a (from module defaults)' })
|
2931
|
-
end
|
2932
|
-
|
2933
|
-
it 'lookup_options from default hierarchy affects values found in the default hierarchy' do
|
2934
|
-
expect(lookup('mod_a::g')).to eql('a' => { 'a' => 'value mod_a::g.a.a (from module defaults)', 'b' => 'value mod_a::g.a.b (from module defaults)'})
|
2935
|
-
end
|
2936
|
-
|
2937
|
-
it 'merge parameter does not override lookup_options defined in the default hierarchy' do
|
2938
|
-
expect(lookup('mod_a::g', 'merge' => 'hash')).to eql(
|
2939
|
-
'a' => { 'a' => 'value mod_a::g.a.a (from module defaults)', 'b' => 'value mod_a::g.a.b (from module defaults)'})
|
2940
|
-
end
|
2941
|
-
|
2942
|
-
it 'lookup_options from default hierarchy does not effect values found in the regular hierarchy' do
|
2943
|
-
expect(lookup('mod_a::d')).to eql('a' => 'value mod_a::d.a (from module)')
|
2944
|
-
end
|
2945
|
-
|
2946
|
-
context "and conversion via convert_to" do
|
2947
|
-
it 'converts with a single data type value' do
|
2948
|
-
expect(lookup('mod_a::to_array1')).to eql(['h', 'e', 'l', 'l', 'o'])
|
2949
|
-
end
|
2950
|
-
|
2951
|
-
it 'converts with an array of arguments to the convert_to call' do
|
2952
|
-
expect(lookup('mod_a::to_array2')).to eql(['hello'])
|
2953
|
-
end
|
2954
|
-
|
2955
|
-
it 'converts an undef/nil value that has convert_to option' do
|
2956
|
-
expect(lookup('mod_a::undef_value')).to eql([nil])
|
2957
|
-
end
|
2958
|
-
|
2959
|
-
it 'errors if a convert_to lookup_option cannot be performed because value does not match type' do
|
2960
|
-
expect{lookup('mod_a::to_int')}.to raise_error(/The convert_to lookup_option for key 'mod_a::to_int' raised error.*The string 'bananas' cannot be converted to Integer/)
|
2961
|
-
end
|
2962
|
-
|
2963
|
-
it 'errors if a convert_to lookup_option cannot be performed because type does not exist' do
|
2964
|
-
expect{lookup('mod_a::to_bad_type')}.to raise_error(/The convert_to lookup_option for key 'mod_a::to_bad_type' raised error.*Creation of new instance of type 'TypeReference\['ComicSans'\]' is not supported/)
|
2965
|
-
end
|
2966
|
-
|
2967
|
-
it 'adds explanation that conversion took place with a type' do
|
2968
|
-
explanation = explain('mod_a::to_array1')
|
2969
|
-
expect(explanation).to include('Applying convert_to lookup_option with arguments [Array]')
|
2970
|
-
end
|
2971
|
-
|
2972
|
-
it 'adds explanation that conversion took place with a type and arguments' do
|
2973
|
-
explanation = explain('mod_a::to_array2')
|
2974
|
-
expect(explanation).to include('Applying convert_to lookup_option with arguments [Array, true]')
|
2975
|
-
end
|
2976
|
-
end
|
2977
|
-
|
2978
|
-
it 'the default hierarchy lookup is included in the explain output' do
|
2979
|
-
explanation = explain('mod_a::c')
|
2980
|
-
expect(explanation).to match(/Searching default_hierarchy of module "mod_a".+Original path: "defaults.yaml"/m)
|
2981
|
-
end
|
2982
|
-
end
|
2983
|
-
end
|
2984
|
-
|
2985
|
-
context 'and an eyaml lookup_key function', :if => Puppet.features.hiera_eyaml? do
|
2986
|
-
let(:private_key_name) { 'private_key.pkcs7.pem' }
|
2987
|
-
let(:public_key_name) { 'public_key.pkcs7.pem' }
|
2988
|
-
|
2989
|
-
let(:private_key) do
|
2990
|
-
<<-PKCS7.unindent
|
2991
|
-
-----BEGIN RSA PRIVATE KEY-----
|
2992
|
-
MIIEogIBAAKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6f
|
2993
|
-
CR7tyOpYV6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC
|
2994
|
-
2LUuqj1IAErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQ
|
2995
|
-
NlgZwm2/aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2
|
2996
|
-
tPtLsHyRN39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1o
|
2997
|
-
EfQFDQRKaIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABAoIBAE98pNXOe8ab93oI
|
2998
|
-
mtNZYmjCbGAqprTjEoFb71A3SfYbmK2Gf65GxjUdBwx/tBYTiuekSOk+yzKcDoZk
|
2999
|
-
sZnmwKpqDByzaiSmAkxunANFxdZtZvpcX9UfUX0j/t+QCROUa5gF8j6HrUiZ5nkx
|
3000
|
-
sxr1PcuItekaGLJ1nDLz5JsWTQ+H4M+GXQw7/t96x8v8g9el4exTiAHGk6Fv16kD
|
3001
|
-
017T02M9qTTmV3Ab/enDIBmKVD42Ta36K/wc4l1aoUQNiRbIGVh96Cgd1CFXLF3x
|
3002
|
-
CsaNbYT4SmRXaYqoj6MKq+QFEGxadFmJy48NoSd4joirIn2lUjHxJebw3lLbNLDR
|
3003
|
-
uvQnQ2ECgYEA/nD94wEMr6078uMv6nKxPpNGq7fihwSKf0G/PQDqrRmjUCewuW+k
|
3004
|
-
/iXMe1Y/y0PjFeNlSbUsUvKQ5xF7F/1AnpuPHIrn3cjGVLb71W+zen1m8SnhsW/f
|
3005
|
-
7dPgtcb4SCvfhmLgoov+P34YcNfGi6qgPUu6319IqoB3BIi7PvfEomkCgYEAwZ4+
|
3006
|
-
V0bMjFdDn2hnYzjTNcF2aUQ1jPvtuETizGwyCbbMLl9522lrjC2DrH41vvqX35ct
|
3007
|
-
CBJkhQFbtHM8Gnmozv0vxhI2jP+u14mzfePZsaXuYrEgWRj+BCsYUHodXryxnEWj
|
3008
|
-
yVrTNskab1B5jFm2SCJDmKcycBOYpRBLCMx6W7MCgYBA99z7/6KboOIzzKrJdGup
|
3009
|
-
jLV410UyMIikoccQ7pD9jhRTPS80yjsY4dHqlEVJw5XSWvPb9DTTITi6p44EvBep
|
3010
|
-
6BKMuTMnQELUEr0O7KypVCfa4FTOl8BX28f+4kU3OGykxc6R8qkC0VGwTohV1UWB
|
3011
|
-
ITsgGhZV4uOA9uDI3T8KMQKBgEnQY2HwmuDSD/TA39GDA3qV8+ez2lqSXRGIKZLX
|
3012
|
-
mMf9SaBQQ+uzKA4799wWDbVuYeIbB07xfCL83pJP8FUDlqi6+7Celu9wNp7zX1ua
|
3013
|
-
Nw8z/ErhzjxJe+Xo7A8aTwIkG+5A2m1UU/up9YsEeiJYvVaIwY58B42U2vfq20BS
|
3014
|
-
fD9jAoGAX2MscBzIsmN+U9R0ptL4SXcPiVnOl8mqvQWr1B4OLgxX7ghht5Fs956W
|
3015
|
-
bHipxOWMFCPJA/AhNB8q1DvYiD1viZbIALSCJVUkzs4AEFIjiPsCBKxerl7jF6Xp
|
3016
|
-
1WYSaCmfvoCVEpFNt8cKp4Gq+zEBYAV4Q6TkcD2lDtEW49MuN8A=
|
3017
|
-
-----END RSA PRIVATE KEY-----
|
3018
|
-
PKCS7
|
3019
|
-
end
|
3020
|
-
|
3021
|
-
let(:public_key) do
|
3022
|
-
<<-PKCS7.unindent
|
3023
|
-
-----BEGIN CERTIFICATE-----
|
3024
|
-
MIIC2TCCAcGgAwIBAgIBATANBgkqhkiG9w0BAQUFADAAMCAXDTE3MDExMzA5MTY1
|
3025
|
-
MloYDzIwNjcwMTAxMDkxNjUyWjAAMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
3026
|
-
CgKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6fCR7tyOpY
|
3027
|
-
V6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC2LUuqj1I
|
3028
|
-
AErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQNlgZwm2/
|
3029
|
-
aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2tPtLsHyR
|
3030
|
-
N39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1oEfQFDQRK
|
3031
|
-
aIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABo1wwWjAPBgNVHRMBAf8EBTADAQH/
|
3032
|
-
MB0GA1UdDgQWBBSejWrVnw7QaBjNFCHMNFi+doSOcTAoBgNVHSMEITAfgBSejWrV
|
3033
|
-
nw7QaBjNFCHMNFi+doSOcaEEpAIwAIIBATANBgkqhkiG9w0BAQUFAAOCAQEAAe85
|
3034
|
-
BQ1ydAHFqo0ib38VRPOwf5xPHGbYGhvQi4/sU6aTuR7pxaOJPYz05jLhS+utEmy1
|
3035
|
-
sknBq60G67yhQE7IHcfwrl1arirG2WmKGvAbjeYL2K1UiU0pVD3D+Klkv/pK6jIQ
|
3036
|
-
eOJRGb3qNUn0Sq9EoYIOXiGXQ641F0bZZ0+5H92kT1lmnF5oLfCb84ImD9T3snH6
|
3037
|
-
pIr5RKRx/0YmJIcv3WdpoPT903rOJiRIEgIj/hDk9QZTBpm222Ul5yQQ5pBywpSp
|
3038
|
-
xh0bmJKAQWhQm7QlybKfyaQmg5ot1jEzWAvD2I5FjHQxmAlchjb6RreaRhExj+JE
|
3039
|
-
5O117dMBdzDBjcNMOA==
|
3040
|
-
-----END CERTIFICATE-----
|
3041
|
-
PKCS7
|
3042
|
-
end
|
3043
|
-
|
3044
|
-
let(:keys_dir) do
|
3045
|
-
keys = tmpdir('keys')
|
3046
|
-
dir_contained_in(keys, {
|
3047
|
-
private_key_name => private_key,
|
3048
|
-
public_key_name => public_key
|
3049
|
-
})
|
3050
|
-
keys
|
3051
|
-
end
|
3052
|
-
|
3053
|
-
let(:private_key_path) { File.join(keys_dir, private_key_name) }
|
3054
|
-
let(:public_key_path) { File.join(keys_dir, public_key_name) }
|
3055
|
-
|
3056
|
-
let(:env_hiera_yaml) do
|
3057
|
-
<<-YAML.unindent
|
3058
|
-
version: 5
|
3059
|
-
hierarchy:
|
3060
|
-
- name: EYaml
|
3061
|
-
path: common.eyaml
|
3062
|
-
lookup_key: eyaml_lookup_key
|
3063
|
-
options:
|
3064
|
-
pkcs7_private_key: #{private_key_path}
|
3065
|
-
pkcs7_public_key: #{public_key_path}
|
3066
|
-
YAML
|
3067
|
-
end
|
3068
|
-
|
3069
|
-
let(:scope_additions) { { 'ipl_suffix' => 'aa' } }
|
3070
|
-
let(:data_files) do
|
3071
|
-
{
|
3072
|
-
'common.eyaml' => <<-YAML.unindent
|
3073
|
-
# a: Encrypted value 'a' (from environment)
|
3074
|
-
a: >
|
3075
|
-
ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEw
|
3076
|
-
DQYJKoZIhvcNAQEBBQAEggEAUwwNRA5ZKM87SLnjnJfzDFRQbeheSYMTOhcr
|
3077
|
-
sgTPCGtzEAzvRBrkdIRAvDZVRfadV9OB+bJsYrhWIkU1bYiOn1m78ginh96M
|
3078
|
-
44RuspnIZYnL9Dhs+JyC8VvB5nlvlEph2RGt+KYg9iU4JYhwZ2+8+yxB6/UK
|
3079
|
-
H5HGKDCjBbEc8o9MbCckLsciIh11hKKgT6K0yhKB/nBxxM78nrX0BxmAHX2u
|
3080
|
-
bejKDRa9S/0uS7Y91nvnbIkaQpZ4KteSQ+J4/lQBMlMAeE+2F9ncM8jFKnQC
|
3081
|
-
rzzdbn1O/zwsEt5J5CRP1Sc+8hM644+IqkLs+17segxArHVGOsEqyDcHbXEK
|
3082
|
-
9jspfzBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBCIq/L5HeJgA9XQm67j
|
3083
|
-
JHUngDDS5s52FsuSIMin7Z/pV+XuaJGFkL80ia4bXnCWilmtM8oUa/DZuBje
|
3084
|
-
dCILO7I8QqU=]
|
3085
|
-
hash_a:
|
3086
|
-
"hash_%{ipl_suffix}":
|
3087
|
-
# aaa: Encrypted value hash_a.hash_aa.aaa (from environment)
|
3088
|
-
aaa: >
|
3089
|
-
ENC[PKCS7,MIIBqQYJKoZIhvcNAQcDoIIBmjCCAZYCAQAxggEhMIIBHQIBADAFMAACAQEw
|
3090
|
-
DQYJKoZIhvcNAQEBBQAEggEAhvGXL5RxVUs9wdqJvpCyXtfCHrm2HbG/u30L
|
3091
|
-
n8EuRD9ravlsgIISAnd27JPtrxA+0rZq4EQRGz6OcovnH9vTg86/lVBhhPnz
|
3092
|
-
b83ArptGJhRvTYUJ19GZI3AYjJbhWj/Jo5NL56oQJaPBccqHxMApm/U0wlus
|
3093
|
-
QtASL94cLuh4toVIBQCQzD5/Bx51p2wQobm9p4WKSl1zJhDceurmoLZXqhuN
|
3094
|
-
JwwEBwXopJvgid3ZDPbdX8nI6vHhb/8wDq9yb5DOsrkgqDqQgwPU9sUUioQj
|
3095
|
-
Hr1pGyeOWnbEe99iEb2+m7TWsC0NN7OBo06mAgFNbBLjvn2k4PiCxrOOgJ8S
|
3096
|
-
LI5eXjBsBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBCWNS6j3m/Xvrp5RFaN
|
3097
|
-
ovm/gEB4oPlYJswoXuWqcEBfwZzbpy96x3b2Le/yoa72ylbPAUc5GfLENvFQ
|
3098
|
-
zXpTtSmQE0fixY4JMaBTke65ZRvoiOQO]
|
3099
|
-
array_a:
|
3100
|
-
# - "array_a[0]"
|
3101
|
-
- >
|
3102
|
-
ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw
|
3103
|
-
DQYJKoZIhvcNAQEBBQAEggEAmXZfyfU77vVCZqHpR10qhD0Jy9DpMGBgal97
|
3104
|
-
vUO2VHX7KlCgagK0kz8/uLRIthkYzcpn8ISmw/+CIAny3jOjxOsylJiujqyu
|
3105
|
-
hx/JEFl8bOKOg40Bd0UuBaw/qZ+CoAtOorhiIW7x6t7DpknItC6gkH/cSJ4/
|
3106
|
-
p3MdhoARRuwj2fvuaChVsD39l2rXjgJj0OJOaDXdbuisG75VRZf5l8IH6+44
|
3107
|
-
Q7m6W7BU69LX+ozn+W3filQoiJ5MPf8w/KXAObMSbKYIDsrZUyIWyyNUbpW0
|
3108
|
-
MieIkHj93bX3gIEcenECLdWaEzcPa7MHgl6zevQKg4H0JVmcvKYyfHYqcrVE
|
3109
|
-
PqizKDA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDf259KZEay1widVSFy
|
3110
|
-
I9zGgBAICjm0x2GeqoCnHdiAA+jt]
|
3111
|
-
# - "array_a[1]"
|
3112
|
-
- >
|
3113
|
-
ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw
|
3114
|
-
DQYJKoZIhvcNAQEBBQAEggEATVy4hHG356INFKOswAhoravh66iJljp+Vn3o
|
3115
|
-
UVD1kyRiqY5tz3UVSptzUmzD+YssX/f73AKCjUI3HrPNL7kAxsk6fWS7nDEj
|
3116
|
-
AuxtCqGYeBha6oYJYziSGIHfAdY3MiJUI1C9g/OQB4TTvKdrlDArPiY8THJi
|
3117
|
-
bzLLMbVQYJ6ixSldwkdKD75vtikyamx+1LSyVBSg8maVyPvLHtLZJuT71rln
|
3118
|
-
WON3Ious9PIbd+izbcCzaoqh5UnTfDCjOuAYliXalBxamIIwNzSV1sdR8/qf
|
3119
|
-
t22zpYK4J8lgCBV2gKfrOWSi9MAs6JhCeOb8wNLMmAUTbc0WrFJxoCwAPX0z
|
3120
|
-
MAjsNjA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBC4v4bNE4gFlbLmVY+9
|
3121
|
-
BtSLgBBm7U0wu6d6s9wF9Ek9IHPe]
|
3122
|
-
# ref_a: "A resolved = '%{hiera('a')}'"
|
3123
|
-
ref_a: >
|
3124
|
-
ENC[PKCS7,MIIBiQYJKoZIhvcNAQcDoIIBejCCAXYCAQAxggEhMIIBHQIBADAFMAACAQEw
|
3125
|
-
DQYJKoZIhvcNAQEBBQAEggEAFSuUp+yk+oaA7b5ekT0u360CQ9Q2sIQ/bTcM
|
3126
|
-
jT3XLjm8HIGYPcysOEnuo8WcAxJFY5iya4yQ7Y/UhMWXaTi7Vzv/6BmyPDwz
|
3127
|
-
+7Z2Mf0r0PvS5+ylue6aem/3bXPOmXTKTf68OCehTRXlDUs8/av9gnsDzojp
|
3128
|
-
yiUTBZvKxhIP2n//GyoHgyATveHT0lxPVpdMycB347DtWS7IduCxx0+KiOOw
|
3129
|
-
DXYFlYbIVxVInwgERxtsfYSr+Fu0/mkjtRsQm+dPzMQOATE9Val2gGKsV6bi
|
3130
|
-
kdm1OM9HrwVsFj6Lma6FYmr89Bcm/1uEc8fiOMtNK3z2+nwunWBMNCGneMYD
|
3131
|
-
C5IJejBMBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBAeiZDGQyXHkZlV5ceT
|
3132
|
-
iCxpgCDDatuVvbPEEi8rKOC7xhPHZ22zLEEV//l7C9jxq+DZcA==]
|
3133
|
-
YAML
|
3134
|
-
}
|
3135
|
-
end
|
3136
|
-
|
3137
|
-
let(:env_data) { data_files }
|
3138
|
-
|
3139
|
-
context 'with unencryptable eyaml' do
|
3140
|
-
let(:data_files) do
|
3141
|
-
{
|
3142
|
-
'common.eyaml' => <<-YAML.unindent
|
3143
|
-
key_with_invalid_eyaml: ENC[PKCS7,INVALID]
|
3144
|
-
YAML
|
3145
|
-
}
|
3146
|
-
end
|
3147
|
-
|
3148
|
-
it 'fails and reports error with ENC value, key being looked up and filename' do
|
3149
|
-
expect { lookup('key_with_invalid_eyaml') }.to raise_error(Puppet::DataBinding::LookupError, /hiera-eyaml backend error decrypting ENC\[PKCS7,INVALID\] when looking up key_with_invalid_eyaml in .*common\.eyaml\. Error was/)
|
3150
|
-
end
|
3151
|
-
end
|
3152
|
-
context 'and a module using eyaml with different options' do
|
3153
|
-
|
3154
|
-
let(:private_module_key) do
|
3155
|
-
<<-PKCS7.unindent
|
3156
|
-
-----BEGIN RSA PRIVATE KEY-----
|
3157
|
-
MIIEogIBAAKCAQEAuqVpctipK4OMWM+RwKcd/mR4pg6qE3+ItPVC9TlvBrmDaN/y
|
3158
|
-
YZRjQR+XovXSGuy/CneSQ9Qss0Ff3FKAmEeH0qN0V47a81hgLpjhLCX1n+Ov7r1Q
|
3159
|
-
DC1ciTpVzHE4krN3rJ/RmDohitIqT1IYYhdcEdaMG9E26HIzn1QIwaDiYU3mfqWM
|
3160
|
-
8CZExa0CeIsEzHRLSxuMi/xX0ENImCRUzY9GH88Cu2gUhpKlbVzJmVqGPgp94pJY
|
3161
|
-
YM+SUb0XP1yRySpJMnVg98oCUrQO2OoE/Gax/djAi6hrJUzejPsEKdZ1yxM6OyJW
|
3162
|
-
NjWZYs8izAxBqm7pv1hx5+X7AIPqwZTMVrB7TQIDAQABAoIBAHIex13QOYeAlGSM
|
3163
|
-
7bpUtBMiTV6DItxvIyA5wen8ZvU+oqmSHDorp5BfB7E9Cm0qChkVSRot9fLYawtk
|
3164
|
-
anoxakuRY4ZRs3AMvipfkXYT854CckTP/cykQ6soPuOU6plQIEEtKtMf3/hoTjRX
|
3165
|
-
ps77J3FEtEAh6Kexg/zMPdpeS2xgULhk0P9ZQEg+JhLA5dq0p0nz3SBkuzcxei79
|
3166
|
-
+Za/Tg1osD0AINOajdvPnKxvlmWJN0+LpGwVjFNhkoUXPeDyvq0z2V/Uqwz4HP2I
|
3167
|
-
UGv4tz3SbzFc3Ie4lzgUZzCQgUK3u60pq1uyA6BRtxwdEmpn5v++jGXBGJZpWwcW
|
3168
|
-
UNblESUCgYEA4aTH9+LHsNjLPs2FmSc7hNjwHG1rAHcDXTX2ccySjRcQvH4Z7xBL
|
3169
|
-
di+SzZ2Tf8gSLycPRgRVCbrgCODpjoV2D5wWnyUHfWm4+GQxHURYa4UDx69tsSKE
|
3170
|
-
OTRASJo7/Mz0M1a6YzgCzVRM/TO676ucmawzKUY5OUm1oehtODAiZOcCgYEA08GM
|
3171
|
-
AMBOznys02xREJI5nLR6AveuTbIjF2efEidoxoW+1RrMOkcqaDTrJQ5PLM+oDDwD
|
3172
|
-
iPzVjnroSbwJzFB71atIg7b7TwltgkXy7wNTedO2cm5u/I0q8tY2Jaa4Mz8JUnbe
|
3173
|
-
yafvtS0/mY6A5k+8/2UIMFin2rqU9NC9EUPIo6sCgYBhOvAwELibq89osIbxB8bN
|
3174
|
-
5+0PUtbYzG/WqnoXb193DIlZr7zdFththPJtR4lXdo7fYqViNluuZahEKyZ5E2lc
|
3175
|
-
MJZO3VXs5LGf1wyS3/B55EdMtHs/6O+w9qL8pflTZb2UobqPJoOOltTWBoR24iwI
|
3176
|
-
y/r/vhLKbMini9AEdjlb4QKBgGdYsax4Lr4GCQ8ScSnmQ6ngRyAFo5MV2pyEnRTu
|
3177
|
-
GOuywKUe9AeJTgAXu5+VMT0Mh9aYv5zu0Ic+IvpBhIKr0RRCCR0Hg/VaA5Et9FeE
|
3178
|
-
RwxRMFz+2rn1Z72moDyV9pZEMJeHnknK5WmGEOEvtGczCWmX9Hwr+Jf+sc4dxfiU
|
3179
|
-
HWsLAoGAXWSX73p/6R4eRfF5zU2UFJPvDzhmwObAuvU4zKs9x7PMxZfvyt/eBCO1
|
3180
|
-
fj2+hIR72RxVuHbLApF1BT6gPVLtNdvaNuCs8YlHcnx/Oi088F0ni7fL/xYBUvaB
|
3181
|
-
7wTf188UJxP1ofVMZW00P4I9mR6BrOulv455gCwsmg2X7WtJU48=
|
3182
|
-
-----END RSA PRIVATE KEY-----
|
3183
|
-
PKCS7
|
3184
|
-
end
|
3185
|
-
|
3186
|
-
let(:public_module_key) do
|
3187
|
-
<<-PKCS7.unindent
|
3188
|
-
-----BEGIN CERTIFICATE-----
|
3189
|
-
MIIC2TCCAcGgAwIBAgIBATANBgkqhkiG9w0BAQUFADAAMCAXDTE3MDUzMTE2Mjc0
|
3190
|
-
M1oYDzIwNjcwNTE5MTYyNzQzWjAAMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
3191
|
-
CgKCAQEAuqVpctipK4OMWM+RwKcd/mR4pg6qE3+ItPVC9TlvBrmDaN/yYZRjQR+X
|
3192
|
-
ovXSGuy/CneSQ9Qss0Ff3FKAmEeH0qN0V47a81hgLpjhLCX1n+Ov7r1QDC1ciTpV
|
3193
|
-
zHE4krN3rJ/RmDohitIqT1IYYhdcEdaMG9E26HIzn1QIwaDiYU3mfqWM8CZExa0C
|
3194
|
-
eIsEzHRLSxuMi/xX0ENImCRUzY9GH88Cu2gUhpKlbVzJmVqGPgp94pJYYM+SUb0X
|
3195
|
-
P1yRySpJMnVg98oCUrQO2OoE/Gax/djAi6hrJUzejPsEKdZ1yxM6OyJWNjWZYs8i
|
3196
|
-
zAxBqm7pv1hx5+X7AIPqwZTMVrB7TQIDAQABo1wwWjAPBgNVHRMBAf8EBTADAQH/
|
3197
|
-
MB0GA1UdDgQWBBQkhoMgOyPzEe7tOOimNH2//PYF2TAoBgNVHSMEITAfgBQkhoMg
|
3198
|
-
OyPzEe7tOOimNH2//PYF2aEEpAIwAIIBATANBgkqhkiG9w0BAQUFAAOCAQEAhRWc
|
3199
|
-
Nz3PcUJllao5G/v4AyvjLgwB2JgjJgh6D3ILoOe9TrDSXD7ZV3F30vFae+Eztk86
|
3200
|
-
pmM8x57E0HsuuY+Owf6/hvELtwbzf9N/lc9ySZSogGFoQeJ8rnCJAQ0FaPjqb7AN
|
3201
|
-
xTaY9HTzr4dZG1f+sw32RUu2fDe7Deqgf85uMSZ1mtRTt9zvo8lMQxVA2nVOfwz2
|
3202
|
-
Nxf+qSNYSCtf0/6iwfzHy0qPjaJnywgBCi3Lg2IMSqGUatxzH+9HWrBgD+ZYxmDz
|
3203
|
-
2gW+EIU1Y/We/tbjIWaR1PD+IzeRJi5fHq60RKHPSdp7TGtV48bQRvyZXC7sVCRa
|
3204
|
-
yxfX1IGYhCDzbFRQNg==
|
3205
|
-
-----END CERTIFICATE-----
|
3206
|
-
PKCS7
|
3207
|
-
end
|
3208
|
-
|
3209
|
-
let(:module_keys_dir) do
|
3210
|
-
keys = tmpdir('keys')
|
3211
|
-
dir_contained_in(keys, {
|
3212
|
-
private_key_name => private_module_key,
|
3213
|
-
public_key_name => public_module_key
|
3214
|
-
})
|
3215
|
-
keys
|
3216
|
-
end
|
3217
|
-
|
3218
|
-
let(:private_module_key_path) { File.join(module_keys_dir, private_key_name) }
|
3219
|
-
let(:public_module_key_path) { File.join(module_keys_dir, public_key_name) }
|
3220
|
-
|
3221
|
-
let(:mod_a_files) do
|
3222
|
-
{
|
3223
|
-
'mod_a' => {
|
3224
|
-
'hiera.yaml' => <<-YAML.unindent,
|
3225
|
-
version: 5
|
3226
|
-
hierarchy:
|
3227
|
-
- name: EYaml
|
3228
|
-
path: common.eyaml
|
3229
|
-
lookup_key: eyaml_lookup_key
|
3230
|
-
options:
|
3231
|
-
pkcs7_private_key: #{private_module_key_path}
|
3232
|
-
pkcs7_public_key: #{public_module_key_path}
|
3233
|
-
YAML
|
3234
|
-
'data' => {
|
3235
|
-
'common.eyaml' => <<-YAML.unindent
|
3236
|
-
---
|
3237
|
-
# "%{lookup('a')} (from module)"
|
3238
|
-
mod_a::a: >
|
3239
|
-
ENC[PKCS7,MIIBiQYJKoZIhvcNAQcDoIIBejCCAXYCAQAxggEhMIIBHQIBADAFMAACAQEw
|
3240
|
-
DQYJKoZIhvcNAQEBBQAEggEAC+lvda8mX6XkgCBstNw4IQUDyFcS6M0mS9gZ
|
3241
|
-
ev4VBDeUK4AUNVnzzdbW0Mnj9LbqlpzFx96VGqSxsRBpe7BVD0kVo5jQsEMn
|
3242
|
-
nbrWOD1lvXYrXZMXBeD9xJbMbH5EiiFhbaXcEKRAVGaLVQKjXDENDQ/On+it
|
3243
|
-
1+wmmVwJynDJR0lsCz6dcSKvw6wnxBcv32qFyePvJuIf04CHMhaS4ykedYHK
|
3244
|
-
vagUn5uVXOv/8G0JPlZnQLyxjE0v0heb0Zj0mvcP2+Y5BSW50AQVrMWJNtdW
|
3245
|
-
aFEg6H5hpjduQfQh3iWVuDLnWhbP0sY2Grn5dTOxQP8aTDSsiTUcSeIAmjr/
|
3246
|
-
K8YRCjBMBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBAjL7InlBjRuohLLcBx
|
3247
|
-
686ogCDkhCan8bCE7aX2nr75QtLF3q89pFIR4/NGl5+oGEO+qQ==]
|
3248
|
-
YAML
|
3249
|
-
}
|
3250
|
-
}
|
3251
|
-
}
|
3252
|
-
end
|
3253
|
-
|
3254
|
-
let(:populated_env_dir) do
|
3255
|
-
dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files }))
|
3256
|
-
env_dir
|
3257
|
-
end
|
3258
|
-
|
3259
|
-
it 'repeatedly finds data in environment and module' do
|
3260
|
-
expect(lookup(['array_a', 'mod_a::a', 'hash_a'])).to eql([
|
3261
|
-
['array_a[0]', 'array_a[1]'],
|
3262
|
-
"Encrypted value 'a' (from environment) (from module)",
|
3263
|
-
{'hash_aa'=>{'aaa'=>'Encrypted value hash_a.hash_aa.aaa (from environment)'}}])
|
3264
|
-
end
|
3265
|
-
end
|
3266
|
-
|
3267
|
-
it 'finds data in the environment' do
|
3268
|
-
expect(lookup('a')).to eql("Encrypted value 'a' (from environment)")
|
3269
|
-
end
|
3270
|
-
|
3271
|
-
it 'evaluates interpolated keys' do
|
3272
|
-
expect(lookup('hash_a')).to include('hash_aa')
|
3273
|
-
end
|
3274
|
-
|
3275
|
-
it 'evaluates interpolations in encrypted values' do
|
3276
|
-
expect(lookup('ref_a')).to eql("A resolved = 'Encrypted value 'a' (from environment)'")
|
3277
|
-
end
|
3278
|
-
|
3279
|
-
it 'can read encrypted values inside a hash' do
|
3280
|
-
expect(lookup('hash_a.hash_aa.aaa')).to eql('Encrypted value hash_a.hash_aa.aaa (from environment)')
|
3281
|
-
end
|
3282
|
-
|
3283
|
-
it 'can read encrypted values inside an array' do
|
3284
|
-
expect(lookup('array_a')).to eql(['array_a[0]', 'array_a[1]'])
|
3285
|
-
end
|
3286
|
-
|
3287
|
-
context 'declared in global scope as a Hiera v3 backend', :if => Puppet.features.hiera? do
|
3288
|
-
let(:environment_files) { {} }
|
3289
|
-
let(:data_file_content) { <<-YAML.unindent }
|
3290
|
-
a: >
|
3291
|
-
ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEw
|
3292
|
-
DQYJKoZIhvcNAQEBBQAEggEAH457bsfL8kYw9O50roE3dcE21nCnmPnQ2XSX
|
3293
|
-
LYRJ2C78LarbfFonKz0gvDW7tyhsLWASFCFaiU8T1QPBd2b3hoQK8E4B2Ual
|
3294
|
-
xga/K7r9y3OSgRomTm9tpTltC6re0Ubh3Dy71H61obwxEdNVTqjPe95+m2b8
|
3295
|
-
6zWZVnzZzXXsTG1S17yJn1zaB/LXHbWNy4KyLLKCGAml+Gfl6ZMjmaplTmUA
|
3296
|
-
QIC5rI8abzbPP3TDMmbLOGNkrmLqI+3uS8tSueTMoJmWaMF6c+H/cA7oRxmV
|
3297
|
-
QCeEUVXjyFvCHcmbA+keS/RK9XF+vc07/XS4XkYSPs/I5hLQji1y9bkkGAs0
|
3298
|
-
tehxQjBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDHpA6Fcl/R16aIYcow
|
3299
|
-
oiO4gDAvfFH6jLUwXkcYtagnwdmhkd9TQJtxNWcIwMpvmk036MqIoGwwhQdg
|
3300
|
-
gV4beiCFtLU=]
|
3301
|
-
YAML
|
3302
|
-
|
3303
|
-
let(:hiera_yaml) do
|
3304
|
-
<<-YAML.unindent
|
3305
|
-
:backends: eyaml
|
3306
|
-
:eyaml:
|
3307
|
-
:datadir: #{code_dir}/hieradata
|
3308
|
-
:pkcs7_private_key: #{private_key_path}
|
3309
|
-
:pkcs7_public_key: #{public_key_path}
|
3310
|
-
:hierarchy:
|
3311
|
-
- common
|
3312
|
-
YAML
|
3313
|
-
end
|
3314
|
-
|
3315
|
-
let(:data_files) do
|
3316
|
-
{
|
3317
|
-
'common.eyaml' => data_file_content
|
3318
|
-
}
|
3319
|
-
end
|
3320
|
-
|
3321
|
-
let(:code_dir_files) do
|
3322
|
-
{
|
3323
|
-
'hiera.yaml' => hiera_yaml,
|
3324
|
-
'hieradata' => data_files
|
3325
|
-
}
|
3326
|
-
end
|
3327
|
-
|
3328
|
-
before(:each) do
|
3329
|
-
Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
|
3330
|
-
end
|
3331
|
-
|
3332
|
-
it 'finds data in the global layer' do
|
3333
|
-
expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
|
3334
|
-
end
|
3335
|
-
|
3336
|
-
it 'delegates configured eyaml backend to eyaml_lookup_key function' do
|
3337
|
-
expect(explain('a')).to match(/Hierarchy entry "eyaml"\n.*\n.*\n.*"common"\n\s*Found key: "a"/m)
|
3338
|
-
end
|
3339
|
-
|
3340
|
-
context 'using intepolated paths to the key pair' do
|
3341
|
-
let(:scope_additions) { { 'priv_path' => private_key_path, 'pub_path' => public_key_path } }
|
3342
|
-
|
3343
|
-
let(:hiera_yaml) do
|
3344
|
-
<<-YAML.unindent
|
3345
|
-
:backends: eyaml
|
3346
|
-
:eyaml:
|
3347
|
-
:datadir: #{code_dir}/hieradata
|
3348
|
-
:pkcs7_private_key: "%{priv_path}"
|
3349
|
-
:pkcs7_public_key: "%{pub_path}"
|
3350
|
-
:hierarchy:
|
3351
|
-
- common
|
3352
|
-
YAML
|
3353
|
-
end
|
3354
|
-
|
3355
|
-
it 'finds data in the global layer' do
|
3356
|
-
expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
|
3357
|
-
end
|
3358
|
-
end
|
3359
|
-
|
3360
|
-
context 'using options containing intepolated paths to the key pair' do
|
3361
|
-
let(:scope_additions) { { 'priv_path' => private_key_path, 'pub_path' => public_key_path } }
|
3362
|
-
|
3363
|
-
let(:hiera_yaml) do
|
3364
|
-
<<-YAML.unindent
|
3365
|
-
version: 5
|
3366
|
-
defaults:
|
3367
|
-
datadir: #{code_dir}/hieradata
|
3368
|
-
hierarchy:
|
3369
|
-
- name: "secret data"
|
3370
|
-
lookup_key: eyaml_lookup_key
|
3371
|
-
path: common.eyaml
|
3372
|
-
options:
|
3373
|
-
pkcs7_private_key: "%{priv_path}"
|
3374
|
-
pkcs7_public_key: "%{pub_path}"
|
3375
|
-
YAML
|
3376
|
-
end
|
3377
|
-
|
3378
|
-
it 'finds data in the global layer' do
|
3379
|
-
expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
|
3380
|
-
end
|
3381
|
-
end
|
3382
|
-
|
3383
|
-
context 'with special extension declared in options' do
|
3384
|
-
let(:environment_files) { {} }
|
3385
|
-
let(:hiera_yaml) do
|
3386
|
-
<<-YAML.unindent
|
3387
|
-
:backends: eyaml
|
3388
|
-
:eyaml:
|
3389
|
-
:extension: xyaml
|
3390
|
-
:datadir: #{code_dir}/hieradata
|
3391
|
-
:pkcs7_private_key: #{private_key_path}
|
3392
|
-
:pkcs7_public_key: #{public_key_path}
|
3393
|
-
:hierarchy:
|
3394
|
-
- common
|
3395
|
-
YAML
|
3396
|
-
end
|
3397
|
-
|
3398
|
-
let(:data_files) do
|
3399
|
-
{
|
3400
|
-
'common.xyaml' => data_file_content
|
3401
|
-
}
|
3402
|
-
end
|
3403
|
-
|
3404
|
-
it 'finds data in the global layer' do
|
3405
|
-
expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
|
3406
|
-
end
|
3407
|
-
|
3408
|
-
it 'delegates configured eyaml backend to eyaml_lookup_key function' do
|
3409
|
-
expect(explain('a')).to match(/Hierarchy entry "eyaml"\n.*\n.*\n.*"common"\n\s*Found key: "a"/m)
|
3410
|
-
end
|
3411
|
-
end
|
3412
|
-
end
|
3413
|
-
end
|
3414
|
-
end
|
3415
|
-
end
|