puppet 6.20.0-x64-mingw32 → 7.4.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +1 -4
- data/Gemfile.lock +13 -13
- data/README.md +1 -1
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -2
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/project_data.yaml +2 -14
- data/ext/redhat/puppet.spec.erb +0 -1
- data/ext/windows/service/daemon.rb +6 -5
- data/install.rb +21 -17
- data/lib/puppet.rb +11 -20
- data/lib/puppet/application.rb +172 -98
- data/lib/puppet/application/device.rb +100 -104
- data/lib/puppet/application/filebucket.rb +13 -9
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/configurer.rb +27 -29
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/defaults.rb +57 -162
- data/lib/puppet/environments.rb +8 -23
- data/lib/puppet/face/facts.rb +73 -49
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/node/clean.rb +8 -0
- 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 +6 -32
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount.rb +1 -2
- data/lib/puppet/forge/repository.rb +0 -1
- 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 -11
- data/lib/puppet/{network/http → http}/pool.rb +61 -26
- data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
- data/lib/puppet/http/proxy.rb +137 -0
- data/lib/puppet/http/redirector.rb +4 -12
- data/lib/puppet/http/resolver.rb +5 -15
- data/lib/puppet/http/resolver/server_list.rb +6 -10
- 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 -69
- data/lib/puppet/http/service/file_server.rb +18 -27
- 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/rest.rb +2 -4
- data/lib/puppet/indirector/facts/facter.rb +25 -3
- 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 -9
- 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/rest.rb +12 -263
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/formats.rb +67 -0
- 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/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/resource.rb +0 -69
- 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/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/type_calculator.rb +0 -7
- data/lib/puppet/pops/types/type_parser.rb +0 -4
- data/lib/puppet/pops/types/types.rb +0 -1
- data/lib/puppet/pops/validation/checker4_0.rb +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/group/groupadd.rb +13 -8
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +30 -2
- data/lib/puppet/provider/package/aptitude.rb +6 -0
- data/lib/puppet/provider/package/dpkg.rb +0 -10
- data/lib/puppet/provider/package/gem.rb +23 -3
- data/lib/puppet/provider/package/pip.rb +0 -1
- 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/service/debian.rb +2 -0
- data/lib/puppet/provider/service/smf.rb +191 -73
- data/lib/puppet/provider/user/directoryservice.rb +0 -10
- data/lib/puppet/provider/user/useradd.rb +55 -8
- data/lib/puppet/reference/configuration.rb +7 -5
- 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 +45 -33
- 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/report.rb +2 -4
- data/lib/puppet/type.rb +0 -76
- data/lib/puppet/type/file.rb +5 -7
- data/lib/puppet/type/file/checksum.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/user.rb +1 -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 -46
- 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/windows.rb +3 -8
- 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/process.rb +4 -226
- data/lib/puppet/util/windows/service.rb +9 -460
- 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 +521 -1226
- data/man/man5/puppet.conf.5 +35 -95
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +57 -36
- 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 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/integration/application/agent_spec.rb +57 -11
- data/spec/integration/application/apply_spec.rb +1 -1
- data/spec/integration/application/filebucket_spec.rb +16 -16
- data/spec/integration/application/help_spec.rb +2 -0
- data/spec/integration/application/plugin_spec.rb +23 -1
- data/spec/integration/defaults_spec.rb +7 -3
- data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
- 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/type/file_spec.rb +5 -4
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
- data/spec/integration/util/windows/security_spec.rb +1 -1
- data/spec/lib/puppet_spec/puppetserver.rb +1 -1
- data/spec/lib/puppet_spec/settings.rb +1 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/agent_spec.rb +0 -2
- data/spec/unit/application/facts_spec.rb +86 -0
- data/spec/unit/application/filebucket_spec.rb +41 -39
- data/spec/unit/application/ssl_spec.rb +2 -2
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +6 -2
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +12 -9
- data/spec/unit/context/trusted_information_spec.rb +2 -6
- data/spec/unit/defaults_spec.rb +22 -47
- data/spec/unit/environments_spec.rb +0 -3
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +14 -2
- data/spec/unit/face/plugin_spec.rb +73 -33
- data/spec/unit/file_bucket/file_spec.rb +1 -1
- data/spec/unit/file_serving/configuration/parser_spec.rb +22 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- 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/upcase_spec.rb +1 -1
- 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 -11
- data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
- data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
- data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
- data/spec/unit/http/resolver_spec.rb +13 -13
- data/spec/unit/http/service/compiler_spec.rb +0 -62
- 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/facts/facter_spec.rb +113 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_server_spec.rb +1 -15
- data/spec/unit/indirector/report/rest_spec.rb +2 -17
- data/spec/unit/indirector/request_spec.rb +0 -264
- data/spec/unit/indirector/rest_spec.rb +98 -752
- 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 +45 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -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/functions/create_resources_spec.rb +2 -20
- 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/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/provider/group/groupadd_spec.rb +5 -2
- data/spec/unit/provider/nameservice_spec.rb +0 -57
- data/spec/unit/provider/package/apt_spec.rb +24 -15
- data/spec/unit/provider/package/aptitude_spec.rb +1 -1
- 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/puppet_gem_spec.rb +3 -2
- data/spec/unit/provider/service/smf_spec.rb +401 -165
- data/spec/unit/provider/service/windows_spec.rb +0 -1
- data/spec/unit/provider/user/useradd_spec.rb +55 -3
- data/spec/unit/provider_spec.rb +0 -12
- data/spec/unit/resource/type_collection_spec.rb +2 -22
- data/spec/unit/resource_spec.rb +0 -56
- 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 +17 -0
- data/spec/unit/ssl/base_spec.rb +36 -3
- data/spec/unit/ssl/certificate_request_spec.rb +19 -55
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- 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 +45 -79
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +1 -1
- data/spec/unit/type/file/ensure_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +1 -1
- data/spec/unit/type/file/source_spec.rb +0 -1
- data/spec/unit/type/file_spec.rb +12 -6
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type_spec.rb +20 -0
- data/spec/unit/util/backups_spec.rb +0 -2
- data/spec/unit/util/execution_spec.rb +0 -29
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/run_mode_spec.rb +21 -121
- 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 +0 -18
- metadata +48 -219
- data/conf/auth.conf +0 -150
- data/lib/puppet/application/cert.rb +0 -76
- data/lib/puppet/application/key.rb +0 -4
- data/lib/puppet/application/man.rb +0 -4
- data/lib/puppet/application/status.rb +0 -4
- data/lib/puppet/face/key.rb +0 -16
- data/lib/puppet/face/man.rb +0 -145
- data/lib/puppet/face/module/build.rb +0 -14
- data/lib/puppet/face/module/generate.rb +0 -14
- data/lib/puppet/face/module/search.rb +0 -103
- data/lib/puppet/face/status.rb +0 -51
- data/lib/puppet/indirector/certificate/file.rb +0 -9
- data/lib/puppet/indirector/certificate/rest.rb +0 -18
- data/lib/puppet/indirector/certificate_request/file.rb +0 -9
- data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
- data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
- data/lib/puppet/indirector/file_content/http.rb +0 -22
- data/lib/puppet/indirector/key/file.rb +0 -46
- data/lib/puppet/indirector/key/memory.rb +0 -7
- data/lib/puppet/indirector/ssl_file.rb +0 -162
- data/lib/puppet/indirector/status.rb +0 -3
- data/lib/puppet/indirector/status/local.rb +0 -12
- data/lib/puppet/indirector/status/rest.rb +0 -27
- data/lib/puppet/module_tool/applications/searcher.rb +0 -29
- data/lib/puppet/network/auth_config_parser.rb +0 -90
- data/lib/puppet/network/authstore.rb +0 -283
- data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
- data/lib/puppet/network/http/api/master/v3/environment.rb +0 -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/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 -62
- 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/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/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/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,16 +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
29
|
http.read_timeout = Puppet[:http_read_timeout]
|
31
30
|
http.open_timeout = Puppet[:http_connect_timeout]
|
32
31
|
http.keep_alive_timeout = KEEP_ALIVE_TIMEOUT if http.respond_to?(:keep_alive_timeout=)
|
33
32
|
|
34
|
-
|
35
|
-
|
36
|
-
http.max_retries = 0
|
37
|
-
end
|
33
|
+
# 0 means make one request and never retry
|
34
|
+
http.max_retries = 0
|
38
35
|
|
39
36
|
if Puppet[:sourceaddress]
|
40
37
|
Puppet.debug("Using source IP #{Puppet[:sourceaddress]}")
|
@@ -1,5 +1,5 @@
|
|
1
|
-
# A pool for persistent
|
2
|
-
# stored in the pool indexed by their {
|
1
|
+
# A pool for persistent `Net::HTTP` connections. Connections are
|
2
|
+
# stored in the pool indexed by their {Site}.
|
3
3
|
# Connections are borrowed from the pool, yielded to the caller, and
|
4
4
|
# released back into the pool. If a connection is expired, it will be
|
5
5
|
# closed either when a connection to that site is requested, or when
|
@@ -7,13 +7,12 @@
|
|
7
7
|
# same site, and will be reused in MRU order.
|
8
8
|
#
|
9
9
|
# @api private
|
10
|
-
|
11
|
-
class Puppet::Network::HTTP::Pool < Puppet::Network::HTTP::BasePool
|
10
|
+
class Puppet::HTTP::Pool
|
12
11
|
attr_reader :factory, :keepalive_timeout
|
13
12
|
|
14
13
|
def initialize(keepalive_timeout)
|
15
14
|
@pool = {}
|
16
|
-
@factory = Puppet::
|
15
|
+
@factory = Puppet::HTTP::Factory.new
|
17
16
|
@keepalive_timeout = keepalive_timeout
|
18
17
|
end
|
19
18
|
|
@@ -40,9 +39,9 @@ class Puppet::Network::HTTP::Pool < Puppet::Network::HTTP::BasePool
|
|
40
39
|
end
|
41
40
|
|
42
41
|
def close
|
43
|
-
@pool.each_pair do |site,
|
44
|
-
|
45
|
-
close_connection(site,
|
42
|
+
@pool.each_pair do |site, entries|
|
43
|
+
entries.each do |entry|
|
44
|
+
close_connection(site, entry.connection)
|
46
45
|
end
|
47
46
|
end
|
48
47
|
@pool.clear
|
@@ -53,6 +52,25 @@ class Puppet::Network::HTTP::Pool < Puppet::Network::HTTP::BasePool
|
|
53
52
|
@pool
|
54
53
|
end
|
55
54
|
|
55
|
+
# Start a persistent connection
|
56
|
+
#
|
57
|
+
# @api private
|
58
|
+
def start(site, verifier, http)
|
59
|
+
Puppet.debug("Starting connection for #{site}")
|
60
|
+
if site.use_ssl?
|
61
|
+
verifier.setup_connection(http)
|
62
|
+
begin
|
63
|
+
http.start
|
64
|
+
print_ssl_info(http) if Puppet::Util::Log.sendlevel?(:debug)
|
65
|
+
rescue OpenSSL::SSL::SSLError => error
|
66
|
+
verifier.handle_connection_error(http, error)
|
67
|
+
end
|
68
|
+
else
|
69
|
+
http.start
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
|
56
74
|
# Safely close a persistent connection.
|
57
75
|
# Don't try to close a connection that's already closed.
|
58
76
|
#
|
@@ -72,17 +90,17 @@ class Puppet::Network::HTTP::Pool < Puppet::Network::HTTP::BasePool
|
|
72
90
|
#
|
73
91
|
# @api private
|
74
92
|
def borrow(site, verifier)
|
75
|
-
@pool[site] =
|
76
|
-
index = @pool[site].index do |
|
77
|
-
(verifier.nil? &&
|
78
|
-
(!verifier.nil? && verifier.reusable?(
|
93
|
+
@pool[site] = active_entries(site)
|
94
|
+
index = @pool[site].index do |entry|
|
95
|
+
(verifier.nil? && entry.verifier.nil?) ||
|
96
|
+
(!verifier.nil? && verifier.reusable?(entry.verifier))
|
79
97
|
end
|
80
|
-
|
81
|
-
if
|
98
|
+
entry = index ? @pool[site].delete_at(index) : nil
|
99
|
+
if entry
|
82
100
|
@pool.delete(site) if @pool[site].empty?
|
83
101
|
|
84
102
|
Puppet.debug("Using cached connection for #{site}")
|
85
|
-
|
103
|
+
entry.connection
|
86
104
|
else
|
87
105
|
http = @factory.create_connection(site)
|
88
106
|
|
@@ -107,31 +125,48 @@ class Puppet::Network::HTTP::Pool < Puppet::Network::HTTP::BasePool
|
|
107
125
|
# @api private
|
108
126
|
def release(site, verifier, http)
|
109
127
|
expiration = Time.now + @keepalive_timeout
|
110
|
-
|
128
|
+
entry = Puppet::HTTP::PoolEntry.new(http, verifier, expiration)
|
111
129
|
Puppet.debug("Caching connection for #{site}")
|
112
130
|
|
113
|
-
|
114
|
-
if
|
115
|
-
|
131
|
+
entries = @pool[site]
|
132
|
+
if entries
|
133
|
+
entries.unshift(entry)
|
116
134
|
else
|
117
|
-
@pool[site] = [
|
135
|
+
@pool[site] = [entry]
|
118
136
|
end
|
119
137
|
end
|
120
138
|
|
121
|
-
# Returns an Array of
|
139
|
+
# Returns an Array of entries whose connections are not expired.
|
122
140
|
#
|
123
141
|
# @api private
|
124
|
-
def
|
142
|
+
def active_entries(site)
|
125
143
|
now = Time.now
|
126
144
|
|
127
|
-
|
128
|
-
|
129
|
-
if
|
130
|
-
close_connection(site,
|
145
|
+
entries = @pool[site] || []
|
146
|
+
entries.select do |entry|
|
147
|
+
if entry.expired?(now)
|
148
|
+
close_connection(site, entry.connection)
|
131
149
|
false
|
132
150
|
else
|
133
151
|
true
|
134
152
|
end
|
135
153
|
end
|
136
154
|
end
|
155
|
+
|
156
|
+
private
|
157
|
+
|
158
|
+
def print_ssl_info(http)
|
159
|
+
buffered_io = http.instance_variable_get(:@socket)
|
160
|
+
return unless buffered_io
|
161
|
+
|
162
|
+
socket = buffered_io.io
|
163
|
+
return unless socket
|
164
|
+
|
165
|
+
cipher = if Puppet::Util::Platform.jruby?
|
166
|
+
socket.cipher
|
167
|
+
else
|
168
|
+
socket.cipher.first
|
169
|
+
end
|
170
|
+
Puppet.debug("Using #{socket.ssl_version} with cipher #{cipher}")
|
171
|
+
end
|
137
172
|
end
|
@@ -1,9 +1,8 @@
|
|
1
|
-
# An HTTP
|
1
|
+
# An entry in the peristent HTTP pool that references the connection and
|
2
2
|
# an expiration time for the connection.
|
3
3
|
#
|
4
4
|
# @api private
|
5
|
-
|
6
|
-
class Puppet::Network::HTTP::Session
|
5
|
+
class Puppet::HTTP::PoolEntry
|
7
6
|
attr_reader :connection, :verifier
|
8
7
|
|
9
8
|
def initialize(connection, verifier, expiration_time)
|
@@ -0,0 +1,137 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'puppet/ssl/openssl_loader'
|
3
|
+
|
4
|
+
module Puppet::HTTP::Proxy
|
5
|
+
def self.proxy(uri)
|
6
|
+
if http_proxy_host && !no_proxy?(uri)
|
7
|
+
Net::HTTP.new(uri.host, uri.port, self.http_proxy_host, self.http_proxy_port, self.http_proxy_user, self.http_proxy_password)
|
8
|
+
else
|
9
|
+
http = Net::HTTP.new(uri.host, uri.port, nil, nil, nil, nil)
|
10
|
+
# Net::HTTP defaults the proxy port even though we said not to
|
11
|
+
# use one. Set it to nil so caller is not surprised
|
12
|
+
http.proxy_port = nil
|
13
|
+
http
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.http_proxy_env
|
18
|
+
# Returns a URI object if proxy is set, or nil
|
19
|
+
proxy_env = ENV["http_proxy"] || ENV["HTTP_PROXY"]
|
20
|
+
begin
|
21
|
+
return URI.parse(proxy_env) if proxy_env
|
22
|
+
rescue URI::InvalidURIError
|
23
|
+
return nil
|
24
|
+
end
|
25
|
+
return nil
|
26
|
+
end
|
27
|
+
|
28
|
+
# The documentation around the format of the no_proxy variable seems
|
29
|
+
# inconsistent. Some suggests the use of the * as a way of matching any
|
30
|
+
# hosts under a domain, e.g.:
|
31
|
+
# *.example.com
|
32
|
+
# Other documentation suggests that just a leading '.' indicates a domain
|
33
|
+
# level exclusion, e.g.:
|
34
|
+
# .example.com
|
35
|
+
# We'll accommodate both here.
|
36
|
+
def self.no_proxy?(dest)
|
37
|
+
no_proxy = self.no_proxy
|
38
|
+
unless no_proxy
|
39
|
+
return false
|
40
|
+
end
|
41
|
+
|
42
|
+
unless dest.is_a? URI
|
43
|
+
begin
|
44
|
+
dest = URI.parse(dest)
|
45
|
+
rescue URI::InvalidURIError
|
46
|
+
return false
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
no_proxy.split(/\s*,\s*/).each do |d|
|
51
|
+
host, port = d.split(':')
|
52
|
+
host = Regexp.escape(host).gsub('\*', '.*')
|
53
|
+
|
54
|
+
#If this no_proxy entry specifies a port, we want to match it against
|
55
|
+
#the destination port. Otherwise just match hosts.
|
56
|
+
if port
|
57
|
+
no_proxy_regex = %r(#{host}:#{port}$)
|
58
|
+
dest_string = "#{dest.host}:#{dest.port}"
|
59
|
+
else
|
60
|
+
no_proxy_regex = %r(#{host}$)
|
61
|
+
dest_string = "#{dest.host}"
|
62
|
+
end
|
63
|
+
|
64
|
+
if no_proxy_regex.match(dest_string)
|
65
|
+
return true
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
return false
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.http_proxy_host
|
73
|
+
env = self.http_proxy_env
|
74
|
+
|
75
|
+
if env and env.host
|
76
|
+
return env.host
|
77
|
+
end
|
78
|
+
|
79
|
+
if Puppet.settings[:http_proxy_host] == 'none'
|
80
|
+
return nil
|
81
|
+
end
|
82
|
+
|
83
|
+
return Puppet.settings[:http_proxy_host]
|
84
|
+
end
|
85
|
+
|
86
|
+
def self.http_proxy_port
|
87
|
+
env = self.http_proxy_env
|
88
|
+
|
89
|
+
if env and env.port
|
90
|
+
return env.port
|
91
|
+
end
|
92
|
+
|
93
|
+
return Puppet.settings[:http_proxy_port]
|
94
|
+
end
|
95
|
+
|
96
|
+
def self.http_proxy_user
|
97
|
+
env = self.http_proxy_env
|
98
|
+
|
99
|
+
if env and env.user
|
100
|
+
return env.user
|
101
|
+
end
|
102
|
+
|
103
|
+
if Puppet.settings[:http_proxy_user] == 'none'
|
104
|
+
return nil
|
105
|
+
end
|
106
|
+
|
107
|
+
return Puppet.settings[:http_proxy_user]
|
108
|
+
end
|
109
|
+
|
110
|
+
def self.http_proxy_password
|
111
|
+
env = self.http_proxy_env
|
112
|
+
|
113
|
+
if env and env.password
|
114
|
+
return env.password
|
115
|
+
end
|
116
|
+
|
117
|
+
if Puppet.settings[:http_proxy_user] == 'none' or Puppet.settings[:http_proxy_password] == 'none'
|
118
|
+
return nil
|
119
|
+
end
|
120
|
+
|
121
|
+
return Puppet.settings[:http_proxy_password]
|
122
|
+
end
|
123
|
+
|
124
|
+
def self.no_proxy
|
125
|
+
no_proxy_env = ENV["no_proxy"] || ENV["NO_PROXY"]
|
126
|
+
|
127
|
+
if no_proxy_env
|
128
|
+
return no_proxy_env
|
129
|
+
end
|
130
|
+
|
131
|
+
if Puppet.settings[:no_proxy] == 'none'
|
132
|
+
return nil
|
133
|
+
end
|
134
|
+
|
135
|
+
return Puppet.settings[:no_proxy]
|
136
|
+
end
|
137
|
+
end
|
@@ -1,23 +1,16 @@
|
|
1
|
-
#
|
2
|
-
# @api private
|
3
|
-
#
|
4
1
|
# Handle HTTP redirects
|
5
2
|
#
|
3
|
+
# @api private
|
6
4
|
class Puppet::HTTP::Redirector
|
7
|
-
#
|
8
|
-
# @api private
|
9
|
-
#
|
10
5
|
# Create a new redirect handler
|
11
6
|
#
|
12
7
|
# @param [Integer] redirect_limit maximum number of redirects allowed
|
13
8
|
#
|
9
|
+
# @api private
|
14
10
|
def initialize(redirect_limit)
|
15
11
|
@redirect_limit = redirect_limit
|
16
12
|
end
|
17
13
|
|
18
|
-
#
|
19
|
-
# @api private
|
20
|
-
#
|
21
14
|
# Determine of the HTTP response code indicates a redirect
|
22
15
|
#
|
23
16
|
# @param [Net::HTTP] request request that received the response
|
@@ -25,6 +18,7 @@ class Puppet::HTTP::Redirector
|
|
25
18
|
#
|
26
19
|
# @return [Boolean] true if the response code is 301, 302, or 307.
|
27
20
|
#
|
21
|
+
# @api private
|
28
22
|
def redirect?(request, response)
|
29
23
|
# Net::HTTPRedirection is not used because historically puppet
|
30
24
|
# has only handled these, and we're not a browser
|
@@ -36,9 +30,6 @@ class Puppet::HTTP::Redirector
|
|
36
30
|
end
|
37
31
|
end
|
38
32
|
|
39
|
-
#
|
40
|
-
# @api private
|
41
|
-
#
|
42
33
|
# Implement the HTTP request redirection
|
43
34
|
#
|
44
35
|
# @param [Net::HTTP] request request that has been redirected
|
@@ -48,6 +39,7 @@ class Puppet::HTTP::Redirector
|
|
48
39
|
# @return [Net::HTTP] A new request based on the original request, but with
|
49
40
|
# the redirected location
|
50
41
|
#
|
42
|
+
# @api private
|
51
43
|
def redirect_to(request, response, redirects)
|
52
44
|
raise Puppet::HTTP::TooManyRedirects.new(request.uri) if redirects >= @redirect_limit
|
53
45
|
|