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
@@ -3,9 +3,15 @@
|
|
3
3
|
require 'yaml'
|
4
4
|
|
5
5
|
module Puppet::DataProviders
|
6
|
+
# TODO: API 5.0, remove this class
|
6
7
|
# @api private
|
8
|
+
# @deprecated
|
7
9
|
class YamlDataProviderFactory < 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::YamlDataProviderFactory',
|
13
|
+
'Puppet::DataProviders::YamlDataProviderFactory is deprecated and will be removed in the next major version of Puppet')
|
14
|
+
end
|
9
15
|
YamlDataProvider.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 YamlDataProvider < Puppet::Plugins::DataProviders::PathBasedDataProvider
|
19
27
|
def initialize_data(path, lookup_invocation)
|
28
|
+
unless Puppet[:strict] == :off
|
29
|
+
Puppet.warn_once(:deprecation, 'Puppet::DataProviders::YamlDataProvider',
|
30
|
+
'Puppet::DataProviders::YamlDataProvider is deprecated and will be removed in the next major version of Puppet')
|
31
|
+
end
|
20
32
|
data = YAML.load_file(path)
|
21
33
|
HieraConfig.symkeys_to_string(data.nil? ? {} : data)
|
22
34
|
rescue YAML::SyntaxError => ex
|
@@ -1,11 +1,11 @@
|
|
1
|
+
# TODO: API 5.0, remove this module
|
1
2
|
# @api private
|
3
|
+
# @deprecated
|
2
4
|
module Puppet::DataProviders
|
3
5
|
|
4
6
|
def self.assert_loaded
|
5
7
|
unless @loaded
|
6
8
|
require 'puppet/pops'
|
7
|
-
require 'puppet/data_providers/data_adapter'
|
8
|
-
require 'puppet/data_providers/lookup_adapter'
|
9
9
|
end
|
10
10
|
@loaded = true
|
11
11
|
end
|
@@ -25,7 +25,10 @@ module Puppet::DataProviders
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def self.lookup_adapter(lookup_invocation)
|
28
|
+
unless Puppet[:strict] == :off
|
29
|
+
Puppet.deprecation_warning('The method Puppet::DataProviders.lookup_adapter is deprecated and will be removed in the next major release of Puppet.')
|
30
|
+
end
|
28
31
|
assert_loaded()
|
29
|
-
LookupAdapter.adapt(lookup_invocation.scope.compiler)
|
32
|
+
Puppet::Pops::Lookup::LookupAdapter.adapt(lookup_invocation.scope.compiler)
|
30
33
|
end
|
31
34
|
end
|
data/lib/puppet/defaults.rb
CHANGED
@@ -419,7 +419,20 @@ deprecated and has been replaced by 'always_retry_plugins'."
|
|
419
419
|
:data_binding_terminus => {
|
420
420
|
:type => :terminus,
|
421
421
|
:default => "hiera",
|
422
|
-
:desc =>
|
422
|
+
:desc =>
|
423
|
+
"This setting has been deprecated. Use of any value other than 'hiera' should instead be configured
|
424
|
+
in a version 5 hiera.yaml. Until this setting is removed, it controls which data binding terminus
|
425
|
+
to use for global automatic data binding (across all environments). By default this value is 'hiera'.
|
426
|
+
A value of 'none' turns off the global binding.",
|
427
|
+
:call_hook => :on_initialize_and_write,
|
428
|
+
:hook => proc do |value|
|
429
|
+
if Puppet[:strict] != :off
|
430
|
+
s_val = value.to_s # because sometimes the value is a symbol
|
431
|
+
unless s_val == 'hiera' || s_val == 'none' || value == '' || value.nil?
|
432
|
+
Puppet.deprecation_warning "Setting 'data_binding_terminus' is deprecated. Convert custom terminus to hiera 5 API."
|
433
|
+
end
|
434
|
+
end
|
435
|
+
end
|
423
436
|
},
|
424
437
|
:hiera_config => {
|
425
438
|
:default => lambda do
|
@@ -517,6 +530,10 @@ deprecated and has been replaced by 'always_retry_plugins'."
|
|
517
530
|
read after the elapsed interval then the connection will be closed. The default value is unlimited.
|
518
531
|
#{AS_DURATION}",
|
519
532
|
},
|
533
|
+
:http_user_agent => {
|
534
|
+
:default => "Puppet/#{Puppet.version} Ruby/#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} (#{RUBY_PLATFORM})",
|
535
|
+
:desc => "The HTTP User-Agent string to send when making network requests."
|
536
|
+
},
|
520
537
|
:filetimeout => {
|
521
538
|
:default => "15s",
|
522
539
|
:type => :duration,
|
@@ -556,13 +573,17 @@ deprecated and has been replaced by 'always_retry_plugins'."
|
|
556
573
|
inconsistent catalogs."
|
557
574
|
},
|
558
575
|
:environment_data_provider => {
|
559
|
-
:default => "none",
|
560
576
|
:desc => "The name of a registered environment data provider used when obtaining environment
|
561
577
|
specific data. The three built in and registered providers are 'none' (no data), 'function' (data
|
562
578
|
obtained by calling the function 'environment::data()') and 'hiera' (data obtained using a data
|
563
579
|
provider configured using a hiera.yaml file in root of the environment).
|
564
580
|
Other environment data providers may be registered in modules on the module path. For such
|
565
|
-
custom data providers see the respective module documentation."
|
581
|
+
custom data providers see the respective module documentation. This setting is deprecated.",
|
582
|
+
:hook => proc { |value|
|
583
|
+
unless value.nil? || Puppet[:strict] == :off
|
584
|
+
Puppet.deprecation_warning "Setting 'environment_data_provider' is deprecated."
|
585
|
+
end
|
586
|
+
}
|
566
587
|
},
|
567
588
|
:prerun_command => {
|
568
589
|
:default => "",
|
@@ -1715,7 +1736,7 @@ EOT
|
|
1715
1736
|
},
|
1716
1737
|
|
1717
1738
|
:pluginsignore => {
|
1718
|
-
:default => ".svn CVS .git",
|
1739
|
+
:default => ".svn CVS .git .hg",
|
1719
1740
|
:desc => "What files to ignore when pulling down plugins.",
|
1720
1741
|
}
|
1721
1742
|
)
|
data/lib/puppet/face/ca.rb
CHANGED
data/lib/puppet/face/file.rb
CHANGED
data/lib/puppet/face/help.rb
CHANGED
@@ -6,22 +6,22 @@ require 'erb'
|
|
6
6
|
|
7
7
|
Puppet::Face.define(:help, '0.0.1') do
|
8
8
|
copyright "Puppet Labs", 2011
|
9
|
-
license "Apache 2 license; see COPYING"
|
9
|
+
license _("Apache 2 license; see COPYING")
|
10
10
|
|
11
|
-
summary "Display Puppet help."
|
11
|
+
summary _("Display Puppet help.")
|
12
12
|
|
13
13
|
action(:help) do
|
14
|
-
summary "Display help about Puppet subcommands and their actions."
|
15
|
-
arguments "[<subcommand>] [<action>]"
|
16
|
-
returns "Short help text for the specified subcommand or action."
|
17
|
-
examples <<-'EOT'
|
14
|
+
summary _("Display help about Puppet subcommands and their actions.")
|
15
|
+
arguments _("[<subcommand>] [<action>]")
|
16
|
+
returns _("Short help text for the specified subcommand or action.")
|
17
|
+
examples _(<<-'EOT')
|
18
18
|
Get help for an action:
|
19
19
|
|
20
20
|
$ puppet help
|
21
21
|
EOT
|
22
22
|
|
23
|
-
option "--version VERSION" do
|
24
|
-
summary "The version of the subcommand for which to show help."
|
23
|
+
option _("--version VERSION") do
|
24
|
+
summary _("The version of the subcommand for which to show help.")
|
25
25
|
end
|
26
26
|
|
27
27
|
default
|
@@ -47,7 +47,7 @@ Puppet::Face.define(:help, '0.0.1') do
|
|
47
47
|
EOT
|
48
48
|
353.times{i,x=i.divmod(1184);a,b=x.divmod(37);print(c[a]*b)}
|
49
49
|
end
|
50
|
-
raise ArgumentError, "Puppet help only takes two (optional) arguments: a subcommand and an action"
|
50
|
+
raise ArgumentError, _("Puppet help only takes two (optional) arguments: a subcommand and an action")
|
51
51
|
end
|
52
52
|
|
53
53
|
version = :current
|
@@ -56,7 +56,7 @@ Puppet::Face.define(:help, '0.0.1') do
|
|
56
56
|
version = options[:version]
|
57
57
|
else
|
58
58
|
if args.length == 0 then
|
59
|
-
raise ArgumentError, "Version only makes sense when a Faces subcommand is given"
|
59
|
+
raise ArgumentError, _("Version only makes sense when a Faces subcommand is given")
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
@@ -66,7 +66,7 @@ Puppet::Face.define(:help, '0.0.1') do
|
|
66
66
|
facename, actionname = args
|
67
67
|
if legacy_applications.include? facename then
|
68
68
|
if actionname then
|
69
|
-
raise ArgumentError, "Legacy subcommands don't take actions"
|
69
|
+
raise ArgumentError, _("Legacy subcommands don't take actions")
|
70
70
|
end
|
71
71
|
return render_application_help(facename)
|
72
72
|
else
|
@@ -78,7 +78,7 @@ Puppet::Face.define(:help, '0.0.1') do
|
|
78
78
|
def render_application_help(applicationname)
|
79
79
|
return Puppet::Application[applicationname].help
|
80
80
|
rescue StandardError, LoadError => detail
|
81
|
-
msg = <<-MSG
|
81
|
+
msg = _(<<-MSG)
|
82
82
|
Could not load help for the application #{applicationname}.
|
83
83
|
Please check the error logs for more information.
|
84
84
|
|
@@ -91,7 +91,7 @@ MSG
|
|
91
91
|
face, action = load_face_help(facename, actionname, version)
|
92
92
|
return template_for(face, action).result(binding)
|
93
93
|
rescue StandardError, LoadError => detail
|
94
|
-
msg = <<-MSG
|
94
|
+
msg = _(<<-MSG)
|
95
95
|
Could not load help for the face #{facename}.
|
96
96
|
Please check the error logs for more information.
|
97
97
|
|
@@ -105,7 +105,7 @@ MSG
|
|
105
105
|
if actionname
|
106
106
|
action = face.get_action(actionname.to_sym)
|
107
107
|
if not action
|
108
|
-
fail ArgumentError, "Unable to load action #{actionname} from #{face}"
|
108
|
+
fail ArgumentError, _("Unable to load action #{actionname} from #{face}")
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
@@ -146,9 +146,11 @@ MSG
|
|
146
146
|
if (is_face_app?(appname))
|
147
147
|
begin
|
148
148
|
face = Puppet::Face[appname, :current]
|
149
|
-
|
149
|
+
# Add deprecation message to summary if the face is deprecated
|
150
|
+
summary = face.deprecated? ? face.summary + _(" (Deprecated)") : face.summary
|
151
|
+
result << [appname, summary]
|
150
152
|
rescue StandardError, LoadError
|
151
|
-
result << [ "! #{appname}", "! Subcommand unavailable due to error. Check error logs." ]
|
153
|
+
result << [ "! #{appname}", _("! Subcommand unavailable due to error. Check error logs.") ]
|
152
154
|
end
|
153
155
|
else
|
154
156
|
result << [appname, horribly_extract_summary_from(appname)]
|
@@ -169,7 +171,7 @@ MSG
|
|
169
171
|
end
|
170
172
|
end
|
171
173
|
rescue StandardError, LoadError
|
172
|
-
return "! Subcommand unavailable due to error. Check error logs."
|
174
|
+
return _("! Subcommand unavailable due to error. Check error logs.")
|
173
175
|
end
|
174
176
|
return ''
|
175
177
|
end
|
data/lib/puppet/face/key.rb
CHANGED
data/lib/puppet/face/man.rb
CHANGED
@@ -76,11 +76,13 @@ Puppet::Face.define(:man, '0.0.1') do
|
|
76
76
|
if pager then ENV['PAGER'] = pager end
|
77
77
|
|
78
78
|
args = "--man --manual='Puppet Manual' --organization='Puppet Labs, LLC'"
|
79
|
-
|
79
|
+
# manual pages could contain UTF-8 text
|
80
|
+
IO.popen("#{ronn} #{args}", 'w:UTF-8') do |fh| fh.write text end
|
80
81
|
|
81
82
|
'' # suppress local output, neh?
|
82
83
|
elsif pager then
|
83
|
-
|
84
|
+
# manual pages could contain UTF-8 text
|
85
|
+
IO.popen(pager, 'w:UTF-8') do |fh| fh.write text end
|
84
86
|
''
|
85
87
|
else
|
86
88
|
text
|
@@ -236,7 +236,7 @@ module Puppet::ModuleTool::Generate
|
|
236
236
|
content = block[path.read, binding]
|
237
237
|
|
238
238
|
target = path.parent + path.basename(".#{type}")
|
239
|
-
target.open('w') { |f| f.write(content) }
|
239
|
+
target.open('w:UTF-8') { |f| f.write(content) }
|
240
240
|
path.unlink
|
241
241
|
end
|
242
242
|
end
|
data/lib/puppet/face/status.rb
CHANGED
data/lib/puppet/feature/base.rb
CHANGED
@@ -17,8 +17,15 @@ end
|
|
17
17
|
Puppet.features.add(:microsoft_windows) do
|
18
18
|
begin
|
19
19
|
# ruby
|
20
|
-
require 'Win32API'
|
21
|
-
|
20
|
+
require 'Win32API' # case matters in this require!
|
21
|
+
|
22
|
+
# Note: Setting codepage here globally ensures all strings returned via
|
23
|
+
# WIN32OLE (Ruby's late-bound COM support) are encoded in Encoding::UTF_8
|
24
|
+
#
|
25
|
+
# Also, this does not modify the value of WIN32OLE.locale - which defaults
|
26
|
+
# to 2048 (at least on US English Windows) and is not listed in the MS
|
27
|
+
# locales table, here: https://msdn.microsoft.com/en-us/library/ms912047(v=winembedded.10).aspx
|
28
|
+
require 'win32ole' ; WIN32OLE.codepage = WIN32OLE::CP_UTF8
|
22
29
|
# gems
|
23
30
|
require 'win32/process'
|
24
31
|
require 'win32/dir'
|
@@ -3,6 +3,14 @@ require 'puppet/util/windows'
|
|
3
3
|
|
4
4
|
class Puppet::FileSystem::Windows < Puppet::FileSystem::Posix
|
5
5
|
|
6
|
+
def open(path, mode, options, &block)
|
7
|
+
# PUP-6959 mode is explicitly ignored until it can be implemented
|
8
|
+
# Ruby on Windows uses mode for setting file attributes like read-only and
|
9
|
+
# archived, not for setting permissions like POSIX
|
10
|
+
raise TypeError.new('mode must be specified as an Integer') if mode && !mode.is_a?(Numeric)
|
11
|
+
::File.open(path, options, nil, &block)
|
12
|
+
end
|
13
|
+
|
6
14
|
def expand_path(path, dir_string = nil)
|
7
15
|
# ensure `nil` values behave like underlying File.expand_path
|
8
16
|
string_path = ::File.expand_path(path.nil? ? nil : path_string(path), dir_string)
|
data/lib/puppet/file_system.rb
CHANGED
@@ -32,6 +32,15 @@ module Puppet::FileSystem
|
|
32
32
|
|
33
33
|
# Opens the given path with given mode, and options and optionally yields it to the given block.
|
34
34
|
#
|
35
|
+
# @param path [String, Pathname] the path to the file to operate on
|
36
|
+
# @param mode [Integer] The mode to apply to the file if it is created
|
37
|
+
# @param options [String] Extra file operation mode information to use
|
38
|
+
# This is the standard mechanism Ruby uses in the IO class, and therefore
|
39
|
+
# encoding may be specified explicitly as fmode : encoding or fmode : "BOM|UTF-*"
|
40
|
+
# for example, a:ASCII or w+:UTF-8
|
41
|
+
# @yield The file handle, in the mode given by options, else read-write mode
|
42
|
+
# @return [Void]
|
43
|
+
#
|
35
44
|
# @api public
|
36
45
|
#
|
37
46
|
def self.open(path, mode, options, &block)
|
@@ -98,10 +107,13 @@ module Puppet::FileSystem
|
|
98
107
|
#
|
99
108
|
# @param path [Pathname] the path to the file to operate on
|
100
109
|
# @param mode [Integer] The mode to apply to the file if it is created
|
101
|
-
# @param options [
|
102
|
-
# (defaults to read-only mode)
|
110
|
+
# @param options [String] Extra file operation mode information to use
|
111
|
+
# (defaults to read-only mode 'r')
|
112
|
+
# This is the standard mechanism Ruby uses in the IO class, and therefore
|
113
|
+
# encoding may be specified explicitly as fmode : encoding or fmode : "BOM|UTF-*"
|
114
|
+
# for example, a:ASCII or w+:UTF-8
|
103
115
|
# @param timeout [Integer] Number of seconds to wait for the lock (defaults to 300)
|
104
|
-
# @yield The file handle, in read-write mode
|
116
|
+
# @yield The file handle, in the mode given by options, else read-write mode
|
105
117
|
# @return [Void]
|
106
118
|
# @raise [Timeout::Error] If the timeout is exceeded while waiting to acquire the lock
|
107
119
|
#
|
data/lib/puppet/forge.rb
CHANGED
@@ -6,9 +6,9 @@ require 'tempfile'
|
|
6
6
|
require 'uri'
|
7
7
|
require 'pathname'
|
8
8
|
require 'json'
|
9
|
-
require '
|
9
|
+
require 'semantic_puppet'
|
10
10
|
|
11
|
-
class Puppet::Forge <
|
11
|
+
class Puppet::Forge < SemanticPuppet::Dependency::Source
|
12
12
|
require 'puppet/forge/cache'
|
13
13
|
require 'puppet/forge/repository'
|
14
14
|
require 'puppet/forge/errors'
|
@@ -83,9 +83,9 @@ class Puppet::Forge < Semantic::Dependency::Source
|
|
83
83
|
# Fetches {ModuleRelease} entries for each release of the named module.
|
84
84
|
#
|
85
85
|
# @param input [String] the module name to look up
|
86
|
-
# @return [Array<
|
86
|
+
# @return [Array<SemanticPuppet::Dependency::ModuleRelease>] a list of releases for
|
87
87
|
# the given name
|
88
|
-
# @see
|
88
|
+
# @see SemanticPuppet::Dependency::Source#fetch
|
89
89
|
def fetch(input)
|
90
90
|
name = input.tr('/', '-')
|
91
91
|
uri = "/v3/releases?module=#{name}"
|
@@ -114,7 +114,7 @@ class Puppet::Forge < Semantic::Dependency::Source
|
|
114
114
|
@repository.make_http_request(*args)
|
115
115
|
end
|
116
116
|
|
117
|
-
class ModuleRelease <
|
117
|
+
class ModuleRelease < SemanticPuppet::Dependency::ModuleRelease
|
118
118
|
attr_reader :install_dir, :metadata
|
119
119
|
|
120
120
|
def initialize(source, data)
|
@@ -122,7 +122,7 @@ class Puppet::Forge < Semantic::Dependency::Source
|
|
122
122
|
@metadata = meta = data['metadata']
|
123
123
|
|
124
124
|
name = meta['name'].tr('/', '-')
|
125
|
-
version =
|
125
|
+
version = SemanticPuppet::Version.parse(meta['version'])
|
126
126
|
release = "#{name}@#{version}"
|
127
127
|
|
128
128
|
if meta['dependencies']
|
@@ -10,16 +10,10 @@ Puppet::Functions.create_function(:binary_file, Puppet::Functions::InternalFunct
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def binary_file(scope, unresolved_path)
|
13
|
-
path =
|
14
|
-
|
15
|
-
|
16
|
-
path = found
|
17
|
-
end
|
18
|
-
|
19
|
-
if path
|
20
|
-
Puppet::Pops::Types::PBinaryType::Binary.from_binary_string(Puppet::FileSystem.binread(path))
|
21
|
-
else
|
22
|
-
raise Puppet::ParseError, "binary_file(): The given file '#{path}' does not exist"
|
13
|
+
path = Puppet::Parser::Files.find_file(unresolved_path, scope.compiler.environment)
|
14
|
+
unless path && Puppet::FileSystem.exist?(path)
|
15
|
+
raise Puppet::ParseError, "binary_file(): The given file '#{unresolved_path}' does not exist"
|
23
16
|
end
|
17
|
+
Puppet::Pops::Types::PBinaryType::Binary.from_binary_string(Puppet::FileSystem.binread(path))
|
24
18
|
end
|
25
19
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# @since 4.9.0
|
2
|
+
#
|
3
|
+
Puppet::Functions.create_function(:hocon_data) do
|
4
|
+
unless Puppet.features.hocon?
|
5
|
+
raise Puppet::DataBinding::LookupError, 'Lookup using Hocon data_hash function is not supported without hocon library'
|
6
|
+
end
|
7
|
+
|
8
|
+
require 'hocon'
|
9
|
+
require 'hocon/config_error'
|
10
|
+
|
11
|
+
dispatch :hocon_data do
|
12
|
+
param 'Struct[{path=>String[1]}]', :options
|
13
|
+
param 'Puppet::LookupContext', :context
|
14
|
+
end
|
15
|
+
|
16
|
+
def hocon_data(options, context)
|
17
|
+
path = options['path']
|
18
|
+
begin
|
19
|
+
Hocon.parse(Puppet::FileSystem.read(path, :encoding => 'utf-8'))
|
20
|
+
rescue Hocon::ConfigError => ex
|
21
|
+
raise Puppet::DataBinding::LookupError, "Unable to parse (#{path}): #{ex.message}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# @since 4.8.0
|
2
|
+
#
|
3
|
+
Puppet::Functions.create_function(:json_data) do
|
4
|
+
dispatch :json_data do
|
5
|
+
param 'Struct[{path=>String[1]}]', :options
|
6
|
+
param 'Puppet::LookupContext', :context
|
7
|
+
end
|
8
|
+
|
9
|
+
def json_data(options, context)
|
10
|
+
path = options['path']
|
11
|
+
begin
|
12
|
+
JSON.parse(Puppet::FileSystem.read(path, :encoding => 'utf-8'))
|
13
|
+
rescue JSON::ParserError => ex
|
14
|
+
# Filename not included in message, so we add it here.
|
15
|
+
raise Puppet::DataBinding::LookupError, "Unable to parse (#{path}): #{ex.message}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# @since 4.8.0
|
2
|
+
#
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
Puppet::Functions.create_function(:yaml_data) do
|
6
|
+
dispatch :yaml_data do
|
7
|
+
param 'Struct[{path=>String[1]}]', :options
|
8
|
+
param 'Puppet::LookupContext', :context
|
9
|
+
end
|
10
|
+
|
11
|
+
def yaml_data(options, context)
|
12
|
+
begin
|
13
|
+
data = YAML.load_file(options['path'])
|
14
|
+
Puppet::Pops::Lookup::HieraConfig.symkeys_to_string(data.nil? ? {} : data)
|
15
|
+
rescue YAML::SyntaxError => ex
|
16
|
+
# Psych errors includes the absolute path to the file, so no need to add that
|
17
|
+
# to the message
|
18
|
+
raise Puppet::DataBinding::LookupError, "Unable to parse #{ex.message}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/puppet/generate/type.rb
CHANGED
@@ -222,7 +222,7 @@ module Puppet
|
|
222
222
|
effective_output_path = input.effective_output_path(outputdir)
|
223
223
|
Puppet.notice "Generating '#{effective_output_path}' using '#{input.format}' format."
|
224
224
|
FileUtils.mkdir_p(File.dirname(effective_output_path))
|
225
|
-
|
225
|
+
Puppet::FileSystem.open(effective_output_path, nil, 'w:UTF-8') do |file|
|
226
226
|
file.write(result)
|
227
227
|
end
|
228
228
|
rescue Exception => e
|
@@ -258,7 +258,8 @@ class Puppet::Graph::SimpleGraph
|
|
258
258
|
graph << '}'
|
259
259
|
|
260
260
|
filename = File.join(Puppet[:graphdir], "cycles.dot")
|
261
|
-
|
261
|
+
# DOT files are assumed to be UTF-8 by default - http://www.graphviz.org/doc/info/lang.html
|
262
|
+
File.open(filename, "w:UTF-8") { |f| f.puts graph }
|
262
263
|
return filename
|
263
264
|
end
|
264
265
|
|
@@ -463,7 +464,8 @@ class Puppet::Graph::SimpleGraph
|
|
463
464
|
return unless Puppet[:graph]
|
464
465
|
|
465
466
|
file = File.join(Puppet[:graphdir], "#{name}.dot")
|
466
|
-
|
467
|
+
# DOT files are assumed to be UTF-8 by default - http://www.graphviz.org/doc/info/lang.html
|
468
|
+
File.open(file, "w:UTF-8") { |f|
|
467
469
|
f.puts to_dot("name" => name.to_s.capitalize)
|
468
470
|
}
|
469
471
|
end
|
@@ -115,7 +115,11 @@ module Puppet::FileBucketFile
|
|
115
115
|
# @param files_original_path [String]
|
116
116
|
#
|
117
117
|
def matches(paths_file, files_original_path)
|
118
|
-
Puppet
|
118
|
+
# Puppet will have already written the paths_file in the systems encoding
|
119
|
+
# given its possible that request.options[:bucket_path] or Puppet[:bucketdir]
|
120
|
+
# contained characters in an encoding that are not represented the
|
121
|
+
# same way when the bytes are decoded as UTF-8, continue using system encoding
|
122
|
+
Puppet::FileSystem.open(paths_file, 0640, 'a+:external') do |f|
|
119
123
|
path_match(f, files_original_path)
|
120
124
|
end
|
121
125
|
end
|
@@ -138,7 +142,11 @@ module Puppet::FileBucketFile
|
|
138
142
|
Puppet::FileSystem.dir_mkpath(paths_file)
|
139
143
|
end
|
140
144
|
|
141
|
-
Puppet
|
145
|
+
# Puppet will have already written the paths_file in the systems encoding
|
146
|
+
# given its possible that request.options[:bucket_path] or Puppet[:bucketdir]
|
147
|
+
# contained characters in an encoding that are not represented the
|
148
|
+
# same way when the bytes are decoded as UTF-8, continue using system encoding
|
149
|
+
Puppet::FileSystem.exclusive_open(paths_file, 0640, 'a+:external') do |f|
|
142
150
|
if Puppet::FileSystem.exist?(contents_file)
|
143
151
|
verify_identical_file!(contents_file, bucket_file)
|
144
152
|
Puppet::FileSystem.touch(contents_file)
|
@@ -243,6 +243,8 @@ class Puppet::Indirector::Request
|
|
243
243
|
def set_uri_key(key)
|
244
244
|
@uri = key
|
245
245
|
begin
|
246
|
+
# calling URI.escape for UTF-8 characters will % escape them
|
247
|
+
# and the resulting string components of the URI are now ASCII
|
246
248
|
uri = URI.parse(URI.escape(key))
|
247
249
|
rescue => detail
|
248
250
|
raise ArgumentError, "Could not understand URL #{key}: #{detail}", detail.backtrace
|
@@ -272,6 +274,8 @@ class Puppet::Indirector::Request
|
|
272
274
|
@protocol = uri.scheme
|
273
275
|
end
|
274
276
|
|
275
|
-
|
277
|
+
# The unescaped bytes are correct but in ASCII and must be treated
|
278
|
+
# as UTF-8 for the sake of performing string comparisons later
|
279
|
+
@key = URI.unescape(uri.path.sub(/^\//, '')).force_encoding(Encoding::UTF_8)
|
276
280
|
end
|
277
281
|
end
|
@@ -27,7 +27,7 @@ module Puppet::Interface::FaceCollection
|
|
27
27
|
# ...we need to search for it bound to an o{lder,ther} version. Since
|
28
28
|
# we load all actions when the face is first references, this will be in
|
29
29
|
# memory in the known set of versions of the face.
|
30
|
-
(@faces[name].keys - [ :current ]).sort.
|
30
|
+
(@faces[name].keys - [ :current ]).sort.reverse_each do |vers|
|
31
31
|
break if action = @faces[name][vers].get_action(action_name)
|
32
32
|
end
|
33
33
|
end
|