puppet 6.12.0-x86-mingw32 → 6.17.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 +39 -36
- data/README.md +18 -25
- data/ext/project_data.yaml +1 -1
- data/ext/windows/service/daemon.rb +3 -3
- data/lib/puppet.rb +52 -13
- data/lib/puppet/agent.rb +20 -14
- data/lib/puppet/application/agent.rb +26 -17
- 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/plugin.rb +1 -0
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/application/ssl.rb +4 -4
- data/lib/puppet/configurer.rb +65 -69
- data/lib/puppet/configurer/plugin_handler.rb +10 -1
- data/lib/puppet/confine.rb +1 -1
- data/lib/puppet/context/trusted_information.rb +14 -8
- data/lib/puppet/daemon.rb +13 -27
- data/lib/puppet/defaults.rb +154 -58
- data/lib/puppet/environments.rb +27 -20
- data/lib/puppet/face/facts.rb +8 -5
- 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/file_serving/http_metadata.rb +14 -2
- data/lib/puppet/file_serving/metadata.rb +4 -1
- data/lib/puppet/file_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +14 -10
- data/lib/puppet/file_system/memory_file.rb +6 -0
- data/lib/puppet/file_system/memory_impl.rb +13 -0
- data/lib/puppet/file_system/uniquefile.rb +12 -16
- data/lib/puppet/file_system/windows.rb +7 -10
- 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/reduce.rb +2 -4
- data/lib/puppet/http.rb +5 -0
- data/lib/puppet/http/client.rb +293 -73
- data/lib/puppet/http/errors.rb +2 -0
- 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 +151 -7
- data/lib/puppet/http/service/ca.rb +76 -14
- data/lib/puppet/http/service/compiler.rb +319 -0
- data/lib/puppet/http/service/file_server.rb +206 -0
- data/lib/puppet/http/service/report.rb +49 -23
- data/lib/puppet/http/session.rb +103 -7
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +10 -0
- data/lib/puppet/indirector/catalog/rest.rb +34 -0
- data/lib/puppet/indirector/facts/rest.rb +42 -0
- data/lib/puppet/indirector/file_bucket_file/file.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 +30 -0
- data/lib/puppet/indirector/file_metadata/http.rb +27 -8
- data/lib/puppet/indirector/file_metadata/rest.rb +52 -0
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/rest.rb +24 -0
- 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/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 +6 -0
- data/lib/puppet/network/http/connection_adapter.rb +184 -0
- data/lib/puppet/network/http/nocache_pool.rb +2 -0
- data/lib/puppet/network/http/pool.rb +13 -6
- data/lib/puppet/network/http_pool.rb +2 -1
- data/lib/puppet/node/environment.rb +11 -1
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +4 -29
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +6 -15
- 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 -13
- 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/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +6 -6
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +12 -3
- data/lib/puppet/pops/loaders.rb +7 -5
- data/lib/puppet/pops/parser/evaluating_parser.rb +5 -7
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/p_object_type_extension.rb +10 -0
- data/lib/puppet/pops/types/type_calculator.rb +24 -0
- data/lib/puppet/pops/validation/checker4_0.rb +11 -1
- data/lib/puppet/pops/validation/tasks_checker.rb +5 -1
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/provider/aix_object.rb +4 -2
- data/lib/puppet/provider/group/aix.rb +1 -0
- data/lib/puppet/provider/group/groupadd.rb +57 -24
- 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 +78 -4
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dnfmodule.rb +69 -15
- data/lib/puppet/provider/package/dpkg.rb +14 -7
- data/lib/puppet/provider/package/fink.rb +20 -3
- data/lib/puppet/provider/package/gem.rb +41 -7
- data/lib/puppet/provider/package/openbsd.rb +13 -1
- 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/pkg.rb +18 -5
- 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 +6 -2
- data/lib/puppet/provider/package/rpm.rb +6 -213
- data/lib/puppet/provider/package/yum.rb +109 -25
- data/lib/puppet/provider/package/zypper.rb +59 -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 -0
- data/lib/puppet/provider/user/directoryservice.rb +30 -5
- data/lib/puppet/provider/user/useradd.rb +22 -12
- data/lib/puppet/reports/http.rb +15 -9
- data/lib/puppet/reports/store.rb +1 -1
- 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 +4 -0
- data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
- data/lib/puppet/ssl.rb +1 -0
- data/lib/puppet/ssl/certificate.rb +2 -1
- 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/verifier_adapter.rb +9 -1
- data/lib/puppet/test/test_helper.rb +15 -11
- data/lib/puppet/transaction/report.rb +2 -2
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +18 -6
- data/lib/puppet/type/file.rb +51 -13
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +51 -60
- data/lib/puppet/type/group.rb +2 -2
- data/lib/puppet/type/package.rb +102 -10
- data/lib/puppet/type/service.rb +55 -8
- data/lib/puppet/type/user.rb +3 -28
- data/lib/puppet/util.rb +39 -15
- data/lib/puppet/util/at_fork.rb +1 -1
- data/lib/puppet/util/autoload.rb +4 -18
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/instance_loader.rb +14 -10
- data/lib/puppet/util/log/destinations.rb +2 -11
- 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 +36 -10
- data/lib/puppet/util/platform.rb +5 -0
- data/lib/puppet/util/plist.rb +6 -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/storage.rb +0 -1
- data/lib/puppet/util/windows/adsi.rb +2 -2
- data/lib/puppet/util/windows/api_types.rb +45 -32
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- 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 +1 -0
- 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 +23 -8
- data/lib/puppet/util/yaml.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +707 -574
- data/man/man5/puppet.conf.5 +74 -14
- 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 +1 -1
- 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/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/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 -102
- 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 -106
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -106
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -102
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -98
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -102
- 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 -102
- data/spec/integration/application/agent_spec.rb +483 -0
- data/spec/integration/application/apply_spec.rb +132 -3
- data/spec/integration/application/filebucket_spec.rb +190 -0
- data/spec/integration/application/plugin_spec.rb +73 -0
- data/spec/integration/configurer_spec.rb +26 -7
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/http/client_spec.rb +47 -37
- data/spec/integration/indirector/facts/facter_spec.rb +4 -0
- data/spec/integration/indirector/report/yaml.rb +83 -0
- data/spec/integration/module_tool/forge_spec.rb +2 -15
- 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/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/integration/util/windows/user_spec.rb +40 -5
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/https.rb +16 -7
- data/spec/lib/puppet_spec/puppetserver.rb +119 -0
- data/spec/shared_contexts/https.rb +29 -0
- data/spec/unit/agent_spec.rb +80 -26
- data/spec/unit/application/agent_spec.rb +9 -5
- data/spec/unit/application/apply_spec.rb +2 -12
- data/spec/unit/application/describe_spec.rb +88 -50
- data/spec/unit/application/device_spec.rb +2 -2
- data/spec/unit/application/filebucket_spec.rb +22 -2
- data/spec/unit/application/resource_spec.rb +2 -2
- data/spec/unit/configurer/fact_handler_spec.rb +4 -8
- data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
- data/spec/unit/configurer_spec.rb +17 -18
- data/spec/unit/context/trusted_information_spec.rb +25 -2
- data/spec/unit/daemon_spec.rb +5 -64
- data/spec/unit/defaults_spec.rb +25 -2
- data/spec/unit/environments_spec.rb +65 -28
- data/spec/unit/face/facts_spec.rb +24 -20
- 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/terminus_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +11 -0
- data/spec/unit/file_system_spec.rb +26 -2
- data/spec/unit/functions/lookup_spec.rb +13 -0
- data/spec/unit/http/client_spec.rb +327 -35
- data/spec/unit/http/external_client_spec.rb +201 -0
- data/spec/unit/http/resolver_spec.rb +34 -2
- data/spec/unit/http/response_spec.rb +75 -0
- data/spec/unit/http/service/ca_spec.rb +53 -11
- data/spec/unit/http/service/compiler_spec.rb +627 -0
- data/spec/unit/http/service/file_server_spec.rb +308 -0
- data/spec/unit/http/service/report_spec.rb +27 -9
- data/spec/unit/http/service_spec.rb +98 -5
- data/spec/unit/http/session_spec.rb +190 -7
- data/spec/unit/indirector/catalog/compiler_spec.rb +47 -29
- 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/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/connection_spec.rb +559 -175
- data/spec/unit/network/http/nocache_pool_spec.rb +25 -3
- data/spec/unit/network/http/pool_spec.rb +89 -11
- 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 +16 -0
- data/spec/unit/node/facts_spec.rb +2 -1
- data/spec/unit/node_spec.rb +7 -4
- 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 +1 -1
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +6 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
- data/spec/unit/pops/validator/validator_spec.rb +7 -2
- data/spec/unit/provider/aix_object_spec.rb +16 -2
- data/spec/unit/provider/group/groupadd_spec.rb +181 -56
- 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 +43 -2
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +76 -15
- data/spec/unit/provider/package/dpkg_spec.rb +28 -6
- data/spec/unit/provider/package/gem_spec.rb +40 -0
- data/spec/unit/provider/package/openbsd_spec.rb +17 -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/pkg_spec.rb +15 -1
- 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 +8 -0
- data/spec/unit/provider/package/rpm_spec.rb +0 -212
- data/spec/unit/provider/package/yum_spec.rb +292 -0
- data/spec/unit/provider/package/zypper_spec.rb +84 -0
- data/spec/unit/provider/service/init_spec.rb +1 -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 +92 -12
- data/spec/unit/provider/service/windows_spec.rb +22 -14
- data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +43 -24
- data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
- data/spec/unit/puppet_pal_2pec.rb +0 -26
- data/spec/unit/puppet_pal_catalog_spec.rb +46 -0
- data/spec/unit/puppet_spec.rb +47 -0
- data/spec/unit/reports/http_spec.rb +70 -52
- 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/certificate_spec.rb +7 -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 +1 -10
- 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/package_spec.rb +8 -0
- data/spec/unit/type/service_spec.rb +185 -8
- data/spec/unit/type/user_spec.rb +1 -2
- 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/checksums_spec.rb +16 -0
- 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 +112 -42
- data/spec/unit/util/plist_spec.rb +20 -0
- data/spec/unit/util/rpm_compare_spec.rb +196 -0
- data/spec/unit/util/storage_spec.rb +1 -8
- 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 +73 -12
- data/COMMITTERS.md +0 -244
- data/spec/integration/faces/plugin_spec.rb +0 -61
- data/spec/integration/test/test_helper_spec.rb +0 -31
@@ -3,6 +3,7 @@
|
|
3
3
|
# @api private
|
4
4
|
class Puppet::Network::HTTP::NoCachePool < Puppet::Network::HTTP::BasePool
|
5
5
|
def initialize(factory = Puppet::Network::HTTP::Factory.new)
|
6
|
+
Puppet.deprecation_warning(_('Puppet::Network::HTTP::NoCachePool is deprecated.'))
|
6
7
|
@factory = factory
|
7
8
|
end
|
8
9
|
|
@@ -15,6 +16,7 @@ class Puppet::Network::HTTP::NoCachePool < Puppet::Network::HTTP::BasePool
|
|
15
16
|
begin
|
16
17
|
yield http
|
17
18
|
ensure
|
19
|
+
return unless http.started?
|
18
20
|
Puppet.debug("Closing connection for #{site}")
|
19
21
|
http.finish
|
20
22
|
end
|
@@ -9,11 +9,9 @@
|
|
9
9
|
# @api private
|
10
10
|
#
|
11
11
|
class Puppet::Network::HTTP::Pool < Puppet::Network::HTTP::BasePool
|
12
|
-
|
12
|
+
attr_reader :factory, :keepalive_timeout
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
def initialize(keepalive_timeout = FIFTEEN_SECONDS)
|
14
|
+
def initialize(keepalive_timeout)
|
17
15
|
@pool = {}
|
18
16
|
@factory = Puppet::Network::HTTP::Factory.new
|
19
17
|
@keepalive_timeout = keepalive_timeout
|
@@ -33,7 +31,7 @@ class Puppet::Network::HTTP::Pool < Puppet::Network::HTTP::BasePool
|
|
33
31
|
reuse = false
|
34
32
|
raise detail
|
35
33
|
ensure
|
36
|
-
if reuse
|
34
|
+
if reuse && http.started?
|
37
35
|
release(site, verifier, http)
|
38
36
|
else
|
39
37
|
close_connection(site, http)
|
@@ -56,13 +54,17 @@ class Puppet::Network::HTTP::Pool < Puppet::Network::HTTP::BasePool
|
|
56
54
|
end
|
57
55
|
|
58
56
|
# Safely close a persistent connection.
|
57
|
+
# Don't try to close a connection that's already closed.
|
59
58
|
#
|
60
59
|
# @api private
|
61
60
|
def close_connection(site, http)
|
61
|
+
return false unless http.started?
|
62
62
|
Puppet.debug("Closing connection for #{site}")
|
63
63
|
http.finish
|
64
|
+
true
|
64
65
|
rescue => detail
|
65
66
|
Puppet.log_exception(detail, _("Failed to close connection for %{site}: %{detail}") % { site: site, detail: detail })
|
67
|
+
nil
|
66
68
|
end
|
67
69
|
|
68
70
|
# Borrow and take ownership of a persistent connection. If a new
|
@@ -71,9 +73,14 @@ class Puppet::Network::HTTP::Pool < Puppet::Network::HTTP::BasePool
|
|
71
73
|
# @api private
|
72
74
|
def borrow(site, verifier)
|
73
75
|
@pool[site] = active_sessions(site)
|
74
|
-
index = @pool[site].index
|
76
|
+
index = @pool[site].index do |session|
|
77
|
+
(verifier.nil? && session.verifier.nil?) ||
|
78
|
+
(!verifier.nil? && verifier.reusable?(session.verifier))
|
79
|
+
end
|
75
80
|
session = index ? @pool[site].delete_at(index) : nil
|
76
81
|
if session
|
82
|
+
@pool.delete(site) if @pool[site].empty?
|
83
|
+
|
77
84
|
Puppet.debug("Using cached connection for #{site}")
|
78
85
|
session.connection
|
79
86
|
else
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'puppet/network/http/connection'
|
2
|
+
require 'puppet/network/http/connection_adapter'
|
2
3
|
require 'puppet/util/platform'
|
3
4
|
|
4
5
|
module Puppet::Network; end
|
@@ -12,7 +13,7 @@ module Puppet::Network; end
|
|
12
13
|
#
|
13
14
|
module Puppet::Network::HttpPool
|
14
15
|
|
15
|
-
@http_client_class = Puppet::Network::HTTP::
|
16
|
+
@http_client_class = Puppet::Network::HTTP::ConnectionAdapter
|
16
17
|
|
17
18
|
def self.http_client_class
|
18
19
|
@http_client_class
|
@@ -162,6 +162,10 @@ class Puppet::Node::Environment
|
|
162
162
|
# @api private
|
163
163
|
attr_accessor :loaders
|
164
164
|
|
165
|
+
# Lock for compilation that needs exclusive access to the environment
|
166
|
+
# @api private
|
167
|
+
attr_reader :lock
|
168
|
+
|
165
169
|
# Checks to make sure that this environment did not have a manifest set in
|
166
170
|
# its original environment.conf if Puppet is configured with
|
167
171
|
# +disable_per_environment_manifest+ set true. If it did, the environment's
|
@@ -293,7 +297,13 @@ class Puppet::Node::Environment
|
|
293
297
|
def modules
|
294
298
|
if @modules.nil?
|
295
299
|
module_references = []
|
296
|
-
|
300
|
+
project = Puppet.lookup(:bolt_project) { nil }
|
301
|
+
seen_modules = if project
|
302
|
+
module_references << project.to_h
|
303
|
+
{ project.name => true }
|
304
|
+
else
|
305
|
+
{}
|
306
|
+
end
|
297
307
|
modulepath.each do |path|
|
298
308
|
Dir.entries(path).each do |name|
|
299
309
|
next unless Puppet::Module.is_module_directory?(name, path)
|
@@ -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
@@ -422,37 +422,8 @@ module Pal
|
|
422
422
|
# TRANSLATORS, the string "For puppet PAL" is not user facing
|
423
423
|
Puppet.override({:current_environment => apply_environment}, "For puppet PAL") do
|
424
424
|
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
425
|
node.sanitize()
|
434
|
-
|
435
426
|
compiler = create_internal_compiler(internal_compiler_class, node)
|
436
|
-
# compiler = Puppet::Parser::ScriptCompiler.new(node.environment, node.name)
|
437
|
-
topscope = compiler.topscope
|
438
|
-
|
439
|
-
# When scripting the trusted data are always local, but set them anyway
|
440
|
-
# When compiling for a catalog, the catalog compiler does this
|
441
|
-
unless internal_compiler_class == :catalog
|
442
|
-
topscope.set_trusted(node.trusted_data)
|
443
|
-
|
444
|
-
# Server facts are always about the local node's version etc.
|
445
|
-
topscope.set_server_facts(node.server_facts)
|
446
|
-
|
447
|
-
# Set $facts for the node running the script
|
448
|
-
facts_hash = node.facts.nil? ? {} : node.facts.values
|
449
|
-
topscope.set_facts(facts_hash)
|
450
|
-
|
451
|
-
# create the $settings:: variables
|
452
|
-
topscope.merge_settings(node.environment.name, false)
|
453
|
-
end
|
454
|
-
|
455
|
-
add_variables(topscope, pal_variables)
|
456
427
|
|
457
428
|
case internal_compiler_class
|
458
429
|
when :script
|
@@ -468,6 +439,10 @@ module Pal
|
|
468
439
|
# TRANSLATORS: Do not translate, symbolic name
|
469
440
|
Puppet.override(overrides, "PAL::with_#{internal_compiler_class}_compiler") do
|
470
441
|
compiler.compile do | compiler_yield |
|
442
|
+
# In case the varaibles passed to the compiler are PCore types defined in modules, they
|
443
|
+
# need to be deserialized and added from within the this scope, so that loaders are
|
444
|
+
# available during deserizlization.
|
445
|
+
add_variables(compiler.topscope, Puppet::Pops::Serialization::FromDataConverter.convert(pal_variables))
|
471
446
|
# wrap the internal compiler to prevent it from leaking in the PAL API
|
472
447
|
if block_given?
|
473
448
|
yield(pal_compiler)
|
@@ -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
|
@@ -13,12 +13,6 @@ class Puppet::Parser::AST::PopsBridge
|
|
13
13
|
# expression.
|
14
14
|
#
|
15
15
|
class Expression < Puppet::Parser::AST::Leaf
|
16
|
-
|
17
|
-
def initialize args
|
18
|
-
super
|
19
|
-
@@evaluator ||= Puppet::Pops::Parser::EvaluatingParser.new()
|
20
|
-
end
|
21
|
-
|
22
16
|
def to_s
|
23
17
|
Puppet::Pops::Model::ModelTreeDumper.new.dump(@value)
|
24
18
|
end
|
@@ -29,8 +23,9 @@ class Puppet::Parser::AST::PopsBridge
|
|
29
23
|
end
|
30
24
|
|
31
25
|
def evaluate(scope)
|
32
|
-
|
33
|
-
|
26
|
+
evaluator = Puppet::Pops::Parser::EvaluatingParser.singleton
|
27
|
+
object = evaluator.evaluate(scope, @value)
|
28
|
+
evaluator.convert_to_3x(object, scope)
|
34
29
|
end
|
35
30
|
|
36
31
|
# Adapts to 3x where top level constructs needs to have each to iterate over children. Short circuit this
|
@@ -62,10 +57,6 @@ class Puppet::Parser::AST::PopsBridge
|
|
62
57
|
end
|
63
58
|
|
64
59
|
class ExpressionSupportingReturn < Expression
|
65
|
-
def initialize args
|
66
|
-
super
|
67
|
-
end
|
68
|
-
|
69
60
|
def evaluate(scope)
|
70
61
|
return catch(:return) do
|
71
62
|
return catch(:next) do
|
@@ -87,7 +78,6 @@ class Puppet::Parser::AST::PopsBridge
|
|
87
78
|
@program_model = program_model
|
88
79
|
@context = context
|
89
80
|
@ast_transformer ||= Puppet::Pops::Model::AstTransformer.new(@context[:file])
|
90
|
-
@@evaluator ||= Puppet::Pops::Parser::EvaluatingParser.new()
|
91
81
|
end
|
92
82
|
|
93
83
|
# This is the 3x API, the 3x AST searches through all code to find the instructions that can be instantiated.
|
@@ -122,7 +112,7 @@ class Puppet::Parser::AST::PopsBridge
|
|
122
112
|
end
|
123
113
|
|
124
114
|
def evaluate(scope)
|
125
|
-
|
115
|
+
Puppet::Pops::Parser::EvaluatingParser.singleton.evaluate(scope, program_model)
|
126
116
|
end
|
127
117
|
|
128
118
|
# Adapts to 3x where top level constructs needs to have each to iterate over children. Short circuit this
|
@@ -178,8 +168,9 @@ class Puppet::Parser::AST::PopsBridge
|
|
178
168
|
#
|
179
169
|
scope = obtain_scope
|
180
170
|
if scope
|
171
|
+
evaluator = Puppet::Pops::Parser::EvaluatingParser.singleton
|
181
172
|
typed_parameters.each do |p|
|
182
|
-
result[p.name] =
|
173
|
+
result[p.name] = evaluator.evaluate(scope, p.type_expr)
|
183
174
|
end
|
184
175
|
end
|
185
176
|
result
|
@@ -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
|
@@ -78,28 +79,32 @@ module Puppet::Parser::Functions
|
|
78
79
|
attr_accessor :module
|
79
80
|
end
|
80
81
|
|
82
|
+
@environment_module_lock = Puppet::Concurrent::Lock.new
|
83
|
+
|
81
84
|
# Get the module that functions are mixed into corresponding to an
|
82
85
|
# environment
|
83
86
|
#
|
84
87
|
# @api private
|
85
88
|
def self.environment_module(env)
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
+
@environment_module_lock.synchronize do
|
90
|
+
AnonymousModuleAdapter.adapt(env) do |a|
|
91
|
+
a.module ||= Module.new do
|
92
|
+
@metadata = {}
|
89
93
|
|
90
|
-
|
91
|
-
|
92
|
-
|
94
|
+
def self.all_function_info
|
95
|
+
@metadata
|
96
|
+
end
|
93
97
|
|
94
|
-
|
95
|
-
|
96
|
-
|
98
|
+
def self.get_function_info(name)
|
99
|
+
@metadata[name]
|
100
|
+
end
|
97
101
|
|
98
|
-
|
99
|
-
|
102
|
+
def self.add_function_info(name, info)
|
103
|
+
@metadata[name] = info
|
104
|
+
end
|
100
105
|
end
|
101
|
-
end
|
102
|
-
end
|
106
|
+
end.module
|
107
|
+
end
|
103
108
|
end
|
104
109
|
|
105
110
|
# Create a new Puppet DSL function.
|