puppet 4.8.2 → 4.9.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +15 -0
- data/CONTRIBUTING.md +25 -1
- data/Gemfile +6 -0
- data/Rakefile +1 -0
- data/ext/project_data.yaml +5 -1
- data/ext/windows/service/daemon.rb +2 -1
- data/install.rb +43 -6
- data/lib/hiera/puppet_function.rb +15 -17
- data/lib/hiera/scope.rb +12 -14
- data/lib/puppet.rb +52 -0
- data/lib/puppet/application/face_base.rb +4 -0
- data/lib/puppet/application/lookup.rb +4 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/data_providers.rb +6 -3
- data/lib/puppet/data_providers/data_adapter.rb +6 -0
- data/lib/puppet/data_providers/data_function_support.rb +7 -0
- data/lib/puppet/data_providers/function_env_data_provider.rb +7 -0
- data/lib/puppet/data_providers/function_module_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_config.rb +31 -10
- data/lib/puppet/data_providers/hiera_env_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_interpolate.rb +2 -1
- data/lib/puppet/data_providers/hiera_module_data_provider.rb +6 -0
- data/lib/puppet/data_providers/hiera_support.rb +6 -0
- data/lib/puppet/data_providers/json_data_provider_factory.rb +12 -0
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +12 -0
- data/lib/puppet/defaults.rb +25 -4
- data/lib/puppet/face/ca.rb +2 -0
- data/lib/puppet/face/certificate_request.rb +2 -0
- data/lib/puppet/face/certificate_revocation_list.rb +2 -0
- data/lib/puppet/face/file.rb +3 -0
- data/lib/puppet/face/help.rb +19 -17
- data/lib/puppet/face/help/face.erb +3 -0
- data/lib/puppet/face/key.rb +1 -0
- data/lib/puppet/face/man.rb +4 -2
- data/lib/puppet/face/module/generate.rb +1 -1
- data/lib/puppet/face/status.rb +2 -0
- data/lib/puppet/feature/base.rb +9 -2
- data/lib/puppet/feature/hocon.rb +3 -0
- data/lib/puppet/file_system.rb +15 -3
- data/lib/puppet/file_system/windows.rb +8 -0
- data/lib/puppet/forge.rb +6 -6
- data/lib/puppet/forge/repository.rb +1 -2
- data/lib/puppet/functions/binary_file.rb +4 -10
- data/lib/puppet/functions/hiera_array.rb +1 -1
- data/lib/puppet/functions/hiera_include.rb +1 -1
- data/lib/puppet/functions/hocon_data.rb +24 -0
- data/lib/puppet/functions/json_data.rb +18 -0
- data/lib/puppet/functions/yaml_data.rb +21 -0
- data/lib/puppet/generate/type.rb +1 -1
- data/lib/puppet/graph/simple_graph.rb +4 -2
- data/lib/puppet/indirector/file_bucket_file/file.rb +10 -2
- data/lib/puppet/indirector/request.rb +5 -1
- data/lib/puppet/interface.rb +14 -2
- data/lib/puppet/interface/face_collection.rb +1 -1
- data/lib/puppet/module.rb +14 -2
- data/lib/puppet/module_tool.rb +4 -4
- data/lib/puppet/module_tool/applications/builder.rb +3 -2
- data/lib/puppet/module_tool/applications/installer.rb +14 -14
- data/lib/puppet/module_tool/applications/upgrader.rb +13 -13
- data/lib/puppet/module_tool/installed_modules.rb +7 -7
- data/lib/puppet/module_tool/local_tarball.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/network/http/connection.rb +2 -0
- data/lib/puppet/network/http/webrick.rb +2 -1
- data/lib/puppet/parser/functions/hiera.rb +14 -0
- data/lib/puppet/parser/functions/hiera_array.rb +14 -0
- data/lib/puppet/parser/functions/hiera_hash.rb +14 -0
- data/lib/puppet/parser/functions/hiera_include.rb +14 -0
- data/lib/puppet/parser/scope.rb +14 -20
- data/lib/puppet/plugins/data_providers.rb +2 -0
- data/lib/puppet/plugins/data_providers/data_provider.rb +108 -17
- data/lib/puppet/plugins/data_providers/registry.rb +2 -36
- data/lib/puppet/pops.rb +6 -9
- data/lib/puppet/pops/adaptable.rb +0 -3
- data/lib/puppet/pops/binder/producers.rb +3 -3
- data/lib/puppet/pops/evaluator/access_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/closure.rb +1 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
- data/lib/puppet/pops/issues.rb +4 -0
- data/lib/puppet/pops/label_provider.rb +14 -0
- data/lib/puppet/pops/loader/loader_paths.rb +3 -1
- data/lib/puppet/pops/loader/module_loaders.rb +21 -7
- data/lib/puppet/pops/loader/typed_name.rb +0 -2
- data/lib/puppet/pops/loaders.rb +31 -12
- data/lib/puppet/pops/lookup.rb +4 -3
- data/lib/puppet/pops/lookup/configured_data_provider.rb +87 -0
- data/lib/puppet/pops/lookup/context.rb +121 -71
- data/lib/puppet/pops/lookup/data_adapter.rb +27 -0
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +55 -0
- data/lib/puppet/pops/lookup/data_hash_function_provider.rb +111 -0
- data/lib/puppet/pops/lookup/data_provider.rb +102 -0
- data/lib/puppet/pops/lookup/environment_data_provider.rb +27 -0
- data/lib/puppet/pops/lookup/explainer.rb +122 -82
- data/lib/puppet/pops/lookup/function_provider.rb +82 -0
- data/lib/puppet/pops/lookup/global_data_provider.rb +49 -0
- data/lib/puppet/pops/lookup/hiera_config.rb +601 -0
- data/lib/puppet/pops/lookup/interpolation.rb +56 -35
- data/lib/puppet/pops/lookup/invocation.rb +179 -101
- data/lib/puppet/pops/lookup/location_resolver.rb +72 -0
- data/lib/puppet/pops/lookup/lookup_adapter.rb +451 -0
- data/lib/puppet/pops/lookup/lookup_key.rb +99 -0
- data/lib/puppet/pops/lookup/lookup_key_function_provider.rb +119 -0
- data/lib/puppet/pops/lookup/module_data_provider.rb +58 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +8 -4
- data/lib/puppet/pops/merge_strategy.rb +120 -39
- data/lib/puppet/pops/parser/egrammar.ra +2 -0
- data/lib/puppet/pops/parser/eparser.rb +816 -808
- data/lib/puppet/pops/parser/locator.rb +3 -3
- data/lib/puppet/pops/parser/slurp_support.rb +4 -3
- data/lib/puppet/pops/pcore.rb +21 -12
- data/lib/puppet/pops/serialization/abstract_reader.rb +17 -7
- data/lib/puppet/pops/serialization/abstract_writer.rb +27 -12
- data/lib/puppet/pops/serialization/deserializer.rb +17 -4
- data/lib/puppet/pops/serialization/extension.rb +37 -8
- data/lib/puppet/pops/serialization/object.rb +14 -6
- data/lib/puppet/pops/serialization/rgen.rb +2 -1
- data/lib/puppet/pops/serialization/serializer.rb +30 -7
- data/lib/puppet/pops/types/implementation_registry.rb +1 -1
- data/lib/puppet/pops/types/p_object_type.rb +55 -12
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +27 -27
- data/lib/puppet/pops/types/p_sem_ver_type.rb +12 -12
- data/lib/puppet/pops/types/p_timespan_type.rb +6 -6
- data/lib/puppet/pops/types/p_timestamp_type.rb +2 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +7 -16
- data/lib/puppet/pops/types/recursion_guard.rb +64 -20
- data/lib/puppet/pops/types/ruby_generator.rb +10 -0
- data/lib/puppet/pops/types/type_calculator.rb +23 -13
- data/lib/puppet/pops/types/type_factory.rb +20 -9
- data/lib/puppet/pops/types/type_formatter.rb +37 -17
- data/lib/puppet/pops/types/type_mismatch_describer.rb +7 -6
- data/lib/puppet/pops/types/type_parser.rb +6 -0
- data/lib/puppet/pops/types/types.rb +225 -132
- data/lib/puppet/pops/validation.rb +1 -1
- data/lib/puppet/pops/validation/checker4_0.rb +12 -2
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/pops/visitor.rb +4 -3
- data/lib/puppet/provider/mcx/mcxcontent.rb +2 -1
- data/lib/puppet/provider/nameservice.rb +15 -0
- data/lib/puppet/provider/package/appdmg.rb +1 -1
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +1 -1
- data/lib/puppet/provider/package/rpm.rb +2 -2
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +5 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -0
- data/lib/puppet/provider/user/user_role_add.rb +15 -0
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
- data/lib/puppet/provider/zone/solaris.rb +4 -1
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource.rb +2 -3
- data/lib/puppet/resource/catalog.rb +12 -4
- data/lib/puppet/resource/type.rb +3 -3
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/config_file.rb +2 -1
- data/lib/puppet/settings/directory_setting.rb +6 -0
- data/lib/puppet/settings/environment_conf.rb +6 -2
- data/lib/puppet/settings/file_or_directory_setting.rb +6 -0
- data/lib/puppet/settings/file_setting.rb +10 -0
- data/lib/puppet/ssl/certificate_authority.rb +13 -2
- data/lib/puppet/ssl/host.rb +23 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +7 -0
- data/lib/puppet/type/user.rb +16 -3
- data/lib/puppet/util.rb +1 -0
- data/lib/puppet/util/execution.rb +3 -3
- data/lib/puppet/util/filetype.rb +11 -5
- data/lib/puppet/util/logging.rb +2 -1
- data/lib/puppet/util/network_device/config.rb +1 -1
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/profiler/aggregate.rb +1 -1
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -1
- data/lib/puppet/util/windows/adsi.rb +15 -12
- data/lib/puppet/vendor/load_semantic_puppet.rb +1 -0
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +2 -1
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph.rb +2 -2
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/graph_node.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +58 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/source.rb +2 -2
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency/unsatisfiable_graph.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +3 -0
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/locales/config.yaml +21 -0
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version.rb +48 -21
- data/lib/puppet/vendor/{semantic/lib/semantic → semantic_puppet/lib/semantic_puppet}/version_range.rb +15 -17
- data/lib/puppet/version.rb +1 -1
- data/lib/semver.rb +19 -12
- data/locales/config.yaml +29 -0
- data/locales/puppet.pot +79 -0
- data/man/man5/puppet.conf.5 +1 -1
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/{data.pp → environment/data.pp} +0 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +1 -1
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +23 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +1 -1
- data/spec/fixtures/unit/functions/lookup/data/common.yaml +19 -0
- data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +19 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/environment.conf +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/lib/puppet/functions/environment/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/abc/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bad_data/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/bca/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_json/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/data/empty_key.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_json/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_key_yaml/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/data/empty.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/empty_yaml/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/data/first.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/hiera.yaml +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/hieraprovider/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/meta/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/manifests/init.pp +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/metawcp/metadata.json +0 -0
- data/spec/fixtures/unit/functions/{lookup → lookup_fixture}/environments/production/modules/no_provider/manifests/init.pp +0 -0
- data/spec/integration/application/apply_spec.rb +88 -2
- data/spec/integration/application/lookup_spec.rb +155 -0
- data/spec/integration/data_binding_spec.rb +5 -5
- data/spec/integration/defaults_spec.rb +13 -0
- data/spec/integration/environments/default_manifest_spec.rb +16 -16
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +6 -2
- data/spec/integration/transaction_spec.rb +74 -0
- data/spec/integration/util/execution_spec.rb +8 -0
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +2 -2
- data/spec/lib/puppet_spec/module_tool/stub_source.rb +1 -1
- data/spec/lib/puppet_spec/unindent.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +16 -0
- data/spec/unit/application/lookup_spec.rb +262 -227
- data/spec/unit/data_providers/{sample_data_provider_spec.rb → custom_data_provider_spec.rb} +14 -16
- data/spec/unit/data_providers/function_data_provider_spec.rb +2 -2
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +60 -97
- data/spec/unit/defaults_spec.rb +1 -1
- data/spec/unit/face/ca_spec.rb +10 -0
- data/spec/unit/face/certificate_request_spec.rb +10 -0
- data/spec/unit/face/certificate_revocation_list_spec.rb +10 -0
- data/spec/unit/face/file_spec.rb +4 -0
- data/spec/unit/face/help_spec.rb +17 -0
- data/spec/unit/face/key_spec.rb +10 -0
- data/spec/unit/face/status_spec.rb +10 -0
- data/spec/unit/file_system_spec.rb +143 -6
- data/spec/unit/functions/binary_file_spec.rb +1 -1
- data/spec/unit/functions/hiera_spec.rb +257 -47
- data/spec/unit/functions/lookup_fixture_spec.rb +693 -0
- data/spec/unit/functions/lookup_spec.rb +1319 -608
- data/spec/unit/functions/new_spec.rb +3 -3
- data/spec/unit/graph/rb_tree_map_spec.rb +1 -1
- data/spec/unit/graph/simple_graph_spec.rb +1 -1
- data/spec/unit/hiera/scope_spec.rb +4 -4
- data/spec/unit/indirector/request_spec.rb +9 -0
- data/spec/unit/interface_spec.rb +27 -0
- data/spec/unit/man_spec.rb +1 -1
- data/spec/unit/module_spec.rb +1 -1
- data/spec/unit/module_tool/applications/builder_spec.rb +16 -1
- data/spec/unit/module_tool/applications/installer_spec.rb +1 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +1 -1
- data/spec/unit/module_tool/installed_modules_spec.rb +6 -6
- data/spec/unit/module_tool_spec.rb +3 -3
- data/spec/unit/network/http/connection_spec.rb +10 -0
- data/spec/unit/network/http/webrick_spec.rb +1 -1
- data/spec/unit/pops/evaluator/access_ops_spec.rb +2 -2
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +9 -9
- data/spec/unit/pops/loaders/environment_loader_spec.rb +172 -0
- data/spec/unit/pops/lookup/context_spec.rb +45 -16
- data/spec/unit/pops/lookup/interpolation_spec.rb +28 -20
- data/spec/unit/pops/lookup/lookup_spec.rb +197 -0
- data/spec/unit/pops/merge_strategy_spec.rb +18 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +16 -1
- data/spec/unit/pops/parser/parse_site_spec.rb +4 -0
- data/spec/unit/pops/serialization/packer_spec.rb +4 -23
- data/spec/unit/pops/serialization/serialization_spec.rb +32 -8
- data/spec/unit/pops/types/p_object_type_spec.rb +68 -3
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +4 -4
- data/spec/unit/pops/types/p_type_set_type_spec.rb +31 -2
- data/spec/unit/pops/types/type_acceptor_spec.rb +18 -17
- data/spec/unit/pops/types/type_calculator_spec.rb +39 -40
- data/spec/unit/pops/types/type_factory_spec.rb +3 -3
- data/spec/unit/pops/types/type_formatter_spec.rb +7 -3
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +13 -2
- data/spec/unit/pops/types/types_spec.rb +25 -2
- data/spec/unit/pops/validator/validator_spec.rb +60 -4
- data/spec/unit/provider/nameservice_spec.rb +42 -0
- data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
- data/spec/unit/provider/package/pkg_spec.rb +22 -0
- data/spec/unit/provider/package/pkgng_spec.rb +12 -0
- data/spec/unit/provider/package/rpm_spec.rb +8 -8
- data/spec/unit/provider/service/smf_spec.rb +13 -11
- data/spec/unit/provider/service/systemd_spec.rb +8 -1
- data/spec/unit/provider/user/useradd_spec.rb +1 -0
- data/spec/unit/puppet_spec.rb +14 -0
- data/spec/unit/resource/catalog_spec.rb +15 -9
- data/spec/unit/resource_spec.rb +20 -17
- data/spec/unit/semver_spec.rb +14 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +12 -1
- data/spec/unit/transaction/additional_resource_generator_spec.rb +11 -0
- data/spec/unit/type/user_spec.rb +32 -6
- data/spec/unit/util/filetype_spec.rb +3 -3
- data/spec/unit/util/yaml_spec.rb +1 -1
- data/spec/unit/util_spec.rb +10 -2
- data/tasks/i18n.rake +20 -0
- metadata +2661 -2593
- data/lib/puppet/data_providers/lookup_adapter.rb +0 -254
- data/lib/puppet/vendor/load_semantic.rb +0 -1
- data/lib/puppet/vendor/semantic/Gemfile +0 -20
- data/lib/puppet/vendor/semantic/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/semantic/Rakefile +0 -69
- data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -7
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +0 -60
- data/lib/puppet/vendor/semantic/spec/spec_helper.rb +0 -24
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_node_spec.rb +0 -141
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/graph_spec.rb +0 -162
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/module_release_spec.rb +0 -143
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/source_spec.rb +0 -5
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency/unsatisfiable_graph_spec.rb +0 -44
- data/lib/puppet/vendor/semantic/spec/unit/semantic/dependency_spec.rb +0 -383
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_range_spec.rb +0 -307
- data/lib/puppet/vendor/semantic/spec/unit/semantic/version_spec.rb +0 -608
- data/spec/fixtures/unit/data_providers/environments/sample/manifests/site.pp +0 -6
@@ -131,11 +131,12 @@ module Puppet::ModuleTool
|
|
131
131
|
# TODO: This may necessarily change the order in which the metadata.json
|
132
132
|
# file is packaged from what was written by the user. This is a
|
133
133
|
# regretable, but required for now.
|
134
|
-
|
134
|
+
Puppet::FileSystem.open(metadata_path, nil, 'w:UTF-8') do |f|
|
135
135
|
f.write(metadata.to_json)
|
136
136
|
end
|
137
137
|
|
138
|
-
|
138
|
+
# PSON.pretty_generate is a BINARY string
|
139
|
+
Puppet::FileSystem.open(File.join(build_path, 'checksums.json'), nil, 'wb') do |f|
|
139
140
|
f.write(PSON.pretty_generate(Checksums.new(build_path)))
|
140
141
|
end
|
141
142
|
end
|
@@ -34,19 +34,19 @@ module Puppet::ModuleTool
|
|
34
34
|
release = local_tarball_source.release
|
35
35
|
@name = release.name
|
36
36
|
options[:version] = release.version.to_s
|
37
|
-
|
37
|
+
SemanticPuppet::Dependency.add_source(local_tarball_source)
|
38
38
|
|
39
39
|
# If we're operating on a local tarball and ignoring dependencies, we
|
40
40
|
# don't need to search any additional sources. This will cut down on
|
41
41
|
# unnecessary network traffic.
|
42
42
|
unless @ignore_dependencies
|
43
|
-
|
44
|
-
|
43
|
+
SemanticPuppet::Dependency.add_source(installed_modules_source)
|
44
|
+
SemanticPuppet::Dependency.add_source(module_repository)
|
45
45
|
end
|
46
46
|
|
47
47
|
else
|
48
|
-
|
49
|
-
|
48
|
+
SemanticPuppet::Dependency.add_source(installed_modules_source) unless forced?
|
49
|
+
SemanticPuppet::Dependency.add_source(module_repository)
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
@@ -59,7 +59,7 @@ module Puppet::ModuleTool
|
|
59
59
|
begin
|
60
60
|
if installed_module = installed_modules[name]
|
61
61
|
unless forced?
|
62
|
-
if
|
62
|
+
if SemanticPuppet::VersionRange.parse(version).include? installed_module.version
|
63
63
|
results[:result] = :noop
|
64
64
|
results[:version] = installed_module.version
|
65
65
|
return results
|
@@ -103,7 +103,7 @@ module Puppet::ModuleTool
|
|
103
103
|
# locking it to upgrades within the same major version.
|
104
104
|
installed_range = ">=#{version} #{version.major}.x"
|
105
105
|
graph.add_constraint('installed', mod, installed_range) do |node|
|
106
|
-
|
106
|
+
SemanticPuppet::VersionRange.parse(installed_range).include? node.version
|
107
107
|
end
|
108
108
|
|
109
109
|
release.mod.dependencies.each do |dep|
|
@@ -111,7 +111,7 @@ module Puppet::ModuleTool
|
|
111
111
|
|
112
112
|
range = dep['version_requirement']
|
113
113
|
graph.add_constraint("#{mod} constraint", dep_name, range) do |node|
|
114
|
-
|
114
|
+
SemanticPuppet::VersionRange.parse(range).include? node.version
|
115
115
|
end
|
116
116
|
end
|
117
117
|
end
|
@@ -125,8 +125,8 @@ module Puppet::ModuleTool
|
|
125
125
|
|
126
126
|
begin
|
127
127
|
Puppet.info "Resolving dependencies ..."
|
128
|
-
releases =
|
129
|
-
rescue
|
128
|
+
releases = SemanticPuppet::Dependency.resolve(graph)
|
129
|
+
rescue SemanticPuppet::Dependency::UnsatisfiableGraph
|
130
130
|
raise NoVersionsSatisfyError, results.merge(:requested_name => name)
|
131
131
|
end
|
132
132
|
|
@@ -205,15 +205,15 @@ module Puppet::ModuleTool
|
|
205
205
|
end
|
206
206
|
|
207
207
|
def build_single_module_graph(name, version)
|
208
|
-
range =
|
209
|
-
graph =
|
210
|
-
releases =
|
208
|
+
range = SemanticPuppet::VersionRange.parse(version)
|
209
|
+
graph = SemanticPuppet::Dependency::Graph.new(name => range)
|
210
|
+
releases = SemanticPuppet::Dependency.fetch_releases(name)
|
211
211
|
releases.each { |release| release.dependencies.clear }
|
212
212
|
graph << releases
|
213
213
|
end
|
214
214
|
|
215
215
|
def build_dependency_graph(name, version)
|
216
|
-
|
216
|
+
SemanticPuppet::Dependency.query(name => version)
|
217
217
|
end
|
218
218
|
|
219
219
|
def build_install_graph(release, installed, graphed = [])
|
@@ -21,8 +21,8 @@ module Puppet::ModuleTool
|
|
21
21
|
@ignore_changes = forced? || options[:ignore_changes]
|
22
22
|
@ignore_dependencies = forced? || options[:ignore_dependencies]
|
23
23
|
|
24
|
-
|
25
|
-
|
24
|
+
SemanticPuppet::Dependency.add_source(installed_modules_source)
|
25
|
+
SemanticPuppet::Dependency.add_source(module_repository)
|
26
26
|
end
|
27
27
|
|
28
28
|
def run
|
@@ -48,7 +48,7 @@ module Puppet::ModuleTool
|
|
48
48
|
|
49
49
|
installed_release = installed_modules[name]
|
50
50
|
|
51
|
-
# `priority` is an attribute of a `
|
51
|
+
# `priority` is an attribute of a `SemanticPuppet::Dependency::Source`,
|
52
52
|
# which is delegated through `ModuleRelease` instances for the sake of
|
53
53
|
# comparison (sorting). By default, the `InstalledModules` source has
|
54
54
|
# a priority of 10 (making it the most preferable source, so that
|
@@ -66,7 +66,7 @@ module Puppet::ModuleTool
|
|
66
66
|
end
|
67
67
|
|
68
68
|
mod = installed_release.mod
|
69
|
-
results[:installed_version] =
|
69
|
+
results[:installed_version] = SemanticPuppet::Version.parse(mod.version)
|
70
70
|
dir = Pathname.new(mod.modulepath)
|
71
71
|
|
72
72
|
vstring = mod.version ? "v#{mod.version}" : '???'
|
@@ -90,7 +90,7 @@ module Puppet::ModuleTool
|
|
90
90
|
if available_versions.empty?
|
91
91
|
raise NoCandidateReleasesError, results.merge(:module_name => name, :source => module_repository.host)
|
92
92
|
elsif results[:requested_version] != :latest
|
93
|
-
requested =
|
93
|
+
requested = SemanticPuppet::VersionRange.parse(results[:requested_version])
|
94
94
|
unless available_versions.any? {|m| requested.include? m.version}
|
95
95
|
raise NoCandidateReleasesError, results.merge(:module_name => name, :source => module_repository.host)
|
96
96
|
end
|
@@ -119,7 +119,7 @@ module Puppet::ModuleTool
|
|
119
119
|
# module, locking it to upgrades within the same major version.
|
120
120
|
installed_range = ">=#{version} #{version.major}.x"
|
121
121
|
graph.add_constraint('installed', installed_module, installed_range) do |node|
|
122
|
-
|
122
|
+
SemanticPuppet::VersionRange.parse(installed_range).include? node.version
|
123
123
|
end
|
124
124
|
|
125
125
|
release.mod.dependencies.each do |dep|
|
@@ -127,7 +127,7 @@ module Puppet::ModuleTool
|
|
127
127
|
|
128
128
|
range = dep['version_requirement']
|
129
129
|
graph.add_constraint("#{installed_module} constraint", dep_name, range) do |node|
|
130
|
-
|
130
|
+
SemanticPuppet::VersionRange.parse(range).include? node.version
|
131
131
|
end
|
132
132
|
end
|
133
133
|
end
|
@@ -135,8 +135,8 @@ module Puppet::ModuleTool
|
|
135
135
|
|
136
136
|
begin
|
137
137
|
Puppet.info "Resolving dependencies ..."
|
138
|
-
releases =
|
139
|
-
rescue
|
138
|
+
releases = SemanticPuppet::Dependency.resolve(graph)
|
139
|
+
rescue SemanticPuppet::Dependency::UnsatisfiableGraph
|
140
140
|
raise NoVersionsSatisfyError, results.merge(:requested_name => name)
|
141
141
|
end
|
142
142
|
|
@@ -227,15 +227,15 @@ module Puppet::ModuleTool
|
|
227
227
|
end
|
228
228
|
|
229
229
|
def build_single_module_graph(name, version)
|
230
|
-
range =
|
231
|
-
graph =
|
232
|
-
releases =
|
230
|
+
range = SemanticPuppet::VersionRange.parse(version)
|
231
|
+
graph = SemanticPuppet::Dependency::Graph.new(name => range)
|
232
|
+
releases = SemanticPuppet::Dependency.fetch_releases(name)
|
233
233
|
releases.each { |release| release.dependencies.clear }
|
234
234
|
graph << releases
|
235
235
|
end
|
236
236
|
|
237
237
|
def build_dependency_graph(name, version)
|
238
|
-
|
238
|
+
SemanticPuppet::Dependency.query(name => version)
|
239
239
|
end
|
240
240
|
|
241
241
|
def build_install_graph(release, installed, graphed = [])
|
@@ -4,7 +4,7 @@ require 'puppet/forge'
|
|
4
4
|
require 'puppet/module_tool'
|
5
5
|
|
6
6
|
module Puppet::ModuleTool
|
7
|
-
class InstalledModules <
|
7
|
+
class InstalledModules < SemanticPuppet::Dependency::Source
|
8
8
|
attr_reader :modules, :by_name
|
9
9
|
|
10
10
|
def priority
|
@@ -33,9 +33,9 @@ module Puppet::ModuleTool
|
|
33
33
|
# Fetches {ModuleRelease} entries for each release of the named module.
|
34
34
|
#
|
35
35
|
# @param name [String] the module name to look up
|
36
|
-
# @return [Array<
|
36
|
+
# @return [Array<SemanticPuppet::Dependency::ModuleRelease>] a list of releases for
|
37
37
|
# the given name
|
38
|
-
# @see
|
38
|
+
# @see SemanticPuppet::Dependency::Source#fetch
|
39
39
|
def fetch(name)
|
40
40
|
name = name.tr('/', '-')
|
41
41
|
|
@@ -51,7 +51,7 @@ module Puppet::ModuleTool
|
|
51
51
|
@fetched
|
52
52
|
end
|
53
53
|
|
54
|
-
class ModuleRelease <
|
54
|
+
class ModuleRelease < SemanticPuppet::Dependency::ModuleRelease
|
55
55
|
attr_reader :mod, :metadata
|
56
56
|
|
57
57
|
def initialize(source, mod)
|
@@ -59,10 +59,10 @@ module Puppet::ModuleTool
|
|
59
59
|
@metadata = mod.metadata
|
60
60
|
name = mod.forge_name.tr('/', '-')
|
61
61
|
begin
|
62
|
-
version =
|
63
|
-
rescue
|
62
|
+
version = SemanticPuppet::Version.parse(mod.version)
|
63
|
+
rescue SemanticPuppet::Version::ValidationFailure => e
|
64
64
|
Puppet.warning "#{mod.name} (#{mod.path}) has an invalid version number (#{mod.version}). The version has been set to 0.0.0. If you are the maintainer for this module, please update the metadata.json with a valid Semantic Version (http://semver.org)."
|
65
|
-
version =
|
65
|
+
version = SemanticPuppet::Version.parse("0.0.0")
|
66
66
|
end
|
67
67
|
release = "#{name}@#{version}"
|
68
68
|
|
@@ -5,7 +5,7 @@ require 'puppet/forge'
|
|
5
5
|
require 'puppet/module_tool'
|
6
6
|
|
7
7
|
module Puppet::ModuleTool
|
8
|
-
class LocalTarball <
|
8
|
+
class LocalTarball < SemanticPuppet::Dependency::Source
|
9
9
|
attr_accessor :release
|
10
10
|
|
11
11
|
def initialize(filename)
|
@@ -40,14 +40,14 @@ module Puppet::ModuleTool
|
|
40
40
|
FileUtils.mv(staging_dir, module_dir)
|
41
41
|
end
|
42
42
|
|
43
|
-
class ModuleRelease <
|
43
|
+
class ModuleRelease < SemanticPuppet::Dependency::ModuleRelease
|
44
44
|
attr_reader :mod, :install_dir, :metadata
|
45
45
|
|
46
46
|
def initialize(source, mod)
|
47
47
|
@mod = mod
|
48
48
|
@metadata = mod.metadata
|
49
49
|
name = mod.forge_name.tr('/', '-')
|
50
|
-
version =
|
50
|
+
version = SemanticPuppet::Version.parse(mod.version)
|
51
51
|
release = "#{name}@#{version}"
|
52
52
|
|
53
53
|
if mod.dependencies
|
@@ -213,7 +213,7 @@ module Puppet::ModuleTool
|
|
213
213
|
|
214
214
|
# Validates that the version range can be parsed by Semantic.
|
215
215
|
def validate_version_range(version_range)
|
216
|
-
|
216
|
+
SemanticPuppet::VersionRange.parse(version_range)
|
217
217
|
rescue ArgumentError => e
|
218
218
|
raise ArgumentError, "Invalid 'version_range' field in metadata.json: #{e}"
|
219
219
|
end
|
@@ -197,6 +197,8 @@ module Puppet::Network::HTTP
|
|
197
197
|
end
|
198
198
|
|
199
199
|
def apply_options_to(request, options)
|
200
|
+
request["User-Agent"] = Puppet[:http_user_agent]
|
201
|
+
|
200
202
|
if options[:basic_auth]
|
201
203
|
request.basic_auth(options[:basic_auth][:user], options[:basic_auth][:password])
|
202
204
|
end
|
@@ -73,7 +73,8 @@ class Puppet::Network::HTTP::WEBrick
|
|
73
73
|
file = Puppet[:masterhttplog]
|
74
74
|
|
75
75
|
# open the log manually to prevent file descriptor leak
|
76
|
-
|
76
|
+
# webrick logged strings may contain UTF-8
|
77
|
+
file_io = ::File.open(file, "a+:UTF-8")
|
77
78
|
file_io.sync = true
|
78
79
|
if defined?(Fcntl::FD_CLOEXEC)
|
79
80
|
file_io.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC)
|
@@ -77,6 +77,20 @@ $users = hiera('users') | $key | { "Key \'${key}\' not found" }
|
|
77
77
|
The returned value's data type depends on the types of the results. In the example
|
78
78
|
above, Hiera matches the 'users' key and returns it as a hash.
|
79
79
|
|
80
|
+
The `hiera` function is deprecated in favor of using `lookup` and will be removed in 6.0.0.
|
81
|
+
See https://docs.puppet.com/puppet/#{Puppet.version}/reference/deprecated_language.html.
|
82
|
+
Replace the calls as follows:
|
83
|
+
|
84
|
+
| from | to |
|
85
|
+
| ---- | ---|
|
86
|
+
| hiera($key) | lookup($key) |
|
87
|
+
| hiera($key, $default) | lookup($key, { 'default_value' => $default }) |
|
88
|
+
| hiera($key, $default, $level) | override level not supported |
|
89
|
+
|
90
|
+
Note that calls using the 'override level' option are not directly supported by 'lookup' and the produced
|
91
|
+
result must be post processed to get exactly the same result, for example using simple hash/array `+` or
|
92
|
+
with calls to stdlib's `deep_merge` function depending on kind of hiera call and setting of merge in hiera.yaml.
|
93
|
+
|
80
94
|
See
|
81
95
|
[the documentation](https://docs.puppetlabs.com/hiera/latest/puppet.html#hiera-lookup-functions)
|
82
96
|
for more information about Hiera lookup functions.
|
@@ -65,6 +65,20 @@ $allusers = hiera_array('users') | $key | { "Key \'${key}\' not found" }
|
|
65
65
|
`hiera_array` expects that all values returned will be strings or arrays. If any matched
|
66
66
|
value is a hash, Puppet raises a type mismatch error.
|
67
67
|
|
68
|
+
`hiera_array` is deprecated in favor of using `lookup` and will be removed in 6.0.0.
|
69
|
+
See https://docs.puppet.com/puppet/#{Puppet.version}/reference/deprecated_language.html.
|
70
|
+
Replace the calls as follows:
|
71
|
+
|
72
|
+
| from | to |
|
73
|
+
| ---- | ---|
|
74
|
+
| hiera_array($key) | lookup($key, { 'merge' => 'unique' }) |
|
75
|
+
| hiera_array($key, $default) | lookup($key, { 'default_value' => $default, 'merge' => 'unique' }) |
|
76
|
+
| hiera_array($key, $default, $level) | override level not supported |
|
77
|
+
|
78
|
+
Note that calls using the 'override level' option are not directly supported by 'lookup' and the produced
|
79
|
+
result must be post processed to get exactly the same result, for example using simple hash/array `+` or
|
80
|
+
with calls to stdlib's `deep_merge` function depending on kind of hiera call and setting of merge in hiera.yaml.
|
81
|
+
|
68
82
|
See
|
69
83
|
[the documentation](https://docs.puppetlabs.com/hiera/latest/puppet.html#hiera-lookup-functions)
|
70
84
|
for more information about Hiera lookup functions.
|
@@ -75,6 +75,20 @@ $allusers = hiera_hash('users') | $key | { "Key \'${key}\' not found" }
|
|
75
75
|
`hiera_hash` expects that all values returned will be hashes. If any of the values
|
76
76
|
found in the data sources are strings or arrays, Puppet raises a type mismatch error.
|
77
77
|
|
78
|
+
`hiera_hash` is deprecated in favor of using `lookup` and will be removed in 6.0.0.
|
79
|
+
See https://docs.puppet.com/puppet/#{Puppet.version}/reference/deprecated_language.html.
|
80
|
+
Replace the calls as follows:
|
81
|
+
|
82
|
+
| from | to |
|
83
|
+
| ---- | ---|
|
84
|
+
| hiera_hash($key) | lookup($key, { 'merge' => 'hash' }) |
|
85
|
+
| hiera_hash($key, $default) | lookup($key, { 'default_value' => $default, 'merge' => 'hash' }) |
|
86
|
+
| hiera_hash($key, $default, $level) | override level not supported |
|
87
|
+
|
88
|
+
Note that calls using the 'override level' option are not directly supported by 'lookup' and the produced
|
89
|
+
result must be post processed to get exactly the same result, for example using simple hash/array `+` or
|
90
|
+
with calls to stdlib's `deep_merge` function depending on kind of hiera call and setting of merge in hiera.yaml.
|
91
|
+
|
78
92
|
See
|
79
93
|
[the documentation](https://docs.puppetlabs.com/hiera/latest/puppet.html#hiera-lookup-functions)
|
80
94
|
for more information about Hiera lookup functions.
|
@@ -75,6 +75,20 @@ hiera_include('classes') | $key | {"Key \'${key}\' not found" }
|
|
75
75
|
# "Key 'classes' not found".
|
76
76
|
~~~
|
77
77
|
|
78
|
+
`hiera_include` is deprecated in favor of using a combination of `include`and `lookup` and will be
|
79
|
+
removed in 6.0.0. See https://docs.puppet.com/puppet/#{Puppet.version}/reference/deprecated_language.html.
|
80
|
+
Replace the calls as follows:
|
81
|
+
|
82
|
+
| from | to |
|
83
|
+
| ---- | ---|
|
84
|
+
| hiera_include($key) | include(lookup($key, { 'merge' => 'unique' })) |
|
85
|
+
| hiera_include($key, $default) | include(lookup($key, { 'default_value' => $default, 'merge' => 'unique' })) |
|
86
|
+
| hiera_include($key, $default, $level) | override level not supported |
|
87
|
+
|
88
|
+
Note that calls using the 'override level' option are not directly supported by 'lookup' and the produced
|
89
|
+
result must be post processed to get exactly the same result, for example using simple hash/array `+` or
|
90
|
+
with calls to stdlib's `deep_merge` function depending on kind of hiera call and setting of merge in hiera.yaml.
|
91
|
+
|
78
92
|
See [the documentation](http://links.puppetlabs.com/hierainclude) for more information
|
79
93
|
and a more detailed example of how `hiera_include` uses array merge lookups to classify
|
80
94
|
nodes.
|
data/lib/puppet/parser/scope.rb
CHANGED
@@ -23,6 +23,7 @@ class Puppet::Parser::Scope
|
|
23
23
|
|
24
24
|
# Variables that always exist with nil value even if not set
|
25
25
|
BUILT_IN_VARS = ['module_name'.freeze, 'caller_module_name'.freeze].freeze
|
26
|
+
EMPTY_HASH = {}.freeze
|
26
27
|
|
27
28
|
Puppet::Util.logmethods(self)
|
28
29
|
|
@@ -83,11 +84,8 @@ class Puppet::Parser::Scope
|
|
83
84
|
end
|
84
85
|
|
85
86
|
def [](name)
|
86
|
-
|
87
|
-
|
88
|
-
else
|
89
|
-
super
|
90
|
-
end
|
87
|
+
val = @symbols[name]
|
88
|
+
val.nil? && !@symbols.include?(val) ? super : val
|
91
89
|
end
|
92
90
|
|
93
91
|
def is_local_scope?
|
@@ -486,28 +484,24 @@ class Puppet::Parser::Scope
|
|
486
484
|
# @return Object the value of the variable, or nil if it's not found
|
487
485
|
#
|
488
486
|
# @api public
|
489
|
-
def lookupvar(name, options =
|
487
|
+
def lookupvar(name, options = EMPTY_HASH)
|
490
488
|
unless name.is_a? String
|
491
489
|
raise Puppet::ParseError, "Scope variable name #{name.inspect} is a #{name.class}, not a string"
|
492
490
|
end
|
493
491
|
|
494
|
-
table = @ephemeral.last
|
495
|
-
|
496
492
|
if name =~ /^(.*)::(.+)$/
|
497
|
-
|
498
|
-
|
499
|
-
|
493
|
+
return lookup_qualified_variable($1, $2, options)
|
494
|
+
end
|
495
|
+
|
496
|
+
table = @ephemeral.last
|
497
|
+
val = table[name]
|
498
|
+
return val unless val.nil? && !table.include?(name)
|
500
499
|
|
501
|
-
|
502
|
-
|
503
|
-
|
500
|
+
next_scope = inherited_scope || enclosing_scope
|
501
|
+
if next_scope
|
502
|
+
next_scope.lookupvar(name, options)
|
504
503
|
else
|
505
|
-
|
506
|
-
if next_scope
|
507
|
-
next_scope.lookupvar(name, options)
|
508
|
-
else
|
509
|
-
variable_not_found(name)
|
510
|
-
end
|
504
|
+
variable_not_found(name)
|
511
505
|
end
|
512
506
|
end
|
513
507
|
|
@@ -1,25 +1,37 @@
|
|
1
1
|
require 'puppet/pops/lookup/interpolation'
|
2
2
|
|
3
|
+
# TODO: API 5.0, remove this module
|
4
|
+
# @api private
|
5
|
+
# @deprecated
|
3
6
|
module Puppet::Plugins::DataProviders
|
4
|
-
# @
|
7
|
+
# @deprecated
|
5
8
|
module DataProvider
|
9
|
+
include Puppet::Pops::Lookup::DataProvider
|
6
10
|
include Puppet::Pops::Lookup::Interpolation
|
7
11
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
def key_lookup(key, lookup_invocation, merge)
|
13
|
+
lookup(key.to_s, lookup_invocation, merge)
|
14
|
+
end
|
15
|
+
|
16
|
+
def unchecked_key_lookup(key, lookup_invocation, merge)
|
17
|
+
unchecked_lookup(key.to_s, lookup_invocation, merge)
|
18
|
+
end
|
19
|
+
|
20
|
+
# @deprecated
|
21
|
+
def lookup(key, lookup_invocation, merge)
|
22
|
+
lookup_invocation.check(key) { unchecked_lookup(key, lookup_invocation, merge) }
|
15
23
|
end
|
16
24
|
|
17
25
|
# Performs a lookup with the assumption that a recursive check has been made.
|
18
26
|
#
|
19
27
|
# @param key [String] The key to lookup
|
20
28
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
21
|
-
# @param merge [String|Hash
|
29
|
+
# @param merge [String|Hash{String => Object}] Merge strategy or hash with strategy and options
|
22
30
|
def unchecked_lookup(key, lookup_invocation, merge)
|
31
|
+
unless Puppet[:strict] == :off
|
32
|
+
Puppet.warn_once(:deprecation, 'DataProvider#unchecked_lookup',
|
33
|
+
'DataProvider#unchecked_lookup is deprecated and will be removed in the next major version of Puppet')
|
34
|
+
end
|
23
35
|
segments = split_key(key)
|
24
36
|
root_key = segments.shift
|
25
37
|
lookup_invocation.with(:data_provider, self) do
|
@@ -41,6 +53,7 @@ module Puppet::Plugins::DataProviders
|
|
41
53
|
# @param value [Object] The value to perform post processing on
|
42
54
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
43
55
|
# @return [Object] The result of post processing the value.
|
56
|
+
# @deprecated
|
44
57
|
def post_process(value, lookup_invocation)
|
45
58
|
interpolate(value, lookup_invocation, true)
|
46
59
|
end
|
@@ -56,10 +69,15 @@ module Puppet::Plugins::DataProviders
|
|
56
69
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
57
70
|
# @param merge [String|Hash<String,Object>|nil] Merge strategy or hash with strategy and options
|
58
71
|
# @return [Hash] The data hash for the given _key_
|
72
|
+
# @deprecated
|
59
73
|
def data(data_key, lookup_invocation)
|
74
|
+
unless Puppet[:strict] == :off
|
75
|
+
Puppet.warn_once(:deprecation, 'DataProvider#data',
|
76
|
+
'DataProvider#data is deprecated and will be removed in the next major version of Puppet')
|
77
|
+
end
|
60
78
|
compiler = lookup_invocation.scope.compiler
|
61
79
|
adapter = Puppet::DataProviders::DataAdapter.get(compiler) || Puppet::DataProviders::DataAdapter.adapt(compiler)
|
62
|
-
adapter.data[data_key] ||= validate_data(initialize_data(data_key, lookup_invocation)
|
80
|
+
adapter.data[data_key] ||= validate_data(initialize_data(data_key, lookup_invocation))
|
63
81
|
end
|
64
82
|
protected :data
|
65
83
|
|
@@ -67,7 +85,12 @@ module Puppet::Plugins::DataProviders
|
|
67
85
|
#
|
68
86
|
# @param key [String] The key to lookup
|
69
87
|
# @return [String,nil] The data key or nil if not applicable
|
88
|
+
# @deprecated
|
70
89
|
def data_key(key, lookup_invocation)
|
90
|
+
unless Puppet[:strict] == :off
|
91
|
+
Puppet.warn_once(:deprecation, 'DataProvider#data_key',
|
92
|
+
'DataProvider#data_key is deprecated and will be removed in the next major version of Puppet')
|
93
|
+
end
|
71
94
|
nil
|
72
95
|
end
|
73
96
|
|
@@ -76,7 +99,12 @@ module Puppet::Plugins::DataProviders
|
|
76
99
|
# @param data_key [String] The data key such as the name of a module or the constant 'environment'
|
77
100
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
78
101
|
# @return [Hash] The hash of values
|
102
|
+
# @deprecated
|
79
103
|
def initialize_data(data_key, lookup_invocation)
|
104
|
+
unless Puppet[:strict] == :off
|
105
|
+
Puppet.warn_once(:deprecation, 'DataProvider#initialize_data',
|
106
|
+
'DataProvider#initialize_data is deprecated and will be removed in the next major version of Puppet')
|
107
|
+
end
|
80
108
|
{}
|
81
109
|
end
|
82
110
|
protected :initialize_data
|
@@ -86,23 +114,38 @@ module Puppet::Plugins::DataProviders
|
|
86
114
|
cname[cname.rindex(':')+1..-1]
|
87
115
|
end
|
88
116
|
|
117
|
+
# @deprecated
|
89
118
|
def validate_data(data, data_key)
|
90
119
|
data
|
91
120
|
end
|
92
121
|
end
|
93
122
|
|
123
|
+
# TODO: API 5.0 Remove this class
|
124
|
+
# @deprecated
|
94
125
|
# @api private
|
95
126
|
class ModuleDataProvider
|
96
|
-
LOOKUP_OPTIONS =
|
127
|
+
LOOKUP_OPTIONS = 'lookup_options'.freeze
|
97
128
|
include DataProvider
|
98
129
|
|
130
|
+
attr_reader :module_name
|
131
|
+
|
132
|
+
def initialize(module_name = nil)
|
133
|
+
unless Puppet[:strict] == :off
|
134
|
+
Puppet.warn_once(:deprecation, 'Plugins::DataProviders::ModuleDataProvider',
|
135
|
+
'Plugins::DataProviders::ModuleDataProvider is deprecated and will be removed in the next major version of Puppet')
|
136
|
+
end
|
137
|
+
@module_name = module_name || Puppet::Pops::Lookup::Invocation.current.module_name
|
138
|
+
end
|
139
|
+
|
99
140
|
# Retrieve the first segment of the qualified name _key_. This method will throw
|
100
141
|
# :no_such_key unless the segment can be extracted.
|
101
142
|
#
|
102
143
|
# @param key [String] The key
|
103
144
|
# @return [String] The first segment of the given key
|
145
|
+
# @api private
|
146
|
+
# @deprecated
|
104
147
|
def data_key(key, lookup_invocation)
|
105
|
-
return
|
148
|
+
return module_name if key == LOOKUP_OPTIONS
|
106
149
|
qual_index = key.index('::')
|
107
150
|
throw :no_such_key if qual_index.nil?
|
108
151
|
key[0..qual_index-1]
|
@@ -132,10 +175,21 @@ module Puppet::Plugins::DataProviders
|
|
132
175
|
end
|
133
176
|
end
|
134
177
|
|
178
|
+
# TODO: API 5.0 Remove this class
|
179
|
+
# @deprecated
|
135
180
|
# @api private
|
136
181
|
class EnvironmentDataProvider
|
137
182
|
include DataProvider
|
138
183
|
|
184
|
+
def initialize
|
185
|
+
unless Puppet[:strict] == :off
|
186
|
+
Puppet.warn_once(:deprecation, 'Plugins::DataProviders::EnvironmentDataProvider',
|
187
|
+
'Plugins::DataProviders::EnvironmentDataProvider is deprecated and will be removed in the next major version of Puppet')
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
# @api private
|
192
|
+
# @deprecated
|
139
193
|
def data_key(key, lookup_invocation)
|
140
194
|
'environment'
|
141
195
|
end
|
@@ -145,11 +199,13 @@ module Puppet::Plugins::DataProviders
|
|
145
199
|
# the fully resolved path, and whether or the resolved path exists.
|
146
200
|
#
|
147
201
|
# @api private
|
202
|
+
# @deprecated
|
148
203
|
class ResolvedPath
|
149
204
|
attr_reader :original_path, :path
|
150
205
|
|
151
206
|
# @param original_path [String] path as found in declaration. May contain interpolation expressions
|
152
207
|
# @param path [Pathname] the expanded absolute path
|
208
|
+
# @deprecated
|
153
209
|
def initialize(original_path, path)
|
154
210
|
@original_path = original_path
|
155
211
|
@path = path
|
@@ -157,11 +213,12 @@ module Puppet::Plugins::DataProviders
|
|
157
213
|
end
|
158
214
|
|
159
215
|
# @return [Boolean] cached info if the path exists or not
|
160
|
-
# @
|
216
|
+
# @deprecated
|
161
217
|
def exists?
|
162
218
|
@exists = @path.exist? if @exists.nil?
|
163
219
|
@exists
|
164
220
|
end
|
221
|
+
alias exist? exists?
|
165
222
|
end
|
166
223
|
|
167
224
|
# A data provider that is initialized with a set of _paths_. When performing lookup, each
|
@@ -170,6 +227,7 @@ module Puppet::Plugins::DataProviders
|
|
170
227
|
#
|
171
228
|
# @abstract
|
172
229
|
# @api private
|
230
|
+
# @deprecated
|
173
231
|
class PathBasedDataProvider
|
174
232
|
include DataProvider
|
175
233
|
|
@@ -178,7 +236,12 @@ module Puppet::Plugins::DataProviders
|
|
178
236
|
# @param name [String] The name of the data provider
|
179
237
|
# @param paths [Array<ResolvedPath>] Paths used by this provider
|
180
238
|
# @param parent_data_provider [DataProvider] The data provider that is the container of this data provider
|
239
|
+
# @deprecated
|
181
240
|
def initialize(name, paths, parent_data_provider = nil)
|
241
|
+
unless Puppet[:strict] == :off
|
242
|
+
Puppet.warn_once(:deprecation, 'PathBasedDataProvider',
|
243
|
+
'PathBasedDataProvider is deprecated and will be removed in the next major version of Puppet')
|
244
|
+
end
|
182
245
|
@name = name
|
183
246
|
@paths = paths
|
184
247
|
@parent_data_provider = parent_data_provider
|
@@ -196,6 +259,7 @@ module Puppet::Plugins::DataProviders
|
|
196
259
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
197
260
|
# @param merge [String|Hash<String,Object>|nil] Merge strategy or hash with strategy and options
|
198
261
|
# @return [Hash] The data hash for the given _key_
|
262
|
+
# @deprecated
|
199
263
|
def load_data(path, data_key, lookup_invocation)
|
200
264
|
compiler = lookup_invocation.scope.compiler
|
201
265
|
adapter = Puppet::DataProviders::DataAdapter.get(compiler) || Puppet::DataProviders::DataAdapter.adapt(compiler)
|
@@ -203,6 +267,7 @@ module Puppet::Plugins::DataProviders
|
|
203
267
|
end
|
204
268
|
protected :data
|
205
269
|
|
270
|
+
# @deprecated
|
206
271
|
def validate_data(data, module_name)
|
207
272
|
@parent_data_provider.nil? ? data : @parent_data_provider.validate_data(data, module_name)
|
208
273
|
end
|
@@ -213,6 +278,7 @@ module Puppet::Plugins::DataProviders
|
|
213
278
|
# @param key [String] The key to lookup
|
214
279
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
215
280
|
# @param merge [Puppet::Pops::MergeStrategy,String,Hash<String,Object>,nil] Merge strategy or hash with strategy and options
|
281
|
+
# @deprecated
|
216
282
|
def unchecked_lookup(key, lookup_invocation, merge)
|
217
283
|
segments = split_key(key)
|
218
284
|
root_key = segments.shift
|
@@ -222,7 +288,7 @@ module Puppet::Plugins::DataProviders
|
|
222
288
|
merge_strategy = Puppet::Pops::MergeStrategy.strategy(merge)
|
223
289
|
lookup_invocation.with(:merge, merge_strategy) do
|
224
290
|
merged_result = merge_strategy.merge_lookup(@paths) do |path|
|
225
|
-
lookup_invocation.with(:
|
291
|
+
lookup_invocation.with(:location, path) do
|
226
292
|
if path.exists?
|
227
293
|
hash = load_data(path.path, module_name, lookup_invocation)
|
228
294
|
value = hash[root_key]
|
@@ -234,7 +300,7 @@ module Puppet::Plugins::DataProviders
|
|
234
300
|
throw :no_such_key
|
235
301
|
end
|
236
302
|
else
|
237
|
-
lookup_invocation.
|
303
|
+
lookup_invocation.report_location_not_found
|
238
304
|
throw :no_such_key
|
239
305
|
end
|
240
306
|
end
|
@@ -245,17 +311,28 @@ module Puppet::Plugins::DataProviders
|
|
245
311
|
end
|
246
312
|
end
|
247
313
|
|
314
|
+
# TODO: API 5.0 Remove this class
|
248
315
|
# Factory for creating path based data providers
|
249
316
|
#
|
250
317
|
# @abstract
|
251
318
|
# @api private
|
319
|
+
# @deprecated
|
252
320
|
class PathBasedDataProviderFactory
|
321
|
+
# @deprecated
|
322
|
+
def initialize
|
323
|
+
unless Puppet[:strict] == :off
|
324
|
+
Puppet.warn_once(:deprecation, 'PathBasedDataProviderFactory',
|
325
|
+
'PathBasedDataProviderFactory is deprecated and will be removed in the next major version of Puppet')
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
253
329
|
# Create a path based data provider with the given _name_ and _paths_
|
254
330
|
#
|
255
331
|
# @param name [String] the name of the created provider (for logging and debugging)
|
256
332
|
# @param paths [Array<String>] array of resolved paths
|
257
333
|
# @param parent_data_provider [DataProvider] The data provider that is the container of this data provider
|
258
334
|
# @return [DataProvider] The created data provider
|
335
|
+
# @deprecated
|
259
336
|
def create(name, paths, parent_data_provider)
|
260
337
|
raise NotImplementedError, "Subclass of PathBasedDataProviderFactory must implement 'create' method"
|
261
338
|
end
|
@@ -271,6 +348,7 @@ module Puppet::Plugins::DataProviders
|
|
271
348
|
# @param paths [Array<String>] paths that have been preprocessed (interpolations resolved)
|
272
349
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
273
350
|
# @return [Array<ResolvedPath>] Array of resolved paths
|
351
|
+
# @deprecated
|
274
352
|
def resolve_paths(datadir, declared_paths, paths, lookup_invocation)
|
275
353
|
[]
|
276
354
|
end
|
@@ -283,30 +361,43 @@ module Puppet::Plugins::DataProviders
|
|
283
361
|
end
|
284
362
|
end
|
285
363
|
|
364
|
+
# TODO: API 5.0 Remove this class
|
286
365
|
# Factory for creating file based data providers. This is an extension of the path based
|
287
366
|
# factory where it is required that each resolved path appoints an existing file in the local
|
288
367
|
# file system.
|
289
368
|
#
|
290
369
|
# @abstract
|
291
370
|
# @api private
|
371
|
+
# @deprecated
|
292
372
|
class FileBasedDataProviderFactory < PathBasedDataProviderFactory
|
373
|
+
# @deprecated
|
374
|
+
def initialize
|
375
|
+
unless Puppet[:strict] == :off
|
376
|
+
Puppet.warn_once(:deprecation, 'FileBasedDataProviderFactory',
|
377
|
+
'FileBasedDataProviderFactory is deprecated and will be removed in the next major version of Puppet')
|
378
|
+
end
|
379
|
+
end
|
380
|
+
|
293
381
|
# @param datadir [Pathname] The base when creating absolute paths
|
294
382
|
# @param declared_paths [Array<String>] paths as found in declaration. May contain interpolation expressions
|
295
383
|
# @param paths [Array<String>] paths that have been preprocessed (interpolations resolved)
|
296
384
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
297
|
-
# @return [Array<
|
385
|
+
# @return [Array<Puppet::DataProviders::ResolvedLocation>] Array of resolved paths
|
386
|
+
# @deprecated
|
298
387
|
def resolve_paths(datadir, declared_paths, paths, lookup_invocation)
|
299
388
|
resolved_paths = []
|
300
389
|
unless paths.nil? || datadir.nil?
|
301
390
|
ext = path_extension
|
302
391
|
paths.each_with_index do |path, idx|
|
303
392
|
path = path + ext unless path.end_with?(ext)
|
304
|
-
|
393
|
+
path = datadir + path
|
394
|
+
resolved_paths << Puppet::Pops::Lookup::ResolvedLocation.new(declared_paths[idx], path, path.exist?)
|
305
395
|
end
|
306
396
|
end
|
307
397
|
resolved_paths
|
308
398
|
end
|
309
399
|
|
400
|
+
# @deprecated
|
310
401
|
def path_extension
|
311
402
|
raise NotImplementedError, "Subclass of FileBasedProviderFactory must implement 'path_extension' method"
|
312
403
|
end
|