puppet 6.13.0-x86-mingw32 → 6.18.0-x86-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.
- checksums.yaml +4 -4
- data/CODEOWNERS +2 -7
- data/CONTRIBUTING.md +7 -13
- data/Gemfile +4 -2
- data/Gemfile.lock +36 -32
- data/README.md +17 -24
- data/ext/windows/service/daemon.rb +3 -3
- data/lib/puppet.rb +33 -9
- data/lib/puppet/agent.rb +20 -14
- data/lib/puppet/application/agent.rb +26 -17
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/describe.rb +7 -5
- data/lib/puppet/application/device.rb +2 -2
- data/lib/puppet/application/filebucket.rb +19 -15
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/plugin.rb +1 -0
- data/lib/puppet/application/ssl.rb +4 -4
- data/lib/puppet/configurer.rb +58 -57
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/configurer/plugin_handler.rb +10 -1
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/context/trusted_information.rb +14 -8
- data/lib/puppet/daemon.rb +13 -27
- data/lib/puppet/defaults.rb +92 -12
- data/lib/puppet/environments.rb +4 -5
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/face/help.rb +29 -3
- data/lib/puppet/face/module/search.rb +5 -0
- data/lib/puppet/face/plugin.rb +2 -2
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +14 -2
- data/lib/puppet/file_serving/metadata.rb +4 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +17 -13
- data/lib/puppet/file_system/uniquefile.rb +12 -16
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +4 -7
- data/lib/puppet/functions/call.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +13 -8
- data/lib/puppet/functions/filter.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/rstrip.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +4 -4
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +3 -0
- data/lib/puppet/http/client.rb +263 -73
- data/lib/puppet/http/external_client.rb +90 -0
- data/lib/puppet/http/redirector.rb +43 -7
- data/lib/puppet/http/resolver.rb +46 -3
- data/lib/puppet/http/resolver/server_list.rb +76 -16
- data/lib/puppet/http/resolver/settings.rb +23 -3
- data/lib/puppet/http/resolver/srv.rb +29 -3
- data/lib/puppet/http/response.rb +87 -1
- data/lib/puppet/http/retry_after_handler.rb +39 -0
- data/lib/puppet/http/service.rb +97 -12
- data/lib/puppet/http/service/ca.rb +76 -14
- data/lib/puppet/http/service/compiler.rb +249 -16
- data/lib/puppet/http/service/file_server.rb +141 -20
- data/lib/puppet/http/service/report.rb +47 -17
- data/lib/puppet/http/session.rb +96 -7
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/rest.rb +34 -0
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/rest.rb +42 -0
- data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
- data/lib/puppet/indirector/file_content/http.rb +5 -0
- data/lib/puppet/indirector/file_content/rest.rb +30 -0
- data/lib/puppet/indirector/file_metadata/http.rb +28 -8
- data/lib/puppet/indirector/file_metadata/rest.rb +52 -0
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/node/rest.rb +24 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/rest.rb +19 -0
- data/lib/puppet/indirector/report/yaml.rb +23 -0
- data/lib/puppet/indirector/request.rb +1 -1
- data/lib/puppet/indirector/rest.rb +12 -0
- data/lib/puppet/indirector/status/rest.rb +18 -0
- data/lib/puppet/loaders.rb +6 -0
- data/lib/puppet/metatype/manager.rb +80 -80
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/base_pool.rb +7 -2
- data/lib/puppet/network/http/compression.rb +7 -0
- data/lib/puppet/network/http/connection.rb +2 -0
- data/lib/puppet/network/http/connection_adapter.rb +184 -0
- data/lib/puppet/network/http/nocache_pool.rb +1 -0
- data/lib/puppet/network/http/pool.rb +8 -5
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +2 -1
- data/lib/puppet/node/environment.rb +22 -5
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +30 -31
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
- data/lib/puppet/parser/compiler.rb +43 -33
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
- data/lib/puppet/parser/environment_compiler.rb +4 -1
- data/lib/puppet/parser/functions.rb +18 -9
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/functions/filter.rb +1 -0
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +24 -15
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/validation/checker4_0.rb +29 -15
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +9 -4
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +98 -1
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dnfmodule.rb +61 -14
- data/lib/puppet/provider/package/gem.rb +45 -9
- data/lib/puppet/provider/package/pacman.rb +2 -5
- data/lib/puppet/provider/package/pip.rb +143 -48
- data/lib/puppet/provider/package/pip3.rb +0 -2
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +16 -4
- data/lib/puppet/provider/package/portage.rb +2 -2
- data/lib/puppet/provider/package/puppet_gem.rb +11 -2
- data/lib/puppet/provider/package/rpm.rb +6 -213
- data/lib/puppet/provider/package/yum.rb +100 -20
- data/lib/puppet/provider/package/zypper.rb +62 -1
- data/lib/puppet/provider/service/systemd.rb +22 -4
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +16 -5
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reports/http.rb +15 -9
- data/lib/puppet/resource.rb +2 -1
- data/lib/puppet/resource/type.rb +8 -0
- data/lib/puppet/resource/type_collection.rb +20 -16
- data/lib/puppet/runtime.rb +31 -1
- data/lib/puppet/settings.rb +3 -1
- data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
- data/lib/puppet/ssl.rb +1 -0
- data/lib/puppet/ssl/host.rb +4 -4
- data/lib/puppet/ssl/oids.rb +1 -0
- data/lib/puppet/ssl/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +20 -1
- data/lib/puppet/ssl/state_machine.rb +81 -35
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/ssl/verifier_adapter.rb +9 -1
- data/lib/puppet/test/test_helper.rb +21 -14
- data/lib/puppet/transaction.rb +2 -2
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +3 -3
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +21 -8
- data/lib/puppet/type/file.rb +51 -13
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +75 -64
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +41 -3
- data/lib/puppet/type/service.rb +59 -8
- data/lib/puppet/type/user.rb +19 -29
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/at_fork.rb +1 -1
- data/lib/puppet/util/autoload.rb +13 -25
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/instance_loader.rb +14 -10
- data/lib/puppet/util/log/destinations.rb +1 -10
- data/lib/puppet/util/package/version/debian.rb +175 -0
- data/lib/puppet/util/package/version/gem.rb +15 -0
- data/lib/puppet/util/package/version/pip.rb +167 -0
- data/lib/puppet/util/package/version/range.rb +53 -0
- data/lib/puppet/util/package/version/range/eq.rb +14 -0
- data/lib/puppet/util/package/version/range/gt.rb +14 -0
- data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/lt.rb +14 -0
- data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/min_max.rb +21 -0
- data/lib/puppet/util/package/version/range/simple.rb +11 -0
- data/lib/puppet/util/package/version/rpm.rb +73 -0
- data/lib/puppet/util/pidlock.rb +13 -7
- data/lib/puppet/util/platform.rb +5 -0
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/rpm_compare.rb +193 -0
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/adsi.rb +2 -2
- data/lib/puppet/util/windows/api_types.rb +60 -33
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +15 -14
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +5 -4
- data/lib/puppet/util/windows/service.rb +43 -26
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/util/windows/user.rb +242 -8
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +641 -511
- data/man/man5/puppet.conf.5 +75 -10
- data/man/man8/puppet-agent.8 +7 -7
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +2 -2
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +17 -2
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +6 -3
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +4 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +2 -2
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
- data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-ca.pem +59 -0
- data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-installed.txt → dnf-module-list.txt} +8 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
- data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +1 -67
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +1 -69
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -69
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -67
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -65
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -67
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +1 -67
- data/spec/integration/application/agent_spec.rb +475 -0
- data/spec/integration/application/apply_spec.rb +279 -150
- data/spec/integration/application/config_spec.rb +74 -0
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +239 -0
- data/spec/integration/application/help_spec.rb +42 -0
- data/spec/integration/application/lookup_spec.rb +13 -0
- data/spec/integration/application/module_spec.rb +68 -0
- data/spec/integration/application/plugin_spec.rb +123 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/http/client_spec.rb +47 -37
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/indirector/report/yaml.rb +83 -0
- data/spec/integration/network/http_pool_spec.rb +93 -20
- data/spec/integration/node/environment_spec.rb +15 -0
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +1 -1
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/integration/util/windows/user_spec.rb +47 -5
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/https.rb +16 -7
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +127 -0
- data/spec/shared_contexts/https.rb +29 -0
- data/spec/unit/agent_spec.rb +80 -26
- data/spec/unit/application/agent_spec.rb +12 -9
- data/spec/unit/application/describe_spec.rb +88 -50
- data/spec/unit/application/device_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +39 -10
- data/spec/unit/application/filebucket_spec.rb +22 -2
- data/spec/unit/application/man_spec.rb +52 -0
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +15 -2
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
- data/spec/unit/configurer_spec.rb +64 -46
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +25 -2
- data/spec/unit/daemon_spec.rb +5 -64
- data/spec/unit/defaults_spec.rb +24 -1
- data/spec/unit/environments_spec.rb +8 -0
- data/spec/unit/face/config_spec.rb +3 -1
- data/spec/unit/face/module/search_spec.rb +17 -0
- data/spec/unit/face/plugin_spec.rb +12 -10
- data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +29 -0
- data/spec/unit/file_system_spec.rb +10 -0
- data/spec/unit/functions/lookup_spec.rb +13 -0
- data/spec/unit/http/client_spec.rb +321 -36
- data/spec/unit/http/external_client_spec.rb +201 -0
- data/spec/unit/http/resolver_spec.rb +34 -3
- data/spec/unit/http/response_spec.rb +75 -0
- data/spec/unit/http/service/ca_spec.rb +53 -12
- data/spec/unit/http/service/compiler_spec.rb +332 -28
- data/spec/unit/http/service/file_server_spec.rb +100 -12
- data/spec/unit/http/service/report_spec.rb +19 -9
- data/spec/unit/http/service_spec.rb +94 -6
- data/spec/unit/http/session_spec.rb +159 -8
- data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
- data/spec/unit/indirector/catalog/rest_spec.rb +59 -2
- data/spec/unit/indirector/facts/rest_spec.rb +79 -24
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
- data/spec/unit/indirector/file_content/rest_spec.rb +53 -2
- data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +110 -2
- data/spec/unit/indirector/node/rest_spec.rb +57 -2
- data/spec/unit/indirector/report/rest_spec.rb +58 -51
- data/spec/unit/indirector/request_spec.rb +1 -1
- data/spec/unit/indirector/resource/ral_spec.rb +7 -8
- data/spec/unit/indirector/rest_spec.rb +13 -0
- data/spec/unit/indirector/status/rest_spec.rb +43 -2
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/connection_spec.rb +552 -190
- data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
- data/spec/unit/network/http/pool_spec.rb +59 -13
- data/spec/unit/network/http_pool_spec.rb +63 -57
- data/spec/unit/network/http_spec.rb +1 -1
- data/spec/unit/node/environment_spec.rb +33 -0
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
- data/spec/unit/provider/group/groupadd_spec.rb +22 -8
- data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
- data/spec/unit/provider/package/aix_spec.rb +29 -0
- data/spec/unit/provider/package/apt_spec.rb +107 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +54 -15
- data/spec/unit/provider/package/gem_spec.rb +40 -0
- data/spec/unit/provider/package/pacman_spec.rb +6 -21
- data/spec/unit/provider/package/pip_spec.rb +68 -19
- data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
- data/spec/unit/provider/package/pkgng_spec.rb +38 -0
- data/spec/unit/provider/package/portage_spec.rb +5 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +12 -1
- data/spec/unit/provider/package/rpm_spec.rb +0 -212
- data/spec/unit/provider/package/yum_spec.rb +243 -1
- data/spec/unit/provider/package/zypper_spec.rb +98 -0
- data/spec/unit/provider/service/init_spec.rb +42 -0
- data/spec/unit/provider/service/openbsd_spec.rb +9 -0
- data/spec/unit/provider/service/openwrt_spec.rb +1 -0
- data/spec/unit/provider/service/redhat_spec.rb +9 -0
- data/spec/unit/provider/service/systemd_spec.rb +93 -18
- data/spec/unit/provider/service/windows_spec.rb +50 -14
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +30 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +85 -3
- data/spec/unit/puppet_pal_2pec.rb +11 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
- data/spec/unit/puppet_spec.rb +33 -0
- data/spec/unit/reports/http_spec.rb +70 -52
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource_spec.rb +3 -3
- data/spec/unit/settings/autosign_setting_spec.rb +1 -1
- data/spec/unit/settings/http_extra_headers_spec.rb +64 -0
- data/spec/unit/ssl/host_spec.rb +4 -2
- data/spec/unit/ssl/oids_spec.rb +1 -0
- data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
- data/spec/unit/ssl/state_machine_spec.rb +99 -13
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +5 -1
- data/spec/unit/transaction_spec.rb +0 -2
- data/spec/unit/type/file/ensure_spec.rb +1 -2
- data/spec/unit/type/file/source_spec.rb +89 -38
- data/spec/unit/type/file_spec.rb +122 -96
- data/spec/unit/type/service_spec.rb +218 -8
- data/spec/unit/type/user_spec.rb +32 -3
- data/spec/unit/type_spec.rb +50 -0
- data/spec/unit/util/at_fork_spec.rb +3 -2
- data/spec/unit/util/autoload_spec.rb +2 -1
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/checksums_spec.rb +16 -0
- data/spec/unit/util/command_line_spec.rb +11 -6
- data/spec/unit/util/log/destinations_spec.rb +1 -29
- data/spec/unit/util/package/version/debian_spec.rb +83 -0
- data/spec/unit/util/package/version/pip_spec.rb +464 -0
- data/spec/unit/util/package/version/range_spec.rb +175 -0
- data/spec/unit/util/package/version/rpm_spec.rb +121 -0
- data/spec/unit/util/pidlock_spec.rb +102 -54
- data/spec/unit/util/rpm_compare_spec.rb +196 -0
- data/spec/unit/util/windows/adsi_spec.rb +4 -4
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/spec/unit/util_spec.rb +3 -3
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- data/tasks/generate_cert_fixtures.rake +15 -1
- data/tasks/manpages.rake +5 -35
- metadata +84 -52
- data/COMMITTERS.md +0 -244
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/faces/plugin_spec.rb +0 -61
- data/spec/integration/file_bucket/file_spec.rb +0 -50
- data/spec/integration/file_serving/content_spec.rb +0 -7
- data/spec/integration/file_serving/fileset_spec.rb +0 -12
- data/spec/integration/file_serving/metadata_spec.rb +0 -8
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
- data/spec/integration/file_system/uniquefile_spec.rb +0 -26
- data/spec/integration/module_tool/forge_spec.rb +0 -64
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/provider/service/init_spec.rb +0 -48
- data/spec/integration/provider/service/systemd_spec.rb +0 -25
- data/spec/integration/provider/service/windows_spec.rb +0 -50
- data/spec/integration/reference/providers_spec.rb +0 -21
- data/spec/integration/reports_spec.rb +0 -13
- data/spec/integration/ssl/certificate_request_spec.rb +0 -44
- data/spec/integration/ssl/host_spec.rb +0 -72
- data/spec/integration/ssl/key_spec.rb +0 -99
- data/spec/integration/test/test_helper_spec.rb +0 -31
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/man_spec.rb +0 -31
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'puppet/util/autoload'
|
2
2
|
require 'puppet/parser/scope'
|
3
3
|
require 'puppet/pops/adaptable'
|
4
|
+
require 'puppet/concurrent/lock'
|
4
5
|
|
5
6
|
# A module for managing parser functions. Each specified function
|
6
7
|
# is added to a central module that then gets included into the Scope
|
@@ -76,15 +77,10 @@ module Puppet::Parser::Functions
|
|
76
77
|
# @api private
|
77
78
|
class AnonymousModuleAdapter < Puppet::Pops::Adaptable::Adapter
|
78
79
|
attr_accessor :module
|
79
|
-
end
|
80
80
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
# @api private
|
85
|
-
def self.environment_module(env)
|
86
|
-
AnonymousModuleAdapter.adapt(env) do |a|
|
87
|
-
a.module ||= Module.new do
|
81
|
+
def self.create_adapter(env)
|
82
|
+
adapter = super(env)
|
83
|
+
adapter.module = Module.new do
|
88
84
|
@metadata = {}
|
89
85
|
|
90
86
|
def self.all_function_info
|
@@ -99,7 +95,20 @@ module Puppet::Parser::Functions
|
|
99
95
|
@metadata[name] = info
|
100
96
|
end
|
101
97
|
end
|
102
|
-
|
98
|
+
adapter
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
@environment_module_lock = Puppet::Concurrent::Lock.new
|
103
|
+
|
104
|
+
# Get the module that functions are mixed into corresponding to an
|
105
|
+
# environment
|
106
|
+
#
|
107
|
+
# @api private
|
108
|
+
def self.environment_module(env)
|
109
|
+
@environment_module_lock.synchronize do
|
110
|
+
AnonymousModuleAdapter.adapt(env).module
|
111
|
+
end
|
103
112
|
end
|
104
113
|
|
105
114
|
# Create a new Puppet DSL function.
|
@@ -1,5 +1,9 @@
|
|
1
1
|
Puppet::Parser::Functions::newfunction(:create_resources, :arity => -3, :doc => <<-'ENDHEREDOC') do |args|
|
2
2
|
Converts a hash into a set of resources and adds them to the catalog.
|
3
|
+
|
4
|
+
**Note**: Use this function selectively. It's generally better to write resources in
|
5
|
+
[Puppet](https://puppet.com/docs/puppet/latest/lang_resources.html), as
|
6
|
+
resources created with `create_resource` are difficult to read and troubleshoot.
|
3
7
|
|
4
8
|
This function takes two mandatory arguments: a resource type, and a hash describing
|
5
9
|
a set of resources. The hash should be in the form `{title => {parameters} }`:
|
@@ -33,7 +37,7 @@ Puppet::Parser::Functions::newfunction(:create_resources, :arity => -3, :doc =>
|
|
33
37
|
as native resources.
|
34
38
|
|
35
39
|
Virtual and Exported resources may be created by prefixing the type name
|
36
|
-
with @ or @@ respectively.
|
40
|
+
with @ or @@ respectively. For example, the $myusers hash may be exported
|
37
41
|
in the following manner:
|
38
42
|
|
39
43
|
create_resources("@@user", $myusers)
|
@@ -42,9 +46,9 @@ Puppet::Parser::Functions::newfunction(:create_resources, :arity => -3, :doc =>
|
|
42
46
|
|
43
47
|
create_resources("@user", $myusers)
|
44
48
|
|
45
|
-
Note that `create_resources`
|
46
|
-
data binding and
|
47
|
-
final value of a parameter (just as when setting a parameter to `undef` in a
|
49
|
+
Note that `create_resources` filters out parameter values that are `undef` so that normal
|
50
|
+
data binding and Puppet default value expressions are considered (in that order) for the
|
51
|
+
final value of a parameter (just as when setting a parameter to `undef` in a Puppet language
|
48
52
|
resource declaration).
|
49
53
|
ENDHEREDOC
|
50
54
|
if Puppet[:tasks]
|
@@ -63,9 +67,9 @@ Puppet::Parser::Functions::newfunction(:create_resources, :arity => -3, :doc =>
|
|
63
67
|
defaults ||= {}
|
64
68
|
type_name = type.sub(/^@{1,2}/, '').downcase
|
65
69
|
|
66
|
-
# Get file/line information from the
|
67
|
-
# If relayed via other
|
68
|
-
# will be in the original
|
70
|
+
# Get file/line information from the Puppet stack (where call comes from in Puppet source)
|
71
|
+
# If relayed via other Puppet functions in ruby that do not nest their calls, the source position
|
72
|
+
# will be in the original Puppet source.
|
69
73
|
#
|
70
74
|
file, line = Puppet::Pops::PuppetStack.top_of_stack
|
71
75
|
|
@@ -43,6 +43,7 @@ as an array in the form `[key, value]` and returns a hash containing the results
|
|
43
43
|
$data = { "orange" => 0, "blueberry" => 1, "raspberry" => 2 }
|
44
44
|
$filtered_data = $data.filter |$items| { $items[0] =~ /berry$/ }
|
45
45
|
# $filtered_data = {blueberry => 1, raspberry => 2}
|
46
|
+
~~~
|
46
47
|
|
47
48
|
When the first argument is an array and the lambda has two parameters, Puppet passes the
|
48
49
|
array's indexes (enumerated from 0) in the first parameter and its values in the second
|
@@ -338,10 +338,11 @@ class Puppet::Parser::Resource < Puppet::Resource
|
|
338
338
|
end
|
339
339
|
|
340
340
|
def replace_sensitive_data
|
341
|
-
parameters.
|
341
|
+
parameters.keys.each do |name|
|
342
|
+
param = parameters[name]
|
342
343
|
if param.value.is_a?(Puppet::Pops::Types::PSensitiveType::Sensitive)
|
343
344
|
@sensitive_parameters << name
|
344
|
-
|
345
|
+
parameters[name] = Puppet::Parser::Resource::Param.from_param(param, param.value.unwrap)
|
345
346
|
end
|
346
347
|
end
|
347
348
|
end
|
@@ -81,7 +81,7 @@ class Puppet::Parser::TypeLoader
|
|
81
81
|
end
|
82
82
|
|
83
83
|
def parse_file(file)
|
84
|
-
Puppet.debug
|
84
|
+
Puppet.debug { "importing '#{file}' in environment #{environment}" }
|
85
85
|
parser = Puppet::Parser::ParserFactory.parser
|
86
86
|
parser.file = file
|
87
87
|
return parser.parse
|
@@ -118,7 +118,7 @@ class Puppet::Parser::TypeLoader
|
|
118
118
|
# still be parsed. Mark this file as loaded so that
|
119
119
|
# it would not be parsed next time (handle it as if
|
120
120
|
# it was successfully parsed).
|
121
|
-
Puppet.debug
|
121
|
+
Puppet.debug { "Unable to parse '#{file}': #{e.message}" }
|
122
122
|
end
|
123
123
|
else
|
124
124
|
loaded_asts << parse_file(file)
|
@@ -69,11 +69,7 @@ module Adaptable
|
|
69
69
|
#
|
70
70
|
def self.get(o)
|
71
71
|
attr_name = self_attr_name
|
72
|
-
|
73
|
-
o.instance_variable_get(attr_name)
|
74
|
-
else
|
75
|
-
nil
|
76
|
-
end
|
72
|
+
o.instance_variable_get(attr_name)
|
77
73
|
end
|
78
74
|
|
79
75
|
# Returns an existing adapter for the given object, or creates a new adapter if the
|
@@ -94,14 +90,13 @@ module Adaptable
|
|
94
90
|
#
|
95
91
|
def self.adapt(o, &block)
|
96
92
|
attr_name = self_attr_name
|
97
|
-
value = o.instance_variable_get(attr_name)
|
93
|
+
value = o.instance_variable_get(attr_name)
|
98
94
|
adapter = value || associate_adapter(create_adapter(o), o)
|
99
95
|
if block_given?
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
block.call(adapter, o)
|
96
|
+
if block.arity == 1
|
97
|
+
block.call(adapter)
|
98
|
+
else
|
99
|
+
block.call(adapter, o)
|
105
100
|
end
|
106
101
|
end
|
107
102
|
adapter
|
@@ -127,8 +122,7 @@ module Adaptable
|
|
127
122
|
def self.adapt_new(o, &block)
|
128
123
|
adapter = associate_adapter(create_adapter(o), o)
|
129
124
|
if block_given?
|
130
|
-
|
131
|
-
when 1
|
125
|
+
if block.arity == 1
|
132
126
|
block.call(adapter)
|
133
127
|
else
|
134
128
|
block.call(adapter, o)
|
data/lib/puppet/pops/adapters.rb
CHANGED
@@ -99,6 +99,13 @@ module Adapters
|
|
99
99
|
|
100
100
|
class PathsAndNameCacheAdapter < Puppet::Pops::Adaptable::Adapter
|
101
101
|
attr_accessor :cache, :paths
|
102
|
+
|
103
|
+
def self.create_adapter(env)
|
104
|
+
adapter = super(env)
|
105
|
+
adapter.paths = env.modulepath.map { |p| Pathname.new(p) }
|
106
|
+
adapter.cache = {}
|
107
|
+
adapter
|
108
|
+
end
|
102
109
|
end
|
103
110
|
|
104
111
|
# Attempts to find the module that `instance` originates from by looking at it's {SourcePosAdapter} and
|
@@ -117,10 +124,7 @@ module Adapters
|
|
117
124
|
def self.loader_name_by_source(environment, instance, file)
|
118
125
|
file = instance.file if file.nil?
|
119
126
|
return nil if file.nil? || EMPTY_STRING == file
|
120
|
-
pn_adapter = PathsAndNameCacheAdapter.adapt(environment)
|
121
|
-
a.paths ||= environment.modulepath.map { |p| Pathname.new(p) }
|
122
|
-
a.cache ||= {}
|
123
|
-
end
|
127
|
+
pn_adapter = PathsAndNameCacheAdapter.adapt(environment)
|
124
128
|
dir = File.dirname(file)
|
125
129
|
pn_adapter.cache.fetch(dir) do |key|
|
126
130
|
mod = find_module_for_dir(environment, pn_adapter.paths, dir)
|
@@ -876,11 +876,11 @@ class EvaluatorImpl
|
|
876
876
|
def eval_ApplyExpression(o, scope)
|
877
877
|
# All expressions are wrapped in an ApplyBlockExpression so we can identify the contents of
|
878
878
|
# that block. However we don't want to serialize the block expression, so unwrap here.
|
879
|
-
body = if o.body.statements.count
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
879
|
+
body = if o.body.statements.count == 1
|
880
|
+
o.body.statements[0]
|
881
|
+
else
|
882
|
+
Model::BlockExpression.from_asserted_hash(o.body._pcore_init_hash)
|
883
|
+
end
|
884
884
|
|
885
885
|
Puppet.lookup(:apply_executor).apply(unfold([], o.arguments, scope), body, scope)
|
886
886
|
end
|
data/lib/puppet/pops/issues.rb
CHANGED
@@ -920,5 +920,10 @@ module Issues
|
|
920
920
|
LOADER_FAILURE = issue :LOADER_FAILURE, :type do
|
921
921
|
_('Failed to load: %{type_name}') % { type: type }
|
922
922
|
end
|
923
|
+
|
924
|
+
DEPRECATED_APP_ORCHESTRATION = issue :DEPRECATED_APP_ORCHESTRATION, :klass do
|
925
|
+
_("Use of the application-orchestration %{expr} is deprecated. See https://puppet.com/docs/puppet/5.5/deprecated_language.html" % { expr: label(klass) })
|
926
|
+
end
|
927
|
+
|
923
928
|
end
|
924
929
|
end
|
@@ -7,10 +7,12 @@ module Loader
|
|
7
7
|
#
|
8
8
|
# @api private
|
9
9
|
class Runtime3TypeLoader < BaseLoader
|
10
|
-
|
10
|
+
attr_reader :resource_3x_loader
|
11
|
+
|
12
|
+
def initialize(parent_loader, loaders, environment, resource_3x_loader)
|
11
13
|
super(parent_loader, environment.name)
|
12
14
|
@environment = environment
|
13
|
-
@resource_3x_loader =
|
15
|
+
@resource_3x_loader = resource_3x_loader
|
14
16
|
end
|
15
17
|
|
16
18
|
def discover(type, error_collector = nil, name_authority = Pcore::RUNTIME_NAME_AUTHORITY, &block)
|
data/lib/puppet/pops/loaders.rb
CHANGED
@@ -18,16 +18,18 @@ class Loaders
|
|
18
18
|
attr_reader :private_environment_loader
|
19
19
|
attr_reader :environment
|
20
20
|
|
21
|
-
def self.new(environment, for_agent = false)
|
22
|
-
|
23
|
-
|
24
|
-
obj
|
25
|
-
|
21
|
+
def self.new(environment, for_agent = false, load_from_pcore = true)
|
22
|
+
environment.lock.synchronize do
|
23
|
+
obj = environment.loaders
|
24
|
+
if obj.nil?
|
25
|
+
obj = self.allocate
|
26
|
+
obj.send(:initialize, environment, for_agent, load_from_pcore)
|
27
|
+
end
|
28
|
+
obj
|
26
29
|
end
|
27
|
-
obj
|
28
30
|
end
|
29
31
|
|
30
|
-
def initialize(environment, for_agent)
|
32
|
+
def initialize(environment, for_agent, load_from_pcore = true)
|
31
33
|
# Protect against environment havoc
|
32
34
|
raise ArgumentError.new(_("Attempt to redefine already initialized loaders for environment")) unless environment.loaders.nil?
|
33
35
|
environment.loaders = self
|
@@ -49,12 +51,13 @@ class Loaders
|
|
49
51
|
# TODO: loaders need to work when also running in an agent doing catalog application. There is no
|
50
52
|
# concept of environment the same way as when running as a master (except when doing apply).
|
51
53
|
# The creation mechanisms should probably differ between the two.
|
52
|
-
@private_environment_loader =
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
54
|
+
@private_environment_loader =
|
55
|
+
if for_agent
|
56
|
+
@puppet_cache_loader = create_puppet_cache_loader
|
57
|
+
create_environment_loader(environment, @puppet_cache_loader, load_from_pcore)
|
58
|
+
else
|
59
|
+
create_environment_loader(environment, @puppet_system_loader, load_from_pcore)
|
60
|
+
end
|
58
61
|
|
59
62
|
Pcore.init_env(@private_environment_loader)
|
60
63
|
|
@@ -360,7 +363,7 @@ class Loaders
|
|
360
363
|
Loader::ModuleLoaders.cached_loader_from(puppet_system_loader, self)
|
361
364
|
end
|
362
365
|
|
363
|
-
def create_environment_loader(environment, parent_loader)
|
366
|
+
def create_environment_loader(environment, parent_loader, load_from_pcore = true)
|
364
367
|
# This defines where to start parsing/evaluating - the "initial import" (to use 3x terminology)
|
365
368
|
# Is either a reference to a single .pp file, or a directory of manifests. If the environment becomes
|
366
369
|
# a module and can hold functions, types etc. then these are available across all other modules without
|
@@ -385,7 +388,13 @@ class Loaders
|
|
385
388
|
else
|
386
389
|
# Create the 3.x resource type loader
|
387
390
|
static_loader.runtime_3_init
|
388
|
-
|
391
|
+
# Create pcore resource type loader, if applicable
|
392
|
+
pcore_resource_type_loader = if load_from_pcore && env_path
|
393
|
+
Loader::ModuleLoaders.pcore_resource_type_loader_from(parent_loader, self, env_path)
|
394
|
+
else
|
395
|
+
nil
|
396
|
+
end
|
397
|
+
@runtime3_type_loader = add_loader_by_name(Loader::Runtime3TypeLoader.new(parent_loader, self, environment, pcore_resource_type_loader))
|
389
398
|
|
390
399
|
if env_path.nil?
|
391
400
|
# Not a real directory environment, cannot work as a module TODO: Drop when legacy env are dropped?
|
@@ -47,7 +47,7 @@ class EnvironmentContext < Adaptable::Adapter
|
|
47
47
|
file_data = @file_data_cache[path]
|
48
48
|
stat = Puppet::FileSystem.stat(path)
|
49
49
|
unless file_data && file_data.valid?(stat)
|
50
|
-
Puppet.debug
|
50
|
+
Puppet.debug { "File at '#{path}' was changed, reloading" } if file_data
|
51
51
|
content = Puppet::FileSystem.read(path, :encoding => 'utf-8')
|
52
52
|
file_data = FileData.new(path, stat.ino, stat.mtime, stat.size, block_given? ? yield(content) : content)
|
53
53
|
@file_data_cache[path] = file_data
|
@@ -46,6 +46,7 @@ class HieraConfig
|
|
46
46
|
KEY_DATADIR = 'datadir'.freeze
|
47
47
|
KEY_DEFAULT_HIERARCHY = 'default_hierarchy'.freeze
|
48
48
|
KEY_HIERARCHY = 'hierarchy'.freeze
|
49
|
+
KEY_PLAN_HIERARCHY = 'plan_hierarchy'.freeze
|
49
50
|
KEY_LOGGER = 'logger'.freeze
|
50
51
|
KEY_OPTIONS = 'options'.freeze
|
51
52
|
KEY_PATH = 'path'.freeze
|
@@ -580,6 +581,7 @@ class HieraConfigV5 < HieraConfig
|
|
580
581
|
tf.optional(KEY_OPTIONS) => tf.hash_kv(option_name_t, tf.data),
|
581
582
|
}),
|
582
583
|
tf.optional(KEY_HIERARCHY) => hierarchy_t,
|
584
|
+
tf.optional(KEY_PLAN_HIERARCHY) => hierarchy_t,
|
583
585
|
tf.optional(KEY_DEFAULT_HIERARCHY) => hierarchy_t
|
584
586
|
})
|
585
587
|
end
|
@@ -600,7 +602,15 @@ class HieraConfigV5 < HieraConfig
|
|
600
602
|
return data_providers
|
601
603
|
end
|
602
604
|
|
603
|
-
|
605
|
+
compiler = Puppet.lookup(:pal_compiler) { nil }
|
606
|
+
config_key = if compiler.is_a?(Puppet::Pal::ScriptCompiler) && !@config[KEY_PLAN_HIERARCHY].nil?
|
607
|
+
KEY_PLAN_HIERARCHY
|
608
|
+
elsif use_default_hierarchy
|
609
|
+
KEY_DEFAULT_HIERARCHY
|
610
|
+
else
|
611
|
+
KEY_HIERARCHY
|
612
|
+
end
|
613
|
+
@config[config_key].each do |he|
|
604
614
|
name = he[KEY_NAME]
|
605
615
|
if data_providers.include?(name)
|
606
616
|
first_line = find_line_matching(/\s+name:\s+['"]?#{name}(?:[^\w]|$)/)
|
@@ -691,6 +701,9 @@ class HieraConfigV5 < HieraConfig
|
|
691
701
|
defaults = config[KEY_DEFAULTS]
|
692
702
|
validate_defaults(defaults) unless defaults.nil?
|
693
703
|
config[KEY_HIERARCHY].each { |he| validate_hierarchy(he, defaults, owner) }
|
704
|
+
if config.include?(KEY_PLAN_HIERARCHY)
|
705
|
+
config[KEY_PLAN_HIERARCHY].each { |he| validate_hierarchy(he, defaults, owner) }
|
706
|
+
end
|
694
707
|
|
695
708
|
if config.include?(KEY_DEFAULT_HIERARCHY)
|
696
709
|
unless owner.is_a?(ModuleDataProvider)
|
@@ -23,13 +23,16 @@ module Puppet::Pops::Types
|
|
23
23
|
#
|
24
24
|
# An `ArgumentError` is raised for all other objects.
|
25
25
|
#
|
26
|
-
# @param
|
26
|
+
# @param my_caller [Object] The calling object to reference in errors
|
27
|
+
# @param obj [Object] The object to produce an `Iterable` for
|
28
|
+
# @param infer_elements [Boolean] Whether or not to recursively infer all elements of obj. Optional
|
29
|
+
#
|
27
30
|
# @return [Iterable,nil] The produced `Iterable`
|
28
31
|
# @raise [ArgumentError] In case an `Iterable` cannot be produced
|
29
32
|
# @api public
|
30
|
-
def self.asserted_iterable(
|
31
|
-
iter = self.on(obj)
|
32
|
-
raise ArgumentError, "#{
|
33
|
+
def self.asserted_iterable(my_caller, obj, infer_elements = false)
|
34
|
+
iter = self.on(obj, nil, infer_elements)
|
35
|
+
raise ArgumentError, "#{my_caller.class}(): wrong argument type (#{obj.class}; is not Iterable." if iter.nil?
|
33
36
|
iter
|
34
37
|
end
|
35
38
|
|
@@ -48,11 +51,14 @@ module Puppet::Pops::Types
|
|
48
51
|
# The value `nil` is returned for all other objects.
|
49
52
|
#
|
50
53
|
# @param o [Object] The object to produce an `Iterable` for
|
51
|
-
# @param element_type [PAnyType] the element type for the iterator. Optional
|
54
|
+
# @param element_type [PAnyType] the element type for the iterator. Optional
|
55
|
+
# @param infer_elements [Boolean] if element_type is nil, whether or not to recursively
|
56
|
+
# infer types for the entire collection. Optional
|
57
|
+
#
|
52
58
|
# @return [Iterable,nil] The produced `Iterable` or `nil` if it couldn't be produced
|
53
59
|
#
|
54
60
|
# @api public
|
55
|
-
def self.on(o, element_type = nil)
|
61
|
+
def self.on(o, element_type = nil, infer_elements = true)
|
56
62
|
case o
|
57
63
|
when IteratorProducer
|
58
64
|
o.iterator
|
@@ -64,7 +70,7 @@ module Puppet::Pops::Types
|
|
64
70
|
if o.empty?
|
65
71
|
Iterator.new(PUnitType::DEFAULT, o.each)
|
66
72
|
else
|
67
|
-
if element_type.nil?
|
73
|
+
if element_type.nil? && infer_elements
|
68
74
|
tc = TypeCalculator.singleton
|
69
75
|
element_type = PVariantType.maybe_create(o.map {|e| tc.infer_set(e) })
|
70
76
|
end
|
@@ -75,7 +81,7 @@ module Puppet::Pops::Types
|
|
75
81
|
if o.empty?
|
76
82
|
HashIterator.new(PHashType::DEFAULT_KEY_PAIR_TUPLE, o.each)
|
77
83
|
else
|
78
|
-
if element_type.nil?
|
84
|
+
if element_type.nil? && infer_elements
|
79
85
|
tc = TypeCalculator.singleton
|
80
86
|
element_type = PTupleType.new([
|
81
87
|
PVariantType.maybe_create(o.keys.map {|e| tc.infer_set(e) }),
|
@@ -202,6 +208,26 @@ module Puppet::Pops::Types
|
|
202
208
|
@enumeration.send(name, *arguments, &block)
|
203
209
|
end
|
204
210
|
|
211
|
+
def next
|
212
|
+
@enumeration.next
|
213
|
+
end
|
214
|
+
|
215
|
+
def map(*args, &block)
|
216
|
+
@enumeration.map(*args, &block)
|
217
|
+
end
|
218
|
+
|
219
|
+
def reduce(*args, &block)
|
220
|
+
@enumeration.reduce(*args, &block)
|
221
|
+
end
|
222
|
+
|
223
|
+
def all?(&block)
|
224
|
+
@enumeration.all?(&block)
|
225
|
+
end
|
226
|
+
|
227
|
+
def any?(&block)
|
228
|
+
@enumeration.any?(&block)
|
229
|
+
end
|
230
|
+
|
205
231
|
def step(step, &block)
|
206
232
|
raise ArgumentError if step <= 0
|
207
233
|
r = self
|