puppet 6.11.1-universal-darwin → 6.16.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 +3 -8
- data/CONTRIBUTING.md +7 -13
- data/Gemfile +1 -0
- data/Gemfile.lock +39 -36
- data/README.md +17 -24
- data/ext/build_defaults.yaml +1 -0
- data/ext/project_data.yaml +1 -1
- data/ext/windows/service/daemon.rb +25 -20
- data/lib/puppet.rb +52 -13
- data/lib/puppet/agent.rb +20 -14
- data/lib/puppet/application/agent.rb +12 -14
- 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/concurrent.rb +2 -0
- data/lib/puppet/concurrent/lock.rb +16 -0
- data/lib/puppet/concurrent/synchronized.rb +15 -0
- data/lib/puppet/concurrent/thread_local_singleton.rb +14 -0
- data/lib/puppet/configurer.rb +85 -83
- data/lib/puppet/configurer/plugin_handler.rb +10 -1
- data/lib/puppet/context/trusted_information.rb +14 -8
- data/lib/puppet/daemon.rb +13 -27
- data/lib/puppet/defaults.rb +158 -40
- data/lib/puppet/environments.rb +30 -20
- data/lib/puppet/error.rb +9 -1
- 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 +1 -1
- data/lib/puppet/file_system/file_impl.rb +13 -9
- 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 +4 -0
- data/lib/puppet/file_system/windows.rb +7 -10
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/forge/errors.rb +2 -2
- data/lib/puppet/forge/repository.rb +31 -86
- data/lib/puppet/functions/call.rb +1 -1
- data/lib/puppet/functions/camelcase.rb +2 -2
- data/lib/puppet/functions/epp.rb +4 -4
- data/lib/puppet/functions/eyaml_lookup_key.rb +13 -8
- data/lib/puppet/functions/filter.rb +1 -0
- data/lib/puppet/functions/find_file.rb +9 -9
- data/lib/puppet/functions/find_template.rb +63 -0
- data/lib/puppet/functions/inline_epp.rb +5 -5
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/http.rb +7 -0
- data/lib/puppet/http/client.rb +341 -54
- data/lib/puppet/http/errors.rb +2 -0
- data/lib/puppet/http/external_client.rb +90 -0
- data/lib/puppet/http/redirector.rb +34 -0
- data/lib/puppet/http/resolver.rb +57 -1
- data/lib/puppet/http/resolver/server_list.rb +98 -0
- data/lib/puppet/http/resolver/settings.rb +23 -2
- data/lib/puppet/http/resolver/srv.rb +36 -4
- data/lib/puppet/http/response.rb +68 -1
- data/lib/puppet/http/retry_after_handler.rb +39 -0
- data/lib/puppet/http/service.rb +179 -3
- data/lib/puppet/http/service/ca.rb +84 -21
- 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 +66 -0
- data/lib/puppet/http/session.rb +106 -31
- 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 +4 -4
- 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/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/base_pool.rb +19 -1
- 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 +182 -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 +24 -8
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +9 -29
- data/lib/puppet/parser/ast/pops_bridge.rb +6 -11
- data/lib/puppet/parser/compiler.rb +42 -32
- data/lib/puppet/parser/functions.rb +18 -13
- data/lib/puppet/parser/functions/epp.rb +3 -3
- data/lib/puppet/parser/functions/filter.rb +1 -0
- data/lib/puppet/parser/functions/inline_epp.rb +5 -5
- data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +12 -3
- data/lib/puppet/pops/loaders.rb +7 -5
- data/lib/puppet/pops/lookup/invocation.rb +10 -3
- data/lib/puppet/pops/model/pn_transformer.rb +5 -9
- data/lib/puppet/pops/parser/evaluating_parser.rb +8 -11
- data/lib/puppet/pops/serialization/json_path.rb +3 -3
- data/lib/puppet/pops/time/timespan.rb +3 -5
- data/lib/puppet/pops/types/p_object_type_extension.rb +10 -0
- data/lib/puppet/pops/types/string_converter.rb +6 -9
- data/lib/puppet/pops/types/type_calculator.rb +30 -10
- data/lib/puppet/pops/types/type_formatter.rb +9 -11
- data/lib/puppet/pops/types/type_parser.rb +3 -3
- data/lib/puppet/pops/validation/checker4_0.rb +1 -1
- data/lib/puppet/pops/validation/tasks_checker.rb +5 -1
- 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/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 +5 -5
- 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 +108 -24
- data/lib/puppet/provider/package/zypper.rb +59 -1
- data/lib/puppet/provider/package_targetable.rb +5 -4
- data/lib/puppet/provider/service/systemd.rb +23 -5
- data/lib/puppet/provider/user/aix.rb +1 -0
- data/lib/puppet/provider/user/directoryservice.rb +30 -5
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +11 -8
- data/lib/puppet/reports/http.rb +13 -9
- data/lib/puppet/reports/store.rb +1 -1
- data/lib/puppet/resource/type_collection.rb +20 -16
- data/lib/puppet/runtime.rb +32 -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_provider.rb +20 -0
- 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 +7 -1
- data/lib/puppet/transaction.rb +33 -11
- data/lib/puppet/transaction/report.rb +2 -2
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/type.rb +7 -2
- data/lib/puppet/type/file.rb +13 -0
- data/lib/puppet/type/file/data_sync.rb +5 -1
- data/lib/puppet/type/file/source.rb +49 -58
- data/lib/puppet/type/group.rb +5 -4
- data/lib/puppet/type/package.rb +102 -10
- data/lib/puppet/type/service.rb +6 -8
- data/lib/puppet/type/user.rb +6 -30
- data/lib/puppet/util.rb +34 -11
- data/lib/puppet/util/at_fork.rb +1 -1
- data/lib/puppet/util/autoload.rb +4 -18
- data/lib/puppet/util/instance_loader.rb +14 -10
- data/lib/puppet/util/log/destinations.rb +2 -11
- data/lib/puppet/util/logging.rb +30 -18
- 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/rpm_compare.rb +193 -0
- data/lib/puppet/util/storage.rb +0 -1
- data/lib/puppet/util/windows/adsi.rb +50 -20
- data/lib/puppet/util/windows/process.rb +15 -14
- data/lib/puppet/util/windows/security.rb +1 -0
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/util/yaml.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509/cert_provider.rb +9 -5
- data/locales/puppet.pot +640 -521
- data/man/man5/puppet.conf.5 +88 -9
- data/man/man8/puppet-agent.8 +6 -6
- 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/forge/bacula.json +76 -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 +394 -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/http/client_spec.rb +154 -0
- 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 +51 -0
- data/spec/integration/network/http_pool_spec.rb +76 -20
- data/spec/integration/node/environment_spec.rb +15 -0
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/https.rb +20 -9
- data/spec/lib/puppet_spec/puppetserver.rb +119 -0
- data/spec/shared_contexts/https.rb +29 -0
- data/spec/spec_helper.rb +6 -2
- 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/concurrent/lock_spec.rb +29 -0
- data/spec/unit/configurer/fact_handler_spec.rb +0 -4
- data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
- data/spec/unit/configurer_spec.rb +400 -406
- data/spec/unit/context/trusted_information_spec.rb +17 -0
- data/spec/unit/daemon_spec.rb +5 -64
- data/spec/unit/defaults_spec.rb +38 -4
- 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_system/uniquefile_spec.rb +11 -0
- data/spec/unit/file_system_spec.rb +26 -2
- data/spec/unit/forge/errors_spec.rb +1 -1
- data/spec/unit/forge/forge_spec.rb +12 -54
- data/spec/unit/forge/module_release_spec.rb +19 -6
- data/spec/unit/forge/repository_spec.rb +63 -157
- data/spec/unit/forge_spec.rb +46 -116
- data/spec/unit/functions/find_template_spec.rb +69 -0
- data/spec/unit/functions/lookup_spec.rb +13 -0
- data/spec/unit/http/client_spec.rb +395 -27
- data/spec/unit/http/external_client_spec.rb +201 -0
- data/spec/unit/http/resolver_spec.rb +81 -12
- data/spec/unit/http/response_spec.rb +69 -0
- data/spec/unit/http/service/ca_spec.rb +100 -7
- 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 +118 -0
- data/spec/unit/http/service_spec.rb +117 -4
- data/spec/unit/http/session_spec.rb +237 -19
- 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 +167 -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/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/network/http/connection_spec.rb +549 -176
- 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/pops/evaluator/evaluating_parser_spec.rb +8 -3
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +6 -1
- 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 +9 -4
- 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/package_targetable_spec.rb +60 -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/user/directoryservice_spec.rb +41 -0
- data/spec/unit/provider/user/hpux_spec.rb +2 -2
- data/spec/unit/provider/user/useradd_spec.rb +21 -8
- 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/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 +71 -0
- data/spec/unit/ssl/state_machine_spec.rb +99 -13
- data/spec/unit/transaction/persistence_spec.rb +1 -10
- data/spec/unit/transaction/report_spec.rb +4 -0
- data/spec/unit/transaction_spec.rb +45 -1
- data/spec/unit/type/file/content_spec.rb +9 -3
- data/spec/unit/type/file/ensure_spec.rb +1 -2
- data/spec/unit/type/file/source_spec.rb +86 -35
- data/spec/unit/type/package_spec.rb +8 -0
- data/spec/unit/type/service_spec.rb +9 -8
- data/spec/unit/type/user_spec.rb +1 -2
- data/spec/unit/util/at_fork_spec.rb +3 -2
- data/spec/unit/util/autoload_spec.rb +2 -1
- data/spec/unit/util/log/destinations_spec.rb +1 -29
- data/spec/unit/util/log_spec.rb +0 -138
- data/spec/unit/util/logging_spec.rb +200 -0
- 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 +55 -4
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/spec/unit/x509/cert_provider_spec.rb +24 -4
- data/tasks/generate_cert_fixtures.rake +15 -1
- data/tasks/manpages.rake +6 -35
- metadata +92 -12
- data/COMMITTERS.md +0 -244
- data/spec/integration/faces/plugin_spec.rb +0 -61
- data/spec/lib/puppet_spec/validators.rb +0 -37
@@ -3,4 +3,38 @@ require 'puppet/indirector/rest'
|
|
3
3
|
|
4
4
|
class Puppet::Resource::Catalog::Rest < Puppet::Indirector::REST
|
5
5
|
desc "Find resource catalogs over HTTP via REST."
|
6
|
+
|
7
|
+
def find(request)
|
8
|
+
return super unless use_http_client?
|
9
|
+
|
10
|
+
checksum_type = if request.options[:checksum_type]
|
11
|
+
request.options[:checksum_type].split('.')
|
12
|
+
else
|
13
|
+
Puppet[:supported_checksum_types]
|
14
|
+
end
|
15
|
+
|
16
|
+
session = Puppet.lookup(:http_session)
|
17
|
+
api = session.route_to(:puppet)
|
18
|
+
_, catalog = api.post_catalog(
|
19
|
+
request.key,
|
20
|
+
facts: request.options[:facts_for_catalog],
|
21
|
+
environment: request.environment.to_s,
|
22
|
+
configured_environment: request.options[:configured_environment],
|
23
|
+
transaction_uuid: request.options[:transaction_uuid],
|
24
|
+
job_uuid: request.options[:job_id],
|
25
|
+
static_catalog: request.options[:static_catalog],
|
26
|
+
checksum_type: checksum_type
|
27
|
+
)
|
28
|
+
catalog
|
29
|
+
rescue Puppet::HTTP::ResponseError => e
|
30
|
+
if e.response.code == 404
|
31
|
+
return nil unless request.options[:fail_on_404]
|
32
|
+
|
33
|
+
_, body = parse_response(e.response.nethttp)
|
34
|
+
msg = _("Find %{uri} resulted in 404 with the message: %{body}") % { uri: elide(e.response.url.path, 100), body: body }
|
35
|
+
raise Puppet::Error, msg
|
36
|
+
else
|
37
|
+
raise convert_to_http_error(e.response.nethttp)
|
38
|
+
end
|
39
|
+
end
|
6
40
|
end
|
@@ -4,9 +4,51 @@ require 'puppet/indirector/rest'
|
|
4
4
|
class Puppet::Node::Facts::Rest < Puppet::Indirector::REST
|
5
5
|
desc "Find and save facts about nodes over HTTP via REST."
|
6
6
|
|
7
|
+
def find(request)
|
8
|
+
return super unless use_http_client?
|
9
|
+
|
10
|
+
session = Puppet.lookup(:http_session)
|
11
|
+
api = session.route_to(:puppet)
|
12
|
+
_, facts = api.get_facts(
|
13
|
+
request.key,
|
14
|
+
environment: request.environment.to_s
|
15
|
+
)
|
16
|
+
facts
|
17
|
+
rescue Puppet::HTTP::ResponseError => e
|
18
|
+
if e.response.code == 404
|
19
|
+
return nil unless request.options[:fail_on_404]
|
20
|
+
|
21
|
+
_, body = parse_response(e.response.nethttp)
|
22
|
+
msg = _("Find %{uri} resulted in 404 with the message: %{body}") % { uri: elide(e.response.url.path, 100), body: body }
|
23
|
+
raise Puppet::Error, msg
|
24
|
+
else
|
25
|
+
raise convert_to_http_error(e.response.nethttp)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
7
29
|
def save(request)
|
8
30
|
raise ArgumentError, _("PUT does not accept options") unless request.options.empty?
|
9
31
|
|
32
|
+
return legacy_save(request) unless use_http_client?
|
33
|
+
|
34
|
+
session = Puppet.lookup(:http_session)
|
35
|
+
api = session.route_to(:puppet)
|
36
|
+
api.put_facts(
|
37
|
+
request.key,
|
38
|
+
facts: request.instance,
|
39
|
+
environment: request.environment.to_s
|
40
|
+
)
|
41
|
+
|
42
|
+
# preserve existing behavior
|
43
|
+
nil
|
44
|
+
rescue Puppet::HTTP::ResponseError => e
|
45
|
+
# always raise even if fail_on_404 is false
|
46
|
+
raise convert_to_http_error(e.response.nethttp)
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def legacy_save(request)
|
10
52
|
response = do_request(request) do |req|
|
11
53
|
http_put(req, IndirectedRoutes.request_to_uri(req), req.instance.render, headers.merge({ "Content-Type" => req.instance.mime }))
|
12
54
|
end
|
@@ -250,7 +250,7 @@ module Puppet::FileBucketFile
|
|
250
250
|
# @return [void]
|
251
251
|
# @api private
|
252
252
|
def copy_bucket_file_to_contents_file(contents_file, bucket_file)
|
253
|
-
Puppet::
|
253
|
+
Puppet::FileSystem.replace_file(contents_file, 0440) do |of|
|
254
254
|
# PUP-1044 writes all of the contents
|
255
255
|
bucket_file.stream() do |src|
|
256
256
|
FileUtils.copy_stream(src, of)
|
@@ -4,5 +4,53 @@ require 'puppet/file_bucket/file'
|
|
4
4
|
module Puppet::FileBucketFile
|
5
5
|
class Rest < Puppet::Indirector::REST
|
6
6
|
desc "This is a REST based mechanism to send/retrieve file to/from the filebucket"
|
7
|
+
|
8
|
+
def head(request)
|
9
|
+
return super unless use_http_client?
|
10
|
+
|
11
|
+
session = Puppet.lookup(:http_session)
|
12
|
+
api = session.route_to(:puppet)
|
13
|
+
api.head_filebucket_file(
|
14
|
+
request.key,
|
15
|
+
environment: request.environment.to_s,
|
16
|
+
bucket_path: request.options[:bucket_path],
|
17
|
+
)
|
18
|
+
rescue Puppet::HTTP::ResponseError => e
|
19
|
+
return nil if e.response.code == 404
|
20
|
+
raise convert_to_http_error(e.response.nethttp)
|
21
|
+
end
|
22
|
+
|
23
|
+
def find(request)
|
24
|
+
return super unless use_http_client?
|
25
|
+
|
26
|
+
session = Puppet.lookup(:http_session)
|
27
|
+
api = session.route_to(:puppet)
|
28
|
+
_, filebucket_file = api.get_filebucket_file(
|
29
|
+
request.key,
|
30
|
+
environment: request.environment.to_s,
|
31
|
+
bucket_path: request.options[:bucket_path],
|
32
|
+
diff_with: request.options[:diff_with],
|
33
|
+
list_all: request.options[:list_all],
|
34
|
+
fromdate: request.options[:fromdate],
|
35
|
+
todate: request.options[:todate],
|
36
|
+
)
|
37
|
+
filebucket_file
|
38
|
+
rescue Puppet::HTTP::ResponseError => e
|
39
|
+
raise convert_to_http_error(e.response.nethttp)
|
40
|
+
end
|
41
|
+
|
42
|
+
def save(request)
|
43
|
+
return super unless use_http_client?
|
44
|
+
|
45
|
+
session = Puppet.lookup(:http_session)
|
46
|
+
api = session.route_to(:puppet)
|
47
|
+
api.put_filebucket_file(
|
48
|
+
request.key,
|
49
|
+
body: request.instance.render,
|
50
|
+
environment: request.environment.to_s,
|
51
|
+
)
|
52
|
+
rescue Puppet::HTTP::ResponseError => e
|
53
|
+
raise convert_to_http_error(e.response.nethttp)
|
54
|
+
end
|
7
55
|
end
|
8
56
|
end
|
@@ -10,6 +10,11 @@ class Puppet::Indirector::FileContent::Http < Puppet::Indirector::GenericHttp
|
|
10
10
|
|
11
11
|
@http_method = :get
|
12
12
|
|
13
|
+
def initialize
|
14
|
+
Puppet.deprecation_warning(_("Puppet::Indirector::FileContent::Http is deprecated. Use Puppet::HTTP::Client instead."))
|
15
|
+
super
|
16
|
+
end
|
17
|
+
|
13
18
|
def find(request)
|
14
19
|
response = super
|
15
20
|
model.from_binary(uncompress_body(response))
|
@@ -6,4 +6,34 @@ class Puppet::Indirector::FileContent::Rest < Puppet::Indirector::REST
|
|
6
6
|
desc "Retrieve file contents via a REST HTTP interface."
|
7
7
|
|
8
8
|
use_srv_service(:fileserver)
|
9
|
+
|
10
|
+
def find(request)
|
11
|
+
return super unless use_http_client?
|
12
|
+
|
13
|
+
content = StringIO.new
|
14
|
+
content.binmode
|
15
|
+
|
16
|
+
url = URI.parse(Puppet::Util.uri_encode(request.uri))
|
17
|
+
session = Puppet.lookup(:http_session)
|
18
|
+
api = session.route_to(:fileserver, url: url)
|
19
|
+
|
20
|
+
api.get_file_content(
|
21
|
+
path: URI.unescape(url.path),
|
22
|
+
environment: request.environment.to_s,
|
23
|
+
) do |data|
|
24
|
+
content << data
|
25
|
+
end
|
26
|
+
|
27
|
+
Puppet::FileServing::Content.from_binary(content.string)
|
28
|
+
rescue Puppet::HTTP::ResponseError => e
|
29
|
+
if e.response.code == 404
|
30
|
+
return nil unless request.options[:fail_on_404]
|
31
|
+
|
32
|
+
_, body = parse_response(e.response.nethttp)
|
33
|
+
msg = _("Find %{uri} resulted in 404 with the message: %{body}") % { uri: elide(e.response.url.path, 100), body: body }
|
34
|
+
raise Puppet::Error, msg
|
35
|
+
else
|
36
|
+
raise convert_to_http_error(e.response.nethttp)
|
37
|
+
end
|
38
|
+
end
|
9
39
|
end
|
@@ -8,12 +8,12 @@ class Puppet::Indirector::FileMetadata::Http < Puppet::Indirector::GenericHttp
|
|
8
8
|
|
9
9
|
include Puppet::FileServing::TerminusHelper
|
10
10
|
|
11
|
-
@http_method = :head
|
12
|
-
|
13
11
|
def find(request)
|
14
|
-
|
12
|
+
uri = URI(request.uri)
|
13
|
+
client = Puppet.runtime[:http]
|
14
|
+
head = client.head(uri, options: {include_system_store: true})
|
15
15
|
|
16
|
-
if head.
|
16
|
+
if head.success?
|
17
17
|
metadata = Puppet::FileServing::HttpMetadata.new(head)
|
18
18
|
metadata.checksum_type = request.options[:checksum_type] if request.options[:checksum_type]
|
19
19
|
metadata.collect
|
@@ -6,4 +6,56 @@ class Puppet::Indirector::FileMetadata::Rest < Puppet::Indirector::REST
|
|
6
6
|
desc "Retrieve file metadata via a REST HTTP interface."
|
7
7
|
|
8
8
|
use_srv_service(:fileserver)
|
9
|
+
|
10
|
+
def find(request)
|
11
|
+
return super unless use_http_client?
|
12
|
+
|
13
|
+
url = URI.parse(Puppet::Util.uri_encode(request.uri))
|
14
|
+
session = Puppet.lookup(:http_session)
|
15
|
+
api = session.route_to(:fileserver, url: url)
|
16
|
+
|
17
|
+
_, file_metadata = api.get_file_metadata(
|
18
|
+
path: URI.unescape(url.path),
|
19
|
+
environment: request.environment.to_s,
|
20
|
+
links: request.options[:links],
|
21
|
+
checksum_type: request.options[:checksum_type],
|
22
|
+
source_permissions: request.options[:source_permissions]
|
23
|
+
)
|
24
|
+
file_metadata
|
25
|
+
rescue Puppet::HTTP::ResponseError => e
|
26
|
+
if e.response.code == 404
|
27
|
+
return nil unless request.options[:fail_on_404]
|
28
|
+
|
29
|
+
_, body = parse_response(e.response.nethttp)
|
30
|
+
msg = _("Find %{uri} resulted in 404 with the message: %{body}") % { uri: elide(e.response.url.path, 100), body: body }
|
31
|
+
raise Puppet::Error, msg
|
32
|
+
else
|
33
|
+
raise convert_to_http_error(e.response.nethttp)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def search(request)
|
38
|
+
return super unless use_http_client?
|
39
|
+
|
40
|
+
url = URI.parse(Puppet::Util.uri_encode(request.uri))
|
41
|
+
session = Puppet.lookup(:http_session)
|
42
|
+
api = session.route_to(:fileserver, url: url)
|
43
|
+
|
44
|
+
_, file_metadatas = api.get_file_metadatas(
|
45
|
+
path: URI.unescape(url.path),
|
46
|
+
environment: request.environment.to_s,
|
47
|
+
recurse: request.options[:recurse],
|
48
|
+
recurselimit: request.options[:recurselimit],
|
49
|
+
ignore: request.options[:ignore],
|
50
|
+
links: request.options[:links],
|
51
|
+
checksum_type: request.options[:checksum_type],
|
52
|
+
source_permissions: request.options[:source_permissions],
|
53
|
+
)
|
54
|
+
file_metadatas
|
55
|
+
rescue Puppet::HTTP::ResponseError => e
|
56
|
+
# since it's search, return empty array instead of nil
|
57
|
+
return [] if e.response.code == 404
|
58
|
+
|
59
|
+
raise convert_to_http_error(e.response.nethttp)
|
60
|
+
end
|
9
61
|
end
|
@@ -14,7 +14,7 @@ class Puppet::Indirector::JSON < Puppet::Indirector::Terminus
|
|
14
14
|
filename = path(request.key)
|
15
15
|
FileUtils.mkdir_p(File.dirname(filename))
|
16
16
|
|
17
|
-
Puppet::
|
17
|
+
Puppet::FileSystem.replace_file(filename, 0660) {|f| f.print to_json(request.instance).force_encoding(Encoding::BINARY) }
|
18
18
|
rescue TypeError => detail
|
19
19
|
Puppet.log_exception(detail, _("Could not save %{json} %{request}: %{detail}") % { json: self.name, request: request.key, detail: detail })
|
20
20
|
end
|
@@ -21,7 +21,7 @@ class Puppet::Indirector::Msgpack < Puppet::Indirector::Terminus
|
|
21
21
|
filename = path(request.key)
|
22
22
|
FileUtils.mkdir_p(File.dirname(filename))
|
23
23
|
|
24
|
-
Puppet::
|
24
|
+
Puppet::FileSystem.replace_file(filename, 0660) {|f| f.print to_msgpack(request.instance) }
|
25
25
|
rescue TypeError => detail
|
26
26
|
Puppet.log_exception(detail, _("Could not save %{name} %{request}: %{detail}") % { name: self.name, request: request.key, detail: detail })
|
27
27
|
end
|
@@ -4,4 +4,28 @@ require 'puppet/indirector/rest'
|
|
4
4
|
class Puppet::Node::Rest < Puppet::Indirector::REST
|
5
5
|
desc "Get a node via REST. Puppet agent uses this to allow the puppet master
|
6
6
|
to override its environment."
|
7
|
+
|
8
|
+
def find(request)
|
9
|
+
return super unless use_http_client?
|
10
|
+
|
11
|
+
session = Puppet.lookup(:http_session)
|
12
|
+
api = session.route_to(:puppet)
|
13
|
+
_, node = api.get_node(
|
14
|
+
request.key,
|
15
|
+
environment: request.environment.to_s,
|
16
|
+
configured_environment: request.options[:configured_environment],
|
17
|
+
transaction_uuid: request.options[:transaction_uuid]
|
18
|
+
)
|
19
|
+
node
|
20
|
+
rescue Puppet::HTTP::ResponseError => e
|
21
|
+
if e.response.code == 404
|
22
|
+
return nil unless request.options[:fail_on_404]
|
23
|
+
|
24
|
+
_, body = parse_response(e.response.nethttp)
|
25
|
+
msg = _("Find %{uri} resulted in 404 with the message: %{body}") % { uri: elide(e.response.url.path, 100), body: body }
|
26
|
+
raise Puppet::Error, msg
|
27
|
+
else
|
28
|
+
raise convert_to_http_error(e.response.nethttp)
|
29
|
+
end
|
30
|
+
end
|
7
31
|
end
|
@@ -7,6 +7,25 @@ class Puppet::Transaction::Report::Rest < Puppet::Indirector::REST
|
|
7
7
|
use_port_setting(:report_port)
|
8
8
|
use_srv_service(:report)
|
9
9
|
|
10
|
+
def save(request)
|
11
|
+
return super unless use_http_client?
|
12
|
+
|
13
|
+
session = Puppet.lookup(:http_session)
|
14
|
+
api = session.route_to(:report)
|
15
|
+
response = api.put_report(
|
16
|
+
request.key,
|
17
|
+
request.instance,
|
18
|
+
environment: request.environment.to_s
|
19
|
+
)
|
20
|
+
content_type, body = parse_response(response)
|
21
|
+
deserialize_save(content_type, body)
|
22
|
+
rescue Puppet::HTTP::ResponseError => e
|
23
|
+
return nil if e.response.code == 404
|
24
|
+
|
25
|
+
raise convert_to_http_error(e.response.nethttp)
|
26
|
+
end
|
27
|
+
|
28
|
+
# This is called by the superclass when not using our httpclient.
|
10
29
|
def handle_response(request, response)
|
11
30
|
if !response.is_a?(Net::HTTPSuccess)
|
12
31
|
server_version = response[Puppet::Network::HTTP::HEADER_PUPPET_VERSION]
|
@@ -2,10 +2,33 @@ require 'puppet/transaction/report'
|
|
2
2
|
require 'puppet/indirector/yaml'
|
3
3
|
|
4
4
|
class Puppet::Transaction::Report::Yaml < Puppet::Indirector::Yaml
|
5
|
+
include Puppet::Util::SymbolicFileMode
|
6
|
+
|
5
7
|
desc "Store last report as a flat file, serialized using YAML."
|
6
8
|
|
7
9
|
# Force report to be saved there
|
8
10
|
def path(name,ext='.yaml')
|
9
11
|
Puppet[:lastrunreport]
|
10
12
|
end
|
13
|
+
|
14
|
+
def save(request)
|
15
|
+
filename = path(request.key)
|
16
|
+
mode = Puppet.settings.setting(:lastrunreport).mode
|
17
|
+
|
18
|
+
unless valid_symbolic_mode?(mode)
|
19
|
+
raise Puppet::DevError, _("replace_file mode: %{mode} is invalid") % { mode: mode }
|
20
|
+
end
|
21
|
+
|
22
|
+
mode = symbolic_mode_to_int(normalize_symbolic_mode(mode))
|
23
|
+
|
24
|
+
FileUtils.mkdir_p(File.dirname(filename))
|
25
|
+
|
26
|
+
begin
|
27
|
+
Puppet::FileSystem.replace_file(filename, mode) do |fh|
|
28
|
+
fh.print YAML.dump(request.instance)
|
29
|
+
end
|
30
|
+
rescue TypeError => detail
|
31
|
+
Puppet.err _("Could not save %{indirection} %{request}: %{detail}") % { indirection: self.name, request: request.key, detail: detail }
|
32
|
+
end
|
33
|
+
end
|
11
34
|
end
|
@@ -52,6 +52,13 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
|
|
52
52
|
Puppet::Util::Connection.determine_port(port_setting, server_setting)
|
53
53
|
end
|
54
54
|
|
55
|
+
# Should we use puppet's http client to make requests. Will return
|
56
|
+
# false when running in puppetserver
|
57
|
+
def use_http_client?
|
58
|
+
Puppet::Network::HttpPool.http_client_class == Puppet::Network::HTTP::Connection ||
|
59
|
+
Puppet::Network::HttpPool.http_client_class == Puppet::Network::HTTP::ConnectionAdapter
|
60
|
+
end
|
61
|
+
|
55
62
|
# Provide appropriate headers.
|
56
63
|
def headers
|
57
64
|
# yaml is not allowed on the network
|
@@ -105,6 +112,7 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
|
|
105
112
|
end
|
106
113
|
|
107
114
|
def find(request)
|
115
|
+
Puppet.deprecation_warning(_("Puppet::Indirector::Rest#find is deprecated. Use Puppet::HTTP::Client instead."))
|
108
116
|
uri, body = IndirectedRoutes.request_to_uri_and_body(request)
|
109
117
|
uri_with_query_string = "#{uri}?#{body}"
|
110
118
|
|
@@ -143,6 +151,7 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
|
|
143
151
|
end
|
144
152
|
|
145
153
|
def head(request)
|
154
|
+
Puppet.deprecation_warning(_("Puppet::Indirector::Rest#head is deprecated. Use Puppet::HTTP::Client instead."))
|
146
155
|
response = do_request(request) do |req|
|
147
156
|
http_head(req, IndirectedRoutes.request_to_uri(req), headers)
|
148
157
|
end
|
@@ -155,6 +164,7 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
|
|
155
164
|
end
|
156
165
|
|
157
166
|
def search(request)
|
167
|
+
Puppet.deprecation_warning(_("Puppet::Indirector::Rest#search is deprecated. Use Puppet::HTTP::Client instead."))
|
158
168
|
response = do_request(request) do |req|
|
159
169
|
http_get(req, IndirectedRoutes.request_to_uri(req), headers)
|
160
170
|
end
|
@@ -168,6 +178,7 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
|
|
168
178
|
end
|
169
179
|
|
170
180
|
def destroy(request)
|
181
|
+
Puppet.deprecation_warning(_("Puppet::Indirector::Rest#destroy is deprecated. Use Puppet::HTTP::Client instead."))
|
171
182
|
raise ArgumentError, _("DELETE does not accept options") unless request.options.empty?
|
172
183
|
|
173
184
|
response = do_request(request) do |req|
|
@@ -183,6 +194,7 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
|
|
183
194
|
end
|
184
195
|
|
185
196
|
def save(request)
|
197
|
+
Puppet.deprecation_warning(_("Puppet::Indirector::Rest#save is deprecated. Use Puppet::HTTP::Client instead."))
|
186
198
|
raise ArgumentError, _("PUT does not accept options") unless request.options.empty?
|
187
199
|
|
188
200
|
response = do_request(request) do |req|
|
@@ -6,4 +6,22 @@ class Puppet::Indirector::Status::Rest < Puppet::Indirector::REST
|
|
6
6
|
desc "Get puppet master's status via REST. Useful because it tests the health
|
7
7
|
of both the web server and the indirector."
|
8
8
|
|
9
|
+
def find(request)
|
10
|
+
return super unless use_http_client?
|
11
|
+
|
12
|
+
session = Puppet.lookup(:http_session)
|
13
|
+
api = session.route_to(:puppet)
|
14
|
+
_, status = api.get_status(request.key)
|
15
|
+
status
|
16
|
+
rescue Puppet::HTTP::ResponseError => e
|
17
|
+
if e.response.code == 404
|
18
|
+
return nil unless request.options[:fail_on_404]
|
19
|
+
|
20
|
+
_, body = parse_response(e.response.nethttp)
|
21
|
+
msg = _("Find %{uri} resulted in 404 with the message: %{body}") % { uri: elide(e.response.url.path, 100), body: body }
|
22
|
+
raise Puppet::Error, msg
|
23
|
+
else
|
24
|
+
raise convert_to_http_error(e.response.nethttp)
|
25
|
+
end
|
26
|
+
end
|
9
27
|
end
|