puppet 6.13.0-universal-darwin → 6.18.0-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +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
data/lib/puppet/environments.rb
CHANGED
@@ -247,11 +247,10 @@ module Puppet::Environments
|
|
247
247
|
end
|
248
248
|
|
249
249
|
def valid_environment_names
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
end
|
250
|
+
return [] unless Puppet::FileSystem.directory?(@environment_dir)
|
251
|
+
Puppet::FileSystem.children(@environment_dir).map do |child|
|
252
|
+
Puppet::FileSystem.basename_string(child).intern if validated_directory(child)
|
253
|
+
end.compact
|
255
254
|
end
|
256
255
|
end
|
257
256
|
|
data/lib/puppet/face/facts.rb
CHANGED
data/lib/puppet/face/help.rb
CHANGED
@@ -24,12 +24,19 @@ Puppet::Face.define(:help, '0.0.1') do
|
|
24
24
|
summary _("The version of the subcommand for which to show help.")
|
25
25
|
end
|
26
26
|
|
27
|
+
option "--ronn" do
|
28
|
+
summary _("Whether to render the help text in ronn format.")
|
29
|
+
default_to { false }
|
30
|
+
end
|
31
|
+
|
27
32
|
default
|
28
33
|
when_invoked do |*args|
|
29
34
|
options = args.pop
|
30
35
|
|
31
|
-
|
32
|
-
|
36
|
+
unless options[:ronn]
|
37
|
+
if default_case?(args) || help_for_help?(args)
|
38
|
+
return erb('global.erb').result(binding)
|
39
|
+
end
|
33
40
|
end
|
34
41
|
|
35
42
|
if args.length > 2
|
@@ -54,9 +61,20 @@ Puppet::Face.define(:help, '0.0.1') do
|
|
54
61
|
if actionname
|
55
62
|
raise ArgumentError, _("The legacy subcommand '%{sub_command}' does not support supplying an action") % { sub_command: facename }
|
56
63
|
end
|
64
|
+
# legacy apps already emit ronn output
|
57
65
|
return render_application_help(facename)
|
58
66
|
else
|
59
|
-
|
67
|
+
if options[:ronn]
|
68
|
+
# Calling `puppet help <app> --ronn` normally calls this action with
|
69
|
+
# <app> as the first argument in the `args` array. However, if <app>
|
70
|
+
# happens to match the name of an action, like `puppet help help
|
71
|
+
# --ronn`, then face_base "eats" the argument and `args` will be
|
72
|
+
# empty. Rather than force users to type `puppet help help help
|
73
|
+
# --ronn`, default the facename to `:help`
|
74
|
+
render_face_man(facename || :help)
|
75
|
+
else
|
76
|
+
render_face_help(facename, actionname, version)
|
77
|
+
end
|
60
78
|
end
|
61
79
|
end
|
62
80
|
end
|
@@ -69,6 +87,14 @@ Puppet::Face.define(:help, '0.0.1') do
|
|
69
87
|
args.length == 1 && args.first == 'help'
|
70
88
|
end
|
71
89
|
|
90
|
+
def render_face_man(facename)
|
91
|
+
# set 'face' as it's used in the erb processing.
|
92
|
+
face = Puppet::Face[facename.to_sym, :current]
|
93
|
+
# avoid unused variable warning
|
94
|
+
_face = face
|
95
|
+
erb('man.erb').result(binding)
|
96
|
+
end
|
97
|
+
|
72
98
|
def render_application_help(applicationname)
|
73
99
|
return Puppet::Application[applicationname].help
|
74
100
|
rescue StandardError, LoadError => detail
|
@@ -5,6 +5,8 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
5
5
|
action(:search) do
|
6
6
|
summary _("Search the Puppet Forge for a module.")
|
7
7
|
description <<-EOT
|
8
|
+
This action has been deprecated. Please use the Puppet Forge to search for modules.
|
9
|
+
|
8
10
|
Searches a repository for modules whose names, descriptions, or keywords
|
9
11
|
match the provided search term.
|
10
12
|
EOT
|
@@ -22,6 +24,7 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
22
24
|
arguments _("<search_term>")
|
23
25
|
|
24
26
|
when_invoked do |term, options|
|
27
|
+
Puppet.deprecation_warning(_("This action has been deprecated. Please use the Puppet Forge to search for modules."))
|
25
28
|
Puppet::ModuleTool.set_option_defaults options
|
26
29
|
Puppet::ModuleTool::Applications::Searcher.new(term, Puppet::Forge.new(options[:module_repository] || Puppet[:module_repository]), options).run
|
27
30
|
end
|
@@ -94,5 +97,7 @@ Puppet::Face.define(:module, '1.0.0') do
|
|
94
97
|
highlight[format % [ name.sub('/', '-'), desc, "@#{author}", [keywords].flatten.join(' ') ]]
|
95
98
|
end.join
|
96
99
|
end
|
100
|
+
|
101
|
+
deprecate
|
97
102
|
end
|
98
103
|
end
|
data/lib/puppet/face/plugin.rb
CHANGED
@@ -41,10 +41,10 @@ Puppet::Face.define(:plugin, '0.0.1') do
|
|
41
41
|
when_invoked do |options|
|
42
42
|
remote_environment_for_plugins = Puppet::Node::Environment.remote(Puppet[:environment])
|
43
43
|
|
44
|
-
pool = Puppet
|
44
|
+
pool = Puppet.runtime[:http].pool
|
45
45
|
Puppet.override(:http_pool => pool) do
|
46
46
|
begin
|
47
|
-
handler = Puppet::Configurer::PluginHandler.new
|
47
|
+
handler = Puppet::Configurer::PluginHandler.new
|
48
48
|
handler.download_plugins(remote_environment_for_plugins)
|
49
49
|
ensure
|
50
50
|
pool.close
|
data/lib/puppet/feature/base.rb
CHANGED
@@ -15,13 +15,25 @@ class Puppet::FileServing::HttpMetadata < Puppet::FileServing::Metadata
|
|
15
15
|
# use a default mtime in case there is no usable HTTP header
|
16
16
|
@checksums[:mtime] = "{mtime}#{Time.now}"
|
17
17
|
|
18
|
+
# RFC-1864, deprecated in HTTP/1.1 due to partial responses
|
18
19
|
checksum = http_response['content-md5']
|
19
20
|
if checksum
|
20
21
|
# convert base64 digest to hex
|
21
|
-
checksum = checksum.unpack("
|
22
|
+
checksum = checksum.unpack("m").first.unpack("H*").first
|
22
23
|
@checksums[:md5] = "{md5}#{checksum}"
|
23
24
|
end
|
24
25
|
|
26
|
+
{
|
27
|
+
md5: 'X-Checksum-Md5',
|
28
|
+
sha1: 'X-Checksum-Sha1',
|
29
|
+
sha256: 'X-Checksum-Sha256'
|
30
|
+
}.each_pair do |checksum_type, header|
|
31
|
+
checksum = http_response[header]
|
32
|
+
if checksum
|
33
|
+
@checksums[checksum_type] = "{#{checksum_type}}#{checksum}"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
25
37
|
last_modified = http_response['last-modified']
|
26
38
|
if last_modified
|
27
39
|
mtime = DateTime.httpdate(last_modified).to_time
|
@@ -39,7 +51,7 @@ class Puppet::FileServing::HttpMetadata < Puppet::FileServing::Metadata
|
|
39
51
|
def collect
|
40
52
|
# Prefer the checksum_type from the indirector request options
|
41
53
|
# but fall back to the alternative otherwise
|
42
|
-
[ @checksum_type, :md5, :sha256, :
|
54
|
+
[ @checksum_type, :md5, :sha256, :sha1, :mtime ].each do |type|
|
43
55
|
@checksum_type = type
|
44
56
|
@checksum = @checksums[type]
|
45
57
|
break if @checksum
|
@@ -138,7 +138,10 @@ class Puppet::FileServing::Metadata < Puppet::FileServing::Base
|
|
138
138
|
@source = data.delete('source')
|
139
139
|
@content_uri = data.delete('content_uri')
|
140
140
|
|
141
|
-
|
141
|
+
links = data.fetch('links', nil) || data.fetch(:links, nil)
|
142
|
+
relative_path = data.fetch('relative_path', nil) || data.fetch(:relative_path, nil)
|
143
|
+
source = @source || data.fetch(:source, nil)
|
144
|
+
super(path, links: links, relative_path: relative_path, source: source)
|
142
145
|
end
|
143
146
|
|
144
147
|
def to_data_hash
|
@@ -17,14 +17,13 @@ class Puppet::FileServing::Mount::Locales < Puppet::FileServing::Mount
|
|
17
17
|
def search(relative_path, request)
|
18
18
|
# We currently only support one kind of search on locales - return
|
19
19
|
# them all.
|
20
|
-
Puppet.debug("Warning: calling Locales.search with empty module path.") if request.environment.modules.empty?
|
21
20
|
paths = request.environment.modules.find_all { |mod| mod.locales? }.collect { |mod| mod.locale_directory }
|
22
21
|
if paths.empty?
|
23
22
|
# If the modulepath is valid then we still need to return a valid root
|
24
23
|
# directory for the search, but make sure nothing inside it is
|
25
24
|
# returned.
|
26
25
|
request.options[:recurse] = false
|
27
|
-
request.environment.modulepath.empty? ?
|
26
|
+
request.environment.modulepath.empty? ? [Puppet[:codedir]] : request.environment.modulepath
|
28
27
|
else
|
29
28
|
paths
|
30
29
|
end
|
@@ -17,14 +17,13 @@ class Puppet::FileServing::Mount::PluginFacts < Puppet::FileServing::Mount
|
|
17
17
|
def search(relative_path, request)
|
18
18
|
# We currently only support one kind of search on plugins - return
|
19
19
|
# them all.
|
20
|
-
Puppet.debug("Warning: calling Plugins.search with empty module path.") if request.environment.modules.empty?
|
21
20
|
paths = request.environment.modules.find_all { |mod| mod.pluginfacts? }.collect { |mod| mod.plugin_fact_directory }
|
22
21
|
if paths.empty?
|
23
22
|
# If the modulepath is valid then we still need to return a valid root
|
24
23
|
# directory for the search, but make sure nothing inside it is
|
25
24
|
# returned.
|
26
25
|
request.options[:recurse] = false
|
27
|
-
request.environment.modulepath.empty? ?
|
26
|
+
request.environment.modulepath.empty? ? [Puppet[:codedir]] : request.environment.modulepath
|
28
27
|
else
|
29
28
|
paths
|
30
29
|
end
|
@@ -17,14 +17,13 @@ class Puppet::FileServing::Mount::Plugins < Puppet::FileServing::Mount
|
|
17
17
|
def search(relative_path, request)
|
18
18
|
# We currently only support one kind of search on plugins - return
|
19
19
|
# them all.
|
20
|
-
Puppet.debug("Warning: calling Plugins.search with empty module path.") if request.environment.modules.empty?
|
21
20
|
paths = request.environment.modules.find_all { |mod| mod.plugins? }.collect { |mod| mod.plugin_directory }
|
22
21
|
if paths.empty?
|
23
22
|
# If the modulepath is valid then we still need to return a valid root
|
24
23
|
# directory for the search, but make sure nothing inside it is
|
25
24
|
# returned.
|
26
25
|
request.options[:recurse] = false
|
27
|
-
request.environment.modulepath.empty? ?
|
26
|
+
request.environment.modulepath.empty? ? [Puppet[:codedir]] : request.environment.modulepath
|
28
27
|
else
|
29
28
|
paths
|
30
29
|
end
|
@@ -7,11 +7,6 @@ module Puppet::FileServing::TerminusSelector
|
|
7
7
|
def select(request)
|
8
8
|
# We rely on the request's parsing of the URI.
|
9
9
|
|
10
|
-
# Short-circuit to :file if it's a fully-qualified path or specifies a 'file' protocol.
|
11
|
-
if Puppet::Util.absolute_path?(request.key)
|
12
|
-
return :file
|
13
|
-
end
|
14
|
-
|
15
10
|
case request.protocol
|
16
11
|
when "file"
|
17
12
|
:file
|
@@ -21,10 +16,14 @@ module Puppet::FileServing::TerminusSelector
|
|
21
16
|
else
|
22
17
|
Puppet[:default_file_terminus]
|
23
18
|
end
|
24
|
-
|
25
|
-
|
19
|
+
when "http","https"
|
20
|
+
:http
|
26
21
|
when nil
|
27
|
-
|
22
|
+
if Puppet::Util.absolute_path?(request.key)
|
23
|
+
:file
|
24
|
+
else
|
25
|
+
:file_server
|
26
|
+
end
|
28
27
|
else
|
29
28
|
raise ArgumentError, _("URI protocol '%{protocol}' is not currently supported for file serving") % { protocol: request.protocol }
|
30
29
|
end
|
@@ -54,12 +54,12 @@ class Puppet::FileSystem::FileImpl
|
|
54
54
|
while !written
|
55
55
|
::File.open(path, options, mode) do |rf|
|
56
56
|
if rf.flock(::File::LOCK_EX|::File::LOCK_NB)
|
57
|
-
Puppet.debug
|
57
|
+
Puppet.debug{ _("Locked '%{path}'") % { path: path } }
|
58
58
|
yield rf
|
59
59
|
written = true
|
60
|
-
Puppet.debug
|
60
|
+
Puppet.debug{ _("Unlocked '%{path}'") % { path: path } }
|
61
61
|
else
|
62
|
-
Puppet.debug
|
62
|
+
Puppet.debug{ "Failed to lock '%s' retrying in %.2f milliseconds" % [path, wait * 1000] }
|
63
63
|
sleep wait
|
64
64
|
timeout -= wait
|
65
65
|
wait *= 2
|
@@ -80,7 +80,7 @@ class Puppet::FileSystem::FileImpl
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def read(path, opts = {})
|
83
|
-
path.read(opts)
|
83
|
+
path.read(**opts)
|
84
84
|
end
|
85
85
|
|
86
86
|
def read_preserve_line_endings(path)
|
@@ -124,7 +124,7 @@ class Puppet::FileSystem::FileImpl
|
|
124
124
|
end
|
125
125
|
|
126
126
|
def symlink(path, dest, options = {})
|
127
|
-
FileUtils.symlink(path, dest, options)
|
127
|
+
FileUtils.symlink(path, dest, **options)
|
128
128
|
end
|
129
129
|
|
130
130
|
def symlink?(path)
|
@@ -156,12 +156,14 @@ class Puppet::FileSystem::FileImpl
|
|
156
156
|
end
|
157
157
|
|
158
158
|
def replace_file(path, mode = nil)
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
159
|
+
begin
|
160
|
+
stat = Puppet::FileSystem.lstat(path)
|
161
|
+
gid = stat.gid
|
162
|
+
uid = stat.uid
|
163
|
+
mode ||= stat.mode & 07777
|
164
|
+
rescue Errno::ENOENT
|
165
|
+
mode ||= 0640
|
166
|
+
end
|
165
167
|
|
166
168
|
tempfile = Puppet::FileSystem::Uniquefile.new(Puppet::FileSystem.basename_string(path), Puppet::FileSystem.dir_string(path))
|
167
169
|
begin
|
@@ -173,8 +175,10 @@ class Puppet::FileSystem::FileImpl
|
|
173
175
|
tempfile.close
|
174
176
|
end
|
175
177
|
|
176
|
-
|
177
|
-
|
178
|
+
tempfile_path = tempfile.path
|
179
|
+
FileUtils.chown(uid, gid, tempfile_path) if uid && gid
|
180
|
+
chmod(mode, tempfile_path)
|
181
|
+
File.rename(tempfile_path, Puppet::FileSystem.path_string(path))
|
178
182
|
ensure
|
179
183
|
tempfile.close!
|
180
184
|
end
|
@@ -124,11 +124,7 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
|
|
124
124
|
opts = []
|
125
125
|
end
|
126
126
|
tmpdir, = *rest
|
127
|
-
|
128
|
-
tmpdir = '/tmp'
|
129
|
-
else
|
130
|
-
tmpdir ||= tmpdir()
|
131
|
-
end
|
127
|
+
tmpdir ||= tmpdir()
|
132
128
|
n = nil
|
133
129
|
begin
|
134
130
|
path = File.expand_path(make_tmpname(basename, n), tmpdir)
|
@@ -154,18 +150,14 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
|
|
154
150
|
|
155
151
|
def tmpdir
|
156
152
|
tmp = '.'
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
tmp = dir
|
164
|
-
break
|
165
|
-
end rescue nil
|
166
|
-
end
|
167
|
-
File.expand_path(tmp)
|
153
|
+
for dir in [ Puppet::Util.get_env('TMPDIR'), Puppet::Util.get_env('TMP'), Puppet::Util.get_env('TEMP'), @@systmpdir, '/tmp']
|
154
|
+
stat = File.stat(dir) if dir
|
155
|
+
if stat && stat.directory? && stat.writable?
|
156
|
+
tmp = dir
|
157
|
+
break
|
158
|
+
end rescue nil
|
168
159
|
end
|
160
|
+
File.expand_path(tmp)
|
169
161
|
end
|
170
162
|
|
171
163
|
|
@@ -176,6 +168,10 @@ class Puppet::FileSystem::Uniquefile < DelegateClass(File)
|
|
176
168
|
lock = tmpname + '.lock'
|
177
169
|
mkdir(lock)
|
178
170
|
yield
|
171
|
+
rescue Errno::ENOENT => e
|
172
|
+
ex = Errno::ENOENT.new("A directory component in #{lock} does not exist or is a dangling symbolic link")
|
173
|
+
ex.set_backtrace(e.backtrace)
|
174
|
+
raise ex
|
179
175
|
ensure
|
180
176
|
rmdir(lock) if Puppet::FileSystem.exist?(lock)
|
181
177
|
end
|
data/lib/puppet/forge.rb
CHANGED
data/lib/puppet/forge/cache.rb
CHANGED
@@ -25,7 +25,7 @@ class Puppet::Forge
|
|
25
25
|
unless cached_file.file?
|
26
26
|
if uri.scheme == 'file'
|
27
27
|
# CGI.unescape butchers Uris that are escaped properly
|
28
|
-
FileUtils.cp(
|
28
|
+
FileUtils.cp(Puppet::Util.uri_unescape(uri.path), cached_file)
|
29
29
|
else
|
30
30
|
# TODO: Handle HTTPS; probably should use repository.contact
|
31
31
|
data = read_retrieve(uri)
|
@@ -37,18 +37,15 @@ class Puppet::Forge
|
|
37
37
|
uri = URI(str)
|
38
38
|
|
39
39
|
headers = { "User-Agent" => user_agent }
|
40
|
-
user = nil
|
41
|
-
password = nil
|
42
40
|
|
43
41
|
if forge_authorization
|
42
|
+
uri.user = nil
|
43
|
+
uri.password = nil
|
44
44
|
headers["Authorization"] = forge_authorization
|
45
|
-
elsif @uri.user && @uri.password
|
46
|
-
user = @uri.user
|
47
|
-
password = @uri.password
|
48
45
|
end
|
49
46
|
|
50
|
-
http = Puppet.runtime[
|
51
|
-
response = http.get(uri, headers: headers,
|
47
|
+
http = Puppet.runtime[:http]
|
48
|
+
response = http.get(uri, headers: headers, options: {ssl_context: @ssl_context})
|
52
49
|
io.write(response.body) if io.respond_to?(:write)
|
53
50
|
response
|
54
51
|
rescue Puppet::SSL::CertVerifyError => e
|
@@ -39,7 +39,7 @@ Puppet::Functions.create_function(:eyaml_lookup_key) do
|
|
39
39
|
context.cache(nil, raw_data)
|
40
40
|
end
|
41
41
|
context.not_found unless raw_data.include?(key)
|
42
|
-
context.cache(key, decrypt_value(raw_data[key], context, options))
|
42
|
+
context.cache(key, decrypt_value(raw_data[key], context, options, key))
|
43
43
|
end
|
44
44
|
|
45
45
|
def load_data_hash(options, context)
|
@@ -62,22 +62,22 @@ Puppet::Functions.create_function(:eyaml_lookup_key) do
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
def decrypt_value(value, context, options)
|
65
|
+
def decrypt_value(value, context, options, key)
|
66
66
|
case value
|
67
67
|
when String
|
68
|
-
decrypt(value, context, options)
|
68
|
+
decrypt(value, context, options, key)
|
69
69
|
when Hash
|
70
70
|
result = {}
|
71
|
-
value.each_pair { |k, v| result[context.interpolate(k)] = decrypt_value(v, context, options) }
|
71
|
+
value.each_pair { |k, v| result[context.interpolate(k)] = decrypt_value(v, context, options, key) }
|
72
72
|
result
|
73
73
|
when Array
|
74
|
-
value.map { |v| decrypt_value(v, context, options) }
|
74
|
+
value.map { |v| decrypt_value(v, context, options, key) }
|
75
75
|
else
|
76
76
|
value
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
|
-
def decrypt(data, context, options)
|
80
|
+
def decrypt(data, context, options, key)
|
81
81
|
if encrypted?(data)
|
82
82
|
# Options must be set prior to each call to #parse since they end up as static variables in
|
83
83
|
# the Options class. They cannot be set once before #decrypt_value is called, since each #decrypt
|
@@ -85,8 +85,13 @@ Puppet::Functions.create_function(:eyaml_lookup_key) do
|
|
85
85
|
# config.
|
86
86
|
#
|
87
87
|
Hiera::Backend::Eyaml::Options.set(options)
|
88
|
-
|
89
|
-
|
88
|
+
begin
|
89
|
+
tokens = Hiera::Backend::Eyaml::Parser::ParserFactory.hiera_backend_parser.parse(data)
|
90
|
+
data = tokens.map(&:to_plain_text).join.chomp
|
91
|
+
rescue StandardError => ex
|
92
|
+
raise Puppet::DataBinding::LookupError,
|
93
|
+
_("hiera-eyaml backend error decrypting %{data} when looking up %{key} in %{path}. Error was %{message}") % { data: data, key: key, path: options['path'], message: ex.message }
|
94
|
+
end
|
90
95
|
end
|
91
96
|
context.interpolate(data)
|
92
97
|
end
|