puppet 4.8.2-universal-darwin → 4.9.0-universal-darwin
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/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/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/data_providers.rb +6 -3
- 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/face.erb +3 -0
- data/lib/puppet/face/help.rb +19 -17
- 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/windows.rb +8 -0
- data/lib/puppet/file_system.rb +15 -3
- data/lib/puppet/forge/repository.rb +1 -2
- data/lib/puppet/forge.rb +6 -6
- 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/face_collection.rb +1 -1
- data/lib/puppet/interface.rb +14 -2
- data/lib/puppet/module.rb +14 -2
- 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/module_tool.rb +4 -4
- 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/data_provider.rb +108 -17
- data/lib/puppet/plugins/data_providers/registry.rb +2 -36
- data/lib/puppet/plugins/data_providers.rb +2 -0
- 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/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/lookup.rb +4 -3
- 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/checker4_0.rb +12 -2
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/pops/validation.rb +1 -1
- data/lib/puppet/pops/visitor.rb +4 -3
- data/lib/puppet/pops.rb +6 -9
- 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/catalog.rb +12 -4
- data/lib/puppet/resource/type.rb +3 -3
- data/lib/puppet/resource.rb +2 -3
- 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/settings.rb +1 -1
- 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/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/util.rb +1 -0
- 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/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/lib/semantic → semantic_puppet/lib/semantic_puppet}/dependency.rb +7 -7
- 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/vendor/semantic_puppet/lib/semantic_puppet.rb +17 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +52 -0
- 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 -2595
- 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/dependency/module_release.rb +0 -60
- data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -7
- 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
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YmU1Y2MyNjEzNjkzNTJkZWVjNWJkZTQ2OTIzMmYzMWQ1YTY1MGIxOQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
OWRkMGE5Zjc4NWI3Y2VjOGI3ODBiN2JkZTA5NzZhYjI2MDdlYWViOQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MTJiODQzOTZiYzU1Y2Q3NThjYzAyYTkyZGFhMWIyNDI3Njg5MjU1M2JiNzQ3
|
10
|
+
MjVmNDg5OTlhNDVjMmJiOWYxMDM1MmM2NWZmZjU2NjU4OWU3MzQxZDc0Yzdi
|
11
|
+
MTljNWU0YjI2ODljMzIwODVhMjUxNjllNzYxMzY5YjRlMzhkNDU=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZWVlYTU3M2I5OTI0YWJjYWRiNGU4NWEzMjBiMzk1NjcwZmZiYTQzZTVhMDUz
|
14
|
+
ZmMxYjY4ODNhNWE1MWM0NGY5M2RjNWMzMmMzMTlmNjExODhkODdjNjA4Yjg2
|
15
|
+
NDA4MzZmNTM3NmVlYjhhODU2N2Y4ZTYxNmNkMTA4NWUzZjI1MmI=
|
data/CONTRIBUTING.md
CHANGED
@@ -104,13 +104,37 @@ a ticket number.
|
|
104
104
|
* After feedback has been given we expect responses within two weeks. After two
|
105
105
|
weeks we may close the pull request if it isn't showing any activity.
|
106
106
|
|
107
|
+
## Revert Policy
|
108
|
+
By running tests in advance and by engaging with peer review for prospective
|
109
|
+
changes, your contributions have a high probability of becoming long lived
|
110
|
+
parts of the the project. After being merged, the code will run through a
|
111
|
+
series of testing pipelines on a large number of operating system
|
112
|
+
environments. These pipelines can reveal incompatibilities that are difficult
|
113
|
+
to detect in advance.
|
114
|
+
|
115
|
+
If the code change results in a test failure, we will make our best effort to
|
116
|
+
correct the error. If a fix cannot be determined and committed within 24 hours
|
117
|
+
of its discovery, the commit(s) responsible _may_ be reverted, at the
|
118
|
+
discretion of the committer and Puppet maintainers. This action would be taken
|
119
|
+
to help maintain passing states in our testing pipelines.
|
120
|
+
|
121
|
+
The original contributor will be notified of the revert in the Jira ticket
|
122
|
+
associated with the change. A reference to the test(s) and operating system(s)
|
123
|
+
that failed as a result of the code change will also be added to the Jira
|
124
|
+
ticket. This test(s) should be used to check future submissions of the code to
|
125
|
+
ensure the issue has been resolved.
|
126
|
+
|
127
|
+
### Summary
|
128
|
+
* Changes resulting in test pipeline failures will be reverted if they cannot
|
129
|
+
be resolved within one business day.
|
130
|
+
|
107
131
|
# Additional Resources
|
108
132
|
|
109
133
|
* [Puppet community guidelines](https://docs.puppet.com/community/community_guidelines.html)
|
110
134
|
* [Bug tracker (Jira)](https://tickets.puppetlabs.com)
|
111
135
|
* [Contributor License Agreement](http://links.puppet.com/cla)
|
112
136
|
* [General GitHub documentation](https://help.github.com/)
|
113
|
-
* [GitHub pull request documentation](https://help.github.com/
|
137
|
+
* [GitHub pull request documentation](https://help.github.com/articles/creating-a-pull-request/)
|
114
138
|
* #puppet-dev IRC channel on freenode.org ([Archive](https://botbot.me/freenode/puppet-dev/))
|
115
139
|
* [puppet-dev mailing list](https://groups.google.com/forum/#!forum/puppet-dev)
|
116
140
|
* [Community PR Triage notes](https://github.com/puppet-community/community-triage/tree/master/core/notes)
|
data/Gemfile
CHANGED
@@ -26,10 +26,15 @@ end
|
|
26
26
|
gem "puppet", :path => File.dirname(__FILE__), :require => false
|
27
27
|
gem "facter", *location_for(ENV['FACTER_LOCATION'] || ['> 2.0', '< 4'])
|
28
28
|
gem "hiera", *location_for(ENV['HIERA_LOCATION'] || ['>= 2.0', '< 4'])
|
29
|
+
# PUP-7115 - return to a gem dependency in Puppet 5
|
30
|
+
# gem "semantic_puppet", *location_for(ENV['SEMANTIC_PUPPET_LOCATION'] || ['>= 0.1.3', '< 2'])
|
29
31
|
gem "rake", "10.1.1", :require => false
|
30
32
|
# Hiera has an unbound dependency on json_pure
|
31
33
|
# json_pure 2.0.2+ officially requires Ruby >= 2.0, but should have specified that in 2.0
|
32
34
|
gem 'json_pure', '~> 1.8', :require => false
|
35
|
+
# i18n support (gettext-setup and dependencies)
|
36
|
+
gem 'gettext-setup', '>= 0.10', '< 1.0', :require => false
|
37
|
+
gem 'locale', '~> 2.1', :require => false
|
33
38
|
|
34
39
|
group(:development, :test) do
|
35
40
|
gem "rspec", "~> 3.1", :require => false
|
@@ -58,6 +63,7 @@ group(:development, :test) do
|
|
58
63
|
gem 'addressable', '< 2.5.0'
|
59
64
|
gem 'webmock', '~> 1.24'
|
60
65
|
gem 'vcr', '~> 2.9'
|
66
|
+
gem "hocon", :require => false
|
61
67
|
end
|
62
68
|
|
63
69
|
group(:development) do
|
data/Rakefile
CHANGED
data/ext/project_data.yaml
CHANGED
@@ -9,7 +9,7 @@ version_file: 'lib/puppet/version.rb'
|
|
9
9
|
# files and gem_files are space separated lists
|
10
10
|
files: '[A-Z]* install.rb bin lib conf man examples ext tasks spec'
|
11
11
|
# The gem specification bits only work on Puppet >= 3.0rc, NOT 2.7.x and earlier
|
12
|
-
gem_files: '[A-Z]* install.rb bin lib conf man examples ext tasks spec'
|
12
|
+
gem_files: '[A-Z]* install.rb bin lib conf man examples ext tasks spec locales'
|
13
13
|
gem_test_files: 'spec/**/*'
|
14
14
|
gem_executables: 'puppet'
|
15
15
|
gem_default_executables: 'puppet'
|
@@ -20,6 +20,10 @@ gem_runtime_dependencies:
|
|
20
20
|
facter: ['> 2.0', '< 4']
|
21
21
|
hiera: ['>= 2.0', '< 4']
|
22
22
|
json_pure: '~> 1.8'
|
23
|
+
# PUP-7115 - return to a gem dependency in Puppet 5
|
24
|
+
# semantic_puppet: ['>= 0.1.3', '< 2']
|
25
|
+
gettext-setup: ['>= 0.10', '< 1']
|
26
|
+
locale: '~> 2.1'
|
23
27
|
gem_rdoc_options:
|
24
28
|
- --title
|
25
29
|
- "Puppet - Configuration Management"
|
@@ -123,7 +123,8 @@ class WindowsDaemon < Win32::Daemon
|
|
123
123
|
def log(msg, level)
|
124
124
|
if LEVELS.index(level) >= @loglevel
|
125
125
|
if (@LOG_TO_FILE)
|
126
|
-
|
126
|
+
# without this change its possible that we get Encoding errors trying to write UTF-8 messages in current codepage
|
127
|
+
File.open(LOG_FILE, 'a:UTF-8') { |f| f.puts("#{Time.now} Puppet (#{level}): #{msg}") }
|
127
128
|
end
|
128
129
|
|
129
130
|
case level
|
data/install.rb
CHANGED
@@ -108,9 +108,24 @@ def do_man(man, strip = 'man/')
|
|
108
108
|
FileUtils.makedirs(om, {:mode => 0755, :verbose => true})
|
109
109
|
FileUtils.chmod(0755, om)
|
110
110
|
FileUtils.install(mf, omf, {:mode => 0644, :preserve => true, :verbose => true})
|
111
|
-
|
112
|
-
gzip
|
113
|
-
|
111
|
+
# Solaris does not support gzipped man pages. When called with
|
112
|
+
# --no-check-prereqs/without facter the default gzip behavior still applies
|
113
|
+
unless $operatingsystem == "Solaris"
|
114
|
+
gzip = %x{which gzip}
|
115
|
+
gzip.chomp!
|
116
|
+
%x{#{gzip} -f #{omf}}
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
def do_locales(locale, strip = 'locales/')
|
122
|
+
locale.each do |lf|
|
123
|
+
next if File.directory? lf
|
124
|
+
olf = File.join(InstallOptions.locale_dir, lf.sub(/^#{strip}/, ''))
|
125
|
+
op = File.dirname(olf)
|
126
|
+
FileUtils.makedirs(op, {:mode => 0755, :verbose => true})
|
127
|
+
FileUtils.chmod(0755, op)
|
128
|
+
FileUtils.install(lf, olf, {:mode => 0644, :preserve => true, :verbose => true})
|
114
129
|
end
|
115
130
|
end
|
116
131
|
|
@@ -190,6 +205,9 @@ def prepare_installation
|
|
190
205
|
opts.on('--bindir[=OPTIONAL]', 'Installation directory for binaries', 'overrides RbConfig::CONFIG["bindir"]') do |bindir|
|
191
206
|
InstallOptions.bindir = bindir
|
192
207
|
end
|
208
|
+
opts.on('--localedir[=OPTIONAL]', 'Installation directory for locale information', 'Default /opt/puppetlabs/puppet/share/locale') do |localedir|
|
209
|
+
InstallOptions.localedir = localedir
|
210
|
+
end
|
193
211
|
opts.on('--ruby[=OPTIONAL]', 'Ruby interpreter to use with installation', 'overrides ruby used to call install.rb') do |ruby|
|
194
212
|
InstallOptions.ruby = ruby
|
195
213
|
end
|
@@ -242,15 +260,19 @@ def prepare_installation
|
|
242
260
|
$operatingsystem = Facter.value :operatingsystem
|
243
261
|
end
|
244
262
|
|
245
|
-
if
|
246
|
-
configdir = InstallOptions.configdir
|
247
|
-
elsif $operatingsystem == "windows"
|
263
|
+
if $operatingsystem == "windows"
|
248
264
|
begin
|
265
|
+
# populates constants used to specify default Windows directories
|
249
266
|
require 'win32/dir'
|
250
267
|
rescue LoadError => e
|
251
268
|
puts "Cannot run on Microsoft Windows without the win32-process, win32-dir & win32-service gems: #{e}"
|
252
269
|
exit -1
|
253
270
|
end
|
271
|
+
end
|
272
|
+
|
273
|
+
if not InstallOptions.configdir.nil?
|
274
|
+
configdir = InstallOptions.configdir
|
275
|
+
elsif $operatingsystem == "windows"
|
254
276
|
configdir = File.join(Dir::COMMON_APPDATA, "PuppetLabs", "puppet", "etc")
|
255
277
|
else
|
256
278
|
configdir = "/etc/puppetlabs/puppet"
|
@@ -294,6 +316,16 @@ def prepare_installation
|
|
294
316
|
bindir = RbConfig::CONFIG['bindir']
|
295
317
|
end
|
296
318
|
|
319
|
+
if not InstallOptions.localedir.nil?
|
320
|
+
localedir = InstallOptions.localedir
|
321
|
+
else
|
322
|
+
if $operatingsystem == "windows"
|
323
|
+
localedir = File.join(Dir::PROGRAM_FILES, "Puppet Labs", "Puppet", "puppet", "share", "locale")
|
324
|
+
else
|
325
|
+
localedir = "/opt/puppetlabs/puppet/share/locale"
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
297
329
|
if not InstallOptions.sitelibdir.nil?
|
298
330
|
sitelibdir = InstallOptions.sitelibdir
|
299
331
|
else
|
@@ -331,6 +363,7 @@ def prepare_installation
|
|
331
363
|
rundir = join(destdir, rundir)
|
332
364
|
logdir = join(destdir, logdir)
|
333
365
|
bindir = join(destdir, bindir)
|
366
|
+
localedir = join(destdir, localedir)
|
334
367
|
mandir = join(destdir, mandir)
|
335
368
|
sitelibdir = join(destdir, sitelibdir)
|
336
369
|
|
@@ -342,6 +375,7 @@ def prepare_installation
|
|
342
375
|
FileUtils.makedirs(vardir)
|
343
376
|
FileUtils.makedirs(rundir)
|
344
377
|
FileUtils.makedirs(logdir)
|
378
|
+
FileUtils.makedirs(localedir)
|
345
379
|
|
346
380
|
InstallOptions.site_dir = sitelibdir
|
347
381
|
InstallOptions.codedir = codedir
|
@@ -352,6 +386,7 @@ def prepare_installation
|
|
352
386
|
InstallOptions.var_dir = vardir
|
353
387
|
InstallOptions.run_dir = rundir
|
354
388
|
InstallOptions.log_dir = logdir
|
389
|
+
InstallOptions.locale_dir = localedir
|
355
390
|
end
|
356
391
|
|
357
392
|
##
|
@@ -464,6 +499,7 @@ FileUtils.cd File.dirname(__FILE__) do
|
|
464
499
|
ri = glob(%w{bin/*.rb lib/**/*.rb}).reject { |e| e=~ /\.(bat|cmd)$/ }
|
465
500
|
man = glob(%w{man/man[0-9]/*})
|
466
501
|
libs = glob(%w{lib/**/*})
|
502
|
+
locales = glob(%w{locales/**/*})
|
467
503
|
|
468
504
|
prepare_installation
|
469
505
|
|
@@ -477,5 +513,6 @@ FileUtils.cd File.dirname(__FILE__) do
|
|
477
513
|
do_bins(bins, InstallOptions.bin_dir)
|
478
514
|
do_bins(windows_bins, InstallOptions.bin_dir, 'ext/windows/') if $operatingsystem == "windows" && InstallOptions.batch_files
|
479
515
|
do_libs(libs)
|
516
|
+
do_locales(locales)
|
480
517
|
do_man(man) unless $operatingsystem == "windows"
|
481
518
|
end
|
@@ -43,37 +43,35 @@ class Hiera::PuppetFunction < Puppet::Functions::InternalFunction
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def hiera_no_default(scope, key)
|
46
|
-
post_lookup(scope, key, lookup(scope, key, nil, nil))
|
46
|
+
post_lookup(scope, key, lookup(scope, key, nil, false, nil))
|
47
47
|
end
|
48
48
|
|
49
49
|
def hiera_with_default(scope, key, default, override = nil)
|
50
|
-
|
51
|
-
result = lookup(scope, key, undefined, override)
|
52
|
-
post_lookup(scope, key, result.equal?(undefined) ? default : result)
|
50
|
+
post_lookup(scope, key, lookup(scope, key, default, true, override))
|
53
51
|
end
|
54
52
|
|
55
53
|
def hiera_block1(scope, key, &default_block)
|
56
|
-
|
54
|
+
post_lookup(scope, key, lookup(scope, key, nil, false, nil, &default_block))
|
57
55
|
end
|
58
56
|
|
59
57
|
def hiera_block2(scope, key, override, &default_block)
|
60
|
-
|
58
|
+
post_lookup(scope, key, lookup(scope, key, nil, false, override, &default_block))
|
61
59
|
end
|
62
60
|
|
63
|
-
def
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
61
|
+
def lookup(scope, key, default, has_default, override, &default_block)
|
62
|
+
unless Puppet[:strict] == :off
|
63
|
+
Puppet.warn_once(:deprecation, self.class.name,
|
64
|
+
"The function '#{self.class.name}' is deprecated in favor of using 'lookup'. See https://docs.puppet.com/puppet/#{Puppet.version}/reference/deprecated_language.html")
|
65
|
+
end
|
66
|
+
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(scope, {}, {})
|
67
|
+
adapter = lookup_invocation.lookup_adapter
|
68
|
+
lookup_invocation.set_global_only unless adapter.global_only? || adapter.has_environment_data_provider?(lookup_invocation)
|
69
|
+
lookup_invocation.set_hiera_v3_location_overrides(override) unless override.nil? || override.is_a?(Array) && override.empty?
|
70
|
+
Puppet::Pops::Lookup.lookup(key, nil, default, has_default, merge_type, lookup_invocation, &default_block)
|
73
71
|
end
|
74
72
|
|
75
73
|
def merge_type
|
76
|
-
:
|
74
|
+
:first
|
77
75
|
end
|
78
76
|
|
79
77
|
def post_lookup(scope, key, result)
|
data/lib/hiera/scope.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
class Hiera
|
2
2
|
class Scope
|
3
|
-
CALLING_CLASS =
|
4
|
-
CALLING_CLASS_PATH =
|
5
|
-
CALLING_MODULE =
|
6
|
-
MODULE_NAME =
|
3
|
+
CALLING_CLASS = 'calling_class'.freeze
|
4
|
+
CALLING_CLASS_PATH = 'calling_class_path'.freeze
|
5
|
+
CALLING_MODULE = 'calling_module'.freeze
|
6
|
+
MODULE_NAME = 'module_name'.freeze
|
7
|
+
|
8
|
+
CALLING_KEYS = [CALLING_CLASS, CALLING_CLASS_PATH, CALLING_MODULE].freeze
|
9
|
+
EMPTY_STRING = ''.freeze
|
7
10
|
|
8
11
|
attr_reader :real
|
9
12
|
|
@@ -21,20 +24,15 @@ class Hiera
|
|
21
24
|
else
|
22
25
|
ans = @real.lookupvar(key)
|
23
26
|
end
|
27
|
+
ans == EMPTY_STRING ? nil : ans
|
28
|
+
end
|
24
29
|
|
25
|
-
|
26
|
-
|
27
|
-
else
|
28
|
-
ans
|
29
|
-
end
|
30
|
+
def exist?(key)
|
31
|
+
CALLING_KEYS.include?(key) || @real.exist?(key)
|
30
32
|
end
|
31
33
|
|
32
34
|
def include?(key)
|
33
|
-
|
34
|
-
true
|
35
|
-
else
|
36
|
-
@real.exist?(key)
|
37
|
-
end
|
35
|
+
CALLING_KEYS.include?(key) || @real.include?(key)
|
38
36
|
end
|
39
37
|
|
40
38
|
def catalog
|
@@ -245,6 +245,10 @@ class Puppet::Application::FaceBase < Puppet::Application
|
|
245
245
|
end
|
246
246
|
end
|
247
247
|
|
248
|
+
if @face.deprecated?
|
249
|
+
Puppet.deprecation_warning("'puppet #{@face.name}' is deprecated and will be removed in a future release")
|
250
|
+
end
|
251
|
+
|
248
252
|
result = @face.send(@action.name, *arguments)
|
249
253
|
puts render(result, arguments) unless result.nil?
|
250
254
|
status = true
|
@@ -297,11 +297,13 @@ Copyright (c) 2015 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
297
297
|
type = options.include?(:type) ? Puppet::Pops::Types::TypeParser.singleton.parse(options[:type], scope) : nil
|
298
298
|
result = Puppet::Pops::Lookup.lookup(keys, type, options[:default_value], use_default_value, merge_options, lookup_invocation)
|
299
299
|
puts renderer.render(result) unless explain
|
300
|
-
rescue Puppet::DataBinding::LookupError
|
300
|
+
rescue Puppet::DataBinding::LookupError => e
|
301
|
+
lookup_invocation.report_text { e.message }
|
301
302
|
exit(1) unless explain
|
302
303
|
end
|
303
|
-
puts format == :s ? lookup_invocation.explainer.
|
304
|
+
puts format == :s ? lookup_invocation.explainer.explain : renderer.render(lookup_invocation.explainer.to_hash) if explain
|
304
305
|
end
|
306
|
+
exit(0)
|
305
307
|
end
|
306
308
|
|
307
309
|
def generate_scope
|
@@ -166,7 +166,7 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
|
|
166
166
|
require 'tempfile'
|
167
167
|
# Prefer the current directory, which is more likely to be secure
|
168
168
|
# and, in the case of interactive use, accessible to the user.
|
169
|
-
tmpfile = Tempfile.new('x2puppet', Dir.pwd)
|
169
|
+
tmpfile = Tempfile.new('x2puppet', Dir.pwd, :encoding => Encoding::UTF_8)
|
170
170
|
begin
|
171
171
|
# sync write, so nothing buffers before we invoke the editor.
|
172
172
|
tmpfile.sync = true
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# A DataAdapter adapts an object with a Hash of data
|
2
2
|
#
|
3
|
+
# TODO: API 5.0, remove this class
|
3
4
|
# @api private
|
5
|
+
# @deprecated
|
4
6
|
class Puppet::DataProviders::DataAdapter < Puppet::Pops::Adaptable::Adapter
|
5
7
|
include Puppet::Plugins::DataProviders
|
6
8
|
|
@@ -11,6 +13,10 @@ class Puppet::DataProviders::DataAdapter < Puppet::Pops::Adaptable::Adapter
|
|
11
13
|
end
|
12
14
|
|
13
15
|
def initialize
|
16
|
+
unless Puppet[:strict] == :off
|
17
|
+
Puppet.warn_once(:deprecation, 'Puppet::DataProviders::DataAdapter',
|
18
|
+
'Puppet::DataProviders::DataAdapter is deprecated and will be removed in the next major version of Puppet')
|
19
|
+
end
|
14
20
|
@data = {}
|
15
21
|
end
|
16
22
|
|
@@ -1,9 +1,16 @@
|
|
1
|
+
# TODO: API 5.0, remove this module
|
1
2
|
# @api private
|
3
|
+
# @deprecated
|
2
4
|
module Puppet::DataProviders::DataFunctionSupport
|
3
5
|
def initialize_data(data_key, lookup_invocation)
|
4
6
|
name = "#{data_key}::data"
|
5
7
|
scope = lookup_invocation.scope
|
6
8
|
Puppet::Util::Profiler.profile("Called #{name}", [ :functions, name ]) do
|
9
|
+
unless Puppet[:strict] == :off
|
10
|
+
Puppet.warn_once(:deprecation, 'Puppet::DataProviders::DataFunctionSupport',
|
11
|
+
'Puppet::DataProviders::DataFunctionSupport is deprecated and will be removed in the next major version of Puppet')
|
12
|
+
end
|
13
|
+
|
7
14
|
loader = loader(data_key, scope)
|
8
15
|
if loader && func = loader.load(:function, name)
|
9
16
|
# function found, call without arguments, must return a Hash
|
@@ -8,11 +8,18 @@ module Puppet::DataProviders; end
|
|
8
8
|
# The function is called on demand, and is associated with the compiler via an Adapter. This ensures that the data
|
9
9
|
# is only produced once per compilation.
|
10
10
|
#
|
11
|
+
# TODO: API 5.0, remove this class
|
11
12
|
# @api private
|
13
|
+
# @deprecated
|
12
14
|
class Puppet::DataProviders::FunctionEnvDataProvider < Puppet::Plugins::DataProviders::EnvironmentDataProvider
|
13
15
|
include Puppet::DataProviders::DataFunctionSupport
|
14
16
|
|
15
17
|
def loader(key, scope)
|
18
|
+
unless Puppet[:strict] == :off
|
19
|
+
Puppet.warn_once(:deprecation, 'Puppet::DataProviders::FunctionEnvDataProvider',
|
20
|
+
'Puppet::DataProviders::FunctionEnvDataProvider is deprecated and will be removed in the next major version of Puppet')
|
21
|
+
end
|
22
|
+
|
16
23
|
# This loader allows the data function to be private or public in the environment
|
17
24
|
scope.compiler.loaders.private_environment_loader
|
18
25
|
end
|
@@ -8,11 +8,17 @@ module Puppet::DataProviders; end
|
|
8
8
|
# The function is called on demand, and is associated with the compiler via an Adapter. This ensures that the data
|
9
9
|
# is only produced once per compilation.
|
10
10
|
#
|
11
|
+
# TODO: API 5.0, remove this class
|
11
12
|
# @api private
|
13
|
+
# @deprecated
|
12
14
|
class Puppet::DataProviders::FunctionModuleDataProvider < Puppet::Plugins::DataProviders::ModuleDataProvider
|
13
15
|
include Puppet::DataProviders::DataFunctionSupport
|
14
16
|
|
15
17
|
def loader(key, scope)
|
18
|
+
unless Puppet[:strict] == :off
|
19
|
+
Puppet.warn_once(:deprecation, 'Puppet::DataProviders::FunctionModuleDataProvider',
|
20
|
+
'Puppet::DataProviders::FunctionModuleDataProvider is deprecated and will be removed in the next major version of Puppet')
|
21
|
+
end
|
16
22
|
scope.compiler.loaders.private_loader_for_module(key)
|
17
23
|
end
|
18
24
|
end
|
@@ -1,11 +1,13 @@
|
|
1
|
-
require '
|
2
|
-
require 'puppet/pops/lookup/interpolation'
|
1
|
+
require 'puppet/plugins/data_providers'
|
3
2
|
|
3
|
+
# @api private
|
4
4
|
module Puppet::DataProviders
|
5
|
+
# TODO: API 5.0, remove this class
|
5
6
|
# @api private
|
7
|
+
# @deprecated
|
6
8
|
class HieraConfig
|
7
9
|
include Puppet::Plugins::DataProviders
|
8
|
-
include Puppet::Pops::Lookup::
|
10
|
+
include Puppet::Pops::Lookup::LocationResolver
|
9
11
|
|
10
12
|
DEFAULT_CONFIG = {
|
11
13
|
'version' => 4,
|
@@ -33,6 +35,11 @@ module Puppet::DataProviders
|
|
33
35
|
end
|
34
36
|
end
|
35
37
|
|
38
|
+
def self.config_exist?(config_root)
|
39
|
+
config_path = config_root + 'hiera.yaml'
|
40
|
+
config_path.exist?
|
41
|
+
end
|
42
|
+
|
36
43
|
def self.create_config_type
|
37
44
|
hierarchy_elem_type_base = 'Struct[{'\
|
38
45
|
'backend=>String[1],'\
|
@@ -58,6 +65,10 @@ module Puppet::DataProviders
|
|
58
65
|
# @param config_root [Pathname] Absolute path to the configuration root
|
59
66
|
# @api public
|
60
67
|
def initialize(config_root)
|
68
|
+
unless Puppet[:strict] == :off
|
69
|
+
Puppet.warn_once(:deprecation, 'Puppet::DataProviders::HieraConfig',
|
70
|
+
"Use of class Puppet::DataProviders::HieraConfig' is deprecated. Puppet::Pops::Lookup::HieraConfig should be used instead", config_path.to_s)
|
71
|
+
end
|
61
72
|
@config_root = config_root
|
62
73
|
@config_path = config_root + 'hiera.yaml'
|
63
74
|
if @config_path.exist?
|
@@ -92,7 +103,7 @@ module Puppet::DataProviders
|
|
92
103
|
data_providers = {}
|
93
104
|
@config['hierarchy'].each do |he|
|
94
105
|
name = he['name']
|
95
|
-
raise Puppet::DataBinding::LookupError, "#{
|
106
|
+
raise Puppet::DataBinding::LookupError, "#{@config_path}: Name '#{name}' defined more than once" if data_providers.include?(name)
|
96
107
|
original_paths = he['paths']
|
97
108
|
if original_paths.nil?
|
98
109
|
single_path = he['path']
|
@@ -100,17 +111,27 @@ module Puppet::DataProviders
|
|
100
111
|
original_paths = [single_path]
|
101
112
|
end
|
102
113
|
paths = original_paths.map { |path| interpolate(path, lookup_invocation, false)}
|
103
|
-
provider_name = he['backend']
|
104
|
-
provider_factory = injector.lookup(nil, service_type, PATH_BASED_DATA_PROVIDER_FACTORIES_KEY)[provider_name]
|
105
|
-
raise Puppet::DataBinding::LookupError, "#{@config_path}: No data provider is registered for backend '#{provider_name}' " unless provider_factory
|
106
|
-
|
107
114
|
datadir = @config_root + (he['datadir'] || default_datadir)
|
108
|
-
|
109
|
-
|
115
|
+
provider_name = he['backend']
|
116
|
+
data_providers[name] = case provider_name
|
117
|
+
when 'json', 'yaml'
|
118
|
+
Puppet::Pops::Lookup::DataHashFunctionProvider.new(name, parent_data_provider, "#{provider_name}_data", {},
|
119
|
+
resolve_paths(datadir, original_paths, lookup_invocation, ".#{provider_name}"))
|
120
|
+
else
|
121
|
+
# TODO: Remove support for injected provider factories
|
122
|
+
paths = original_paths.map { |path| interpolate(path, lookup_invocation, false)}
|
123
|
+
provider_factory = injector.lookup(nil, service_type, PATH_BASED_DATA_PROVIDER_FACTORIES_KEY)[provider_name]
|
124
|
+
raise Puppet::DataBinding::LookupError, "#{@config_path}: No data provider is registered for backend '#{provider_name}' " unless provider_factory
|
125
|
+
create_data_provider(parent_data_provider, provider_factory, name, provider_factory.resolve_paths(datadir, original_paths, paths, lookup_invocation))
|
126
|
+
end
|
110
127
|
end
|
111
128
|
data_providers.values
|
112
129
|
end
|
113
130
|
|
131
|
+
def name
|
132
|
+
"hiera version #{version}"
|
133
|
+
end
|
134
|
+
|
114
135
|
def create_data_provider(parent_data_provider, provider_factory, name, resolved_paths)
|
115
136
|
provider_factory_version = provider_factory.respond_to?(:version) ? provider_factory.version : 1
|
116
137
|
if provider_factory_version == 1
|
@@ -2,7 +2,9 @@
|
|
2
2
|
require_relative 'hiera_support'
|
3
3
|
|
4
4
|
module Puppet::DataProviders
|
5
|
+
# TODO: API 5.0, remove this class
|
5
6
|
# @api private
|
7
|
+
# @deprecated
|
6
8
|
class HieraEnvDataProvider < Puppet::Plugins::DataProviders::EnvironmentDataProvider
|
7
9
|
include HieraSupport
|
8
10
|
|
@@ -12,6 +14,10 @@ module Puppet::DataProviders
|
|
12
14
|
# @param scope [Puppet::Parser::Scope] the parser scope where the environment is found
|
13
15
|
# @return [Pathname] Path to root of the environment
|
14
16
|
def provider_root(_, scope)
|
17
|
+
unless Puppet[:strict] == :off
|
18
|
+
Puppet.warn_once(:deprecation, 'Puppet::DataProviders::HieraEnvDataProvider',
|
19
|
+
'Puppet::DataProviders::HieraEnvDataProvider is deprecated and will be removed in the next major version of Puppet')
|
20
|
+
end
|
15
21
|
Pathname.new(scope.environment.configuration.path_to_env)
|
16
22
|
end
|
17
23
|
protected :provider_root
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# TODO: API 5.0, remove this module
|
1
2
|
# @deprecated Moved to Puppet::Pops::Lookup::Interpolation
|
2
3
|
module Puppet::DataProviders::HieraInterpolate
|
3
4
|
include Puppet::Pops::Lookup::Interpolation
|
@@ -15,6 +16,6 @@ module Puppet::DataProviders::HieraInterpolate
|
|
15
16
|
Puppet.warn_once(:deprecation, 'HieraInterpolate#qualified_lookup', msg)
|
16
17
|
end
|
17
18
|
end
|
18
|
-
sub_lookup('<unknown key>', Puppet::Pops::Lookup::Invocation.
|
19
|
+
sub_lookup('<unknown key>', Puppet::Pops::Lookup::Invocation.current, segments, value)
|
19
20
|
end
|
20
21
|
end
|
@@ -2,7 +2,9 @@
|
|
2
2
|
require_relative 'hiera_support'
|
3
3
|
|
4
4
|
module Puppet::DataProviders
|
5
|
+
# TODO: API 5.0, remove this class
|
5
6
|
# @api private
|
7
|
+
# @deprecated
|
6
8
|
class HieraModuleDataProvider < Puppet::Plugins::DataProviders::ModuleDataProvider
|
7
9
|
include HieraSupport
|
8
10
|
|
@@ -14,6 +16,10 @@ module Puppet::DataProviders
|
|
14
16
|
# @raise [Puppet::DataBinder::LookupError] if the given module is can not be found
|
15
17
|
#
|
16
18
|
def provider_root(module_name, scope)
|
19
|
+
unless Puppet[:strict] == :off
|
20
|
+
Puppet.warn_once(:deprecation, 'Puppet::DataProviders::HieraModuleDataProvider',
|
21
|
+
'Puppet::DataProviders::HieraModuleDataProvider is deprecated and will be removed in the next major version of Puppet')
|
22
|
+
end
|
17
23
|
env = scope.environment
|
18
24
|
mod = env.modules.find { |m| m.name == module_name }
|
19
25
|
raise Puppet::DataBinder::LookupError, "Environment '#{env.name}', cannot find module '#{module_name}'" unless mod
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require_relative 'hiera_config'
|
2
2
|
|
3
|
+
# TODO: API 5.0, remove this module
|
3
4
|
# @api private
|
5
|
+
# @deprecated
|
4
6
|
module Puppet::DataProviders::HieraSupport
|
5
7
|
def config_path
|
6
8
|
@hiera_config.nil? ? 'not yet configured' : @hiera_config.config_path
|
@@ -17,6 +19,10 @@ module Puppet::DataProviders::HieraSupport
|
|
17
19
|
# @param lookup_invocation [Puppet::Pops::Lookup::Invocation] The current lookup invocation
|
18
20
|
# @param merge [Puppet::Pops::MergeStrategy,String,Hash<String,Object>,nil] Merge strategy or hash with strategy and options
|
19
21
|
def unchecked_lookup(key, lookup_invocation, merge)
|
22
|
+
unless Puppet[:strict] == :off
|
23
|
+
Puppet.warn_once(:deprecation, 'Puppet::DataProviders::HieraSupport',
|
24
|
+
'Puppet::DataProviders::HieraSupport is deprecated and will be removed in the next major version of Puppet')
|
25
|
+
end
|
20
26
|
lookup_invocation.with(:data_provider, self) do
|
21
27
|
merge_strategy = Puppet::Pops::MergeStrategy.strategy(merge)
|
22
28
|
lookup_invocation.with(:merge, merge_strategy) do
|
@@ -3,9 +3,15 @@
|
|
3
3
|
require 'json'
|
4
4
|
|
5
5
|
module Puppet::DataProviders
|
6
|
+
# TODO: API 5.0, remove this class
|
6
7
|
# @api private
|
8
|
+
# @deprecated
|
7
9
|
class JsonDataProviderFactory < Puppet::Plugins::DataProviders::FileBasedDataProviderFactory
|
8
10
|
def create(name, paths, parent_data_provider)
|
11
|
+
unless Puppet[:strict] == :off
|
12
|
+
Puppet.warn_once(:deprecation, 'Puppet::DataProviders::JsonDataProviderFactory',
|
13
|
+
'Puppet::DataProviders::JsonDataProviderFactory is deprecated and will be removed in the next major version of Puppet')
|
14
|
+
end
|
9
15
|
JsonDataProvider.new(name, paths, parent_data_provider)
|
10
16
|
end
|
11
17
|
|
@@ -14,9 +20,15 @@ module Puppet::DataProviders
|
|
14
20
|
end
|
15
21
|
end
|
16
22
|
|
23
|
+
# TODO: API 5.0, remove this class
|
17
24
|
# @api private
|
25
|
+
# @deprecated
|
18
26
|
class JsonDataProvider < Puppet::Plugins::DataProviders::PathBasedDataProvider
|
19
27
|
def initialize_data(path, lookup_invocation)
|
28
|
+
unless Puppet[:strict] == :off
|
29
|
+
Puppet.warn_once(:deprecation, 'Puppet::DataProviders::JsonDataProvider',
|
30
|
+
'Puppet::DataProviders::JsonDataProvider is deprecated and will be removed in the next major version of Puppet')
|
31
|
+
end
|
20
32
|
JSON.parse(Puppet::FileSystem.read(path, :encoding => 'utf-8'))
|
21
33
|
rescue JSON::ParserError => ex
|
22
34
|
# Filename not included in message, so we add it here.
|