puppet 6.29.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 +5 -7
- data/Gemfile.lock +52 -143
- data/README.md +5 -5
- data/conf/fileserver.conf +5 -10
- data/ext/README.environment +8 -0
- data/ext/build_defaults.yaml +1 -1
- data/ext/dbfix.sql +132 -0
- data/ext/debian/README.Debian +8 -0
- data/ext/debian/README.source +2 -0
- data/ext/debian/TODO.Debian +1 -0
- data/ext/debian/changelog.erb +1122 -0
- data/ext/debian/compat +1 -0
- data/ext/debian/control +144 -0
- data/ext/debian/copyright +339 -0
- data/ext/debian/docs +1 -0
- data/ext/debian/fileserver.conf +41 -0
- data/ext/debian/puppet-common.dirs +13 -0
- data/ext/debian/puppet-common.install +3 -0
- data/ext/debian/puppet-common.lintian-overrides +5 -0
- data/ext/debian/puppet-common.manpages +28 -0
- data/ext/debian/puppet-common.postinst +35 -0
- data/ext/debian/puppet-common.postrm +33 -0
- data/ext/debian/puppet-el.dirs +1 -0
- data/ext/debian/puppet-el.emacsen-install +25 -0
- data/ext/debian/puppet-el.emacsen-remove +11 -0
- data/ext/debian/puppet-el.emacsen-startup +9 -0
- data/ext/debian/puppet-el.install +1 -0
- data/ext/debian/puppet-testsuite.install +2 -0
- data/ext/debian/puppet-testsuite.lintian-overrides +4 -0
- data/ext/debian/puppet.lintian-overrides +3 -0
- data/ext/debian/puppet.logrotate +20 -0
- data/ext/debian/puppet.postinst +20 -0
- data/ext/debian/puppet.postrm +20 -0
- data/ext/debian/puppet.preinst +20 -0
- data/ext/debian/puppetmaster-common.install +2 -0
- data/ext/debian/puppetmaster-common.manpages +2 -0
- data/ext/debian/puppetmaster-common.postinst +6 -0
- data/ext/debian/puppetmaster-passenger.dirs +4 -0
- data/ext/debian/puppetmaster-passenger.postinst +162 -0
- data/ext/debian/puppetmaster-passenger.postrm +61 -0
- data/ext/debian/puppetmaster.README.debian +17 -0
- data/ext/debian/puppetmaster.default +14 -0
- data/ext/debian/puppetmaster.init +137 -0
- data/ext/debian/puppetmaster.lintian-overrides +3 -0
- data/ext/debian/puppetmaster.postinst +20 -0
- data/ext/debian/puppetmaster.postrm +5 -0
- data/ext/debian/puppetmaster.preinst +22 -0
- data/ext/debian/rules +132 -0
- data/ext/debian/source/format +1 -0
- data/ext/debian/source/options +1 -0
- data/ext/debian/vim-puppet.README.Debian +13 -0
- data/ext/debian/vim-puppet.dirs +5 -0
- data/ext/debian/vim-puppet.yaml +7 -0
- data/ext/debian/watch +2 -0
- data/ext/freebsd/puppetd +26 -0
- data/ext/freebsd/puppetmasterd +26 -0
- data/ext/gentoo/conf.d/puppet +5 -0
- data/ext/gentoo/conf.d/puppetmaster +12 -0
- data/ext/gentoo/init.d/puppet +38 -0
- data/ext/gentoo/init.d/puppetmaster +51 -0
- data/ext/gentoo/puppet/fileserver.conf +41 -0
- data/ext/ips/puppet-agent +44 -0
- data/ext/ips/puppet-master +44 -0
- data/ext/ips/puppet.p5m.erb +12 -0
- data/ext/ips/puppetagent.xml +42 -0
- data/ext/ips/puppetmaster.xml +42 -0
- data/ext/ips/rules +19 -0
- data/ext/ips/transforms +34 -0
- data/ext/ldap/puppet.schema +24 -0
- data/ext/logcheck/puppet +23 -0
- data/{examples → ext}/nagios/check_puppet.rb +2 -2
- data/ext/osx/file_mapping.yaml +28 -0
- data/ext/osx/postflight.erb +109 -0
- data/ext/osx/preflight.erb +52 -0
- data/ext/osx/prototype.plist.erb +38 -0
- data/ext/osx/puppet.plist +0 -2
- data/ext/project_data.yaml +2 -16
- data/ext/redhat/fileserver.conf +41 -0
- data/ext/redhat/logrotate +21 -0
- data/ext/redhat/puppet.spec.erb +841 -0
- data/ext/redhat/server.init +128 -0
- data/ext/redhat/server.sysconfig +13 -0
- data/ext/solaris/pkginfo +6 -0
- data/ext/solaris/smf/puppetd.xml +77 -0
- data/ext/solaris/smf/puppetmasterd.xml +77 -0
- data/ext/solaris/smf/svc-puppetd +71 -0
- data/ext/solaris/smf/svc-puppetmasterd +67 -0
- data/ext/suse/puppet.spec +310 -0
- data/ext/suse/server.init +173 -0
- data/ext/windows/service/daemon.rb +6 -5
- data/ext/yaml_nodes.rb +105 -0
- data/install.rb +21 -17
- data/lib/puppet/agent.rb +11 -47
- data/lib/puppet/application/agent.rb +16 -18
- data/lib/puppet/application/apply.rb +4 -24
- data/lib/puppet/application/device.rb +100 -106
- data/lib/puppet/application/filebucket.rb +13 -10
- data/lib/puppet/application/lookup.rb +24 -74
- data/lib/puppet/application/resource.rb +16 -32
- data/lib/puppet/application/script.rb +0 -2
- data/lib/puppet/application/ssl.rb +1 -13
- data/lib/puppet/application.rb +178 -108
- data/lib/puppet/application_support.rb +0 -7
- data/lib/puppet/concurrent/thread_local_singleton.rb +3 -6
- data/lib/puppet/configurer/downloader.rb +1 -2
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/configurer.rb +86 -183
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/defaults.rb +130 -244
- data/lib/puppet/environments.rb +82 -146
- data/lib/puppet/face/facts.rb +5 -103
- data/lib/puppet/face/generate.rb +0 -2
- data/lib/puppet/face/help/action.erb +0 -1
- data/lib/puppet/face/help/face.erb +0 -1
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/node/clean.rb +0 -11
- data/lib/puppet/face/plugin.rb +5 -8
- 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/ffi/windows.rb +12 -0
- data/lib/puppet/file_serving/configuration/parser.rb +3 -34
- data/lib/puppet/file_serving/configuration.rb +0 -8
- data/lib/puppet/file_serving/fileset.rb +2 -14
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/metadata.rb +0 -3
- data/lib/puppet/file_serving/mount/file.rb +4 -4
- data/lib/puppet/file_serving/mount.rb +1 -2
- data/lib/puppet/file_system/file_impl.rb +8 -10
- data/lib/puppet/file_system/jruby.rb +1 -1
- data/lib/puppet/file_system/memory_file.rb +1 -8
- data/lib/puppet/file_system/windows.rb +6 -8
- data/lib/puppet/file_system.rb +1 -1
- data/lib/puppet/forge/repository.rb +0 -1
- data/lib/puppet/forge.rb +4 -4
- 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/find_template.rb +2 -2
- 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/next.rb +1 -18
- 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 +10 -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/functions/versioncmp.rb +2 -6
- data/lib/puppet/generate/models/type/type.rb +4 -1
- data/lib/puppet/generate/type.rb +0 -9
- data/lib/puppet/http/client.rb +167 -137
- 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 -17
- 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/resolver.rb +5 -15
- 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/ca.rb +11 -22
- data/lib/puppet/http/service/compiler.rb +23 -144
- 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/service.rb +12 -26
- data/lib/puppet/http/session.rb +11 -20
- data/lib/puppet/{network/http → http}/site.rb +1 -2
- data/lib/puppet/http.rb +22 -13
- data/lib/puppet/indirector/catalog/compiler.rb +6 -25
- data/lib/puppet/indirector/catalog/rest.rb +2 -5
- data/lib/puppet/indirector/facts/facter.rb +6 -6
- 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/indirection.rb +1 -1
- 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/indirector/terminus.rb +0 -4
- data/lib/puppet/interface/documentation.rb +0 -1
- data/lib/puppet/module/plan.rb +1 -0
- data/lib/puppet/module/task.rb +1 -1
- data/lib/puppet/module.rb +0 -1
- data/lib/puppet/module_tool/applications/installer.rb +2 -56
- data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
- data/lib/puppet/module_tool/applications.rb +0 -1
- 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/api/indirected_routes.rb +3 -21
- 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.rb +3 -3
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node/environment.rb +11 -10
- data/lib/puppet/node.rb +2 -31
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +4 -2
- data/lib/puppet/parser/ast/leaf.rb +2 -3
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
- data/lib/puppet/parser/compiler.rb +0 -198
- data/lib/puppet/parser/functions/fqdn_rand.rb +6 -14
- data/lib/puppet/parser/resource.rb +1 -70
- data/lib/puppet/parser/scope.rb +0 -1
- data/lib/puppet/parser/templatewrapper.rb +1 -2
- data/lib/puppet/pops/evaluator/closure.rb +5 -7
- 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 -4
- 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/lookup/lookup_adapter.rb +2 -3
- data/lib/puppet/pops/model/ast.pp +0 -42
- data/lib/puppet/pops/model/ast.rb +0 -291
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/model/factory.rb +1 -47
- 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/code_merger.rb +4 -4
- data/lib/puppet/pops/parser/egrammar.ra +0 -58
- data/lib/puppet/pops/parser/eparser.rb +1685 -1896
- data/lib/puppet/pops/parser/lexer2.rb +91 -92
- data/lib/puppet/pops/parser/parser_support.rb +0 -5
- data/lib/puppet/pops/parser/slurp_support.rb +0 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
- 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_formatter.rb +3 -4
- 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 +1 -2
- 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/aix_object.rb +1 -1
- data/lib/puppet/provider/exec/posix.rb +4 -16
- data/lib/puppet/provider/group/groupadd.rb +10 -18
- 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 +2 -23
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +1 -4
- data/lib/puppet/provider/package/puppetserver_gem.rb +17 -8
- data/lib/puppet/provider/package/windows/exe_package.rb +1 -30
- data/lib/puppet/provider/package/windows/package.rb +1 -2
- data/lib/puppet/provider/package/windows.rb +1 -14
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +0 -3
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/debian.rb +0 -2
- data/lib/puppet/provider/service/init.rb +9 -10
- data/lib/puppet/provider/service/launchd.rb +2 -2
- data/lib/puppet/provider/service/redhat.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +194 -76
- data/lib/puppet/provider/service/systemd.rb +6 -16
- data/lib/puppet/provider/service/upstart.rb +5 -5
- data/lib/puppet/provider/service/windows.rb +0 -38
- data/lib/puppet/provider/user/aix.rb +3 -46
- data/lib/puppet/provider/user/directoryservice.rb +11 -39
- data/lib/puppet/provider/user/useradd.rb +24 -134
- data/lib/puppet/provider.rb +1 -14
- data/lib/puppet/reference/configuration.rb +8 -7
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/reference/providers.rb +2 -2
- data/lib/puppet/resource/catalog.rb +2 -15
- data/lib/puppet/resource/type.rb +3 -119
- data/lib/puppet/resource/type_collection.rb +3 -49
- data/lib/puppet/resource.rb +6 -127
- data/lib/puppet/runtime.rb +2 -13
- 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/settings.rb +82 -98
- 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 +36 -75
- data/lib/puppet/ssl/state_machine.rb +20 -14
- data/lib/puppet/ssl/verifier.rb +2 -6
- data/lib/puppet/ssl.rb +10 -6
- data/lib/puppet/test/test_helper.rb +2 -7
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/persistence.rb +1 -21
- data/lib/puppet/transaction/report.rb +3 -19
- data/lib/puppet/transaction.rb +1 -7
- data/lib/puppet/type/exec.rb +6 -36
- data/lib/puppet/type/file/checksum.rb +1 -1
- data/lib/puppet/type/file/data_sync.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/file.rb +12 -32
- data/lib/puppet/type/filebucket.rb +4 -4
- data/lib/puppet/type/group.rb +1 -0
- data/lib/puppet/type/package.rb +8 -16
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/service.rb +41 -26
- data/lib/puppet/type/tidy.rb +3 -22
- data/lib/puppet/type/user.rb +13 -35
- data/lib/puppet/type.rb +1 -77
- data/lib/puppet/util/autoload.rb +8 -1
- data/lib/puppet/util/command_line.rb +1 -1
- data/lib/puppet/util/execution.rb +0 -11
- data/lib/puppet/util/filetype.rb +2 -2
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/json.rb +0 -20
- data/lib/puppet/util/log.rb +4 -8
- data/lib/puppet/util/logging.rb +25 -1
- data/lib/puppet/util/monkey_patches.rb +2 -59
- data/lib/puppet/util/package.rb +16 -25
- data/lib/puppet/util/pidlock.rb +1 -1
- data/lib/puppet/util/posix.rb +5 -54
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
- 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/suidmanager.rb +2 -1
- data/lib/puppet/util/symbolic_file_mode.rb +17 -29
- data/lib/puppet/util/tagging.rb +0 -1
- 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 +11 -457
- data/lib/puppet/util/windows/sid.rb +2 -6
- data/lib/puppet/util/windows/string.rb +12 -13
- data/lib/puppet/util/windows/user.rb +2 -0
- data/lib/puppet/util/windows.rb +3 -11
- data/lib/puppet/util/yaml.rb +1 -42
- data/lib/puppet/util.rb +5 -5
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509/cert_provider.rb +29 -1
- data/lib/puppet/x509.rb +5 -1
- data/lib/puppet.rb +34 -27
- data/locales/puppet.pot +9633 -5
- data/man/man5/puppet.conf.5 +286 -401
- data/man/man8/puppet-agent.8 +2 -5
- 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 +6 -9
- data/man/man8/puppet-module.8 +3 -60
- 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/forge/bacula.json +1 -1
- data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
- data/spec/integration/application/agent_spec.rb +50 -406
- data/spec/integration/application/apply_spec.rb +1 -20
- data/spec/integration/application/filebucket_spec.rb +16 -32
- data/spec/integration/application/help_spec.rb +2 -0
- data/spec/integration/application/lookup_spec.rb +50 -81
- data/spec/integration/application/module_spec.rb +0 -21
- data/spec/integration/application/plugin_spec.rb +24 -2
- data/spec/integration/configurer_spec.rb +2 -18
- 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 +4 -63
- data/spec/integration/indirector/direct_file_server_spec.rb +3 -1
- data/spec/integration/indirector/facts/facter_spec.rb +39 -93
- 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 -47
- data/spec/integration/resource/type_collection_spec.rb +6 -2
- data/spec/integration/transaction/report_spec.rb +1 -1
- data/spec/integration/transaction_spec.rb +9 -4
- data/spec/integration/type/exec_spec.rb +45 -70
- data/spec/integration/type/file_spec.rb +7 -6
- data/spec/integration/type/package_spec.rb +6 -6
- data/spec/integration/util/rdoc/parser_spec.rb +1 -1
- 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/process_spec.rb +9 -1
- 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/https.rb +1 -1
- data/spec/lib/puppet_spec/modules.rb +2 -13
- data/spec/lib/puppet_spec/puppetserver.rb +3 -55
- data/spec/lib/puppet_spec/settings.rb +1 -1
- data/spec/shared_behaviours/documentation_on_faces.rb +2 -0
- data/spec/spec_helper.rb +17 -13
- data/spec/unit/agent_spec.rb +8 -38
- data/spec/unit/application/agent_spec.rb +19 -33
- data/spec/unit/application/apply_spec.rb +56 -76
- data/spec/unit/application/facts_spec.rb +12 -456
- data/spec/unit/application/filebucket_spec.rb +43 -39
- data/spec/unit/application/lookup_spec.rb +10 -131
- data/spec/unit/application/resource_spec.rb +0 -29
- 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 +68 -327
- 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/daemon_spec.rb +11 -2
- data/spec/unit/defaults_spec.rb +68 -55
- data/spec/unit/environments_spec.rb +68 -408
- data/spec/unit/face/generate_spec.rb +0 -64
- data/spec/unit/face/node_spec.rb +11 -0
- data/spec/unit/face/plugin_spec.rb +73 -33
- data/spec/unit/file_bucket/dipper_spec.rb +2 -2
- data/spec/unit/file_bucket/file_spec.rb +1 -1
- data/spec/unit/file_serving/configuration/parser_spec.rb +15 -41
- data/spec/unit/file_serving/configuration_spec.rb +10 -26
- 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 +4 -56
- data/spec/unit/forge/module_release_spec.rb +10 -5
- 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/logging_spec.rb +0 -1
- data/spec/unit/functions/lookup_spec.rb +0 -64
- data/spec/unit/functions/unwrap_spec.rb +0 -8
- data/spec/unit/functions/upcase_spec.rb +1 -1
- data/spec/unit/functions/versioncmp_spec.rb +4 -40
- data/spec/unit/functions4_spec.rb +2 -2
- data/spec/unit/gettext/config_spec.rb +0 -12
- data/spec/unit/http/client_spec.rb +8 -84
- 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 -193
- 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 -101
- data/spec/unit/indirector/catalog/rest_spec.rb +0 -8
- 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 +15 -18
- 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/store_configs_spec.rb +7 -0
- data/spec/unit/indirector_spec.rb +2 -2
- data/spec/unit/interface/action_spec.rb +9 -0
- data/spec/unit/module_spec.rb +1 -15
- data/spec/unit/module_tool/applications/installer_spec.rb +0 -105
- 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 -51
- 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 -60
- 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_containers_spec.rb +13 -2
- 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/serialization/to_stringified_spec.rb +0 -5
- 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 -12
- data/spec/unit/pops/types/type_factory_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +61 -51
- 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 +33 -1
- 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/pip2_spec.rb +1 -1
- data/spec/unit/provider/package/pip3_spec.rb +1 -1
- data/spec/unit/provider/package/pip_spec.rb +12 -44
- data/spec/unit/provider/package/pkg_spec.rb +4 -29
- data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +4 -3
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +3 -3
- data/spec/unit/provider/package/windows/exe_package_spec.rb +0 -17
- data/spec/unit/provider/parsedfile_spec.rb +0 -10
- data/spec/unit/provider/service/gentoo_spec.rb +5 -6
- data/spec/unit/provider/service/init_spec.rb +9 -16
- data/spec/unit/provider/service/launchd_spec.rb +0 -11
- data/spec/unit/provider/service/openwrt_spec.rb +29 -23
- data/spec/unit/provider/service/redhat_spec.rb +2 -3
- data/spec/unit/provider/service/smf_spec.rb +401 -165
- data/spec/unit/provider/service/systemd_spec.rb +9 -54
- data/spec/unit/provider/service/windows_spec.rb +0 -203
- data/spec/unit/provider/user/aix_spec.rb +0 -105
- data/spec/unit/provider/user/directoryservice_spec.rb +36 -68
- 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 +5 -114
- data/spec/unit/provider_spec.rb +12 -22
- data/spec/unit/puppet_spec.rb +4 -12
- data/spec/unit/resource/catalog_spec.rb +2 -15
- 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 +12 -125
- 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 +21 -45
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/ssl_provider_spec.rb +3 -80
- data/spec/unit/ssl/state_machine_spec.rb +5 -21
- 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/persistence_spec.rb +0 -51
- 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 -87
- data/spec/unit/type/tidy_spec.rb +8 -24
- data/spec/unit/type_spec.rb +24 -4
- 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 -5
- 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 +13 -92
- data/spec/unit/util_spec.rb +6 -31
- data/tasks/generate_cert_fixtures.rake +7 -17
- data/tasks/parallel.rake +3 -3
- metadata +138 -301
- data/conf/auth.conf +0 -150
- data/ext/README.md +0 -13
- 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/facter_impl.rb +0 -96
- data/lib/puppet/ffi/posix/constants.rb +0 -14
- data/lib/puppet/ffi/posix/functions.rb +0 -24
- data/lib/puppet/ffi/posix.rb +0 -10
- data/lib/puppet/file_serving/mount/scripts.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/local.rb +0 -12
- data/lib/puppet/indirector/status/rest.rb +0 -27
- data/lib/puppet/indirector/status.rb +0 -3
- 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/default_validator.rb +0 -209
- data/lib/puppet/ssl/validator/no_validator.rb +0 -22
- data/lib/puppet/ssl/validator.rb +0 -61
- 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/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/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
- 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 -92
- data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +0 -3
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +0 -4
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +0 -3
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +0 -8
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +0 -25
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +0 -19
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +0 -20
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +0 -8
- 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 -68
- data/spec/integration/application/ssl_spec.rb +0 -20
- data/spec/integration/l10n/compiler_spec.rb +0 -37
- data/spec/integration/network/authconfig_spec.rb +0 -256
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
- data/spec/shared_contexts/l10n.rb +0 -32
- data/spec/unit/application/man_spec.rb +0 -52
- data/spec/unit/capability_spec.rb +0 -414
- data/spec/unit/concurrent/thread_local_singleton_spec.rb +0 -39
- 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/facter_impl_spec.rb +0 -31
- data/spec/unit/file_serving/mount/scripts_spec.rb +0 -69
- 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 -407
- 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/json_spec.rb +0 -126
- data/spec/unit/util/ssl_spec.rb +0 -91
- data/spec/unit/util/windows_spec.rb +0 -23
- /data/{examples/enc → ext}/regexp_nodes/classes/databases +0 -0
- /data/{examples/enc → ext}/regexp_nodes/classes/webservers +0 -0
- /data/{examples/enc → ext}/regexp_nodes/environment/development +0 -0
- /data/{examples/enc → ext}/regexp_nodes/parameters/service/prod +0 -0
- /data/{examples/enc → ext}/regexp_nodes/parameters/service/qa +0 -0
- /data/{examples/enc → ext}/regexp_nodes/parameters/service/sandbox +0 -0
- /data/{examples/enc → ext}/regexp_nodes/regexp_nodes.rb +0 -0
- /data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
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
|
@@ -25,10 +98,10 @@ class Puppet::HTTP::Client
|
|
25
98
|
# used if :include_system_store is set to true
|
26
99
|
# @param [Integer] redirect_limit default number of HTTP redirections to allow
|
27
100
|
# in a given request. Can also be specified per-request.
|
28
|
-
# @param [Integer] retry_limit number of HTTP
|
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,68 +272,34 @@ 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
|
-
@default_ssl_context = nil
|
276
|
-
@default_system_ssl_context = nil
|
277
|
-
end
|
278
|
-
|
279
|
-
def default_ssl_context
|
280
|
-
cert = Puppet::X509::CertProvider.new
|
281
|
-
password = cert.load_private_key_password
|
282
|
-
|
283
|
-
ssl = Puppet::SSL::SSLProvider.new
|
284
|
-
ctx = ssl.load_context(certname: Puppet[:certname], password: password)
|
285
|
-
ssl.print(ctx)
|
286
|
-
ctx
|
287
|
-
rescue => e
|
288
|
-
# TRANSLATORS: `message` is an already translated string of why SSL failed to initialize
|
289
|
-
Puppet.log_exception(e, _("Failed to initialize SSL: %{message}") % { message: e.message })
|
290
|
-
# TRANSLATORS: `puppet agent -t` is a command and should not be translated
|
291
|
-
Puppet.err(_("Run `puppet agent -t`"))
|
292
|
-
raise e
|
293
303
|
end
|
294
304
|
|
295
305
|
protected
|
@@ -304,6 +314,21 @@ class Puppet::HTTP::Client
|
|
304
314
|
|
305
315
|
private
|
306
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]
|
307
332
|
def execute_streaming(request, options: {}, &block)
|
308
333
|
redirector = Puppet::HTTP::Redirector.new(options.fetch(:redirect_limit, @default_redirect_limit))
|
309
334
|
|
@@ -321,11 +346,11 @@ class Puppet::HTTP::Client
|
|
321
346
|
|
322
347
|
while !done do
|
323
348
|
connect(request.uri, options: options) do |http|
|
324
|
-
apply_auth(request, basic_auth)
|
349
|
+
apply_auth(request, basic_auth)
|
325
350
|
|
326
351
|
# don't call return within the `request` block
|
327
352
|
http.request(request) do |nethttp|
|
328
|
-
response = Puppet::HTTP::
|
353
|
+
response = Puppet::HTTP::ResponseNetHTTP.new(request.uri, nethttp)
|
329
354
|
begin
|
330
355
|
Puppet.debug("HTTP #{request.method.upcase} #{request.uri} returned #{response.code} #{response.reason}")
|
331
356
|
|
@@ -338,7 +363,7 @@ class Puppet::HTTP::Client
|
|
338
363
|
retries += 1
|
339
364
|
if interval
|
340
365
|
if http.started?
|
341
|
-
Puppet.debug("Closing connection for #{Puppet::
|
366
|
+
Puppet.debug("Closing connection for #{Puppet::HTTP::Site.from_uri(request.uri)}")
|
342
367
|
http.finish
|
343
368
|
end
|
344
369
|
Puppet.warning(_("Sleeping for %{interval} seconds before retrying the request") % { interval: interval })
|
@@ -347,8 +372,15 @@ class Puppet::HTTP::Client
|
|
347
372
|
end
|
348
373
|
end
|
349
374
|
|
350
|
-
|
375
|
+
if block_given?
|
376
|
+
yield response
|
377
|
+
else
|
378
|
+
response.body
|
379
|
+
end
|
351
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.
|
352
384
|
response.drain
|
353
385
|
end
|
354
386
|
|
@@ -426,9 +458,7 @@ class Puppet::HTTP::Client
|
|
426
458
|
cacerts = cert_provider.load_cacerts || []
|
427
459
|
|
428
460
|
ssl = Puppet::SSL::SSLProvider.new
|
429
|
-
@default_system_ssl_context = ssl.create_system_context(cacerts: cacerts
|
430
|
-
ssl.print(@default_system_ssl_context)
|
431
|
-
@default_system_ssl_context
|
461
|
+
@default_system_ssl_context = ssl.create_system_context(cacerts: cacerts)
|
432
462
|
end
|
433
463
|
|
434
464
|
def apply_auth(request, basic_auth)
|
data/lib/puppet/http/errors.rb
CHANGED
@@ -1,14 +1,26 @@
|
|
1
1
|
module Puppet::HTTP
|
2
|
+
# A base class for puppet http errors
|
3
|
+
# @api public
|
2
4
|
class HTTPError < Puppet::Error; end
|
3
5
|
|
6
|
+
# A connection error such as if the server refuses the connection.
|
7
|
+
# @api public
|
4
8
|
class ConnectionError < HTTPError; end
|
5
9
|
|
10
|
+
# A failure to route to the server such as if the `server_list` is exhausted.
|
11
|
+
# @api public
|
6
12
|
class RouteError < HTTPError; end
|
7
13
|
|
14
|
+
# An HTTP protocol error, such as the server's response missing a required header.
|
15
|
+
# @api public
|
8
16
|
class ProtocolError < HTTPError; end
|
9
17
|
|
18
|
+
# An error serializing or deserializing an object via REST.
|
19
|
+
# @api public
|
10
20
|
class SerializationError < HTTPError; end
|
11
21
|
|
22
|
+
# An error due to an unsuccessful HTTP response, such as HTTP 500.
|
23
|
+
# @api public
|
12
24
|
class ResponseError < HTTPError
|
13
25
|
attr_reader :response
|
14
26
|
|
@@ -18,12 +30,16 @@ module Puppet::HTTP
|
|
18
30
|
end
|
19
31
|
end
|
20
32
|
|
33
|
+
# An error if asked to follow too many redirects (such as HTTP 301).
|
34
|
+
# @api public
|
21
35
|
class TooManyRedirects < HTTPError
|
22
36
|
def initialize(addr)
|
23
37
|
super(_("Too many HTTP redirections for %{addr}") % { addr: addr})
|
24
38
|
end
|
25
39
|
end
|
26
40
|
|
41
|
+
# An error if asked to retry (such as HTTP 503) too many times.
|
42
|
+
# @api public
|
27
43
|
class TooManyRetryAfters < HTTPError
|
28
44
|
def initialize(addr)
|
29
45
|
super(_("Too many HTTP retries for %{addr}") % { addr: addr})
|
@@ -1,4 +1,3 @@
|
|
1
|
-
#
|
2
1
|
# Adapts an external http_client_class to the HTTP client API. The former
|
3
2
|
# is typically registered by puppetserver and only implements a subset of
|
4
3
|
# the Puppet::Network::HTTP::Connection methods. As a result, only the
|
@@ -7,10 +6,10 @@
|
|
7
6
|
#
|
8
7
|
# @api private
|
9
8
|
class Puppet::HTTP::ExternalClient < Puppet::HTTP::Client
|
10
|
-
|
9
|
+
|
10
|
+
# Create an external http client.
|
11
11
|
#
|
12
12
|
# @param [Class] http_client_class The class to create to handle the request
|
13
|
-
# @api private
|
14
13
|
def initialize(http_client_class)
|
15
14
|
@http_client_class = http_client_class
|
16
15
|
end
|
@@ -23,7 +22,7 @@ class Puppet::HTTP::ExternalClient < Puppet::HTTP::Client
|
|
23
22
|
options[:use_ssl] = url.scheme == 'https'
|
24
23
|
|
25
24
|
client = @http_client_class.new(url.host, url.port, options)
|
26
|
-
response = Puppet::HTTP::
|
25
|
+
response = Puppet::HTTP::ResponseNetHTTP.new(url, client.get(url.request_uri, headers, options))
|
27
26
|
|
28
27
|
if block_given?
|
29
28
|
yield response
|
@@ -45,7 +44,7 @@ class Puppet::HTTP::ExternalClient < Puppet::HTTP::Client
|
|
45
44
|
options[:use_ssl] = url.scheme == 'https'
|
46
45
|
|
47
46
|
client = @http_client_class.new(url.host, url.port, options)
|
48
|
-
response = Puppet::HTTP::
|
47
|
+
response = Puppet::HTTP::ResponseNetHTTP.new(url, client.post(url.request_uri, body, headers, options))
|
49
48
|
|
50
49
|
if block_given?
|
51
50
|
yield response
|
@@ -58,8 +57,7 @@ class Puppet::HTTP::ExternalClient < Puppet::HTTP::Client
|
|
58
57
|
raise Puppet::HTTP::HTTPError.new(e.message, e)
|
59
58
|
end
|
60
59
|
|
61
|
-
#
|
62
|
-
#
|
60
|
+
# (see Puppet::HTTP::Client#close)
|
63
61
|
# @api private
|
64
62
|
def close
|
65
63
|
# This is a noop as puppetserver doesn't provide a way to close its http client.
|
@@ -1,15 +1,14 @@
|
|
1
1
|
require 'puppet/ssl/openssl_loader'
|
2
2
|
require 'net/http'
|
3
|
-
require 'puppet/
|
3
|
+
require 'puppet/http'
|
4
4
|
|
5
|
-
# Factory for
|
5
|
+
# Factory for `Net::HTTP` objects.
|
6
6
|
#
|
7
|
-
# Encapsulates the logic for creating a
|
8
|
-
# specified {
|
7
|
+
# Encapsulates the logic for creating a `Net::HTTP` object based on the
|
8
|
+
# specified {Site} and puppet settings.
|
9
9
|
#
|
10
10
|
# @api private
|
11
|
-
|
12
|
-
class Puppet::Network::HTTP::Factory
|
11
|
+
class Puppet::HTTP::Factory
|
13
12
|
@@openssl_initialized = false
|
14
13
|
|
15
14
|
KEEP_ALIVE_TIMEOUT = 2**31 - 1
|
@@ -25,20 +24,14 @@ class Puppet::Network::HTTP::Factory
|
|
25
24
|
def create_connection(site)
|
26
25
|
Puppet.debug("Creating new connection for #{site}")
|
27
26
|
|
28
|
-
http = Puppet::
|
27
|
+
http = Puppet::HTTP::Proxy.proxy(URI(site.addr))
|
29
28
|
http.use_ssl = site.use_ssl?
|
30
|
-
if site.use_ssl?
|
31
|
-
http.min_version = OpenSSL::SSL::TLS1_VERSION if http.respond_to?(:min_version)
|
32
|
-
http.ciphers = Puppet[:ciphers]
|
33
|
-
end
|
34
29
|
http.read_timeout = Puppet[:http_read_timeout]
|
35
30
|
http.open_timeout = Puppet[:http_connect_timeout]
|
36
31
|
http.keep_alive_timeout = KEEP_ALIVE_TIMEOUT if http.respond_to?(:keep_alive_timeout=)
|
37
32
|
|
38
|
-
|
39
|
-
|
40
|
-
http.max_retries = 0
|
41
|
-
end
|
33
|
+
# 0 means make one request and never retry
|
34
|
+
http.max_retries = 0
|
42
35
|
|
43
36
|
if Puppet[:sourceaddress]
|
44
37
|
Puppet.debug("Using source IP #{Puppet[:sourceaddress]}")
|