puppet 6.16.0-x64-mingw32 → 7.0.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +5 -3
- data/Gemfile.lock +31 -33
- data/README.md +4 -5
- data/Rakefile +4 -12
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -1
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/project_data.yaml +1 -14
- data/ext/redhat/puppet.spec.erb +0 -1
- data/ext/windows/service/daemon.rb +6 -5
- data/install.rb +21 -17
- data/lib/puppet.rb +11 -20
- data/lib/puppet/agent.rb +2 -2
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application.rb +172 -98
- data/lib/puppet/application/agent.rb +22 -6
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/device.rb +100 -104
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +15 -11
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/configurer.rb +66 -31
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/defaults.rb +166 -169
- data/lib/puppet/environments.rb +41 -15
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +56 -16
- data/lib/puppet/face/epp.rb +12 -2
- data/lib/puppet/face/facts.rb +66 -6
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/plugin.rb +5 -8
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/ffi/windows.rb +12 -0
- data/lib/puppet/ffi/windows/api_types.rb +311 -0
- data/lib/puppet/ffi/windows/constants.rb +404 -0
- data/lib/puppet/ffi/windows/functions.rb +628 -0
- data/lib/puppet/ffi/windows/structs.rb +338 -0
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/configuration.rb +0 -5
- data/lib/puppet/file_serving/configuration/parser.rb +3 -32
- data/lib/puppet/file_serving/http_metadata.rb +13 -1
- data/lib/puppet/file_serving/metadata.rb +4 -1
- data/lib/puppet/file_serving/mount.rb +1 -2
- 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 +4 -4
- data/lib/puppet/file_system/uniquefile.rb +8 -16
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +3 -8
- data/lib/puppet/functions/epp.rb +1 -0
- data/lib/puppet/functions/inline_epp.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/new.rb +8 -3
- 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/generate/models/type/type.rb +4 -1
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +23 -13
- data/lib/puppet/http/client.rb +170 -115
- data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
- data/lib/puppet/http/errors.rb +16 -0
- data/lib/puppet/http/external_client.rb +5 -7
- data/lib/puppet/{network/http → http}/factory.rb +8 -11
- data/lib/puppet/{network/http → http}/pool.rb +61 -26
- data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
- data/lib/puppet/http/proxy.rb +137 -0
- data/lib/puppet/http/redirector.rb +13 -19
- data/lib/puppet/http/resolver.rb +10 -23
- data/lib/puppet/http/resolver/server_list.rb +23 -45
- data/lib/puppet/http/resolver/settings.rb +7 -10
- data/lib/puppet/http/resolver/srv.rb +11 -15
- data/lib/puppet/http/response.rb +49 -48
- data/lib/puppet/http/response_converter.rb +24 -0
- data/lib/puppet/http/response_net_http.rb +42 -0
- data/lib/puppet/http/retry_after_handler.rb +4 -13
- data/lib/puppet/http/service.rb +15 -27
- data/lib/puppet/http/service/ca.rb +11 -22
- data/lib/puppet/http/service/compiler.rb +23 -70
- data/lib/puppet/http/service/file_server.rb +19 -28
- data/lib/puppet/http/service/puppetserver.rb +53 -0
- data/lib/puppet/http/service/report.rb +8 -10
- data/lib/puppet/http/session.rb +16 -24
- data/lib/puppet/{network/http → http}/site.rb +1 -2
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/catalog/rest.rb +2 -4
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/fact_search.rb +60 -0
- data/lib/puppet/indirector/facts/facter.rb +27 -6
- data/lib/puppet/indirector/facts/json.rb +27 -0
- data/lib/puppet/indirector/facts/rest.rb +3 -22
- data/lib/puppet/indirector/facts/yaml.rb +4 -59
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
- data/lib/puppet/indirector/file_content/rest.rb +3 -7
- data/lib/puppet/indirector/file_metadata/http.rb +25 -5
- data/lib/puppet/indirector/file_metadata/rest.rb +5 -11
- data/lib/puppet/indirector/file_server.rb +1 -8
- data/lib/puppet/indirector/generic_http.rb +0 -11
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/json.rb +5 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/json.rb +8 -0
- data/lib/puppet/indirector/node/rest.rb +2 -4
- data/lib/puppet/indirector/report/json.rb +34 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/rest.rb +3 -8
- data/lib/puppet/indirector/request.rb +2 -103
- data/lib/puppet/indirector/rest.rb +12 -263
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/formats.rb +2 -1
- data/lib/puppet/network/http.rb +3 -3
- data/lib/puppet/network/http/api/indirected_routes.rb +3 -21
- data/lib/puppet/network/http/api/master/v3.rb +11 -13
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/connection.rb +247 -316
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node.rb +1 -30
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +93 -14
- 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 -42
- data/lib/puppet/parser/compiler.rb +1 -199
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
- data/lib/puppet/parser/functions.rb +21 -17
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/resource.rb +3 -71
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +27 -13
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +18 -11
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- data/lib/puppet/pops/model/ast.pp +0 -42
- data/lib/puppet/pops/model/ast.rb +0 -290
- data/lib/puppet/pops/model/factory.rb +0 -45
- data/lib/puppet/pops/model/model_label_provider.rb +0 -5
- data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
- data/lib/puppet/pops/model/pn_transformer.rb +0 -16
- data/lib/puppet/pops/parser/egrammar.ra +0 -56
- data/lib/puppet/pops/parser/eparser.rb +1520 -1712
- data/lib/puppet/pops/parser/lexer2.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +0 -5
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -22
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- data/lib/puppet/pops/types/type_calculator.rb +0 -7
- data/lib/puppet/pops/types/type_parser.rb +0 -4
- data/lib/puppet/pops/types/types.rb +0 -1
- data/lib/puppet/pops/validation/checker4_0.rb +28 -42
- data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -1
- data/lib/puppet/provider.rb +0 -13
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +34 -0
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +1 -11
- data/lib/puppet/provider/package/gem.rb +27 -5
- data/lib/puppet/provider/package/pip.rb +0 -1
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/pkg.rb +0 -4
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +6 -4
- data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
- data/lib/puppet/provider/package/yum.rb +2 -1
- data/lib/puppet/provider/package/zypper.rb +3 -0
- data/lib/puppet/provider/service/smf.rb +191 -73
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +0 -10
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +11 -4
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reference/configuration.rb +2 -0
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/reports/http.rb +2 -0
- data/lib/puppet/resource.rb +3 -90
- data/lib/puppet/resource/catalog.rb +1 -14
- data/lib/puppet/resource/type.rb +5 -112
- data/lib/puppet/resource/type_collection.rb +3 -48
- data/lib/puppet/runtime.rb +1 -2
- data/lib/puppet/settings.rb +84 -35
- data/lib/puppet/settings/base_setting.rb +26 -2
- data/lib/puppet/settings/integer_setting.rb +17 -0
- data/lib/puppet/settings/port_setting.rb +15 -0
- data/lib/puppet/settings/priority_setting.rb +5 -4
- data/lib/puppet/ssl.rb +10 -6
- data/lib/puppet/ssl/base.rb +3 -5
- data/lib/puppet/ssl/certificate.rb +0 -6
- data/lib/puppet/ssl/certificate_request.rb +1 -12
- data/lib/puppet/ssl/certificate_signer.rb +6 -0
- data/lib/puppet/ssl/oids.rb +3 -1
- data/lib/puppet/ssl/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +37 -1
- data/lib/puppet/ssl/state_machine.rb +3 -1
- data/lib/puppet/ssl/verifier.rb +2 -0
- data/lib/puppet/test/test_helper.rb +19 -16
- data/lib/puppet/transaction.rb +3 -9
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +10 -8
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +9 -77
- data/lib/puppet/type/file.rb +45 -22
- data/lib/puppet/type/file/checksum.rb +5 -5
- data/lib/puppet/type/file/source.rb +33 -13
- data/lib/puppet/type/filebucket.rb +4 -4
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +5 -13
- data/lib/puppet/type/service.rb +53 -0
- data/lib/puppet/type/user.rb +18 -3
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/autoload.rb +9 -7
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/execution.rb +2 -13
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/monkey_patches.rb +0 -46
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/rdoc.rb +0 -7
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/rubygems.rb +5 -1
- data/lib/puppet/util/run_mode.rb +14 -2
- data/lib/puppet/util/windows.rb +3 -7
- data/lib/puppet/util/windows/daemon.rb +360 -0
- data/lib/puppet/util/windows/error.rb +1 -0
- data/lib/puppet/util/windows/eventlog.rb +5 -15
- data/lib/puppet/util/windows/file.rb +8 -242
- data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +4 -226
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +4 -4
- data/lib/puppet/util/windows/service.rb +52 -486
- data/lib/puppet/util/windows/string.rb +12 -13
- data/lib/puppet/util/windows/user.rb +242 -8
- data/lib/puppet/util/yaml.rb +0 -22
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509.rb +5 -1
- data/lib/puppet/x509/cert_provider.rb +29 -1
- data/locales/puppet.pot +713 -1380
- data/man/man5/puppet.conf.5 +84 -98
- data/man/man8/puppet-agent.8 +7 -4
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +6 -6
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +55 -9
- data/man/man8/puppet-filebucket.8 +6 -6
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-module.8 +1 -58
- data/man/man8/puppet-node.8 +7 -4
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +4 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.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/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/integration/application/agent_spec.rb +157 -59
- data/spec/integration/application/apply_spec.rb +150 -150
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +78 -29
- data/spec/integration/application/help_spec.rb +44 -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 +76 -4
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +33 -5
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/network/http_pool_spec.rb +29 -30
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/parser/catalog_spec.rb +0 -38
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/parser/node_spec.rb +0 -9
- data/spec/integration/parser/pcore_resource_spec.rb +0 -37
- data/spec/integration/type/file_spec.rb +6 -5
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +2 -2
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -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/security_spec.rb +1 -1
- data/spec/integration/util/windows/user_spec.rb +47 -5
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +9 -1
- data/spec/lib/puppet_spec/settings.rb +7 -1
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/agent_spec.rb +0 -2
- data/spec/unit/application/agent_spec.rb +3 -4
- data/spec/unit/application/config_spec.rb +224 -4
- data/spec/unit/application/doc_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +74 -8
- data/spec/unit/application/filebucket_spec.rb +41 -39
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +17 -4
- data/spec/unit/application_spec.rb +9 -4
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +14 -0
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +96 -44
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +12 -10
- data/spec/unit/defaults_spec.rb +77 -28
- data/spec/unit/environments_spec.rb +96 -32
- data/spec/unit/face/config_spec.rb +65 -12
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +2 -2
- data/spec/unit/face/plugin_spec.rb +73 -33
- data/spec/unit/file_bucket/file_spec.rb +1 -1
- data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- 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 +18 -0
- data/spec/unit/file_system_spec.rb +1 -2
- data/spec/unit/functions/camelcase_spec.rb +1 -1
- data/spec/unit/functions/capitalize_spec.rb +1 -1
- data/spec/unit/functions/downcase_spec.rb +1 -1
- data/spec/unit/functions/inline_epp_spec.rb +26 -1
- data/spec/unit/functions/upcase_spec.rb +1 -1
- data/spec/unit/http/client_spec.rb +71 -17
- data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
- data/spec/unit/http/external_client_spec.rb +4 -4
- data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
- data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
- data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
- data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
- data/spec/unit/http/resolver_spec.rb +34 -15
- data/spec/unit/http/response_spec.rb +6 -0
- data/spec/unit/http/service/ca_spec.rb +2 -3
- data/spec/unit/http/service/compiler_spec.rb +51 -65
- data/spec/unit/http/service/file_server_spec.rb +5 -6
- data/spec/unit/http/service/puppetserver_spec.rb +112 -0
- data/spec/unit/http/service/report_spec.rb +2 -3
- data/spec/unit/http/service_spec.rb +1 -3
- data/spec/unit/http/session_spec.rb +24 -35
- data/spec/unit/{network/http → http}/site_spec.rb +3 -3
- data/spec/unit/indirector/catalog/json_spec.rb +1 -1
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
- data/spec/unit/indirector/facts/facter_spec.rb +97 -0
- data/spec/unit/indirector/facts/json_spec.rb +255 -0
- data/spec/unit/indirector/facts/rest_spec.rb +1 -1
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_metadata/http_spec.rb +27 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_server_spec.rb +1 -15
- data/spec/unit/indirector/json_spec.rb +8 -8
- data/spec/unit/indirector/msgpack_spec.rb +8 -8
- data/spec/unit/indirector/node/json_spec.rb +33 -0
- data/spec/unit/indirector/node/rest_spec.rb +1 -1
- data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
- data/spec/unit/indirector/report/rest_spec.rb +2 -17
- data/spec/unit/indirector/report/yaml_spec.rb +72 -8
- data/spec/unit/indirector/request_spec.rb +3 -267
- data/spec/unit/indirector/rest_spec.rb +98 -752
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/authconfig_spec.rb +2 -132
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/formats_spec.rb +4 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +3 -98
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
- data/spec/unit/network/http/api_spec.rb +10 -0
- data/spec/unit/network/http/connection_spec.rb +61 -73
- data/spec/unit/network/http/handler_spec.rb +0 -6
- data/spec/unit/network/http_pool_spec.rb +0 -4
- data/spec/unit/node/environment_spec.rb +51 -22
- data/spec/unit/node_spec.rb +2 -54
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +19 -8
- data/spec/unit/pops/loaders/loaders_spec.rb +77 -22
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
- data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +7 -17
- data/spec/unit/pops/types/type_factory_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +61 -46
- data/spec/unit/pops/visitor_spec.rb +1 -1
- data/spec/unit/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/nameservice_spec.rb +0 -57
- data/spec/unit/provider/package/apt_spec.rb +77 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dpkg_spec.rb +22 -55
- data/spec/unit/provider/package/gem_spec.rb +32 -0
- data/spec/unit/provider/package/openbsd_spec.rb +2 -0
- data/spec/unit/provider/package/pip2_spec.rb +36 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +6 -2
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
- data/spec/unit/provider/package/yum_spec.rb +31 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/bsd_spec.rb +5 -1
- data/spec/unit/provider/service/daemontools_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +3 -5
- data/spec/unit/provider/service/freebsd_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_spec.rb +4 -5
- data/spec/unit/provider/service/init_spec.rb +45 -5
- data/spec/unit/provider/service/launchd_spec.rb +5 -6
- data/spec/unit/provider/service/openrc_spec.rb +4 -5
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/runit_spec.rb +2 -1
- data/spec/unit/provider/service/smf_spec.rb +402 -166
- data/spec/unit/provider/service/src_spec.rb +3 -5
- data/spec/unit/provider/service/systemd_spec.rb +3 -6
- data/spec/unit/provider/service/upstart_spec.rb +4 -5
- data/spec/unit/provider/service/windows_spec.rb +50 -15
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +22 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/provider_spec.rb +0 -12
- data/spec/unit/puppet_pal_2pec.rb +40 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource/type_collection_spec.rb +2 -22
- data/spec/unit/resource_spec.rb +3 -59
- data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
- data/spec/unit/settings/integer_setting_spec.rb +42 -0
- data/spec/unit/settings/port_setting_spec.rb +31 -0
- data/spec/unit/settings/priority_setting_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +586 -239
- data/spec/unit/ssl/base_spec.rb +36 -3
- data/spec/unit/ssl/certificate_request_spec.rb +15 -45
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/ssl_provider_spec.rb +78 -49
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- 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 +3 -3
- data/spec/unit/transaction/resource_harness_spec.rb +2 -2
- data/spec/unit/transaction_spec.rb +45 -79
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +1 -1
- data/spec/unit/type/file/ensure_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +1 -1
- data/spec/unit/type/file/source_spec.rb +4 -5
- data/spec/unit/type/file_spec.rb +134 -102
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type/service_spec.rb +209 -0
- data/spec/unit/type/user_spec.rb +31 -2
- data/spec/unit/type_spec.rb +70 -0
- data/spec/unit/util/backups_spec.rb +0 -2
- 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/execution_spec.rb +0 -29
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/rubygems_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -127
- 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/string_spec.rb +1 -3
- data/spec/unit/util/yaml_spec.rb +0 -54
- data/spec/unit/util_spec.rb +3 -21
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- metadata +76 -270
- data/conf/auth.conf +0 -150
- data/lib/puppet/application/cert.rb +0 -76
- data/lib/puppet/application/key.rb +0 -4
- data/lib/puppet/application/man.rb +0 -4
- data/lib/puppet/application/status.rb +0 -4
- data/lib/puppet/face/key.rb +0 -16
- data/lib/puppet/face/man.rb +0 -145
- data/lib/puppet/face/module/build.rb +0 -14
- data/lib/puppet/face/module/generate.rb +0 -14
- data/lib/puppet/face/module/search.rb +0 -103
- data/lib/puppet/face/status.rb +0 -51
- data/lib/puppet/indirector/certificate/file.rb +0 -9
- data/lib/puppet/indirector/certificate/rest.rb +0 -18
- data/lib/puppet/indirector/certificate_request/file.rb +0 -9
- data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
- data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
- data/lib/puppet/indirector/file_content/http.rb +0 -22
- data/lib/puppet/indirector/key/file.rb +0 -46
- data/lib/puppet/indirector/key/memory.rb +0 -7
- data/lib/puppet/indirector/ssl_file.rb +0 -162
- data/lib/puppet/indirector/status.rb +0 -3
- data/lib/puppet/indirector/status/local.rb +0 -12
- data/lib/puppet/indirector/status/rest.rb +0 -27
- data/lib/puppet/module_tool/applications/searcher.rb +0 -29
- data/lib/puppet/network/auth_config_parser.rb +0 -90
- data/lib/puppet/network/authstore.rb +0 -283
- data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
- data/lib/puppet/network/http/api/master/v3/environment.rb +0 -85
- data/lib/puppet/network/http/base_pool.rb +0 -36
- data/lib/puppet/network/http/compression.rb +0 -127
- data/lib/puppet/network/http/connection_adapter.rb +0 -182
- data/lib/puppet/network/http/nocache_pool.rb +0 -28
- data/lib/puppet/network/rest_controller.rb +0 -2
- data/lib/puppet/network/rights.rb +0 -210
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -64
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -20
- data/lib/puppet/parser/environment_compiler.rb +0 -199
- data/lib/puppet/pops/types/enumeration.rb +0 -16
- data/lib/puppet/resource/capability_finder.rb +0 -154
- data/lib/puppet/rest/errors.rb +0 -15
- data/lib/puppet/rest/response.rb +0 -35
- data/lib/puppet/rest/route.rb +0 -85
- data/lib/puppet/rest/routes.rb +0 -135
- data/lib/puppet/ssl/host.rb +0 -505
- data/lib/puppet/ssl/key.rb +0 -61
- data/lib/puppet/ssl/validator.rb +0 -61
- data/lib/puppet/ssl/validator/default_validator.rb +0 -209
- data/lib/puppet/ssl/validator/no_validator.rb +0 -22
- data/lib/puppet/ssl/verifier_adapter.rb +0 -58
- data/lib/puppet/status.rb +0 -40
- data/lib/puppet/util/connection.rb +0 -88
- data/lib/puppet/util/ssl.rb +0 -83
- data/lib/puppet/util/windows/api_types.rb +0 -282
- data/lib/puppet/vendor/load_pathspec.rb +0 -1
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
- data/lib/puppet/vendor/pathspec/LICENSE +0 -201
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/pathspec/README.md +0 -53
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
- data/man/man8/puppet-key.8 +0 -126
- data/man/man8/puppet-man.8 +0 -76
- data/man/man8/puppet-status.8 +0 -108
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- 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 -51
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/network/authconfig_spec.rb +0 -256
- 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/capability_spec.rb +0 -414
- data/spec/unit/face/catalog_spec.rb +0 -6
- data/spec/unit/face/key_spec.rb +0 -9
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/face/module/search_spec.rb +0 -231
- data/spec/unit/face/module_spec.rb +0 -3
- data/spec/unit/face/status_spec.rb +0 -9
- data/spec/unit/indirector/certificate/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
- data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
- data/spec/unit/indirector/key/file_spec.rb +0 -79
- data/spec/unit/indirector/ssl_file_spec.rb +0 -305
- data/spec/unit/indirector/status/local_spec.rb +0 -10
- data/spec/unit/indirector/status/rest_spec.rb +0 -50
- data/spec/unit/man_spec.rb +0 -31
- data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
- data/spec/unit/network/auth_config_parser_spec.rb +0 -115
- data/spec/unit/network/authstore_spec.rb +0 -422
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
- data/spec/unit/network/http/compression_spec.rb +0 -240
- data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
- data/spec/unit/network/http_spec.rb +0 -9
- data/spec/unit/network/rights_spec.rb +0 -439
- data/spec/unit/parser/environment_compiler_spec.rb +0 -723
- data/spec/unit/pops/types/enumeration_spec.rb +0 -51
- data/spec/unit/resource/capability_finder_spec.rb +0 -143
- data/spec/unit/rest/route_spec.rb +0 -132
- data/spec/unit/ssl/host_spec.rb +0 -650
- data/spec/unit/ssl/key_spec.rb +0 -173
- data/spec/unit/ssl/validator_spec.rb +0 -278
- data/spec/unit/status_spec.rb +0 -45
- data/spec/unit/util/ssl_spec.rb +0 -91
data/lib/puppet/http/client.rb
CHANGED
@@ -1,23 +1,96 @@
|
|
1
|
+
# The HTTP client provides methods for making `GET`, `POST`, etc requests to
|
2
|
+
# HTTP(S) servers. It also provides methods for resolving Puppetserver REST
|
3
|
+
# service endpoints using SRV records and settings (such as `server_list`,
|
4
|
+
# `server`, `ca_server`, etc). Once a service endpoint has been resolved, there
|
5
|
+
# are methods for making REST requests (such as getting a node, sending facts,
|
6
|
+
# etc).
|
1
7
|
#
|
2
|
-
#
|
8
|
+
# The client uses persistent HTTP connections by default unless the `Connection:
|
9
|
+
# close` header is specified and supports streaming response bodies.
|
3
10
|
#
|
4
|
-
#
|
5
|
-
#
|
11
|
+
# By default the client only trusts the Puppet CA for HTTPS connections. However,
|
12
|
+
# if the `include_system_store` request option is set to true, then Puppet will
|
13
|
+
# trust certificates in the puppet-agent CA bundle.
|
6
14
|
#
|
15
|
+
# @example To access the HTTP client:
|
16
|
+
# client = Puppet.runtime[:http]
|
17
|
+
#
|
18
|
+
# @example To make an HTTP GET request:
|
19
|
+
# response = client.get(URI("http://www.example.com"))
|
20
|
+
#
|
21
|
+
# @example To make an HTTPS GET request, trusting the puppet CA and certs in Puppet's CA bundle:
|
22
|
+
# response = client.get(URI("https://www.example.com"), include_system_store: true)
|
23
|
+
#
|
24
|
+
# @example To use a URL containing special characters, such as spaces:
|
25
|
+
# response = client.get(URI(Puppet::Util.uri_encode("https://www.example.com/path to file")))
|
26
|
+
#
|
27
|
+
# @example To pass query parameters:
|
28
|
+
# response = client.get(URI("https://www.example.com"), query: {'q' => 'puppet'})
|
29
|
+
#
|
30
|
+
# @example To pass custom headers:
|
31
|
+
# response = client.get(URI("https://www.example.com"), headers: {'Accept-Content' => 'application/json'})
|
32
|
+
#
|
33
|
+
# @example To check if the response is successful (2xx):
|
34
|
+
# response = client.get(URI("http://www.example.com"))
|
35
|
+
# puts response.success?
|
36
|
+
#
|
37
|
+
# @example To get the response code and reason:
|
38
|
+
# response = client.get(URI("http://www.example.com"))
|
39
|
+
# unless response.success?
|
40
|
+
# puts "HTTP #{response.code} #{response.reason}"
|
41
|
+
# end
|
42
|
+
#
|
43
|
+
# @example To read response headers:
|
44
|
+
# response = client.get(URI("http://www.example.com"))
|
45
|
+
# puts response['Content-Type']
|
46
|
+
#
|
47
|
+
# @example To stream the response body:
|
48
|
+
# client.get(URI("http://www.example.com")) do |response|
|
49
|
+
# if response.success?
|
50
|
+
# response.read_body do |data|
|
51
|
+
# puts data
|
52
|
+
# end
|
53
|
+
# end
|
54
|
+
# end
|
55
|
+
#
|
56
|
+
# @example To handle exceptions:
|
57
|
+
# begin
|
58
|
+
# client.get(URI("https://www.example.com"))
|
59
|
+
# rescue Puppet::HTTP::ResponseError => e
|
60
|
+
# puts "HTTP #{e.response.code} #{e.response.reason}"
|
61
|
+
# rescue Puppet::HTTP::ConnectionError => e
|
62
|
+
# puts "Connection error #{e.message}"
|
63
|
+
# rescue Puppet::SSL::SSLError => e
|
64
|
+
# puts "SSL error #{e.message}"
|
65
|
+
# rescue Puppet::HTTP::HTTPError => e
|
66
|
+
# puts "General HTTP error #{e.message}"
|
67
|
+
# end
|
68
|
+
#
|
69
|
+
# @example To route to the `:puppet` service:
|
70
|
+
# session = client.create_session
|
71
|
+
# service = session.route_to(:puppet)
|
72
|
+
#
|
73
|
+
# @example To make a node request:
|
74
|
+
# node = service.get_node(Puppet[:certname], environment: 'production')
|
75
|
+
#
|
76
|
+
# @example To submit facts:
|
77
|
+
# facts = Puppet::Indirection::Facts.indirection.find(Puppet[:certname])
|
78
|
+
# service.put_facts(Puppet[:certname], environment: 'production', facts: facts)
|
79
|
+
#
|
80
|
+
# @example To submit a report to the `:report` service:
|
81
|
+
# report = Puppet::Transaction::Report.new
|
82
|
+
# service = session.route_to(:report)
|
83
|
+
# service.put_report(Puppet[:certname], report, environment: 'production')
|
84
|
+
#
|
85
|
+
# @api public
|
7
86
|
class Puppet::HTTP::Client
|
8
87
|
|
9
|
-
# @api private
|
10
|
-
# @return [Puppet::Network::HTTP::Pool] the pool instance associated with
|
11
|
-
# this client
|
12
88
|
attr_reader :pool
|
13
89
|
|
90
|
+
# Create a new http client instance. Use `Puppet.runtime[:http]` to get
|
91
|
+
# the current client instead of creating an instance of this class.
|
14
92
|
#
|
15
|
-
# @
|
16
|
-
#
|
17
|
-
# Create a new http client instance. The client contains a pool of persistent
|
18
|
-
# HTTP connections and creates HTTP sessions.
|
19
|
-
#
|
20
|
-
# @param [Puppet::Network::HTTP::Pool] pool pool of persistent Net::HTTP
|
93
|
+
# @param [Puppet::HTTP::Pool] pool pool of persistent Net::HTTP
|
21
94
|
# connections
|
22
95
|
# @param [Puppet::SSL::SSLContext] ssl_context ssl context to be used for
|
23
96
|
# connections
|
@@ -28,7 +101,7 @@ class Puppet::HTTP::Client
|
|
28
101
|
# @param [Integer] retry_limit number of HTTP reties allowed in a given
|
29
102
|
# request
|
30
103
|
#
|
31
|
-
def initialize(pool: Puppet::
|
104
|
+
def initialize(pool: Puppet::HTTP::Pool.new(Puppet[:http_keepalive_timeout]), ssl_context: nil, system_ssl_context: nil, redirect_limit: 10, retry_limit: 100)
|
32
105
|
@pool = pool
|
33
106
|
@default_headers = {
|
34
107
|
'X-Puppet-Version' => Puppet.version,
|
@@ -40,22 +113,19 @@ class Puppet::HTTP::Client
|
|
40
113
|
@retry_after_handler = Puppet::HTTP::RetryAfterHandler.new(retry_limit, Puppet[:runinterval])
|
41
114
|
end
|
42
115
|
|
43
|
-
#
|
44
|
-
# @api private
|
45
|
-
#
|
46
116
|
# Create a new HTTP session. A session is the object through which services
|
47
117
|
# may be connected to and accessed.
|
48
118
|
#
|
49
119
|
# @return [Puppet::HTTP::Session] the newly created HTTP session
|
50
120
|
#
|
121
|
+
# @api public
|
51
122
|
def create_session
|
52
123
|
Puppet::HTTP::Session.new(self, build_resolvers)
|
53
124
|
end
|
54
125
|
|
55
|
-
#
|
56
|
-
#
|
57
|
-
#
|
58
|
-
# Open a connection to the given URI
|
126
|
+
# Open a connection to the given URI. It is typically not necessary to call
|
127
|
+
# this method as the client will create connections as needed when a request
|
128
|
+
# is made.
|
59
129
|
#
|
60
130
|
# @param [URI] uri the connection destination
|
61
131
|
# @param [Hash] options
|
@@ -63,16 +133,12 @@ class Puppet::HTTP::Client
|
|
63
133
|
# be used for connections
|
64
134
|
# @option options [Boolean] :include_system_store (false) if we should include
|
65
135
|
# the system store for connection
|
66
|
-
#
|
67
|
-
# @yield [Net::HTTP] If a block is given, yields an active http connection
|
68
|
-
# from the pool
|
69
|
-
#
|
70
136
|
def connect(uri, options: {}, &block)
|
71
137
|
start = Time.now
|
72
138
|
verifier = nil
|
73
139
|
connected = false
|
74
140
|
|
75
|
-
site = Puppet::
|
141
|
+
site = Puppet::HTTP::Site.from_uri(uri)
|
76
142
|
if site.use_ssl?
|
77
143
|
ssl_context = options.fetch(:ssl_context, nil)
|
78
144
|
include_system_store = options.fetch(:include_system_store, false)
|
@@ -101,88 +167,73 @@ class Puppet::HTTP::Client
|
|
101
167
|
{uri: uri, elapsed: elapsed(start), message: e.message}, e, connected)
|
102
168
|
end
|
103
169
|
|
104
|
-
#
|
105
|
-
#
|
106
|
-
#
|
170
|
+
# These options apply to all HTTP request methods
|
171
|
+
#
|
172
|
+
# @!macro [new] request_options
|
173
|
+
# @param [Hash] options HTTP request options. Options not recognized by the
|
174
|
+
# HTTP implementation will be ignored.
|
175
|
+
# @option options [Puppet::SSL::SSLContext] :ssl_context (nil) ssl context to
|
176
|
+
# be used for connections
|
177
|
+
# @option options [Boolean] :include_system_store (false) if we should include
|
178
|
+
# the system store for connection
|
179
|
+
# @option options [Integer] :redirect_limit (10) The maximum number of HTTP
|
180
|
+
# redirections to allow for this request.
|
181
|
+
# @option options [Hash] :basic_auth A map of `:username` => `String` and
|
182
|
+
# `:password` => `String`
|
183
|
+
# @option options [String] :metric_id The metric id used to track metrics
|
184
|
+
# on requests.
|
185
|
+
|
107
186
|
# Submits a GET HTTP request to the given url
|
108
187
|
#
|
109
188
|
# @param [URI] url the location to submit the http request
|
110
189
|
# @param [Hash] headers merged with the default headers defined by the client
|
111
190
|
# @param [Hash] params encoded and set as the url query
|
112
|
-
#
|
113
|
-
# @option options [Puppet::SSL::SSLContext] :ssl_context (nil) ssl context to
|
114
|
-
# be used for connections
|
115
|
-
# @option options [Boolean] :include_system_store (false) if we should include
|
116
|
-
# the system store for connection
|
117
|
-
# @param options [Integer] :redirect_limit number of HTTP redirections to allow
|
118
|
-
# for this request.
|
191
|
+
# @!macro request_options
|
119
192
|
#
|
120
193
|
# @yield [Puppet::HTTP::Response] if a block is given yields the response
|
121
194
|
#
|
122
|
-
# @return [
|
195
|
+
# @return [Puppet::HTTP::Response] the response
|
123
196
|
#
|
197
|
+
# @api public
|
124
198
|
def get(url, headers: {}, params: {}, options: {}, &block)
|
125
199
|
url = encode_query(url, params)
|
126
200
|
|
127
201
|
request = Net::HTTP::Get.new(url, @default_headers.merge(headers))
|
128
202
|
|
129
|
-
execute_streaming(request, options: options)
|
130
|
-
if block_given?
|
131
|
-
yield response
|
132
|
-
else
|
133
|
-
response.body
|
134
|
-
end
|
135
|
-
end
|
203
|
+
execute_streaming(request, options: options, &block)
|
136
204
|
end
|
137
205
|
|
138
|
-
#
|
139
|
-
# @api private
|
140
|
-
#
|
141
206
|
# Submits a HEAD HTTP request to the given url
|
142
207
|
#
|
143
208
|
# @param [URI] url the location to submit the http request
|
144
209
|
# @param [Hash] headers merged with the default headers defined by the client
|
145
210
|
# @param [Hash] params encoded and set as the url query
|
146
|
-
#
|
147
|
-
# @option options [Puppet::SSL::SSLContext] :ssl_context (nil) ssl context to
|
148
|
-
# be used for connections
|
149
|
-
# @option options [Boolean] :include_system_store (false) if we should include
|
150
|
-
# the system store for connection
|
151
|
-
# @param options [Integer] :redirect_limit number of HTTP redirections to allow
|
152
|
-
# for this request.
|
211
|
+
# @!macro request_options
|
153
212
|
#
|
154
|
-
# @return [
|
213
|
+
# @return [Puppet::HTTP::Response] the response
|
155
214
|
#
|
215
|
+
# @api public
|
156
216
|
def head(url, headers: {}, params: {}, options: {})
|
157
217
|
url = encode_query(url, params)
|
158
218
|
|
159
219
|
request = Net::HTTP::Head.new(url, @default_headers.merge(headers))
|
160
220
|
|
161
|
-
execute_streaming(request, options: options)
|
162
|
-
response.body
|
163
|
-
end
|
221
|
+
execute_streaming(request, options: options)
|
164
222
|
end
|
165
223
|
|
166
|
-
#
|
167
|
-
# @api private
|
168
|
-
#
|
169
224
|
# Submits a PUT HTTP request to the given url
|
170
225
|
#
|
171
226
|
# @param [URI] url the location to submit the http request
|
172
227
|
# @param [String] body the body of the PUT request
|
173
|
-
# @param [Hash] headers merged with the default headers defined by the client
|
228
|
+
# @param [Hash] headers merged with the default headers defined by the client. The
|
229
|
+
# `Content-Type` header is required and should correspond to the type of data passed
|
230
|
+
# as the `body` argument.
|
174
231
|
# @param [Hash] params encoded and set as the url query
|
175
|
-
#
|
176
|
-
# @option options [String] :content_type the type of the body content
|
177
|
-
# @option options [Puppet::SSL::SSLContext] :ssl_context (nil) ssl context to
|
178
|
-
# be used for connections
|
179
|
-
# @option options [Boolean] :include_system_store (false) if we should include
|
180
|
-
# the system store for connection
|
181
|
-
# @param options [Integer] :redirect_limit number of HTTP redirections to allow
|
182
|
-
# for this request.
|
232
|
+
# @!macro request_options
|
183
233
|
#
|
184
|
-
# @return [
|
234
|
+
# @return [Puppet::HTTP::Response] the response
|
185
235
|
#
|
236
|
+
# @api public
|
186
237
|
def put(url, body, headers: {}, params: {}, options: {})
|
187
238
|
raise ArgumentError, "'put' requires a string 'body' argument" unless body.is_a?(String)
|
188
239
|
url = encode_query(url, params)
|
@@ -193,31 +244,24 @@ class Puppet::HTTP::Client
|
|
193
244
|
|
194
245
|
raise ArgumentError, "'put' requires a 'content-type' header" unless request['Content-Type']
|
195
246
|
|
196
|
-
execute_streaming(request, options: options)
|
197
|
-
response.body
|
198
|
-
end
|
247
|
+
execute_streaming(request, options: options)
|
199
248
|
end
|
200
249
|
|
201
|
-
#
|
202
|
-
# @api private
|
203
|
-
#
|
204
250
|
# Submits a POST HTTP request to the given url
|
205
251
|
#
|
206
252
|
# @param [URI] url the location to submit the http request
|
207
253
|
# @param [String] body the body of the POST request
|
208
|
-
# @param [Hash] headers merged with the default headers defined by the client
|
254
|
+
# @param [Hash] headers merged with the default headers defined by the client. The
|
255
|
+
# `Content-Type` header is required and should correspond to the type of data passed
|
256
|
+
# as the `body` argument.
|
209
257
|
# @param [Hash] params encoded and set as the url query
|
210
|
-
#
|
211
|
-
#
|
212
|
-
# @
|
213
|
-
# be used for connections
|
214
|
-
# @option options [Boolean] :include_system_store (false) if we should include
|
215
|
-
# the system store for connection
|
216
|
-
# @param options [Integer] :redirect_limit number of HTTP redirections to allow
|
217
|
-
# for this request.
|
258
|
+
# @!macro request_options
|
259
|
+
#
|
260
|
+
# @yield [Puppet::HTTP::Response] if a block is given yields the response
|
218
261
|
#
|
219
|
-
# @return [
|
262
|
+
# @return [Puppet::HTTP::Response] the response
|
220
263
|
#
|
264
|
+
# @api public
|
221
265
|
def post(url, body, headers: {}, params: {}, options: {}, &block)
|
222
266
|
raise ArgumentError, "'post' requires a string 'body' argument" unless body.is_a?(String)
|
223
267
|
url = encode_query(url, params)
|
@@ -228,48 +272,32 @@ class Puppet::HTTP::Client
|
|
228
272
|
|
229
273
|
raise ArgumentError, "'post' requires a 'content-type' header" unless request['Content-Type']
|
230
274
|
|
231
|
-
execute_streaming(request, options: options)
|
232
|
-
if block_given?
|
233
|
-
yield response
|
234
|
-
else
|
235
|
-
response.body
|
236
|
-
end
|
237
|
-
end
|
275
|
+
execute_streaming(request, options: options, &block)
|
238
276
|
end
|
239
277
|
|
240
|
-
#
|
241
|
-
# @api private
|
242
|
-
#
|
243
|
-
# Submits a DELETE HTTP request to the given url
|
278
|
+
# Submits a DELETE HTTP request to the given url.
|
244
279
|
#
|
245
280
|
# @param [URI] url the location to submit the http request
|
246
281
|
# @param [Hash] headers merged with the default headers defined by the client
|
247
282
|
# @param [Hash] params encoded and set as the url query
|
248
|
-
#
|
249
|
-
# @option options [Puppet::SSL::SSLContext] :ssl_context (nil) ssl context to
|
250
|
-
# be used for connections
|
251
|
-
# @option options [Boolean] :include_system_store (false) if we should include
|
252
|
-
# the system store for connection
|
253
|
-
# @param options [Integer] :redirect_limit number of HTTP redirections to allow
|
254
|
-
# for this request.
|
283
|
+
# @!macro request_options
|
255
284
|
#
|
256
|
-
# @return [
|
285
|
+
# @return [Puppet::HTTP::Response] the response
|
257
286
|
#
|
287
|
+
# @api public
|
258
288
|
def delete(url, headers: {}, params: {}, options: {})
|
259
289
|
url = encode_query(url, params)
|
260
290
|
|
261
291
|
request = Net::HTTP::Delete.new(url, @default_headers.merge(headers))
|
262
292
|
|
263
|
-
execute_streaming(request, options: options)
|
264
|
-
response.body
|
265
|
-
end
|
293
|
+
execute_streaming(request, options: options)
|
266
294
|
end
|
267
295
|
|
296
|
+
# Close persistent connections in the pool.
|
268
297
|
#
|
269
|
-
# @
|
270
|
-
#
|
271
|
-
# Close persistent connections in the pool
|
298
|
+
# @return [void]
|
272
299
|
#
|
300
|
+
# @api public
|
273
301
|
def close
|
274
302
|
@pool.close
|
275
303
|
end
|
@@ -286,10 +314,30 @@ class Puppet::HTTP::Client
|
|
286
314
|
|
287
315
|
private
|
288
316
|
|
317
|
+
# Connect or borrow a connection from the pool to the host and port associated
|
318
|
+
# with the request's URL. Then execute the HTTP request, retrying and
|
319
|
+
# following redirects as needed, and return the HTTP response. The response
|
320
|
+
# body will always be fully drained/consumed when this method returns.
|
321
|
+
#
|
322
|
+
# If a block is provided, then the response will be yielded to the caller,
|
323
|
+
# allowing the response body to be streamed.
|
324
|
+
#
|
325
|
+
# If the request/response did not result in an exception and the caller did
|
326
|
+
# not ask for the connection to be closed (via Connection: close), then the
|
327
|
+
# connection will be returned to the pool.
|
328
|
+
#
|
329
|
+
# @yieldparam [Puppet::HTTP::Response] response The final response, after
|
330
|
+
# following redirects and retrying
|
331
|
+
# @return [Puppet::HTTP::Response]
|
289
332
|
def execute_streaming(request, options: {}, &block)
|
290
333
|
redirector = Puppet::HTTP::Redirector.new(options.fetch(:redirect_limit, @default_redirect_limit))
|
291
334
|
|
292
335
|
basic_auth = options.fetch(:basic_auth, nil)
|
336
|
+
unless basic_auth
|
337
|
+
if request.uri.user && request.uri.password
|
338
|
+
basic_auth = { user: request.uri.user, password: request.uri.password }
|
339
|
+
end
|
340
|
+
end
|
293
341
|
|
294
342
|
redirects = 0
|
295
343
|
retries = 0
|
@@ -302,7 +350,7 @@ class Puppet::HTTP::Client
|
|
302
350
|
|
303
351
|
# don't call return within the `request` block
|
304
352
|
http.request(request) do |nethttp|
|
305
|
-
response = Puppet::HTTP::
|
353
|
+
response = Puppet::HTTP::ResponseNetHTTP.new(request.uri, nethttp)
|
306
354
|
begin
|
307
355
|
Puppet.debug("HTTP #{request.method.upcase} #{request.uri} returned #{response.code} #{response.reason}")
|
308
356
|
|
@@ -315,7 +363,7 @@ class Puppet::HTTP::Client
|
|
315
363
|
retries += 1
|
316
364
|
if interval
|
317
365
|
if http.started?
|
318
|
-
Puppet.debug("Closing connection for #{Puppet::
|
366
|
+
Puppet.debug("Closing connection for #{Puppet::HTTP::Site.from_uri(request.uri)}")
|
319
367
|
http.finish
|
320
368
|
end
|
321
369
|
Puppet.warning(_("Sleeping for %{interval} seconds before retrying the request") % { interval: interval })
|
@@ -324,8 +372,15 @@ class Puppet::HTTP::Client
|
|
324
372
|
end
|
325
373
|
end
|
326
374
|
|
327
|
-
|
375
|
+
if block_given?
|
376
|
+
yield response
|
377
|
+
else
|
378
|
+
response.body
|
379
|
+
end
|
328
380
|
ensure
|
381
|
+
# we need to make sure the response body is fully consumed before
|
382
|
+
# the connection is put back in the pool, otherwise the response
|
383
|
+
# for one request could leak into a future response.
|
329
384
|
response.drain
|
330
385
|
end
|
331
386
|
|
@@ -433,7 +488,7 @@ class Puppet::HTTP::Client
|
|
433
488
|
services.delete(:report)
|
434
489
|
end
|
435
490
|
|
436
|
-
resolvers << Puppet::HTTP::Resolver::ServerList.new(self, server_list_setting: server_list_setting, default_port: Puppet[:
|
491
|
+
resolvers << Puppet::HTTP::Resolver::ServerList.new(self, server_list_setting: server_list_setting, default_port: Puppet[:serverport], services: services)
|
437
492
|
end
|
438
493
|
|
439
494
|
resolvers << Puppet::HTTP::Resolver::Settings.new(self)
|