puppet 6.24.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/CODEOWNERS +16 -2
- data/CONTRIBUTING.md +5 -5
- data/Gemfile +1 -3
- data/Gemfile.lock +35 -47
- data/README.md +5 -5
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -1
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/osx/puppet.plist +0 -2
- data/ext/project_data.yaml +1 -15
- 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 +14 -23
- data/lib/puppet/application.rb +178 -108
- data/lib/puppet/application/agent.rb +4 -12
- data/lib/puppet/application/apply.rb +2 -4
- data/lib/puppet/application/device.rb +100 -106
- data/lib/puppet/application/filebucket.rb +13 -10
- data/lib/puppet/application/resource.rb +3 -17
- data/lib/puppet/application/script.rb +0 -2
- data/lib/puppet/application/ssl.rb +1 -13
- data/lib/puppet/application_support.rb +0 -7
- data/lib/puppet/configurer.rb +30 -45
- data/lib/puppet/configurer/downloader.rb +1 -2
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/defaults.rb +100 -192
- data/lib/puppet/environments.rb +60 -84
- data/lib/puppet/face/facts.rb +5 -103
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/help/action.erb +0 -1
- data/lib/puppet/face/help/face.erb +0 -1
- data/lib/puppet/face/node/clean.rb +0 -11
- data/lib/puppet/face/plugin.rb +5 -8
- 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_serving/configuration.rb +0 -5
- data/lib/puppet/file_serving/configuration/parser.rb +3 -32
- data/lib/puppet/file_serving/fileset.rb +2 -14
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount.rb +1 -2
- data/lib/puppet/file_system/file_impl.rb +1 -1
- data/lib/puppet/file_system/memory_file.rb +1 -8
- data/lib/puppet/file_system/windows.rb +2 -4
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/forge/repository.rb +0 -1
- data/lib/puppet/functions/all.rb +1 -1
- data/lib/puppet/functions/camelcase.rb +1 -1
- data/lib/puppet/functions/capitalize.rb +2 -2
- data/lib/puppet/functions/downcase.rb +2 -2
- data/lib/puppet/functions/empty.rb +0 -8
- data/lib/puppet/functions/get.rb +5 -5
- data/lib/puppet/functions/group_by.rb +5 -13
- data/lib/puppet/functions/lest.rb +1 -1
- data/lib/puppet/functions/new.rb +100 -100
- data/lib/puppet/functions/partition.rb +4 -12
- data/lib/puppet/functions/require.rb +5 -5
- data/lib/puppet/functions/sort.rb +3 -3
- data/lib/puppet/functions/strftime.rb +0 -1
- data/lib/puppet/functions/tree_each.rb +9 -7
- data/lib/puppet/functions/type.rb +4 -4
- data/lib/puppet/functions/unwrap.rb +2 -17
- data/lib/puppet/functions/upcase.rb +2 -2
- data/lib/puppet/generate/models/type/type.rb +4 -1
- data/lib/puppet/http.rb +22 -13
- data/lib/puppet/http/client.rb +164 -114
- 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 -15
- 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 +4 -12
- data/lib/puppet/http/resolver.rb +5 -15
- data/lib/puppet/http/resolver/server_list.rb +10 -25
- data/lib/puppet/http/resolver/settings.rb +4 -7
- data/lib/puppet/http/resolver/srv.rb +7 -11
- data/lib/puppet/http/response.rb +36 -54
- 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 +12 -26
- data/lib/puppet/http/service/ca.rb +11 -22
- data/lib/puppet/http/service/compiler.rb +22 -138
- data/lib/puppet/http/service/file_server.rb +19 -29
- data/lib/puppet/http/service/puppetserver.rb +26 -12
- data/lib/puppet/http/service/report.rb +8 -10
- data/lib/puppet/http/session.rb +11 -20
- data/lib/puppet/{network/http → http}/site.rb +1 -2
- data/lib/puppet/indirector/catalog/compiler.rb +0 -1
- data/lib/puppet/indirector/catalog/rest.rb +2 -4
- data/lib/puppet/indirector/facts/rest.rb +3 -22
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
- data/lib/puppet/indirector/file_content/rest.rb +2 -6
- data/lib/puppet/indirector/file_metadata/rest.rb +3 -10
- data/lib/puppet/indirector/file_server.rb +1 -8
- data/lib/puppet/indirector/generic_http.rb +0 -11
- data/lib/puppet/indirector/node/rest.rb +2 -4
- data/lib/puppet/indirector/report/rest.rb +3 -8
- data/lib/puppet/indirector/request.rb +0 -101
- data/lib/puppet/indirector/resource/ral.rb +1 -6
- data/lib/puppet/indirector/rest.rb +12 -263
- data/lib/puppet/interface/documentation.rb +0 -1
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/module_tool/applications/installer.rb +2 -52
- data/lib/puppet/module_tool/errors/shared.rb +2 -34
- data/lib/puppet/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/formats.rb +0 -67
- data/lib/puppet/network/http.rb +3 -3
- data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
- data/lib/puppet/network/http/api/master/v3.rb +11 -13
- data/lib/puppet/network/http/connection.rb +247 -316
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node.rb +1 -30
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +3 -1
- data/lib/puppet/parser/ast/leaf.rb +2 -3
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
- data/lib/puppet/parser/compiler.rb +0 -198
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
- data/lib/puppet/parser/functions/fqdn_rand.rb +6 -14
- data/lib/puppet/parser/resource.rb +0 -69
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
- 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/issues.rb +0 -5
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
- data/lib/puppet/pops/model/ast.pp +0 -42
- data/lib/puppet/pops/model/ast.rb +0 -290
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- 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 -24
- data/lib/puppet/pops/types/p_sem_ver_type.rb +2 -8
- data/lib/puppet/pops/types/p_sensitive_type.rb +0 -10
- data/lib/puppet/pops/types/type_calculator.rb +0 -7
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
- 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 +9 -37
- data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
- data/lib/puppet/property/list.rb +1 -1
- data/lib/puppet/provider.rb +0 -13
- data/lib/puppet/provider/exec/posix.rb +4 -16
- data/lib/puppet/provider/group/groupadd.rb +8 -13
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +2 -34
- data/lib/puppet/provider/package/aptitude.rb +0 -6
- data/lib/puppet/provider/package/dnfmodule.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +0 -10
- data/lib/puppet/provider/package/gem.rb +23 -3
- data/lib/puppet/provider/package/nim.rb +6 -11
- data/lib/puppet/provider/package/pip.rb +3 -16
- 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 +1 -4
- data/lib/puppet/provider/parsedfile.rb +0 -3
- data/lib/puppet/provider/service/debian.rb +0 -2
- data/lib/puppet/provider/service/smf.rb +191 -73
- data/lib/puppet/provider/service/systemd.rb +4 -14
- data/lib/puppet/provider/service/windows.rb +0 -38
- data/lib/puppet/provider/user/aix.rb +2 -2
- data/lib/puppet/provider/user/directoryservice.rb +10 -33
- data/lib/puppet/provider/user/useradd.rb +8 -62
- data/lib/puppet/reference/configuration.rb +8 -7
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource.rb +1 -89
- data/lib/puppet/resource/catalog.rb +1 -14
- data/lib/puppet/resource/type.rb +3 -119
- data/lib/puppet/resource/type_collection.rb +3 -48
- data/lib/puppet/runtime.rb +1 -2
- data/lib/puppet/settings.rb +80 -96
- data/lib/puppet/settings/environment_conf.rb +0 -1
- 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_provider.rb +17 -0
- data/lib/puppet/ssl/state_machine.rb +3 -1
- data/lib/puppet/ssl/verifier.rb +2 -0
- data/lib/puppet/test/test_helper.rb +1 -3
- data/lib/puppet/transaction.rb +1 -7
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/report.rb +2 -4
- data/lib/puppet/type.rb +0 -76
- data/lib/puppet/type/exec.rb +3 -16
- data/lib/puppet/type/file.rb +6 -26
- data/lib/puppet/type/file/checksum.rb +1 -1
- data/lib/puppet/type/file/mode.rb +0 -6
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file/source.rb +1 -1
- data/lib/puppet/type/filebucket.rb +3 -3
- data/lib/puppet/type/package.rb +8 -16
- data/lib/puppet/type/service.rb +38 -18
- data/lib/puppet/type/tidy.rb +3 -22
- data/lib/puppet/type/user.rb +20 -38
- data/lib/puppet/util/autoload.rb +8 -1
- data/lib/puppet/util/execution.rb +0 -11
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/monkey_patches.rb +0 -53
- data/lib/puppet/util/posix.rb +5 -54
- data/lib/puppet/util/rdoc.rb +0 -7
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/run_mode.rb +9 -1
- data/lib/puppet/util/selinux.rb +4 -30
- data/lib/puppet/util/symbolic_file_mode.rb +17 -29
- data/lib/puppet/util/windows.rb +3 -8
- data/lib/puppet/util/windows/adsi.rb +0 -46
- 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 +4 -9
- 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 +2 -9
- data/lib/puppet/util/windows/process.rb +4 -226
- data/lib/puppet/util/windows/service.rb +9 -460
- data/lib/puppet/util/windows/sid.rb +2 -6
- data/lib/puppet/util/windows/string.rb +12 -13
- 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 +722 -1527
- data/man/man5/puppet.conf.5 +266 -354
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-catalog.8 +9 -9
- 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 +8 -51
- data/man/man8/puppet-filebucket.8 +4 -4
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-module.8 +1 -58
- data/man/man8/puppet-node.8 +5 -5
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +5 -5
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +2 -2
- data/man/man8/puppet-ssl.8 +1 -5
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/ssl/127.0.0.1-key.pem +57 -107
- data/spec/fixtures/ssl/127.0.0.1.pem +31 -52
- data/spec/fixtures/ssl/bad-basic-constraints.pem +35 -57
- data/spec/fixtures/ssl/bad-int-basic-constraints.pem +35 -57
- data/spec/fixtures/ssl/ca.pem +35 -57
- data/spec/fixtures/ssl/crl.pem +18 -28
- data/spec/fixtures/ssl/ec-key.pem +11 -11
- data/spec/fixtures/ssl/ec.pem +24 -33
- data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
- data/spec/fixtures/ssl/encrypted-key.pem +58 -108
- data/spec/fixtures/ssl/intermediate-agent-crl.pem +19 -28
- data/spec/fixtures/ssl/intermediate-agent.pem +36 -57
- data/spec/fixtures/ssl/intermediate-crl.pem +21 -31
- data/spec/fixtures/ssl/intermediate.pem +36 -57
- data/spec/fixtures/ssl/pluto-key.pem +57 -107
- data/spec/fixtures/ssl/pluto.pem +30 -52
- data/spec/fixtures/ssl/request-key.pem +57 -107
- data/spec/fixtures/ssl/request.pem +26 -47
- data/spec/fixtures/ssl/revoked-key.pem +57 -107
- data/spec/fixtures/ssl/revoked.pem +30 -52
- data/spec/fixtures/ssl/signed-key.pem +57 -107
- data/spec/fixtures/ssl/signed.pem +30 -52
- data/spec/fixtures/ssl/tampered-cert.pem +30 -52
- data/spec/fixtures/ssl/tampered-csr.pem +26 -47
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +57 -107
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +29 -50
- data/spec/fixtures/ssl/unknown-ca-key.pem +57 -107
- data/spec/fixtures/ssl/unknown-ca.pem +33 -55
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
- data/spec/integration/application/agent_spec.rb +27 -171
- data/spec/integration/application/apply_spec.rb +1 -20
- data/spec/integration/application/filebucket_spec.rb +16 -27
- data/spec/integration/application/help_spec.rb +2 -0
- data/spec/integration/application/module_spec.rb +0 -21
- data/spec/integration/application/plugin_spec.rb +24 -2
- data/spec/integration/defaults_spec.rb +14 -3
- data/spec/integration/environments/settings_interpolation_spec.rb +4 -0
- data/spec/integration/http/client_spec.rb +0 -12
- data/spec/integration/indirector/direct_file_server_spec.rb +3 -1
- data/spec/integration/indirector/facts/facter_spec.rb +36 -90
- data/spec/integration/network/http_pool_spec.rb +3 -21
- data/spec/integration/parser/catalog_spec.rb +0 -38
- data/spec/integration/parser/node_spec.rb +0 -9
- data/spec/integration/parser/pcore_resource_spec.rb +0 -37
- data/spec/integration/resource/type_collection_spec.rb +6 -2
- data/spec/integration/transaction_spec.rb +9 -4
- data/spec/integration/type/exec_spec.rb +45 -70
- data/spec/integration/type/file_spec.rb +5 -4
- data/spec/integration/util/windows/adsi_spec.rb +1 -21
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
- data/spec/integration/util/windows/principal_spec.rb +0 -21
- data/spec/integration/util/windows/registry_spec.rb +10 -6
- data/spec/integration/util/windows/security_spec.rb +1 -1
- data/spec/lib/matchers/include.rb +27 -0
- data/spec/lib/matchers/include_spec.rb +32 -0
- data/spec/lib/puppet/test_ca.rb +2 -7
- data/spec/lib/puppet_spec/puppetserver.rb +1 -1
- data/spec/lib/puppet_spec/settings.rb +1 -1
- data/spec/spec_helper.rb +7 -12
- data/spec/unit/agent_spec.rb +6 -10
- data/spec/unit/application/agent_spec.rb +3 -7
- data/spec/unit/application/facts_spec.rb +12 -456
- data/spec/unit/application/filebucket_spec.rb +43 -39
- data/spec/unit/application/ssl_spec.rb +2 -25
- data/spec/unit/application_spec.rb +9 -51
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +6 -8
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +12 -32
- data/spec/unit/confine/feature_spec.rb +1 -1
- data/spec/unit/confine_spec.rb +2 -8
- data/spec/unit/context/trusted_information_spec.rb +2 -6
- data/spec/unit/defaults_spec.rb +68 -54
- data/spec/unit/environments_spec.rb +68 -259
- data/spec/unit/face/node_spec.rb +11 -0
- 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 +15 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- data/spec/unit/file_serving/fileset_spec.rb +0 -60
- data/spec/unit/file_serving/metadata_spec.rb +3 -3
- data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
- data/spec/unit/file_system_spec.rb +0 -15
- data/spec/unit/forge/module_release_spec.rb +7 -2
- data/spec/unit/functions/assert_type_spec.rb +1 -1
- 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/empty_spec.rb +0 -10
- data/spec/unit/functions/unwrap_spec.rb +0 -8
- data/spec/unit/functions/upcase_spec.rb +1 -1
- data/spec/unit/functions4_spec.rb +2 -2
- data/spec/unit/gettext/config_spec.rb +0 -12
- data/spec/unit/http/client_spec.rb +7 -8
- 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 -30
- 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 +13 -13
- data/spec/unit/http/service/compiler_spec.rb +0 -185
- data/spec/unit/http/service/file_server_spec.rb +3 -3
- data/spec/unit/http/service/puppetserver_spec.rb +34 -4
- data/spec/unit/http/service_spec.rb +0 -1
- data/spec/unit/http/session_spec.rb +16 -14
- data/spec/unit/{network/http → http}/site_spec.rb +3 -3
- data/spec/unit/indirector/catalog/compiler_spec.rb +10 -14
- data/spec/unit/indirector/face_spec.rb +1 -0
- data/spec/unit/indirector/facts/facter_spec.rb +3 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
- 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/indirection_spec.rb +12 -8
- data/spec/unit/indirector/report/rest_spec.rb +2 -17
- data/spec/unit/indirector/request_spec.rb +0 -264
- data/spec/unit/indirector/resource/ral_spec.rb +75 -40
- data/spec/unit/indirector/rest_spec.rb +98 -752
- data/spec/unit/indirector_spec.rb +2 -2
- data/spec/unit/module_tool/applications/installer_spec.rb +0 -78
- data/spec/unit/network/authconfig_spec.rb +2 -129
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/formats_spec.rb +4 -45
- data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
- 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 +19 -41
- data/spec/unit/network/http/handler_spec.rb +0 -1
- data/spec/unit/network/http_pool_spec.rb +0 -4
- data/spec/unit/node/environment_spec.rb +33 -21
- data/spec/unit/node_spec.rb +2 -54
- data/spec/unit/parser/compiler_spec.rb +19 -3
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +1 -15
- data/spec/unit/parser/resource_spec.rb +8 -14
- data/spec/unit/parser/templatewrapper_spec.rb +5 -16
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
- data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
- 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/p_sem_ver_type_spec.rb +0 -18
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -18
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
- 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/property_spec.rb +0 -1
- data/spec/unit/provider/group/groupadd_spec.rb +2 -5
- data/spec/unit/provider/nameservice_spec.rb +64 -122
- data/spec/unit/provider/package/apt_spec.rb +23 -28
- data/spec/unit/provider/package/aptitude_spec.rb +1 -1
- data/spec/unit/provider/package/base_spec.rb +5 -6
- data/spec/unit/provider/package/dnfmodule_spec.rb +1 -10
- data/spec/unit/provider/package/dpkg_spec.rb +0 -48
- data/spec/unit/provider/package/gem_spec.rb +32 -0
- data/spec/unit/provider/package/nim_spec.rb +0 -42
- data/spec/unit/provider/package/pacman_spec.rb +12 -18
- data/spec/unit/provider/package/pip_spec.rb +11 -43
- data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
- data/spec/unit/provider/parsedfile_spec.rb +0 -10
- data/spec/unit/provider/service/init_spec.rb +0 -1
- data/spec/unit/provider/service/openwrt_spec.rb +1 -3
- data/spec/unit/provider/service/smf_spec.rb +401 -165
- data/spec/unit/provider/service/systemd_spec.rb +8 -53
- data/spec/unit/provider/service/windows_spec.rb +0 -203
- data/spec/unit/provider/user/aix_spec.rb +0 -5
- data/spec/unit/provider/user/directoryservice_spec.rb +35 -67
- data/spec/unit/provider/user/hpux_spec.rb +1 -1
- data/spec/unit/provider/user/pw_spec.rb +0 -2
- data/spec/unit/provider/user/useradd_spec.rb +3 -71
- data/spec/unit/provider_spec.rb +8 -18
- data/spec/unit/resource/catalog_spec.rb +1 -1
- data/spec/unit/resource/type_collection_spec.rb +2 -22
- data/spec/unit/resource/type_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +10 -67
- 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 +79 -110
- data/spec/unit/ssl/base_spec.rb +37 -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 +2 -5
- data/spec/unit/ssl/state_machine_spec.rb +5 -20
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- data/spec/unit/transaction/additional_resource_generator_spec.rb +9 -3
- data/spec/unit/transaction/event_manager_spec.rb +11 -14
- data/spec/unit/transaction/report_spec.rb +0 -2
- data/spec/unit/transaction/resource_harness_spec.rb +2 -2
- data/spec/unit/transaction_spec.rb +55 -96
- data/spec/unit/type/exec_spec.rb +29 -76
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +2 -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/selinux_spec.rb +5 -3
- data/spec/unit/type/file/source_spec.rb +4 -5
- data/spec/unit/type/file_spec.rb +18 -6
- data/spec/unit/type/group_spec.rb +6 -13
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type/resources_spec.rb +7 -7
- data/spec/unit/type/service_spec.rb +189 -60
- data/spec/unit/type/tidy_spec.rb +8 -24
- data/spec/unit/type/user_spec.rb +0 -45
- data/spec/unit/type_spec.rb +22 -2
- data/spec/unit/util/at_fork_spec.rb +2 -2
- data/spec/unit/util/autoload_spec.rb +1 -5
- data/spec/unit/util/backups_spec.rb +2 -3
- data/spec/unit/util/execution_spec.rb +11 -44
- data/spec/unit/util/inifile_spec.rb +14 -6
- data/spec/unit/util/log_spec.rb +7 -8
- data/spec/unit/util/logging_spec.rb +3 -3
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/posix_spec.rb +15 -363
- data/spec/unit/util/run_mode_spec.rb +21 -121
- data/spec/unit/util/selinux_spec.rb +68 -163
- data/spec/unit/util/storage_spec.rb +1 -3
- data/spec/unit/util/suidmanager_spec.rb +41 -44
- data/spec/unit/util/windows/sid_spec.rb +0 -41
- 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 +6 -31
- data/tasks/generate_cert_fixtures.rake +3 -12
- metadata +45 -253
- 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/ffi/posix.rb +0 -10
- data/lib/puppet/ffi/posix/constants.rb +0 -14
- data/lib/puppet/ffi/posix/functions.rb +0 -24
- 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 -88
- 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 -184
- 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 -66
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
- data/lib/puppet/parser/environment_compiler.rb +0 -202
- 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/settings/alias_setting.rb +0 -37
- 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/fact_dif.rb +0 -81
- data/lib/puppet/util/ssl.rb +0 -83
- data/lib/puppet/util/windows/api_types.rb +0 -309
- data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
- 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/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -91
- data/spec/fixtures/ssl/oid-key.pem +0 -117
- data/spec/fixtures/ssl/oid.pem +0 -69
- data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
- data/spec/integration/application/resource_spec.rb +0 -64
- data/spec/integration/application/ssl_spec.rb +0 -20
- data/spec/integration/network/authconfig_spec.rb +0 -256
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
- data/spec/unit/application/man_spec.rb +0 -52
- data/spec/unit/capability_spec.rb +0 -414
- data/spec/unit/face/key_spec.rb +0 -9
- data/spec/unit/face/module/search_spec.rb +0 -231
- 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 -78
- 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/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 -730
- data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
- data/spec/unit/pops/types/enumeration_spec.rb +0 -51
- data/spec/unit/resource/capability_finder_spec.rb +0 -148
- data/spec/unit/rest/route_spec.rb +0 -132
- data/spec/unit/ssl/host_spec.rb +0 -645
- 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/resolver.rb
CHANGED
@@ -1,26 +1,17 @@
|
|
1
|
-
#
|
2
|
-
# @api private
|
3
|
-
#
|
4
1
|
# Resolver base class. Each resolver represents a different strategy for
|
5
2
|
# resolving a service name into a list of candidate servers and ports.
|
6
3
|
#
|
7
4
|
# @abstract Subclass and override {#resolve} to create a new resolver.
|
8
|
-
#
|
5
|
+
# @api public
|
9
6
|
class Puppet::HTTP::Resolver
|
10
7
|
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
# Create a new resolver
|
8
|
+
# Create a new resolver.
|
14
9
|
#
|
15
10
|
# @param [Puppet::HTTP::Client] client
|
16
|
-
#
|
17
11
|
def initialize(client)
|
18
12
|
@client = client
|
19
13
|
end
|
20
14
|
|
21
|
-
#
|
22
|
-
# @api private
|
23
|
-
#
|
24
15
|
# Return a working server/port for the resolver. This is the base
|
25
16
|
# implementation and is meant to be a placeholder.
|
26
17
|
#
|
@@ -33,14 +24,12 @@ class Puppet::HTTP::Resolver
|
|
33
24
|
#
|
34
25
|
# @raise [NotImplementedError] this base class is not implemented
|
35
26
|
#
|
27
|
+
# @api public
|
36
28
|
def resolve(session, name, ssl_context: nil, canceled_handler: nil)
|
37
29
|
raise NotImplementedError
|
38
30
|
end
|
39
31
|
|
40
|
-
#
|
41
|
-
# @api private
|
42
|
-
#
|
43
|
-
# Check a given connection to establish if it can be relied on for future use
|
32
|
+
# Check a given connection to establish if it can be relied on for future use.
|
44
33
|
#
|
45
34
|
# @param [Puppet::HTTP::Session] session
|
46
35
|
# @param [Puppet::HTTP::Service] service
|
@@ -48,6 +37,7 @@ class Puppet::HTTP::Resolver
|
|
48
37
|
#
|
49
38
|
# @return [Boolean] Returns true if a connection is successful, false otherwise
|
50
39
|
#
|
40
|
+
# @api public
|
51
41
|
def check_connection?(session, service, ssl_context: nil)
|
52
42
|
service.connect(ssl_context: ssl_context)
|
53
43
|
return true
|
@@ -1,12 +1,10 @@
|
|
1
|
-
#
|
2
|
-
# @api private
|
3
|
-
#
|
4
1
|
# Use the server_list setting to resolve a service. This resolver is only used
|
5
2
|
# if server_list is set either on the command line or in the configuration file.
|
6
3
|
#
|
4
|
+
# @api public
|
7
5
|
class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
|
8
|
-
|
9
|
-
#
|
6
|
+
|
7
|
+
# Create a server list resolver.
|
10
8
|
#
|
11
9
|
# @param [Puppet::HTTP::Client] client
|
12
10
|
# @param [Array<String>] server_list_setting array of servers set via the
|
@@ -24,15 +22,12 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
|
|
24
22
|
@services = services
|
25
23
|
end
|
26
24
|
|
27
|
-
#
|
28
|
-
# @api private
|
29
|
-
#
|
30
25
|
# Walk the server_list to find a server and port that will connect successfully.
|
31
26
|
#
|
32
|
-
# @param [Puppet::HTTP::Session] session
|
27
|
+
# @param [Puppet::HTTP::Session] session
|
33
28
|
# @param [Symbol] name the name of the service being resolved
|
34
29
|
# @param [Puppet::SSL::SSLContext] ssl_context
|
35
|
-
# @param [Proc] canceled_handler
|
30
|
+
# @param [Proc] canceled_handler optional callback allowing a resolver
|
36
31
|
# to cancel resolution.
|
37
32
|
#
|
38
33
|
# @return [nil] return nil if the service to be resolved does not support
|
@@ -43,6 +38,7 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
|
|
43
38
|
# @raise [Puppet::Error] raise if none of the servers defined in server_list
|
44
39
|
# are available
|
45
40
|
#
|
41
|
+
# @api public
|
46
42
|
def resolve(session, name, ssl_context: nil, canceled_handler: nil)
|
47
43
|
# If we're configured to use an explicit service host, e.g. report_server
|
48
44
|
# then don't use server_list to resolve the `:report` service.
|
@@ -54,7 +50,7 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
|
|
54
50
|
end
|
55
51
|
|
56
52
|
# Return the first simple service status endpoint we can connect to
|
57
|
-
@server_list_setting.value.
|
53
|
+
@server_list_setting.value.each do |server|
|
58
54
|
host = server[0]
|
59
55
|
port = server[1] || @default_port
|
60
56
|
|
@@ -64,21 +60,10 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
|
|
64
60
|
@resolved_url = service.url
|
65
61
|
return Puppet::HTTP::Service.create_service(@client, session, name, @resolved_url.host, @resolved_url.port)
|
66
62
|
rescue Puppet::HTTP::ResponseError => detail
|
67
|
-
|
68
|
-
|
69
|
-
{ host: service.url.host, port: service.url.port, code: detail.response.code, reason: detail.response.reason } +
|
70
|
-
' ' + _("Trying with next server from server_list."))
|
71
|
-
else
|
72
|
-
Puppet.log_exception(detail, _("Puppet server %{host}:%{port} is unavailable: %{code} %{reason}") %
|
73
|
-
{ host: service.url.host, port: service.url.port, code: detail.response.code, reason: detail.response.reason })
|
74
|
-
end
|
63
|
+
Puppet.log_exception(detail, _("Puppet server %{host}:%{port} is unavailable: %{code} %{reason}") %
|
64
|
+
{ host: service.url.host, port: service.url.port, code: detail.response.code, reason: detail.response.reason })
|
75
65
|
rescue Puppet::HTTP::HTTPError => detail
|
76
|
-
|
77
|
-
Puppet.warning(_("Unable to connect to server from server_list setting: %{detail}") % {detail: detail} +
|
78
|
-
' ' + _("Trying with next server from server_list."))
|
79
|
-
else
|
80
|
-
Puppet.log_exception(detail, _("Unable to connect to server from server_list setting: %{detail}") % {detail: detail})
|
81
|
-
end
|
66
|
+
Puppet.log_exception(detail, _("Unable to connect to server from server_list setting: %{detail}") % {detail: detail})
|
82
67
|
end
|
83
68
|
end
|
84
69
|
|
@@ -1,24 +1,21 @@
|
|
1
|
-
#
|
2
|
-
# @api private
|
3
|
-
#
|
4
1
|
# Resolve a service using settings. This is the default resolver if none of the
|
5
2
|
# other resolvers find a functional connection.
|
6
3
|
#
|
4
|
+
# @api public
|
7
5
|
class Puppet::HTTP::Resolver::Settings < Puppet::HTTP::Resolver
|
8
|
-
|
9
|
-
# @api private
|
10
|
-
#
|
6
|
+
|
11
7
|
# Resolve a service using the default server and port settings for this service.
|
12
8
|
#
|
13
9
|
# @param [Puppet::HTTP::Session] session
|
14
10
|
# @param [Symbol] name the name of the service to be resolved
|
15
11
|
# @param [Puppet::SSL::SSLContext] ssl_context
|
16
|
-
# @param [Proc] canceled_handler
|
12
|
+
# @param [Proc] canceled_handler optional callback allowing a resolver
|
17
13
|
# to cancel resolution.
|
18
14
|
#
|
19
15
|
# @return [Puppet::HTTP::Service] if the service successfully connects,
|
20
16
|
# return it. Otherwise, return nil.
|
21
17
|
#
|
18
|
+
# @api public
|
22
19
|
def resolve(session, name, ssl_context: nil, canceled_handler: nil)
|
23
20
|
service = Puppet::HTTP::Service.create_service(@client, session, name)
|
24
21
|
check_connection?(session, service, ssl_context: ssl_context) ? service : nil
|
@@ -1,11 +1,9 @@
|
|
1
|
+
# Resolve a service using DNS SRV records.
|
1
2
|
#
|
2
|
-
# @api
|
3
|
-
#
|
4
|
-
# Resolve a service using SRV
|
5
|
-
#
|
3
|
+
# @api public
|
6
4
|
class Puppet::HTTP::Resolver::SRV < Puppet::HTTP::Resolver
|
7
|
-
|
8
|
-
#
|
5
|
+
|
6
|
+
# Create an DNS SRV resolver.
|
9
7
|
#
|
10
8
|
# @param [Puppet::HTTP::Client] client
|
11
9
|
# @param [String] domain srv domain
|
@@ -14,23 +12,21 @@ class Puppet::HTTP::Resolver::SRV < Puppet::HTTP::Resolver
|
|
14
12
|
def initialize(client, domain:, dns: Resolv::DNS.new)
|
15
13
|
@client = client
|
16
14
|
@srv_domain = domain
|
17
|
-
@delegate = Puppet::
|
15
|
+
@delegate = Puppet::HTTP::DNS.new(dns)
|
18
16
|
end
|
19
17
|
|
20
|
-
#
|
21
|
-
# @api private
|
22
|
-
#
|
23
18
|
# Walk the available srv records and return the first that successfully connects
|
24
19
|
#
|
25
20
|
# @param [Puppet::HTTP::Session] session
|
26
21
|
# @param [Symbol] name the service being resolved
|
27
22
|
# @param [Puppet::SSL::SSLContext] ssl_context
|
28
|
-
# @param [Proc] canceled_handler
|
23
|
+
# @param [Proc] canceled_handler optional callback allowing a resolver
|
29
24
|
# to cancel resolution.
|
30
25
|
#
|
31
26
|
# @return [Puppet::HTTP::Service] if an available service is found, return
|
32
27
|
# it. Return nil otherwise.
|
33
28
|
#
|
29
|
+
# @api public
|
34
30
|
def resolve(session, name, ssl_context: nil, canceled_handler: nil)
|
35
31
|
# Here we pass our HTTP service name as the DNS SRV service name
|
36
32
|
# This is fine for :ca, but note that :puppet and :file are handled
|
data/lib/puppet/http/response.rb
CHANGED
@@ -1,118 +1,100 @@
|
|
1
|
+
# Represents the response returned from the server from an HTTP request.
|
1
2
|
#
|
2
|
-
# @api
|
3
|
-
#
|
4
|
-
# Represents the response returned from the server from an HTTP request
|
5
|
-
#
|
3
|
+
# @api abstract
|
4
|
+
# @api public
|
6
5
|
class Puppet::HTTP::Response
|
7
|
-
# @
|
8
|
-
# @return [Net::HTTP] the Net::HTTP response
|
9
|
-
attr_reader :nethttp
|
10
|
-
|
11
|
-
# @api private
|
12
|
-
# @return [URI] the response uri
|
6
|
+
# @return [URI] the response url
|
13
7
|
attr_reader :url
|
14
8
|
|
9
|
+
# Create a response associated with the URL.
|
15
10
|
#
|
16
|
-
# @api private
|
17
|
-
#
|
18
|
-
# Object to represent the response returned from an HTTP request
|
19
|
-
#
|
20
|
-
# @param [Net::HTTP] nethttp the request response
|
21
11
|
# @param [URI] url
|
22
|
-
#
|
23
|
-
|
24
|
-
|
12
|
+
# @param [Integer] HTTP status
|
13
|
+
# @param [String] HTTP reason
|
14
|
+
def initialize(url, code, reason)
|
25
15
|
@url = url
|
16
|
+
@code = code
|
17
|
+
@reason = reason
|
26
18
|
end
|
27
19
|
|
28
|
-
#
|
29
|
-
# @api private
|
30
|
-
#
|
31
|
-
# Extract the response code
|
20
|
+
# Return the response code.
|
32
21
|
#
|
33
22
|
# @return [Integer] Response code for the request
|
34
23
|
#
|
24
|
+
# @api public
|
35
25
|
def code
|
36
|
-
@
|
26
|
+
@code
|
37
27
|
end
|
38
28
|
|
39
|
-
#
|
40
|
-
# @api private
|
41
|
-
#
|
42
|
-
# Extract the response message
|
29
|
+
# Return the response message.
|
43
30
|
#
|
44
31
|
# @return [String] Response message for the request
|
45
32
|
#
|
33
|
+
# @api public
|
46
34
|
def reason
|
47
|
-
@
|
35
|
+
@reason
|
48
36
|
end
|
49
37
|
|
50
|
-
#
|
51
|
-
# @api private
|
52
|
-
#
|
53
38
|
# Returns the entire response body. Can be used instead of
|
54
|
-
# Puppet::HTTP::Response.read_body
|
39
|
+
# `Puppet::HTTP::Response.read_body`, but both methods cannot be used for the
|
55
40
|
# same response.
|
56
41
|
#
|
57
42
|
# @return [String] Response body for the request
|
58
43
|
#
|
44
|
+
# @api public
|
59
45
|
def body
|
60
|
-
|
46
|
+
raise NotImplementedError
|
61
47
|
end
|
62
48
|
|
63
|
-
#
|
64
|
-
# @api private
|
65
|
-
#
|
66
49
|
# Streams the response body to the caller in chunks. Can be used instead of
|
67
|
-
# Puppet::HTTP::Response.body
|
50
|
+
# `Puppet::HTTP::Response.body`, but both methods cannot be used for the same
|
68
51
|
# response.
|
69
52
|
#
|
70
53
|
# @yield [String] Streams the response body in chunks
|
71
54
|
#
|
72
55
|
# @raise [ArgumentError] raise if a block is not given
|
73
56
|
#
|
57
|
+
# @api public
|
74
58
|
def read_body(&block)
|
75
|
-
raise
|
76
|
-
|
77
|
-
@nethttp.read_body(&block)
|
59
|
+
raise NotImplementedError
|
78
60
|
end
|
79
61
|
|
80
|
-
#
|
81
|
-
# @api private
|
82
|
-
#
|
83
|
-
# Check if the request received a response of success
|
62
|
+
# Check if the request received a response of success (HTTP 2xx).
|
84
63
|
#
|
85
64
|
# @return [Boolean] Returns true if the response indicates success
|
86
65
|
#
|
66
|
+
# @api public
|
87
67
|
def success?
|
88
|
-
@
|
68
|
+
200 <= @code && @code < 300
|
89
69
|
end
|
90
70
|
|
91
|
-
# @api private
|
92
|
-
#
|
93
71
|
# Get a header case-insensitively.
|
72
|
+
#
|
94
73
|
# @param [String] name The header name
|
95
74
|
# @return [String] The header value
|
96
75
|
#
|
76
|
+
# @api public
|
97
77
|
def [](name)
|
98
|
-
|
78
|
+
raise NotImplementedError
|
99
79
|
end
|
100
80
|
|
101
|
-
# @api private
|
102
|
-
#
|
103
81
|
# Yield each header name and value. Returns an enumerator if no block is given.
|
104
82
|
#
|
105
83
|
# @yieldparam [String] header name
|
106
84
|
# @yieldparam [String] header value
|
107
85
|
#
|
86
|
+
# @api public
|
108
87
|
def each_header(&block)
|
109
|
-
|
88
|
+
raise NotImplementedError
|
110
89
|
end
|
111
90
|
|
112
|
-
#
|
113
|
-
#
|
114
|
-
#
|
91
|
+
# Ensure the response body is fully read so that the server is not blocked
|
92
|
+
# waiting for us to read data from the socket. Also if the caller streamed
|
93
|
+
# the response, but didn't read the data, we need a way to drain the socket
|
94
|
+
# before adding the connection back to the connection pool, otherwise the
|
95
|
+
# unread response data would "leak" into the next HTTP request/response.
|
115
96
|
#
|
97
|
+
# @api public
|
116
98
|
def drain
|
117
99
|
body
|
118
100
|
true
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Puppet::HTTP::ResponseConverter
|
2
|
+
module_function
|
3
|
+
|
4
|
+
# Borrowed from puppetserver, see https://github.com/puppetlabs/puppetserver/commit/a1ebeaaa5af590003ccd23c89f808ba4f0c89609
|
5
|
+
def to_ruby_response(response)
|
6
|
+
str_code = response.code.to_s
|
7
|
+
|
8
|
+
# Copied from Net::HTTPResponse because it is private there.
|
9
|
+
clazz = Net::HTTPResponse::CODE_TO_OBJ[str_code] or
|
10
|
+
Net::HTTPResponse::CODE_CLASS_TO_OBJ[str_code[0,1]] or
|
11
|
+
Net::HTTPUnknownResponse
|
12
|
+
result = clazz.new(nil, str_code, nil)
|
13
|
+
result.body = response.body
|
14
|
+
# This is nasty, nasty. But apparently there is no way to create
|
15
|
+
# an instance of Net::HttpResponse from outside of the library and have
|
16
|
+
# the body be readable, unless you do stupid things like this.
|
17
|
+
result.instance_variable_set(:@read, true)
|
18
|
+
response.each_header do |k,v|
|
19
|
+
result[k] = v
|
20
|
+
end
|
21
|
+
result
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# Adapts Net::HTTPResponse to Puppet::HTTP::Response
|
2
|
+
#
|
3
|
+
# @api public
|
4
|
+
class Puppet::HTTP::ResponseNetHTTP < Puppet::HTTP::Response
|
5
|
+
|
6
|
+
# Create a response associated with the URL.
|
7
|
+
#
|
8
|
+
# @param [URI] url
|
9
|
+
# @param [Net::HTTPResponse] nethttp The response
|
10
|
+
def initialize(url, nethttp)
|
11
|
+
super(url, nethttp.code.to_i, nethttp.message)
|
12
|
+
|
13
|
+
@nethttp = nethttp
|
14
|
+
end
|
15
|
+
|
16
|
+
# (see Puppet::HTTP::Response#body)
|
17
|
+
def body
|
18
|
+
@nethttp.body
|
19
|
+
end
|
20
|
+
|
21
|
+
# (see Puppet::HTTP::Response#read_body)
|
22
|
+
def read_body(&block)
|
23
|
+
raise ArgumentError, "A block is required" unless block_given?
|
24
|
+
|
25
|
+
@nethttp.read_body(&block)
|
26
|
+
end
|
27
|
+
|
28
|
+
# (see Puppet::HTTP::Response#success?)
|
29
|
+
def success?
|
30
|
+
@nethttp.is_a?(Net::HTTPSuccess)
|
31
|
+
end
|
32
|
+
|
33
|
+
# (see Puppet::HTTP::Response#[])
|
34
|
+
def [](name)
|
35
|
+
@nethttp[name]
|
36
|
+
end
|
37
|
+
|
38
|
+
# (see Puppet::HTTP::Response#each_header)
|
39
|
+
def each_header(&block)
|
40
|
+
@nethttp.each_header(&block)
|
41
|
+
end
|
42
|
+
end
|
@@ -1,28 +1,20 @@
|
|
1
1
|
require 'date'
|
2
2
|
require 'time'
|
3
3
|
|
4
|
-
#
|
5
|
-
# @api private
|
6
|
-
#
|
7
4
|
# Parse information relating to responses containing a Retry-After headers
|
8
5
|
#
|
6
|
+
# @api private
|
9
7
|
class Puppet::HTTP::RetryAfterHandler
|
10
|
-
|
11
|
-
# @api private
|
12
|
-
#
|
8
|
+
|
13
9
|
# Create a handler to allow the system to sleep between HTTP requests
|
14
10
|
#
|
15
11
|
# @param [Integer] retry_limit number of retries allowed
|
16
12
|
# @param [Integer] max_sleep maximum sleep time allowed
|
17
|
-
#
|
18
13
|
def initialize(retry_limit, max_sleep)
|
19
14
|
@retry_limit = retry_limit
|
20
15
|
@max_sleep = max_sleep
|
21
16
|
end
|
22
17
|
|
23
|
-
#
|
24
|
-
# @api private
|
25
|
-
#
|
26
18
|
# Does the response from the server tell us to wait until we attempt the next
|
27
19
|
# retry?
|
28
20
|
#
|
@@ -32,6 +24,7 @@ class Puppet::HTTP::RetryAfterHandler
|
|
32
24
|
# @return [Boolean] Return true if the response code is 429 or 503, return
|
33
25
|
# false otherwise
|
34
26
|
#
|
27
|
+
# @api private
|
35
28
|
def retry_after?(request, response)
|
36
29
|
case response.code
|
37
30
|
when 429, 503
|
@@ -41,9 +34,6 @@ class Puppet::HTTP::RetryAfterHandler
|
|
41
34
|
end
|
42
35
|
end
|
43
36
|
|
44
|
-
#
|
45
|
-
# @api private
|
46
|
-
#
|
47
37
|
# The amount of time to wait before attempting a retry
|
48
38
|
#
|
49
39
|
# @param [Net::HTTP] request
|
@@ -55,6 +45,7 @@ class Puppet::HTTP::RetryAfterHandler
|
|
55
45
|
# @raise [Puppet::HTTP::TooManyRetryAfters] raise if we have hit our retry
|
56
46
|
# limit
|
57
47
|
#
|
48
|
+
# @api private
|
58
49
|
def retry_after_interval(request, response, retries)
|
59
50
|
raise Puppet::HTTP::TooManyRetryAfters.new(request.uri) if retries >= @retry_limit
|
60
51
|
|