puppet 6.14.0-x64-mingw32 → 6.19.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.
- checksums.yaml +4 -4
- data/CODEOWNERS +2 -7
- data/Gemfile +4 -2
- data/Gemfile.lock +36 -34
- data/README.md +3 -4
- data/Rakefile +4 -12
- data/ext/windows/service/daemon.rb +3 -3
- data/lib/puppet.rb +33 -9
- data/lib/puppet/agent.rb +20 -14
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application/agent.rb +25 -9
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +5 -14
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/plugin.rb +1 -0
- data/lib/puppet/application/ssl.rb +3 -3
- data/lib/puppet/configurer.rb +68 -24
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/configurer/plugin_handler.rb +1 -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 +141 -41
- data/lib/puppet/environments.rb +55 -15
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +46 -16
- 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/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/plugin.rb +2 -2
- data/lib/puppet/face/status.rb +1 -1
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/file_bucket/dipper.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/filter.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/new.rb +8 -3
- 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 +215 -60
- data/lib/puppet/http/external_client.rb +90 -0
- data/lib/puppet/http/redirector.rb +43 -7
- data/lib/puppet/http/resolver.rb +43 -3
- data/lib/puppet/http/resolver/server_list.rb +66 -24
- data/lib/puppet/http/resolver/settings.rb +21 -1
- data/lib/puppet/http/resolver/srv.rb +28 -2
- data/lib/puppet/http/response.rb +82 -1
- data/lib/puppet/http/retry_after_handler.rb +39 -0
- data/lib/puppet/http/service.rb +70 -2
- data/lib/puppet/http/service/ca.rb +71 -9
- data/lib/puppet/http/service/compiler.rb +214 -12
- data/lib/puppet/http/service/file_server.rb +106 -5
- data/lib/puppet/http/service/puppetserver.rb +39 -0
- data/lib/puppet/http/service/report.rb +36 -3
- data/lib/puppet/http/session.rb +60 -8
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/catalog/rest.rb +2 -1
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/rest.rb +2 -1
- data/lib/puppet/indirector/facts/yaml.rb +1 -1
- 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 +1 -1
- data/lib/puppet/indirector/file_metadata/http.rb +28 -8
- data/lib/puppet/indirector/file_metadata/rest.rb +6 -4
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/rest.rb +2 -1
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/yaml.rb +23 -0
- data/lib/puppet/indirector/request.rb +5 -5
- data/lib/puppet/indirector/rest.rb +7 -1
- data/lib/puppet/indirector/status/rest.rb +2 -1
- data/lib/puppet/indirector/yaml.rb +1 -1
- 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/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/base_pool.rb +6 -1
- 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 +2 -4
- 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/node/facts.rb +17 -0
- 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/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- 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/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- 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/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/dpkg.rb +1 -1
- 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/pip2.rb +17 -0
- 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/puppetserver_gem.rb +180 -0
- data/lib/puppet/provider/package/rpm.rb +6 -213
- data/lib/puppet/provider/package/yum.rb +101 -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 +10 -1
- data/lib/puppet/resource/type_collection.rb +20 -16
- data/lib/puppet/rest/route.rb +2 -2
- data/lib/puppet/runtime.rb +25 -2
- data/lib/puppet/settings.rb +20 -6
- 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 +79 -37
- 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 +19 -14
- data/lib/puppet/transaction.rb +2 -2
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +14 -10
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +21 -8
- data/lib/puppet/type/file.rb +40 -15
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +35 -13
- data/lib/puppet/type/filebucket.rb +1 -1
- 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/connection.rb +8 -8
- 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/run_mode.rb +5 -1
- 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 +627 -507
- data/man/man5/puppet.conf.5 +93 -20
- data/man/man8/puppet-agent.8 +7 -4
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +6 -6
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- 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 +1 -1
- 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 +4 -4
- 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 +1 -1
- data/man/man8/puppet-status.8 +2 -2
- 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/puppetserver_gem/gem-list-local-packages +30 -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/integration/application/agent_spec.rb +479 -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/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +27 -3
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/http/client_spec.rb +39 -40
- 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 +84 -19
- 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 +8 -3
- 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/shared_contexts/types_setup.rb +2 -0
- data/spec/unit/agent_spec.rb +80 -26
- data/spec/unit/application/agent_spec.rb +12 -9
- data/spec/unit/application/device_spec.rb +2 -2
- data/spec/unit/application/doc_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +41 -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/application_spec.rb +9 -4
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/configurer_spec.rb +87 -38
- 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 +107 -32
- data/spec/unit/face/config_spec.rb +59 -1
- data/spec/unit/face/module/search_spec.rb +17 -0
- data/spec/unit/face/node_spec.rb +2 -2
- 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 +11 -2
- data/spec/unit/http/client_spec.rb +173 -59
- data/spec/unit/http/external_client_spec.rb +201 -0
- data/spec/unit/http/resolver_spec.rb +44 -5
- data/spec/unit/http/response_spec.rb +6 -0
- data/spec/unit/http/service/ca_spec.rb +27 -5
- data/spec/unit/http/service/compiler_spec.rb +186 -9
- data/spec/unit/http/service/file_server_spec.rb +37 -6
- data/spec/unit/http/service/puppetserver_spec.rb +82 -0
- data/spec/unit/http/service/report_spec.rb +5 -4
- data/spec/unit/http/service_spec.rb +3 -4
- data/spec/unit/http/session_spec.rb +48 -12
- data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
- data/spec/unit/indirector/catalog/json_spec.rb +1 -1
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
- data/spec/unit/indirector/facts/rest_spec.rb +1 -1
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
- data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +15 -14
- data/spec/unit/indirector/json_spec.rb +8 -8
- data/spec/unit/indirector/msgpack_spec.rb +8 -8
- data/spec/unit/indirector/node/rest_spec.rb +1 -1
- data/spec/unit/indirector/request_spec.rb +5 -5
- data/spec/unit/indirector/rest_spec.rb +14 -1
- data/spec/unit/indirector/status/rest_spec.rb +1 -1
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- 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/api/master/v3/environments_spec.rb +12 -23
- 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 +3 -3
- 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/exec_spec.rb +4 -3
- 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/dpkg_spec.rb +22 -7
- data/spec/unit/provider/package/gem_spec.rb +40 -0
- data/spec/unit/provider/package/openbsd_spec.rb +2 -0
- data/spec/unit/provider/package/pacman_spec.rb +6 -21
- data/spec/unit/provider/package/pip2_spec.rb +36 -0
- 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/puppetserver_gem_spec.rb +137 -0
- data/spec/unit/provider/package/rpm_spec.rb +0 -212
- data/spec/unit/provider/package/yum_spec.rb +274 -1
- data/spec/unit/provider/package/zypper_spec.rb +98 -0
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/bsd_spec.rb +5 -1
- data/spec/unit/provider/service/daemontools_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +3 -5
- data/spec/unit/provider/service/freebsd_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_spec.rb +4 -5
- data/spec/unit/provider/service/init_spec.rb +46 -5
- data/spec/unit/provider/service/launchd_spec.rb +5 -6
- data/spec/unit/provider/service/openbsd_spec.rb +9 -0
- data/spec/unit/provider/service/openrc_spec.rb +4 -5
- data/spec/unit/provider/service/openwrt_spec.rb +2 -1
- data/spec/unit/provider/service/redhat_spec.rb +10 -1
- data/spec/unit/provider/service/runit_spec.rb +2 -1
- data/spec/unit/provider/service/smf_spec.rb +1 -1
- data/spec/unit/provider/service/src_spec.rb +3 -5
- data/spec/unit/provider/service/systemd_spec.rb +95 -18
- data/spec/unit/provider/service/upstart_spec.rb +4 -5
- 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/rest/route_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +44 -22
- 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 +90 -14
- 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 +7 -1
- data/spec/unit/type/file/source_spec.rb +4 -4
- data/spec/unit/type/file_spec.rb +122 -96
- data/spec/unit/type/filebucket_spec.rb +1 -1
- 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 +2 -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 +83 -47
- data/spec/unit/util/rpm_compare_spec.rb +196 -0
- data/spec/unit/util/run_mode_spec.rb +6 -6
- 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 +90 -51
- 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 -63
- 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
@@ -97,6 +97,11 @@ module Pal
|
|
97
97
|
internal_compiler.evaluate_additions
|
98
98
|
end
|
99
99
|
|
100
|
+
# Attempts to evaluate AST for node defnintions https://puppet.com/docs/puppet/latest/lang_node_definitions.html
|
101
|
+
# if there are any.
|
102
|
+
def evaluate_ast_node
|
103
|
+
internal_compiler.evaluate_ast_node
|
104
|
+
end
|
100
105
|
end
|
101
106
|
|
102
107
|
end
|
data/lib/puppet/pal/pal_impl.rb
CHANGED
@@ -49,6 +49,7 @@ module Pal
|
|
49
49
|
# If given at the environment level, the facts given here are merged with higher priority.
|
50
50
|
# @param variables [Hash] optional map of fully qualified variable name to value. If given at the environment level, the variables
|
51
51
|
# given here are merged with higher priority.
|
52
|
+
# @param set_local_facts [Boolean] when true, the $facts, $server_facts, and $trusted variables are set for the scope.
|
52
53
|
# @param block [Proc] the block performing operations on compiler
|
53
54
|
# @return [Object] what the block returns
|
54
55
|
# @yieldparam [Puppet::Pal::ScriptCompiler] compiler, a ScriptCompiler to perform operations on.
|
@@ -59,6 +60,7 @@ module Pal
|
|
59
60
|
code_string: nil,
|
60
61
|
facts: nil,
|
61
62
|
variables: nil,
|
63
|
+
set_local_facts: true,
|
62
64
|
&block
|
63
65
|
)
|
64
66
|
# TRANSLATORS: do not translate variable name strings in these assertions
|
@@ -91,7 +93,7 @@ module Pal
|
|
91
93
|
|
92
94
|
# If manifest_file is nil, the #main method will use the env configured manifest
|
93
95
|
# to do things in the block while a Script Compiler is in effect
|
94
|
-
main(manifest_file, facts, variables, :script, &block)
|
96
|
+
main(manifest_file, facts, variables, :script, set_local_facts, &block)
|
95
97
|
ensure
|
96
98
|
Puppet[:tasks] = previous_tasks_value
|
97
99
|
Puppet[:code] = previous_code_value
|
@@ -191,7 +193,7 @@ module Pal
|
|
191
193
|
|
192
194
|
# If manifest_file is nil, the #main method will use the env configured manifest
|
193
195
|
# to do things in the block while a Script Compiler is in effect
|
194
|
-
main(manifest_file, facts, variables, :catalog, &block)
|
196
|
+
main(manifest_file, facts, variables, :catalog, false, &block)
|
195
197
|
ensure
|
196
198
|
# Clean up after ourselves
|
197
199
|
Puppet[:tasks] = previous_tasks_value
|
@@ -379,7 +381,13 @@ module Pal
|
|
379
381
|
# Picks up information from the puppet context and configures a script compiler which is given to
|
380
382
|
# the provided block
|
381
383
|
#
|
382
|
-
def self.main(
|
384
|
+
def self.main(
|
385
|
+
manifest,
|
386
|
+
facts,
|
387
|
+
variables,
|
388
|
+
internal_compiler_class,
|
389
|
+
set_local_facts
|
390
|
+
)
|
383
391
|
# Configure the load path
|
384
392
|
env = Puppet.lookup(:pal_env)
|
385
393
|
env.each_plugin_directory do |dir|
|
@@ -422,45 +430,32 @@ module Pal
|
|
422
430
|
# TRANSLATORS, the string "For puppet PAL" is not user facing
|
423
431
|
Puppet.override({:current_environment => apply_environment}, "For puppet PAL") do
|
424
432
|
begin
|
425
|
-
# support the following features when evaluating puppet code
|
426
|
-
# * $facts with facts from host running the script
|
427
|
-
# * $settings with 'settings::*' namespace populated, and '$settings::all_local' hash
|
428
|
-
# * $trusted as setup when using puppet apply
|
429
|
-
# * an environment
|
430
|
-
#
|
431
|
-
|
432
|
-
# fixup trusted information
|
433
433
|
node.sanitize()
|
434
|
-
|
435
434
|
compiler = create_internal_compiler(internal_compiler_class, node)
|
436
|
-
# compiler = Puppet::Parser::ScriptCompiler.new(node.environment, node.name)
|
437
|
-
topscope = compiler.topscope
|
438
435
|
|
439
|
-
|
436
|
+
case internal_compiler_class
|
437
|
+
when :script
|
438
|
+
pal_compiler = ScriptCompiler.new(compiler)
|
439
|
+
overrides[:pal_script_compiler] = overrides[:pal_compiler] = pal_compiler
|
440
|
+
when :catalog
|
441
|
+
pal_compiler = CatalogCompiler.new(compiler)
|
442
|
+
overrides[:pal_catalog_compiler] = overrides[:pal_compiler] = pal_compiler
|
443
|
+
end
|
444
|
+
|
445
|
+
# When scripting the trusted data are always local; default is to set them anyway
|
440
446
|
# When compiling for a catalog, the catalog compiler does this
|
441
|
-
|
442
|
-
topscope.set_trusted(node.trusted_data)
|
447
|
+
if set_local_facts
|
448
|
+
compiler.topscope.set_trusted(node.trusted_data)
|
443
449
|
|
444
450
|
# Server facts are always about the local node's version etc.
|
445
|
-
topscope.set_server_facts(node.server_facts)
|
451
|
+
compiler.topscope.set_server_facts(node.server_facts)
|
446
452
|
|
447
453
|
# Set $facts for the node running the script
|
448
454
|
facts_hash = node.facts.nil? ? {} : node.facts.values
|
449
|
-
topscope.set_facts(facts_hash)
|
455
|
+
compiler.topscope.set_facts(facts_hash)
|
450
456
|
|
451
457
|
# create the $settings:: variables
|
452
|
-
topscope.merge_settings(node.environment.name, false)
|
453
|
-
end
|
454
|
-
|
455
|
-
add_variables(topscope, pal_variables)
|
456
|
-
|
457
|
-
case internal_compiler_class
|
458
|
-
when :script
|
459
|
-
pal_compiler = ScriptCompiler.new(compiler)
|
460
|
-
overrides[:pal_script_compiler] = overrides[:pal_compiler] = pal_compiler
|
461
|
-
when :catalog
|
462
|
-
pal_compiler = CatalogCompiler.new(compiler)
|
463
|
-
overrides[:pal_catalog_compiler] = overrides[:pal_compiler] = pal_compiler
|
458
|
+
compiler.topscope.merge_settings(node.environment.name, false)
|
464
459
|
end
|
465
460
|
|
466
461
|
# Make compiler available to Puppet#lookup and injection in functions
|
@@ -468,6 +463,10 @@ module Pal
|
|
468
463
|
# TRANSLATORS: Do not translate, symbolic name
|
469
464
|
Puppet.override(overrides, "PAL::with_#{internal_compiler_class}_compiler") do
|
470
465
|
compiler.compile do | compiler_yield |
|
466
|
+
# In case the varaibles passed to the compiler are PCore types defined in modules, they
|
467
|
+
# need to be deserialized and added from within the this scope, so that loaders are
|
468
|
+
# available during deserizlization.
|
469
|
+
add_variables(compiler.topscope, Puppet::Pops::Serialization::FromDataConverter.convert(pal_variables))
|
471
470
|
# wrap the internal compiler to prevent it from leaking in the PAL API
|
472
471
|
if block_given?
|
473
472
|
yield(pal_compiler)
|
data/lib/puppet/parameter.rb
CHANGED
@@ -429,7 +429,7 @@ class Puppet::Parameter
|
|
429
429
|
begin
|
430
430
|
ret = unsafe_munge(value)
|
431
431
|
rescue Puppet::Error => detail
|
432
|
-
Puppet.debug "Reraising #{detail}"
|
432
|
+
Puppet.debug { "Reraising #{detail}" }
|
433
433
|
raise
|
434
434
|
rescue => detail
|
435
435
|
raise Puppet::DevError, _("Munging failed for value %{value} in class %{class_name}: %{detail}") % { value: value.inspect, class_name: self.name, detail: detail }, detail.backtrace
|
@@ -17,17 +17,17 @@ class Puppet::Parser::AST::Leaf < Puppet::Parser::AST
|
|
17
17
|
@value.to_s unless @value.nil?
|
18
18
|
end
|
19
19
|
|
20
|
-
def initialize(value: nil,
|
20
|
+
def initialize(value: nil, file: nil, line: nil, pos: nil)
|
21
21
|
@value = value
|
22
|
-
super(
|
22
|
+
super(file: file, line: line, pos: pos)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
26
|
# Host names, either fully qualified or just the short name, or even a regex
|
27
27
|
#
|
28
28
|
class Puppet::Parser::AST::HostName < Puppet::Parser::AST::Leaf
|
29
|
-
def initialize(
|
30
|
-
super
|
29
|
+
def initialize(value: nil, file: nil, line: nil, pos: nil)
|
30
|
+
super(value: value, file: file, line: line, pos: pos)
|
31
31
|
|
32
32
|
# Note that this is an AST::Regex, not a Regexp
|
33
33
|
unless @value.is_a?(Regex)
|
@@ -51,7 +51,7 @@ end
|
|
51
51
|
|
52
52
|
class Puppet::Parser::AST::Regex < Puppet::Parser::AST::Leaf
|
53
53
|
def initialize(hash)
|
54
|
-
super
|
54
|
+
super(**hash)
|
55
55
|
# transform value from hash options unless it is already a regular expression
|
56
56
|
@value = Regexp.new(@value) unless @value.is_a?(Regexp)
|
57
57
|
end
|
@@ -348,6 +348,34 @@ class Puppet::Parser::Compiler
|
|
348
348
|
end
|
349
349
|
end
|
350
350
|
|
351
|
+
|
352
|
+
# If ast nodes are enabled, then see if we can find and evaluate one.
|
353
|
+
#
|
354
|
+
# @api private
|
355
|
+
def evaluate_ast_node
|
356
|
+
krt = environment.known_resource_types
|
357
|
+
return unless krt.nodes? #ast_nodes?
|
358
|
+
|
359
|
+
# Now see if we can find the node.
|
360
|
+
astnode = nil
|
361
|
+
@node.names.each do |name|
|
362
|
+
astnode = krt.node(name.to_s.downcase)
|
363
|
+
break if astnode
|
364
|
+
end
|
365
|
+
|
366
|
+
unless (astnode ||= krt.node("default"))
|
367
|
+
raise Puppet::ParseError, _("Could not find node statement with name 'default' or '%{names}'") % { names: node.names.join(", ") }
|
368
|
+
end
|
369
|
+
|
370
|
+
# Create a resource to model this node, and then add it to the list
|
371
|
+
# of resources.
|
372
|
+
resource = astnode.ensure_in_catalog(topscope)
|
373
|
+
|
374
|
+
resource.evaluate
|
375
|
+
|
376
|
+
@node_scope = topscope.class_scope(astnode)
|
377
|
+
end
|
378
|
+
|
351
379
|
# Evaluates each specified class in turn. If there are any classes that
|
352
380
|
# can't be found, an error is raised. This method really just creates resource objects
|
353
381
|
# that point back to the classes, and then the resources are themselves
|
@@ -420,7 +448,7 @@ class Puppet::Parser::Compiler
|
|
420
448
|
# using the top scope.
|
421
449
|
def newscope(parent, options = {})
|
422
450
|
parent ||= topscope
|
423
|
-
scope = Puppet::Parser::Scope.new(self, options)
|
451
|
+
scope = Puppet::Parser::Scope.new(self, **options)
|
424
452
|
scope.parent = parent
|
425
453
|
scope
|
426
454
|
end
|
@@ -486,31 +514,6 @@ class Puppet::Parser::Compiler
|
|
486
514
|
krt.capability_mappings.clear # No longer needed
|
487
515
|
end
|
488
516
|
|
489
|
-
# If ast nodes are enabled, then see if we can find and evaluate one.
|
490
|
-
def evaluate_ast_node
|
491
|
-
krt = environment.known_resource_types
|
492
|
-
return unless krt.nodes? #ast_nodes?
|
493
|
-
|
494
|
-
# Now see if we can find the node.
|
495
|
-
astnode = nil
|
496
|
-
@node.names.each do |name|
|
497
|
-
astnode = krt.node(name.to_s.downcase)
|
498
|
-
break if astnode
|
499
|
-
end
|
500
|
-
|
501
|
-
unless (astnode ||= krt.node("default"))
|
502
|
-
raise Puppet::ParseError, _("Could not find node statement with name 'default' or '%{names}'") % { names: node.names.join(", ") }
|
503
|
-
end
|
504
|
-
|
505
|
-
# Create a resource to model this node, and then add it to the list
|
506
|
-
# of resources.
|
507
|
-
resource = astnode.ensure_in_catalog(topscope)
|
508
|
-
|
509
|
-
resource.evaluate
|
510
|
-
|
511
|
-
@node_scope = topscope.class_scope(astnode)
|
512
|
-
end
|
513
|
-
|
514
517
|
# Evaluate our collections and return true if anything returned an object.
|
515
518
|
# The 'true' is used to continue a loop, so it's important.
|
516
519
|
def evaluate_collections
|
@@ -777,13 +780,7 @@ class Puppet::Parser::Compiler
|
|
777
780
|
SETTINGS = 'settings'.freeze
|
778
781
|
|
779
782
|
def create_settings_scope
|
780
|
-
|
781
|
-
settings_type = resource_types.hostclass(SETTINGS)
|
782
|
-
if settings_type.nil?
|
783
|
-
settings_type = Puppet::Resource::Type.new(:hostclass, SETTINGS)
|
784
|
-
resource_types.add(settings_type)
|
785
|
-
end
|
786
|
-
|
783
|
+
settings_type = create_settings_type
|
787
784
|
settings_resource = Puppet::Parser::Resource.new('class', SETTINGS, :scope => @topscope)
|
788
785
|
|
789
786
|
@catalog.add_resource(settings_resource)
|
@@ -794,6 +791,19 @@ class Puppet::Parser::Compiler
|
|
794
791
|
scope.merge_settings(environment.name)
|
795
792
|
end
|
796
793
|
|
794
|
+
def create_settings_type
|
795
|
+
environment.lock.synchronize do
|
796
|
+
resource_types = environment.known_resource_types
|
797
|
+
settings_type = resource_types.hostclass(SETTINGS)
|
798
|
+
if settings_type.nil?
|
799
|
+
settings_type = Puppet::Resource::Type.new(:hostclass, SETTINGS)
|
800
|
+
resource_types.add(settings_type)
|
801
|
+
end
|
802
|
+
|
803
|
+
settings_type
|
804
|
+
end
|
805
|
+
end
|
806
|
+
|
797
807
|
# Return an array of all of the unevaluated resources. These will be definitions,
|
798
808
|
# which need to get evaluated into native resources.
|
799
809
|
def unevaluated_resources
|
@@ -1,6 +1,8 @@
|
|
1
1
|
class Puppet::Parser::Compiler
|
2
2
|
# Validator that asserts that all capability resources that are referenced by 'consume' or 'require' has
|
3
3
|
# been exported by some other resource in the environment
|
4
|
+
#
|
5
|
+
# @deprecated application orchestration will be removed in puppet 7
|
4
6
|
class CatalogValidator::EnvironmentRelationshipValidator < CatalogValidator
|
5
7
|
|
6
8
|
def validate
|
@@ -1,5 +1,7 @@
|
|
1
1
|
class Puppet::Parser::Compiler
|
2
2
|
# Validator that asserts that only application components can appear inside a site.
|
3
|
+
#
|
4
|
+
# @deprecated application orchestration will be removed in puppet 7
|
3
5
|
class CatalogValidator::SiteValidator < CatalogValidator
|
4
6
|
def self.validation_stage?(stage)
|
5
7
|
PRE_FINISH.equal?(stage)
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'puppet/parser/compiler'
|
2
2
|
|
3
|
+
# @deprecated application orchestration will be removed in puppet 7
|
3
4
|
class Puppet::Parser::EnvironmentCompiler < Puppet::Parser::Compiler
|
4
5
|
def self.compile(env, code_id=nil)
|
5
6
|
begin
|
@@ -16,7 +17,7 @@ class Puppet::Parser::EnvironmentCompiler < Puppet::Parser::Compiler
|
|
16
17
|
end
|
17
18
|
|
18
19
|
def initialize(node, options = {})
|
19
|
-
super
|
20
|
+
super(node, **options)
|
20
21
|
@overridden_functions = {}
|
21
22
|
end
|
22
23
|
|
@@ -54,6 +55,8 @@ class Puppet::Parser::EnvironmentCompiler < Puppet::Parser::Compiler
|
|
54
55
|
end
|
55
56
|
|
56
57
|
def compile
|
58
|
+
Puppet.deprecation_warning("Application orchestration is deprecated. See https://puppet.com/docs/puppet/5.5/deprecated_language.html")
|
59
|
+
|
57
60
|
add_function_overrides
|
58
61
|
begin
|
59
62
|
Puppet.override(@context_overrides, _("For compiling environment catalog %{env}") % { env: environment.name }) do
|
@@ -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
|