puppet 4.2.3-x64-mingw32 → 4.3.0-x64-mingw32
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.
- data/Gemfile +3 -0
- data/README.md +1 -1
- data/ext/debian/puppet.init +0 -1
- data/ext/debian/puppet.logrotate +14 -5
- data/ext/osx/puppet.plist +0 -2
- data/ext/redhat/client.init +13 -5
- data/ext/redhat/logrotate +15 -3
- data/ext/redhat/puppet.spec.erb +5 -1
- data/ext/redhat/server.init +1 -1
- data/ext/systemd/puppet.service +1 -0
- data/lib/puppet.rb +12 -0
- data/lib/puppet/agent.rb +4 -4
- data/lib/puppet/agent/locker.rb +11 -2
- data/lib/puppet/application/agent.rb +5 -1
- data/lib/puppet/application/apply.rb +4 -0
- data/lib/puppet/application/filebucket.rb +78 -4
- data/lib/puppet/application/lookup.rb +356 -0
- data/lib/puppet/application/master.rb +3 -0
- data/lib/puppet/configurer.rb +9 -5
- data/lib/puppet/context.rb +16 -1
- data/lib/puppet/context/trusted_information.rb +21 -1
- data/lib/puppet/daemon.rb +17 -13
- data/lib/puppet/data_binding.rb +4 -2
- data/lib/puppet/data_providers.rb +12 -13
- data/lib/puppet/data_providers/data_adapter.rb +7 -68
- data/lib/puppet/data_providers/data_function_support.rb +5 -26
- data/lib/puppet/data_providers/function_env_data_provider.rb +0 -10
- data/lib/puppet/data_providers/function_module_data_provider.rb +0 -22
- data/lib/puppet/data_providers/hiera_config.rb +106 -0
- data/lib/puppet/data_providers/hiera_env_data_provider.rb +18 -0
- data/lib/puppet/data_providers/hiera_interpolate.rb +97 -0
- data/lib/puppet/data_providers/hiera_module_data_provider.rb +23 -0
- data/lib/puppet/data_providers/hiera_support.rb +37 -0
- data/lib/puppet/data_providers/json_data_provider_factory.rb +31 -0
- data/lib/puppet/data_providers/lookup_adapter.rb +200 -0
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +32 -0
- data/lib/puppet/defaults.rb +12 -2
- data/lib/puppet/error.rb +4 -0
- data/lib/puppet/face/module/changes.rb +2 -1
- data/lib/puppet/feature/cfacter.rb +1 -0
- data/lib/puppet/file_bucket/dipper.rb +58 -2
- data/lib/puppet/functions.rb +2 -4
- data/lib/puppet/functions/assert_type.rb +48 -12
- data/lib/puppet/functions/defined.rb +79 -48
- data/lib/puppet/functions/each.rb +85 -27
- data/lib/puppet/functions/filter.rb +58 -23
- data/lib/puppet/functions/hiera.rb +76 -3
- data/lib/puppet/functions/hiera_array.rb +65 -3
- data/lib/puppet/functions/hiera_hash.rb +74 -2
- data/lib/puppet/functions/hiera_include.rb +75 -2
- data/lib/puppet/functions/lookup.rb +19 -17
- data/lib/puppet/functions/map.rb +56 -21
- data/lib/puppet/functions/match.rb +29 -12
- data/lib/puppet/functions/reduce.rb +95 -58
- data/lib/puppet/functions/versioncmp.rb +36 -0
- data/lib/puppet/functions/with.rb +15 -7
- data/lib/puppet/indirector/catalog/compiler.rb +3 -3
- data/lib/puppet/indirector/catalog/static_compiler.rb +46 -30
- data/lib/puppet/indirector/data_binding/none.rb +4 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +58 -1
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/request.rb +7 -8
- data/lib/puppet/indirector/resource_type/parser.rb +5 -3
- data/lib/puppet/info_service.rb +7 -0
- data/lib/puppet/info_service/class_information_service.rb +111 -0
- data/lib/puppet/module_tool/metadata.rb +32 -9
- data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +42 -38
- data/lib/puppet/network/authconfig.rb +21 -1
- data/lib/puppet/network/authorization.rb +8 -1
- data/lib/puppet/network/http/api/master/v3.rb +7 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +59 -0
- data/lib/puppet/node/environment.rb +9 -2
- data/lib/puppet/parser.rb +3 -0
- data/lib/puppet/parser/ast/pops_bridge.rb +39 -1
- data/lib/puppet/parser/compiler.rb +302 -12
- data/lib/puppet/parser/compiler/catalog_validator.rb +33 -0
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +64 -0
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +38 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +20 -0
- data/lib/puppet/parser/environment_compiler.rb +165 -0
- data/lib/puppet/parser/functions/assert_type.rb +46 -16
- data/lib/puppet/parser/functions/defined.rb +105 -68
- data/lib/puppet/parser/functions/each.rb +85 -27
- data/lib/puppet/parser/functions/filter.rb +59 -23
- data/lib/puppet/parser/functions/hiera.rb +83 -27
- data/lib/puppet/parser/functions/hiera_array.rb +71 -28
- data/lib/puppet/parser/functions/hiera_hash.rb +81 -30
- data/lib/puppet/parser/functions/hiera_include.rb +81 -40
- data/lib/puppet/parser/functions/map.rb +55 -20
- data/lib/puppet/parser/functions/match.rb +27 -12
- data/lib/puppet/parser/functions/reduce.rb +97 -60
- data/lib/puppet/parser/functions/with.rb +16 -8
- data/lib/puppet/parser/resource.rb +98 -19
- data/lib/puppet/plugins/configuration.rb +3 -2
- data/lib/puppet/plugins/data_providers.rb +12 -60
- data/lib/puppet/plugins/data_providers/data_provider.rb +283 -0
- data/lib/puppet/plugins/data_providers/registry.rb +84 -0
- data/lib/puppet/pops.rb +19 -17
- data/lib/puppet/pops/adapters.rb +12 -0
- data/lib/puppet/pops/binder/binder.rb +2 -2
- data/lib/puppet/pops/binder/bindings_checker.rb +1 -1
- data/lib/puppet/pops/binder/bindings_label_provider.rb +3 -1
- data/lib/puppet/pops/binder/bindings_loader.rb +6 -2
- data/lib/puppet/pops/binder/bindings_model_meta.rb +2 -2
- data/lib/puppet/pops/binder/config/binder_config.rb +1 -1
- data/lib/puppet/pops/binder/injector.rb +4 -4
- data/lib/puppet/pops/binder/key_factory.rb +3 -9
- data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +68 -9
- data/lib/puppet/pops/evaluator/access_operator.rb +27 -60
- data/lib/puppet/pops/evaluator/closure.rb +8 -8
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +87 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +7 -1
- data/lib/puppet/pops/functions/dispatcher.rb +3 -3
- data/lib/puppet/pops/issues.rb +1 -1
- data/lib/puppet/pops/label_provider.rb +1 -1
- data/lib/puppet/pops/lookup.rb +25 -47
- data/lib/puppet/pops/lookup/explainer.rb +402 -0
- data/lib/puppet/pops/lookup/invocation.rb +117 -0
- data/lib/puppet/pops/merge_strategy.rb +73 -5
- data/lib/puppet/pops/model/factory.rb +34 -0
- data/lib/puppet/pops/model/model_label_provider.rb +10 -1
- data/lib/puppet/pops/model/model_meta.rb +15 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +18 -0
- data/lib/puppet/pops/parser/code_merger.rb +13 -1
- data/lib/puppet/pops/parser/egrammar.ra +56 -3
- data/lib/puppet/pops/parser/eparser.rb +1549 -1352
- data/lib/puppet/pops/parser/lexer2.rb +31 -6
- data/lib/puppet/pops/parser/locator.rb +1 -1
- data/lib/puppet/pops/parser/parser_support.rb +25 -13
- data/lib/puppet/pops/types/enumeration.rb +1 -2
- data/lib/puppet/pops/types/type_asserter.rb +16 -15
- data/lib/puppet/pops/types/type_assertion_error.rb +1 -0
- data/lib/puppet/pops/types/type_calculator.rb +171 -1020
- data/lib/puppet/pops/types/type_factory.rb +87 -148
- data/lib/puppet/pops/types/type_mismatch_describer.rb +743 -0
- data/lib/puppet/pops/types/type_parser.rb +116 -127
- data/lib/puppet/pops/types/types.rb +1394 -255
- data/lib/puppet/pops/types/types_meta.rb +0 -234
- data/lib/puppet/pops/validation.rb +7 -2
- data/lib/puppet/pops/validation/checker4_0.rb +28 -0
- data/lib/puppet/provider/augeas/augeas.rb +50 -0
- data/lib/puppet/provider/group/directoryservice.rb +10 -0
- data/lib/puppet/provider/package/dnf.rb +41 -0
- data/lib/puppet/provider/package/gem.rb +7 -2
- data/lib/puppet/provider/package/rpm.rb +1 -0
- data/lib/puppet/provider/package/windows/exe_package.rb +10 -8
- data/lib/puppet/provider/package/windows/msi_package.rb +4 -3
- data/lib/puppet/provider/package/windows/package.rb +9 -1
- data/lib/puppet/provider/package/yum.rb +14 -9
- data/lib/puppet/provider/service/bsd.rb +1 -1
- data/lib/puppet/provider/service/debian.rb +21 -0
- data/lib/puppet/provider/service/init.rb +6 -0
- data/lib/puppet/provider/service/rcng.rb +51 -0
- data/lib/puppet/provider/service/redhat.rb +2 -1
- data/lib/puppet/provider/service/smf.rb +43 -2
- data/lib/puppet/provider/service/src.rb +27 -0
- data/lib/puppet/provider/service/systemd.rb +15 -3
- data/lib/puppet/provider/sshkey/parsed.rb +19 -9
- data/lib/puppet/reference/report.rb +9 -12
- data/lib/puppet/reports.rb +5 -1
- data/lib/puppet/resource.rb +50 -73
- data/lib/puppet/resource/capability_finder.rb +95 -0
- data/lib/puppet/resource/catalog.rb +47 -7
- data/lib/puppet/resource/status.rb +0 -2
- data/lib/puppet/resource/type.rb +238 -44
- data/lib/puppet/resource/type_collection.rb +60 -2
- data/lib/puppet/settings.rb +2 -2
- data/lib/puppet/ssl/certificate_authority/interface.rb +2 -2
- data/lib/puppet/ssl/oids.rb +9 -1
- data/lib/puppet/transaction.rb +4 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +71 -8
- data/lib/puppet/transaction/resource_harness.rb +9 -4
- data/lib/puppet/type.rb +74 -3
- data/lib/puppet/type/augeas.rb +8 -0
- data/lib/puppet/type/file/source.rb +14 -12
- data/lib/puppet/type/user.rb +4 -2
- data/lib/puppet/util/windows/security.rb +4 -1
- data/lib/puppet/util/windows/taskscheduler.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +3 -0
- data/spec/fixtures/unit/application/environments/production/environment.conf +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +18 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +46 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +30 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +13 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +18 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/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/lib/puppet_x/helindbe/sample_module_data.rb +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +3 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/hiera.yaml +8 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/manifests/init.pp +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/manifests/init.pp +3 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +10 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +23 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/manifests/init.pp +3 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/metadata.json +9 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +184 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +24 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +24 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +24 -0
- data/spec/integration/data_binding_spec.rb +229 -0
- data/spec/integration/file_bucket/file_spec.rb +2 -2
- data/spec/integration/parser/compiler_spec.rb +23 -19
- data/spec/integration/parser/resource_expressions_spec.rb +4 -4
- data/spec/integration/parser/undef_param_spec.rb +1 -1
- data/spec/integration/resource/catalog_spec.rb +1 -1
- data/spec/integration/type/package_spec.rb +2 -0
- data/spec/integration/util/windows/security_spec.rb +18 -0
- data/spec/lib/matchers/include_in_order.rb +2 -2
- data/spec/shared_behaviours/iterative_functions.rb +8 -8
- data/spec/spec_helper.rb +7 -0
- data/spec/unit/agent/locker_spec.rb +4 -4
- data/spec/unit/agent_spec.rb +0 -8
- data/spec/unit/application/agent_spec.rb +5 -0
- data/spec/unit/application/apply_spec.rb +8 -0
- data/spec/unit/application/filebucket_spec.rb +87 -1
- data/spec/unit/application/lookup_spec.rb +195 -0
- data/spec/unit/appmgmt_spec.rb +657 -0
- data/spec/unit/capability_spec.rb +414 -0
- data/spec/unit/configurer_spec.rb +7 -1
- data/spec/unit/context/trusted_information_spec.rb +24 -1
- data/spec/unit/daemon_spec.rb +18 -8
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +201 -0
- data/spec/unit/file_bucket/dipper_spec.rb +210 -1
- data/spec/unit/functions/assert_type_spec.rb +5 -7
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +2 -2
- data/spec/unit/functions/lookup_spec.rb +200 -9
- data/spec/unit/functions/regsubst_spec.rb +17 -8
- data/spec/unit/functions/scanf_spec.rb +1 -1
- data/spec/unit/functions/split_spec.rb +2 -2
- data/spec/unit/functions/versioncmp_spec.rb +36 -0
- data/spec/unit/functions4_spec.rb +58 -72
- data/spec/unit/indirector/catalog/compiler_spec.rb +28 -8
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +38 -20
- data/spec/unit/indirector/data_binding/none_spec.rb +2 -2
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +52 -1
- data/spec/unit/indirector/request_spec.rb +8 -8
- data/spec/unit/info_service_spec.rb +236 -0
- data/spec/unit/module_tool/metadata_spec.rb +31 -2
- data/spec/unit/network/authconfig_spec.rb +62 -32
- data/spec/unit/network/authorization_spec.rb +30 -2
- data/spec/unit/network/http/connection_spec.rb +14 -19
- data/spec/unit/parser/compiler_spec.rb +86 -2
- data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
- data/spec/unit/parser/resource_spec.rb +2 -20
- data/spec/unit/pops/binder/config/binder_config_spec.rb +1 -1
- data/spec/unit/pops/binder/injector_spec.rb +3 -3
- data/spec/unit/pops/evaluator/access_ops_spec.rb +13 -11
- data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -2
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +19 -11
- data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +43 -0
- data/spec/unit/pops/label_provider_spec.rb +5 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +33 -7
- data/spec/unit/pops/parser/parse_application_spec.rb +40 -0
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +4 -0
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +47 -0
- data/spec/unit/pops/parser/parse_site_spec.rb +38 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -0
- data/spec/unit/pops/parser/parser_spec.rb +18 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +427 -444
- data/spec/unit/pops/types/type_factory_spec.rb +12 -12
- data/spec/unit/pops/types/type_parser_spec.rb +7 -12
- data/spec/unit/pops/validator/validator_spec.rb +25 -0
- data/spec/unit/provider/augeas/augeas_spec.rb +50 -0
- data/spec/unit/provider/group/directoryservice_spec.rb +33 -0
- data/spec/unit/provider/group/windows_adsi_spec.rb +3 -0
- data/spec/unit/provider/package/dnf_spec.rb +92 -0
- data/spec/unit/provider/package/gem_spec.rb +7 -0
- data/spec/unit/provider/package/rpm_spec.rb +25 -2
- data/spec/unit/provider/package/windows/package_spec.rb +41 -0
- data/spec/unit/provider/package/yum_spec.rb +21 -13
- data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +10 -0
- data/spec/unit/provider/service/debian_spec.rb +27 -0
- data/spec/unit/provider/service/rcng_spec.rb +41 -0
- data/spec/unit/provider/service/redhat_spec.rb +8 -1
- data/spec/unit/provider/service/smf_spec.rb +30 -5
- data/spec/unit/provider/service/src_spec.rb +19 -4
- data/spec/unit/provider/service/systemd_spec.rb +78 -29
- data/spec/unit/provider/sshkey/parsed_spec.rb +23 -0
- data/spec/unit/reports_spec.rb +10 -0
- data/spec/unit/resource/capability_finder_spec.rb +56 -0
- data/spec/unit/resource/catalog_spec.rb +31 -8
- data/spec/unit/resource/type_collection_spec.rb +23 -2
- data/spec/unit/resource/type_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +22 -4
- data/spec/unit/settings_spec.rb +90 -1
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +4 -3
- data/spec/unit/ssl/oids_spec.rb +8 -0
- data/spec/unit/transaction/additional_resource_generator_spec.rb +78 -5
- data/spec/unit/transaction/report_spec.rb +24 -1
- data/spec/unit/type/package_spec.rb +1 -0
- data/spec/unit/type/user_spec.rb +14 -7
- data/spec/unit/type_spec.rb +1 -1
- metadata +169 -5
- data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +0 -175
- data/spec/integration/data_binding.rb +0 -104
@@ -1,36 +1,87 @@
|
|
1
1
|
require 'hiera_puppet'
|
2
2
|
|
3
3
|
module Puppet::Parser::Functions
|
4
|
-
newfunction(
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
4
|
+
newfunction(
|
5
|
+
:hiera_hash,
|
6
|
+
:type => :rvalue,
|
7
|
+
:arity => -2,
|
8
|
+
:doc => <<-DOC
|
9
|
+
Finds all matches of a key throughout the hierarchy and returns them in a merged hash.
|
10
|
+
If any of the matched hashes share keys, the final hash uses the value from the
|
11
|
+
highest priority match. This is called a
|
12
|
+
[hash merge lookup](https://docs.puppetlabs.com/hiera/latest/lookup_types.html#hash-merge).
|
13
|
+
|
14
|
+
The merge strategy is determined by Hiera's
|
15
|
+
[`:merge_behavior`](https://docs.puppetlabs.com/hiera/latest/configuring.html#mergebehavior)
|
16
|
+
setting.
|
17
|
+
|
18
|
+
The `hiera_hash` function takes up to three arguments, in this order:
|
19
|
+
|
20
|
+
1. A string key that Hiera searches for in the hierarchy. **Required**.
|
21
|
+
2. An optional default value to return if Hiera doesn't find anything matching the key.
|
22
|
+
* If this argument isn't provided and this function results in a lookup failure, Puppet
|
23
|
+
fails with a compilation error.
|
24
|
+
3. The optional name of an arbitrary
|
25
|
+
[hierarchy level](https://docs.puppetlabs.com/hiera/latest/hierarchy.html) to insert at the
|
26
|
+
top of the hierarchy. This lets you temporarily modify the hierarchy for a single lookup.
|
27
|
+
* If Hiera doesn't find a matching key in the overriding hierarchy level, it continues
|
28
|
+
searching the rest of the hierarchy.
|
29
|
+
|
30
|
+
**Example**: Using `hiera_hash`
|
31
|
+
|
32
|
+
~~~ yaml
|
33
|
+
# Assuming hiera.yaml
|
34
|
+
# :hierarchy:
|
35
|
+
# - web01.example.com
|
36
|
+
# - common
|
37
|
+
|
38
|
+
# Assuming common.yaml:
|
39
|
+
# users:
|
40
|
+
# regular:
|
41
|
+
# 'cdouglas': 'Carrie Douglas'
|
42
|
+
|
43
|
+
# Assuming web01.example.com.yaml:
|
44
|
+
# users:
|
45
|
+
# administrators:
|
46
|
+
# 'aberry': 'Amy Berry'
|
47
|
+
~~~
|
48
|
+
|
49
|
+
~~~ puppet
|
50
|
+
# Assuming we are not web01.example.com:
|
51
|
+
|
52
|
+
$allusers = hiera_hash('users', undef)
|
53
|
+
|
54
|
+
# $allusers contains {regular => {"cdouglas" => "Carrie Douglas"},
|
55
|
+
# administrators => {"aberry" => "Amy Berry"}}
|
56
|
+
~~~
|
57
|
+
|
58
|
+
You can optionally generate the default value with a
|
59
|
+
[lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html) that
|
60
|
+
takes one parameter.
|
61
|
+
|
62
|
+
**Example**: Using `hiera_hash` with a lambda
|
63
|
+
|
64
|
+
~~~ puppet
|
65
|
+
# Assuming the same Hiera data as the previous example:
|
66
|
+
|
67
|
+
$allusers = hiera_hash('users') | $key | { "Key \'${key}\' not found" }
|
68
|
+
|
69
|
+
# $allusers contains {regular => {"cdouglas" => "Carrie Douglas"},
|
70
|
+
# administrators => {"aberry" => "Amy Berry"}}
|
71
|
+
# If hiera_hash couldn't match its key, it would return the lambda result,
|
72
|
+
# "Key 'users' not found".
|
73
|
+
~~~
|
74
|
+
|
75
|
+
`hiera_hash` expects that all values returned will be hashes. If any of the values
|
76
|
+
found in the data sources are strings or arrays, Puppet raises a type mismatch error.
|
77
|
+
|
78
|
+
See
|
79
|
+
[the documentation](https://docs.puppetlabs.com/hiera/latest/puppet.html#hiera-lookup-functions)
|
80
|
+
for more information about Hiera lookup functions.
|
81
|
+
|
82
|
+
- Since 4.0.0
|
83
|
+
DOC
|
84
|
+
) do |*args|
|
34
85
|
function_fail(["hiera_hash() has been converted to 4x API"])
|
35
86
|
end
|
36
87
|
end
|
@@ -1,46 +1,87 @@
|
|
1
1
|
require 'hiera_puppet'
|
2
2
|
|
3
3
|
module Puppet::Parser::Functions
|
4
|
-
newfunction(
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
4
|
+
newfunction(
|
5
|
+
:hiera_include,
|
6
|
+
:arity => -2,
|
7
|
+
:doc => <<-DOC
|
8
|
+
Assigns classes to a node using an
|
9
|
+
[array merge lookup](https://docs.puppetlabs.com/hiera/latest/lookup_types.htmlarray-merge)
|
10
|
+
that retrieves the value for a user-specified key from Hiera's data.
|
11
|
+
|
12
|
+
The `hiera_include` function requires:
|
13
|
+
|
14
|
+
- A string key name to use for classes.
|
15
|
+
- A call to this function (i.e. `hiera_include('classes')`) in your environment's
|
16
|
+
`sites.pp` manifest, outside of any node definitions and below any top-scope variables
|
17
|
+
that Hiera uses in lookups.
|
18
|
+
- `classes` keys in the appropriate Hiera data sources, with an array for each
|
19
|
+
`classes` key and each value of the array containing the name of a class.
|
20
|
+
|
21
|
+
The function takes up to three arguments, in this order:
|
22
|
+
|
23
|
+
1. A string key that Hiera searches for in the hierarchy. **Required**.
|
24
|
+
2. An optional default value to return if Hiera doesn't find anything matching the key.
|
25
|
+
* If this argument isn't provided and this function results in a lookup failure, Puppet
|
26
|
+
fails with a compilation error.
|
27
|
+
3. The optional name of an arbitrary
|
28
|
+
[hierarchy level](https://docs.puppetlabs.com/hiera/latest/hierarchy.html) to insert at the
|
29
|
+
top of the hierarchy. This lets you temporarily modify the hierarchy for a single lookup.
|
30
|
+
* If Hiera doesn't find a matching key in the overriding hierarchy level, it continues
|
31
|
+
searching the rest of the hierarchy.
|
32
|
+
|
33
|
+
The function uses an
|
34
|
+
[array merge lookup](https://docs.puppetlabs.com/hiera/latest/lookup_types.htmlarray-merge)
|
35
|
+
to retrieve the `classes` array, so every node gets every class from the hierarchy.
|
36
|
+
|
37
|
+
**Example**: Using `hiera_include`
|
38
|
+
|
39
|
+
~~~ yaml
|
40
|
+
# Assuming hiera.yaml
|
41
|
+
# :hierarchy:
|
42
|
+
# - web01.example.com
|
43
|
+
# - common
|
44
|
+
|
45
|
+
# Assuming web01.example.com.yaml:
|
46
|
+
# classes:
|
47
|
+
# - apache::mod::php
|
48
|
+
|
49
|
+
# Assuming common.yaml:
|
50
|
+
# classes:
|
51
|
+
# - apache
|
52
|
+
~~~
|
53
|
+
|
54
|
+
~~~ puppet
|
55
|
+
# In site.pp, outside of any node definitions and below any top-scope variables:
|
56
|
+
hiera_include('classes', undef)
|
57
|
+
|
58
|
+
# Puppet assigns the apache and apache::mod::php classes to the web01.example.com node.
|
59
|
+
~~~
|
60
|
+
|
61
|
+
You can optionally generate the default value with a
|
62
|
+
[lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html) that
|
63
|
+
takes one parameter.
|
64
|
+
|
65
|
+
**Example**: Using `hiera_include` with a lambda
|
66
|
+
|
67
|
+
~~~ puppet
|
68
|
+
# Assuming the same Hiera data as the previous example:
|
69
|
+
|
70
|
+
# In site.pp, outside of any node definitions and below any top-scope variables:
|
71
|
+
hiera_include('classes') | $key | {"Key \'${key}\' not found" }
|
72
|
+
|
73
|
+
# Puppet assigns the apache and apache::mod::php classes to the web01.example.com node.
|
74
|
+
# If hiera_include couldn't match its key, it would return the lambda result,
|
75
|
+
# "Key 'classes' not found".
|
76
|
+
~~~
|
77
|
+
|
78
|
+
See [the documentation](http://links.puppetlabs.com/hierainclude) for more information
|
79
|
+
and a more detailed example of how `hiera_include` uses array merge lookups to classify
|
80
|
+
nodes.
|
81
|
+
|
82
|
+
- Since 4.0.0
|
83
|
+
DOC
|
84
|
+
) do |*args|
|
44
85
|
function_fail(["hiera_include() has been converted to 4x API"])
|
45
86
|
end
|
46
87
|
end
|
@@ -3,36 +3,71 @@ Puppet::Parser::Functions::newfunction(
|
|
3
3
|
:type => :rvalue,
|
4
4
|
:arity => -3,
|
5
5
|
:doc => <<-DOC
|
6
|
-
Applies a
|
7
|
-
|
6
|
+
Applies a [lambda](http://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html)
|
7
|
+
to every value in a data structure and returns an array containing the results.
|
8
8
|
|
9
|
-
This function takes two mandatory arguments
|
10
|
-
(integer, Integer range, or String), and the second a parameterized block as produced by the puppet syntax:
|
9
|
+
This function takes two mandatory arguments, in this order:
|
11
10
|
|
12
|
-
|
13
|
-
|
11
|
+
1. An array or hash the function will iterate over.
|
12
|
+
2. A lambda, which the function calls for each element in the first argument. It can
|
13
|
+
request one or two parameters.
|
14
14
|
|
15
|
-
|
16
|
-
When the first argument is a hash the entry is an array with `[key, value]`.
|
15
|
+
**Example**: Using the `map` function
|
17
16
|
|
18
|
-
|
17
|
+
`$transformed_data = $data.map |$parameter| { <PUPPET CODE BLOCK> }`
|
19
18
|
|
20
|
-
|
21
|
-
$a.map |$x|{ $x[1] }
|
19
|
+
or
|
22
20
|
|
23
|
-
|
24
|
-
$a.map |$x| { $x[0] }
|
21
|
+
`$transformed_data = map($data) |$parameter| { <PUPPET CODE BLOCK> }`
|
25
22
|
|
26
|
-
When
|
27
|
-
|
23
|
+
When the first argument (`$data` in the above example) is an array, Puppet passes each
|
24
|
+
value in turn to the lambda.
|
28
25
|
|
29
|
-
Example Using map with
|
26
|
+
**Example**: Using the `map` function with an array and a one-parameter lambda
|
30
27
|
|
31
|
-
|
32
|
-
|
28
|
+
~~~ puppet
|
29
|
+
# For the array $data, return an array containing each value multiplied by 10
|
30
|
+
$data = [1,2,3]
|
31
|
+
$transformed_data = $data.map |$items| { $items * 10 }
|
32
|
+
# $transformed_data contains [10,20,30]
|
33
|
+
~~~
|
33
34
|
|
34
|
-
|
35
|
-
|
35
|
+
When the first argument is a hash, Puppet passes each key and value pair to the lambda
|
36
|
+
as an array in the form `[key, value]`.
|
37
|
+
|
38
|
+
**Example**: Using the `map` function with a hash and a one-parameter lambda
|
39
|
+
|
40
|
+
~~~ puppet
|
41
|
+
# For the hash $data, return an array containing the keys
|
42
|
+
$data = {'a'=>1,'b'=>2,'c'=>3}
|
43
|
+
$transformed_data = $data.map |$items| { $items[0] }
|
44
|
+
# $transformed_data contains ['a','b','c']
|
45
|
+
~~~
|
46
|
+
|
47
|
+
When the first argument is an array and the lambda has two parameters, Puppet passes the
|
48
|
+
array's indexes (enumerated from 0) in the first parameter and its values in the second
|
49
|
+
parameter.
|
50
|
+
|
51
|
+
**Example**: Using the `map` function with an array and a two-parameter lambda
|
52
|
+
|
53
|
+
~~~ puppet
|
54
|
+
# For the array $data, return an array containing the indexes
|
55
|
+
$data = [1,2,3]
|
56
|
+
$transformed_data = $data.map |$index,$value| { $index }
|
57
|
+
# $transformed_data contains [0,1,2]
|
58
|
+
~~~
|
59
|
+
|
60
|
+
When the first argument is a hash, Puppet passes its keys to the first parameter and its
|
61
|
+
values to the second parameter.
|
62
|
+
|
63
|
+
**Example**: Using the `map` function with a hash and a two-parameter lambda
|
64
|
+
|
65
|
+
~~~ puppet
|
66
|
+
# For the hash $data, return an array containing each value
|
67
|
+
$data = {'a'=>1,'b'=>2,'c'=>3}
|
68
|
+
$transformed_data = $data.map |$key,$value| { $value }
|
69
|
+
# $transformed_data contains [1,2,3]
|
70
|
+
~~~
|
36
71
|
|
37
72
|
- Since 4.0.0
|
38
73
|
DOC
|
@@ -2,23 +2,38 @@ Puppet::Parser::Functions::newfunction(
|
|
2
2
|
:match,
|
3
3
|
:arity => 2,
|
4
4
|
:doc => <<-DOC
|
5
|
-
|
5
|
+
Matches a regular expression against a string and returns an array containing the match
|
6
|
+
and any matched capturing groups.
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
* Regexp type
|
8
|
+
The first argument is a string or array of strings. The second argument is either a
|
9
|
+
regular expression, regular expression represented as a string, or Regex or Pattern
|
10
|
+
data type that the function matches against the first argument.
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
with mapped match results
|
12
|
+
The returned array contains the entire match at index 0, and each captured group at
|
13
|
+
subsequent index values. If the value or expression being matched is an array, the
|
14
|
+
function returns an array with mapped match results.
|
15
15
|
|
16
|
-
|
16
|
+
If the function doesn't find a match, it returns 'undef'.
|
17
17
|
|
18
|
-
|
19
|
-
"abc123".match(/([a-z]+)([1-9]+)/) # => ["abc", "123"]
|
18
|
+
**Example**: Matching a regular expression in a string
|
20
19
|
|
21
|
-
|
20
|
+
~~~ ruby
|
21
|
+
$matches = "abc123".match(/[a-z]+[1-9]+/)
|
22
|
+
# $matches contains [abc123]
|
23
|
+
~~~
|
24
|
+
|
25
|
+
**Example**: Matching a regular expressions with grouping captures in a string
|
26
|
+
|
27
|
+
~~~ ruby
|
28
|
+
$matches = "abc123".match(/([a-z]+)([1-9]+)/)
|
29
|
+
# $matches contains [abc123, abc, 123]
|
30
|
+
~~~
|
31
|
+
|
32
|
+
**Example**: Matching a regular expression with grouping captures in an array of strings
|
33
|
+
|
34
|
+
~~~ ruby
|
35
|
+
$matches = ["abc123","def456"].match(/([a-z]+)([1-9]+)/)
|
36
|
+
# $matches contains [[abc123, abc, 123], [def456, def, 456]]
|
22
37
|
|
23
38
|
- Since 4.0.0
|
24
39
|
DOC
|
@@ -3,66 +3,103 @@ Puppet::Parser::Functions::newfunction(
|
|
3
3
|
:type => :rvalue,
|
4
4
|
:arity => -3,
|
5
5
|
:doc => <<-DOC
|
6
|
-
Applies a
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
6
|
+
Applies a [lambda](https://docs.puppetlabs.com/puppet/latest/reference/lang_lambdas.html)
|
7
|
+
to every value in a data structure from the first argument, carrying over the returned
|
8
|
+
value of each iteration, and returns the result of the lambda's final iteration. This
|
9
|
+
lets you create a new value or data structure by combining values from the first
|
10
|
+
argument's data structure.
|
11
|
+
|
12
|
+
This function takes two mandatory arguments, in this order:
|
13
|
+
|
14
|
+
1. An array or hash the function will iterate over.
|
15
|
+
2. A lambda, which the function calls for each element in the first argument. It takes
|
16
|
+
two mandatory parameters:
|
17
|
+
1. A memo value that is overwritten after each iteration with the iteration's result.
|
18
|
+
2. A second value that is overwritten after each iteration with the next value in the
|
19
|
+
function's first argument.
|
20
|
+
|
21
|
+
**Example**: Using the `reduce` function
|
22
|
+
|
23
|
+
`$data.reduce |$memo, $value| { ... }`
|
24
|
+
|
25
|
+
or
|
26
|
+
|
27
|
+
`reduce($data) |$memo, $value| { ... }`
|
28
|
+
|
29
|
+
You can also pass an optional "start memo" value as an argument, such as `start` below:
|
30
|
+
|
31
|
+
`$data.reduce(start) |$memo, $value| { ... }`
|
32
|
+
|
33
|
+
or
|
34
|
+
|
35
|
+
`reduce($data, start) |$memo, $value| { ... }`
|
36
|
+
|
37
|
+
When the first argument (`$data` in the above example) is an array, Puppet passes each
|
38
|
+
of the data structure's values in turn to the lambda's parameters. When the first
|
39
|
+
argument is a hash, Puppet converts each of the hash's values to an array in the form
|
40
|
+
`[key, value]`.
|
41
|
+
|
42
|
+
If you pass a start memo value, Puppet executes the lambda with the provided memo value
|
43
|
+
and the data structure's first value. Otherwise, Puppet passes the structure's first two
|
44
|
+
values to the lambda.
|
45
|
+
|
46
|
+
Puppet calls the lambda for each of the data structure's remaining values. For each
|
47
|
+
call, it passes the result of the previous call as the first parameter ($memo in the
|
48
|
+
above examples) and the next value from the data structure as the second parameter
|
49
|
+
($value).
|
50
|
+
|
51
|
+
If the structure has one value, Puppet returns the value and does not call the lambda.
|
52
|
+
|
53
|
+
**Example**: Using the `reduce` function
|
54
|
+
|
55
|
+
~~~ puppet
|
56
|
+
# Reduce the array $data, returning the sum of all values in the array.
|
57
|
+
$data = [1, 2, 3]
|
58
|
+
$sum = $data.reduce |$memo, $value| { $memo + $value }
|
59
|
+
# $sum contains 6
|
60
|
+
|
61
|
+
# Reduce the array $data, returning the sum of a start memo value and all values in the
|
62
|
+
# array.
|
63
|
+
$data = [1, 2, 3]
|
64
|
+
$sum = $data.reduce(4) |$memo, $value| { $memo + $value }
|
65
|
+
# $sum contains 10
|
66
|
+
|
67
|
+
# Reduce the hash $data, returning the sum of all values and concatenated string of all
|
68
|
+
# keys.
|
69
|
+
$data = {a => 1, b => 2, c => 3}
|
70
|
+
$combine = $data.reduce |$memo, $value| {
|
71
|
+
$string = "${memo[0]}${value[0]}"
|
72
|
+
$number = $memo[1] + $value[1]
|
73
|
+
[$string, $number]
|
74
|
+
}
|
75
|
+
# $combine contains [abc, 6]
|
76
|
+
~~~
|
77
|
+
|
78
|
+
**Example**: Using the `reduce` function with a start memo and two-parameter lambda
|
79
|
+
|
80
|
+
~~~ puppet
|
81
|
+
# Reduce the array $data, returning the sum of all values in the array and starting
|
82
|
+
# with $memo set to an arbitrary value instead of $data's first value.
|
83
|
+
$data = [1, 2, 3]
|
84
|
+
$sum = $data.reduce(4) |$memo, $value| { $memo + $value }
|
85
|
+
# At the start of the lambda's first iteration, $memo contains 4 and $value contains 1.
|
86
|
+
# After all iterations, $sum contains 10.
|
87
|
+
|
88
|
+
# Reduce the hash $data, returning the sum of all values and concatenated string of
|
89
|
+
# all keys, and starting with $memo set to an arbitrary array instead of $data's first
|
90
|
+
# key-value pair.
|
91
|
+
$data = {a => 1, b => 2, c => 3}
|
92
|
+
$combine = $data.reduce( [d, 4] ) |$memo, $value| {
|
93
|
+
$string = "${memo[0]}${value[0]}"
|
94
|
+
$number = $memo[1] + $value[1]
|
95
|
+
[$string, $number]
|
96
|
+
}
|
97
|
+
# At the start of the lambda's first iteration, $memo contains [d, 4] and $value
|
98
|
+
# contains [a, 1].
|
99
|
+
# $combine contains [dabc, 10]
|
100
|
+
~~~
|
101
|
+
|
102
|
+
- Since 4.0.0
|
66
103
|
DOC
|
67
104
|
) do |args|
|
68
105
|
function_fail(["reduce() is only available when parser/evaluator future is in effect"])
|