puppet 6.16.0-x86-mingw32 → 7.0.0-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +5 -3
- data/Gemfile.lock +31 -33
- data/README.md +4 -5
- data/Rakefile +4 -12
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -1
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/project_data.yaml +1 -14
- data/ext/redhat/puppet.spec.erb +0 -1
- data/ext/windows/service/daemon.rb +6 -5
- data/install.rb +21 -17
- data/lib/puppet.rb +11 -20
- data/lib/puppet/agent.rb +2 -2
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application.rb +172 -98
- data/lib/puppet/application/agent.rb +22 -6
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/device.rb +100 -104
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +15 -11
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/configurer.rb +66 -31
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/defaults.rb +166 -169
- data/lib/puppet/environments.rb +41 -15
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +56 -16
- data/lib/puppet/face/epp.rb +12 -2
- data/lib/puppet/face/facts.rb +66 -6
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/plugin.rb +5 -8
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/ffi/windows.rb +12 -0
- data/lib/puppet/ffi/windows/api_types.rb +311 -0
- data/lib/puppet/ffi/windows/constants.rb +404 -0
- data/lib/puppet/ffi/windows/functions.rb +628 -0
- data/lib/puppet/ffi/windows/structs.rb +338 -0
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/configuration.rb +0 -5
- data/lib/puppet/file_serving/configuration/parser.rb +3 -32
- data/lib/puppet/file_serving/http_metadata.rb +13 -1
- data/lib/puppet/file_serving/metadata.rb +4 -1
- data/lib/puppet/file_serving/mount.rb +1 -2
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +4 -4
- data/lib/puppet/file_system/uniquefile.rb +8 -16
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +3 -8
- data/lib/puppet/functions/epp.rb +1 -0
- data/lib/puppet/functions/inline_epp.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/new.rb +8 -3
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/rstrip.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +4 -4
- data/lib/puppet/generate/models/type/type.rb +4 -1
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +23 -13
- data/lib/puppet/http/client.rb +170 -115
- data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
- data/lib/puppet/http/errors.rb +16 -0
- data/lib/puppet/http/external_client.rb +5 -7
- data/lib/puppet/{network/http → http}/factory.rb +8 -11
- data/lib/puppet/{network/http → http}/pool.rb +61 -26
- data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
- data/lib/puppet/http/proxy.rb +137 -0
- data/lib/puppet/http/redirector.rb +13 -19
- data/lib/puppet/http/resolver.rb +10 -23
- data/lib/puppet/http/resolver/server_list.rb +23 -45
- data/lib/puppet/http/resolver/settings.rb +7 -10
- data/lib/puppet/http/resolver/srv.rb +11 -15
- data/lib/puppet/http/response.rb +49 -48
- data/lib/puppet/http/response_converter.rb +24 -0
- data/lib/puppet/http/response_net_http.rb +42 -0
- data/lib/puppet/http/retry_after_handler.rb +4 -13
- data/lib/puppet/http/service.rb +15 -27
- data/lib/puppet/http/service/ca.rb +11 -22
- data/lib/puppet/http/service/compiler.rb +23 -70
- data/lib/puppet/http/service/file_server.rb +19 -28
- data/lib/puppet/http/service/puppetserver.rb +53 -0
- data/lib/puppet/http/service/report.rb +8 -10
- data/lib/puppet/http/session.rb +16 -24
- data/lib/puppet/{network/http → http}/site.rb +1 -2
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/catalog/rest.rb +2 -4
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/fact_search.rb +60 -0
- data/lib/puppet/indirector/facts/facter.rb +27 -6
- data/lib/puppet/indirector/facts/json.rb +27 -0
- data/lib/puppet/indirector/facts/rest.rb +3 -22
- data/lib/puppet/indirector/facts/yaml.rb +4 -59
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
- data/lib/puppet/indirector/file_content/rest.rb +3 -7
- data/lib/puppet/indirector/file_metadata/http.rb +25 -5
- data/lib/puppet/indirector/file_metadata/rest.rb +5 -11
- data/lib/puppet/indirector/file_server.rb +1 -8
- data/lib/puppet/indirector/generic_http.rb +0 -11
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/json.rb +5 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/json.rb +8 -0
- data/lib/puppet/indirector/node/rest.rb +2 -4
- data/lib/puppet/indirector/report/json.rb +34 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/rest.rb +3 -8
- data/lib/puppet/indirector/request.rb +2 -103
- data/lib/puppet/indirector/rest.rb +12 -263
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/formats.rb +2 -1
- data/lib/puppet/network/http.rb +3 -3
- data/lib/puppet/network/http/api/indirected_routes.rb +3 -21
- data/lib/puppet/network/http/api/master/v3.rb +11 -13
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/connection.rb +247 -316
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node.rb +1 -30
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +93 -14
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -42
- data/lib/puppet/parser/compiler.rb +1 -199
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
- data/lib/puppet/parser/functions.rb +21 -17
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/resource.rb +3 -71
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +27 -13
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +18 -11
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- data/lib/puppet/pops/model/ast.pp +0 -42
- data/lib/puppet/pops/model/ast.rb +0 -290
- data/lib/puppet/pops/model/factory.rb +0 -45
- data/lib/puppet/pops/model/model_label_provider.rb +0 -5
- data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
- data/lib/puppet/pops/model/pn_transformer.rb +0 -16
- data/lib/puppet/pops/parser/egrammar.ra +0 -56
- data/lib/puppet/pops/parser/eparser.rb +1520 -1712
- data/lib/puppet/pops/parser/lexer2.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +0 -5
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -22
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- data/lib/puppet/pops/types/type_calculator.rb +0 -7
- data/lib/puppet/pops/types/type_parser.rb +0 -4
- data/lib/puppet/pops/types/types.rb +0 -1
- data/lib/puppet/pops/validation/checker4_0.rb +28 -42
- data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -1
- data/lib/puppet/provider.rb +0 -13
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +34 -0
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +1 -11
- data/lib/puppet/provider/package/gem.rb +27 -5
- data/lib/puppet/provider/package/pip.rb +0 -1
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/pkg.rb +0 -4
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +6 -4
- data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
- data/lib/puppet/provider/package/yum.rb +2 -1
- data/lib/puppet/provider/package/zypper.rb +3 -0
- data/lib/puppet/provider/service/smf.rb +191 -73
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +0 -10
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +11 -4
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reference/configuration.rb +2 -0
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/reports/http.rb +2 -0
- data/lib/puppet/resource.rb +3 -90
- data/lib/puppet/resource/catalog.rb +1 -14
- data/lib/puppet/resource/type.rb +5 -112
- data/lib/puppet/resource/type_collection.rb +3 -48
- data/lib/puppet/runtime.rb +1 -2
- data/lib/puppet/settings.rb +84 -35
- data/lib/puppet/settings/base_setting.rb +26 -2
- data/lib/puppet/settings/integer_setting.rb +17 -0
- data/lib/puppet/settings/port_setting.rb +15 -0
- data/lib/puppet/settings/priority_setting.rb +5 -4
- data/lib/puppet/ssl.rb +10 -6
- data/lib/puppet/ssl/base.rb +3 -5
- data/lib/puppet/ssl/certificate.rb +0 -6
- data/lib/puppet/ssl/certificate_request.rb +1 -12
- data/lib/puppet/ssl/certificate_signer.rb +6 -0
- data/lib/puppet/ssl/oids.rb +3 -1
- data/lib/puppet/ssl/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +37 -1
- data/lib/puppet/ssl/state_machine.rb +3 -1
- data/lib/puppet/ssl/verifier.rb +2 -0
- data/lib/puppet/test/test_helper.rb +19 -16
- data/lib/puppet/transaction.rb +3 -9
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +10 -8
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +9 -77
- data/lib/puppet/type/file.rb +45 -22
- data/lib/puppet/type/file/checksum.rb +5 -5
- data/lib/puppet/type/file/source.rb +33 -13
- data/lib/puppet/type/filebucket.rb +4 -4
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +5 -13
- data/lib/puppet/type/service.rb +53 -0
- data/lib/puppet/type/user.rb +18 -3
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/autoload.rb +9 -7
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/execution.rb +2 -13
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/monkey_patches.rb +0 -46
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/rdoc.rb +0 -7
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/rubygems.rb +5 -1
- data/lib/puppet/util/run_mode.rb +14 -2
- data/lib/puppet/util/windows.rb +3 -7
- data/lib/puppet/util/windows/daemon.rb +360 -0
- data/lib/puppet/util/windows/error.rb +1 -0
- data/lib/puppet/util/windows/eventlog.rb +5 -15
- data/lib/puppet/util/windows/file.rb +8 -242
- data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +4 -226
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +4 -4
- data/lib/puppet/util/windows/service.rb +52 -486
- data/lib/puppet/util/windows/string.rb +12 -13
- data/lib/puppet/util/windows/user.rb +242 -8
- data/lib/puppet/util/yaml.rb +0 -22
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509.rb +5 -1
- data/lib/puppet/x509/cert_provider.rb +29 -1
- data/locales/puppet.pot +713 -1380
- data/man/man5/puppet.conf.5 +84 -98
- data/man/man8/puppet-agent.8 +7 -4
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +6 -6
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +55 -9
- data/man/man8/puppet-filebucket.8 +6 -6
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-module.8 +1 -58
- data/man/man8/puppet-node.8 +7 -4
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +4 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
- data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/integration/application/agent_spec.rb +157 -59
- data/spec/integration/application/apply_spec.rb +150 -150
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +78 -29
- data/spec/integration/application/help_spec.rb +44 -0
- data/spec/integration/application/lookup_spec.rb +13 -0
- data/spec/integration/application/module_spec.rb +68 -0
- data/spec/integration/application/plugin_spec.rb +76 -4
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +33 -5
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/network/http_pool_spec.rb +29 -30
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/parser/catalog_spec.rb +0 -38
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/parser/node_spec.rb +0 -9
- data/spec/integration/parser/pcore_resource_spec.rb +0 -37
- data/spec/integration/type/file_spec.rb +6 -5
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +2 -2
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/integration/util/windows/security_spec.rb +1 -1
- data/spec/integration/util/windows/user_spec.rb +47 -5
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +9 -1
- data/spec/lib/puppet_spec/settings.rb +7 -1
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/agent_spec.rb +0 -2
- data/spec/unit/application/agent_spec.rb +3 -4
- data/spec/unit/application/config_spec.rb +224 -4
- data/spec/unit/application/doc_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +74 -8
- data/spec/unit/application/filebucket_spec.rb +41 -39
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +17 -4
- data/spec/unit/application_spec.rb +9 -4
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +14 -0
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +96 -44
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +12 -10
- data/spec/unit/defaults_spec.rb +77 -28
- data/spec/unit/environments_spec.rb +96 -32
- data/spec/unit/face/config_spec.rb +65 -12
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +2 -2
- data/spec/unit/face/plugin_spec.rb +73 -33
- data/spec/unit/file_bucket/file_spec.rb +1 -1
- data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +18 -0
- data/spec/unit/file_system_spec.rb +1 -2
- data/spec/unit/functions/camelcase_spec.rb +1 -1
- data/spec/unit/functions/capitalize_spec.rb +1 -1
- data/spec/unit/functions/downcase_spec.rb +1 -1
- data/spec/unit/functions/inline_epp_spec.rb +26 -1
- data/spec/unit/functions/upcase_spec.rb +1 -1
- data/spec/unit/http/client_spec.rb +71 -17
- data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
- data/spec/unit/http/external_client_spec.rb +4 -4
- data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
- data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
- data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
- data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
- data/spec/unit/http/resolver_spec.rb +34 -15
- data/spec/unit/http/response_spec.rb +6 -0
- data/spec/unit/http/service/ca_spec.rb +2 -3
- data/spec/unit/http/service/compiler_spec.rb +51 -65
- data/spec/unit/http/service/file_server_spec.rb +5 -6
- data/spec/unit/http/service/puppetserver_spec.rb +112 -0
- data/spec/unit/http/service/report_spec.rb +2 -3
- data/spec/unit/http/service_spec.rb +1 -3
- data/spec/unit/http/session_spec.rb +24 -35
- data/spec/unit/{network/http → http}/site_spec.rb +3 -3
- data/spec/unit/indirector/catalog/json_spec.rb +1 -1
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
- data/spec/unit/indirector/facts/facter_spec.rb +97 -0
- data/spec/unit/indirector/facts/json_spec.rb +255 -0
- data/spec/unit/indirector/facts/rest_spec.rb +1 -1
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_metadata/http_spec.rb +27 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_server_spec.rb +1 -15
- data/spec/unit/indirector/json_spec.rb +8 -8
- data/spec/unit/indirector/msgpack_spec.rb +8 -8
- data/spec/unit/indirector/node/json_spec.rb +33 -0
- data/spec/unit/indirector/node/rest_spec.rb +1 -1
- data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
- data/spec/unit/indirector/report/rest_spec.rb +2 -17
- data/spec/unit/indirector/report/yaml_spec.rb +72 -8
- data/spec/unit/indirector/request_spec.rb +3 -267
- data/spec/unit/indirector/rest_spec.rb +98 -752
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/authconfig_spec.rb +2 -132
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/formats_spec.rb +4 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +3 -98
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
- data/spec/unit/network/http/api_spec.rb +10 -0
- data/spec/unit/network/http/connection_spec.rb +61 -73
- data/spec/unit/network/http/handler_spec.rb +0 -6
- data/spec/unit/network/http_pool_spec.rb +0 -4
- data/spec/unit/node/environment_spec.rb +51 -22
- data/spec/unit/node_spec.rb +2 -54
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +19 -8
- data/spec/unit/pops/loaders/loaders_spec.rb +77 -22
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
- data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +7 -17
- data/spec/unit/pops/types/type_factory_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +61 -46
- data/spec/unit/pops/visitor_spec.rb +1 -1
- data/spec/unit/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/nameservice_spec.rb +0 -57
- data/spec/unit/provider/package/apt_spec.rb +77 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dpkg_spec.rb +22 -55
- data/spec/unit/provider/package/gem_spec.rb +32 -0
- data/spec/unit/provider/package/openbsd_spec.rb +2 -0
- data/spec/unit/provider/package/pip2_spec.rb +36 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +6 -2
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
- data/spec/unit/provider/package/yum_spec.rb +31 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/bsd_spec.rb +5 -1
- data/spec/unit/provider/service/daemontools_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +3 -5
- data/spec/unit/provider/service/freebsd_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_spec.rb +4 -5
- data/spec/unit/provider/service/init_spec.rb +45 -5
- data/spec/unit/provider/service/launchd_spec.rb +5 -6
- data/spec/unit/provider/service/openrc_spec.rb +4 -5
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/runit_spec.rb +2 -1
- data/spec/unit/provider/service/smf_spec.rb +402 -166
- data/spec/unit/provider/service/src_spec.rb +3 -5
- data/spec/unit/provider/service/systemd_spec.rb +3 -6
- data/spec/unit/provider/service/upstart_spec.rb +4 -5
- data/spec/unit/provider/service/windows_spec.rb +50 -15
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +22 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/provider_spec.rb +0 -12
- data/spec/unit/puppet_pal_2pec.rb +40 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource/type_collection_spec.rb +2 -22
- data/spec/unit/resource_spec.rb +3 -59
- data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
- data/spec/unit/settings/integer_setting_spec.rb +42 -0
- data/spec/unit/settings/port_setting_spec.rb +31 -0
- data/spec/unit/settings/priority_setting_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +586 -239
- data/spec/unit/ssl/base_spec.rb +36 -3
- data/spec/unit/ssl/certificate_request_spec.rb +15 -45
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/ssl_provider_spec.rb +78 -49
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +3 -3
- data/spec/unit/transaction/resource_harness_spec.rb +2 -2
- data/spec/unit/transaction_spec.rb +45 -79
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +1 -1
- data/spec/unit/type/file/ensure_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +1 -1
- data/spec/unit/type/file/source_spec.rb +4 -5
- data/spec/unit/type/file_spec.rb +134 -102
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type/service_spec.rb +209 -0
- data/spec/unit/type/user_spec.rb +31 -2
- data/spec/unit/type_spec.rb +70 -0
- data/spec/unit/util/backups_spec.rb +0 -2
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/checksums_spec.rb +16 -0
- data/spec/unit/util/command_line_spec.rb +11 -6
- data/spec/unit/util/execution_spec.rb +0 -29
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/rubygems_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -127
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util/windows/string_spec.rb +1 -3
- data/spec/unit/util/yaml_spec.rb +0 -54
- data/spec/unit/util_spec.rb +3 -21
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- metadata +76 -270
- data/conf/auth.conf +0 -150
- data/lib/puppet/application/cert.rb +0 -76
- data/lib/puppet/application/key.rb +0 -4
- data/lib/puppet/application/man.rb +0 -4
- data/lib/puppet/application/status.rb +0 -4
- data/lib/puppet/face/key.rb +0 -16
- data/lib/puppet/face/man.rb +0 -145
- data/lib/puppet/face/module/build.rb +0 -14
- data/lib/puppet/face/module/generate.rb +0 -14
- data/lib/puppet/face/module/search.rb +0 -103
- data/lib/puppet/face/status.rb +0 -51
- data/lib/puppet/indirector/certificate/file.rb +0 -9
- data/lib/puppet/indirector/certificate/rest.rb +0 -18
- data/lib/puppet/indirector/certificate_request/file.rb +0 -9
- data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
- data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
- data/lib/puppet/indirector/file_content/http.rb +0 -22
- data/lib/puppet/indirector/key/file.rb +0 -46
- data/lib/puppet/indirector/key/memory.rb +0 -7
- data/lib/puppet/indirector/ssl_file.rb +0 -162
- data/lib/puppet/indirector/status.rb +0 -3
- data/lib/puppet/indirector/status/local.rb +0 -12
- data/lib/puppet/indirector/status/rest.rb +0 -27
- data/lib/puppet/module_tool/applications/searcher.rb +0 -29
- data/lib/puppet/network/auth_config_parser.rb +0 -90
- data/lib/puppet/network/authstore.rb +0 -283
- data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
- data/lib/puppet/network/http/api/master/v3/environment.rb +0 -85
- data/lib/puppet/network/http/base_pool.rb +0 -36
- data/lib/puppet/network/http/compression.rb +0 -127
- data/lib/puppet/network/http/connection_adapter.rb +0 -182
- data/lib/puppet/network/http/nocache_pool.rb +0 -28
- data/lib/puppet/network/rest_controller.rb +0 -2
- data/lib/puppet/network/rights.rb +0 -210
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -64
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -20
- data/lib/puppet/parser/environment_compiler.rb +0 -199
- data/lib/puppet/pops/types/enumeration.rb +0 -16
- data/lib/puppet/resource/capability_finder.rb +0 -154
- data/lib/puppet/rest/errors.rb +0 -15
- data/lib/puppet/rest/response.rb +0 -35
- data/lib/puppet/rest/route.rb +0 -85
- data/lib/puppet/rest/routes.rb +0 -135
- data/lib/puppet/ssl/host.rb +0 -505
- data/lib/puppet/ssl/key.rb +0 -61
- data/lib/puppet/ssl/validator.rb +0 -61
- data/lib/puppet/ssl/validator/default_validator.rb +0 -209
- data/lib/puppet/ssl/validator/no_validator.rb +0 -22
- data/lib/puppet/ssl/verifier_adapter.rb +0 -58
- data/lib/puppet/status.rb +0 -40
- data/lib/puppet/util/connection.rb +0 -88
- data/lib/puppet/util/ssl.rb +0 -83
- data/lib/puppet/util/windows/api_types.rb +0 -282
- data/lib/puppet/vendor/load_pathspec.rb +0 -1
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
- data/lib/puppet/vendor/pathspec/LICENSE +0 -201
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/pathspec/README.md +0 -53
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
- data/man/man8/puppet-key.8 +0 -126
- data/man/man8/puppet-man.8 +0 -76
- data/man/man8/puppet-status.8 +0 -108
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/file_bucket/file_spec.rb +0 -50
- data/spec/integration/file_serving/content_spec.rb +0 -7
- data/spec/integration/file_serving/fileset_spec.rb +0 -12
- data/spec/integration/file_serving/metadata_spec.rb +0 -8
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
- data/spec/integration/file_system/uniquefile_spec.rb +0 -26
- data/spec/integration/module_tool/forge_spec.rb +0 -51
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/network/authconfig_spec.rb +0 -256
- data/spec/integration/provider/service/init_spec.rb +0 -48
- data/spec/integration/provider/service/systemd_spec.rb +0 -25
- data/spec/integration/provider/service/windows_spec.rb +0 -50
- data/spec/integration/reference/providers_spec.rb +0 -21
- data/spec/integration/reports_spec.rb +0 -13
- data/spec/integration/ssl/certificate_request_spec.rb +0 -44
- data/spec/integration/ssl/host_spec.rb +0 -72
- data/spec/integration/ssl/key_spec.rb +0 -99
- data/spec/integration/test/test_helper_spec.rb +0 -31
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/capability_spec.rb +0 -414
- data/spec/unit/face/catalog_spec.rb +0 -6
- data/spec/unit/face/key_spec.rb +0 -9
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/face/module/search_spec.rb +0 -231
- data/spec/unit/face/module_spec.rb +0 -3
- data/spec/unit/face/status_spec.rb +0 -9
- data/spec/unit/indirector/certificate/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
- data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
- data/spec/unit/indirector/key/file_spec.rb +0 -79
- data/spec/unit/indirector/ssl_file_spec.rb +0 -305
- data/spec/unit/indirector/status/local_spec.rb +0 -10
- data/spec/unit/indirector/status/rest_spec.rb +0 -50
- data/spec/unit/man_spec.rb +0 -31
- data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
- data/spec/unit/network/auth_config_parser_spec.rb +0 -115
- data/spec/unit/network/authstore_spec.rb +0 -422
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
- data/spec/unit/network/http/compression_spec.rb +0 -240
- data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
- data/spec/unit/network/http_spec.rb +0 -9
- data/spec/unit/network/rights_spec.rb +0 -439
- data/spec/unit/parser/environment_compiler_spec.rb +0 -723
- data/spec/unit/pops/types/enumeration_spec.rb +0 -51
- data/spec/unit/resource/capability_finder_spec.rb +0 -143
- data/spec/unit/rest/route_spec.rb +0 -132
- data/spec/unit/ssl/host_spec.rb +0 -650
- data/spec/unit/ssl/key_spec.rb +0 -173
- data/spec/unit/ssl/validator_spec.rb +0 -278
- data/spec/unit/status_spec.rb +0 -45
- data/spec/unit/util/ssl_spec.rb +0 -91
data/lib/puppet/http/resolver.rb
CHANGED
@@ -1,26 +1,17 @@
|
|
1
|
-
#
|
2
|
-
# @api private
|
3
|
-
#
|
4
1
|
# Resolver base class. Each resolver represents a different strategy for
|
5
2
|
# resolving a service name into a list of candidate servers and ports.
|
6
3
|
#
|
7
4
|
# @abstract Subclass and override {#resolve} to create a new resolver.
|
8
|
-
#
|
5
|
+
# @api public
|
9
6
|
class Puppet::HTTP::Resolver
|
10
7
|
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
# Create a new resolver
|
8
|
+
# Create a new resolver.
|
14
9
|
#
|
15
10
|
# @param [Puppet::HTTP::Client] client
|
16
|
-
#
|
17
11
|
def initialize(client)
|
18
12
|
@client = client
|
19
13
|
end
|
20
14
|
|
21
|
-
#
|
22
|
-
# @api private
|
23
|
-
#
|
24
15
|
# Return a working server/port for the resolver. This is the base
|
25
16
|
# implementation and is meant to be a placeholder.
|
26
17
|
#
|
@@ -28,34 +19,30 @@ class Puppet::HTTP::Resolver
|
|
28
19
|
# @param [Symbol] name the service to resolve
|
29
20
|
# @param [Puppet::SSL::SSLContext] ssl_context (nil) optional ssl context to
|
30
21
|
# use when creating a connection
|
31
|
-
# @param [Proc]
|
32
|
-
#
|
22
|
+
# @param [Proc] canceled_handler (nil) optional callback allowing a resolver
|
23
|
+
# to cancel resolution.
|
33
24
|
#
|
34
25
|
# @raise [NotImplementedError] this base class is not implemented
|
35
26
|
#
|
36
|
-
|
27
|
+
# @api public
|
28
|
+
def resolve(session, name, ssl_context: nil, canceled_handler: nil)
|
37
29
|
raise NotImplementedError
|
38
30
|
end
|
39
31
|
|
40
|
-
#
|
41
|
-
# @api private
|
42
|
-
#
|
43
|
-
# Check a given connection to establish if it can be relied on for future use
|
32
|
+
# Check a given connection to establish if it can be relied on for future use.
|
44
33
|
#
|
45
34
|
# @param [Puppet::HTTP::Session] session
|
46
35
|
# @param [Puppet::HTTP::Service] service
|
47
36
|
# @param [Puppet::SSL::SSLContext] ssl_context
|
48
|
-
# @param [Proc] error_handler (nil) optional callback for each error
|
49
|
-
# encountered while resolving a route.
|
50
37
|
#
|
51
38
|
# @return [Boolean] Returns true if a connection is successful, false otherwise
|
52
39
|
#
|
53
|
-
|
40
|
+
# @api public
|
41
|
+
def check_connection?(session, service, ssl_context: nil)
|
54
42
|
service.connect(ssl_context: ssl_context)
|
55
43
|
return true
|
56
44
|
rescue Puppet::HTTP::ConnectionError => e
|
57
|
-
|
58
|
-
Puppet.debug("Connection to #{service.url} failed, trying next route: #{e.message}")
|
45
|
+
Puppet.log_exception(e, "Connection to #{service.url} failed, trying next route: #{e.message}")
|
59
46
|
return false
|
60
47
|
end
|
61
48
|
end
|
@@ -1,12 +1,10 @@
|
|
1
|
-
#
|
2
|
-
# @api private
|
3
|
-
#
|
4
1
|
# Use the server_list setting to resolve a service. This resolver is only used
|
5
2
|
# if server_list is set either on the command line or in the configuration file.
|
6
3
|
#
|
4
|
+
# @api public
|
7
5
|
class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
|
8
|
-
|
9
|
-
#
|
6
|
+
|
7
|
+
# Create a server list resolver.
|
10
8
|
#
|
11
9
|
# @param [Puppet::HTTP::Client] client
|
12
10
|
# @param [Array<String>] server_list_setting array of servers set via the
|
@@ -22,19 +20,15 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
|
|
22
20
|
@server_list_setting = server_list_setting
|
23
21
|
@default_port = default_port
|
24
22
|
@services = services
|
25
|
-
@resolved_url = nil
|
26
23
|
end
|
27
24
|
|
28
|
-
#
|
29
|
-
# @api private
|
30
|
-
#
|
31
25
|
# Walk the server_list to find a server and port that will connect successfully.
|
32
26
|
#
|
33
|
-
# @param [Puppet::HTTP::Session] session
|
27
|
+
# @param [Puppet::HTTP::Session] session
|
34
28
|
# @param [Symbol] name the name of the service being resolved
|
35
29
|
# @param [Puppet::SSL::SSLContext] ssl_context
|
36
|
-
# @param [Proc]
|
37
|
-
#
|
30
|
+
# @param [Proc] canceled_handler optional callback allowing a resolver
|
31
|
+
# to cancel resolution.
|
38
32
|
#
|
39
33
|
# @return [nil] return nil if the service to be resolved does not support
|
40
34
|
# server_list
|
@@ -44,7 +38,8 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
|
|
44
38
|
# @raise [Puppet::Error] raise if none of the servers defined in server_list
|
45
39
|
# are available
|
46
40
|
#
|
47
|
-
|
41
|
+
# @api public
|
42
|
+
def resolve(session, name, ssl_context: nil, canceled_handler: nil)
|
48
43
|
# If we're configured to use an explicit service host, e.g. report_server
|
49
44
|
# then don't use server_list to resolve the `:report` service.
|
50
45
|
return nil unless @services.include?(name)
|
@@ -58,41 +53,24 @@ class Puppet::HTTP::Resolver::ServerList < Puppet::HTTP::Resolver
|
|
58
53
|
@server_list_setting.value.each do |server|
|
59
54
|
host = server[0]
|
60
55
|
port = server[1] || @default_port
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
56
|
+
|
57
|
+
service = Puppet::HTTP::Service.create_service(@client, session, :puppetserver, host, port)
|
58
|
+
begin
|
59
|
+
service.get_simple_status(ssl_context: ssl_context)
|
60
|
+
@resolved_url = service.url
|
61
|
+
return Puppet::HTTP::Service.create_service(@client, session, name, @resolved_url.host, @resolved_url.port)
|
62
|
+
rescue Puppet::HTTP::ResponseError => detail
|
63
|
+
Puppet.log_exception(detail, _("Puppet server %{host}:%{port} is unavailable: %{code} %{reason}") %
|
64
|
+
{ host: service.url.host, port: service.url.port, code: detail.response.code, reason: detail.response.reason })
|
65
|
+
rescue Puppet::HTTP::HTTPError => detail
|
66
|
+
Puppet.log_exception(detail, _("Unable to connect to server from server_list setting: %{detail}") % {detail: detail})
|
65
67
|
end
|
66
68
|
end
|
67
69
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
#
|
72
|
-
# @api private
|
73
|
-
#
|
74
|
-
# Check if a server and port is available
|
75
|
-
#
|
76
|
-
# @param [URI] uri A URI created from the server and port to test
|
77
|
-
# @param [Puppet::HTTP::Session] session
|
78
|
-
# @param [Puppet::SSL::SSLContext] ssl_context
|
79
|
-
# @param [Proc] error_handler (nil) optional callback for each error
|
80
|
-
# encountered while resolving a route.
|
81
|
-
#
|
82
|
-
# @return [Boolean] true if a successful response is returned by the server,
|
83
|
-
# false otherwise
|
84
|
-
#
|
85
|
-
def get_success?(uri, session, ssl_context: nil, error_handler: nil)
|
86
|
-
response = @client.get(uri, options: {ssl_context: ssl_context})
|
87
|
-
return true if response.success?
|
70
|
+
# don't fallback to other resolvers
|
71
|
+
canceled_handler.call(true) if canceled_handler
|
88
72
|
|
89
|
-
|
90
|
-
|
91
|
-
return false
|
92
|
-
rescue => detail
|
93
|
-
error_handler.call(detail) if error_handler
|
94
|
-
#TRANSLATORS 'server_list' is the name of a setting and should not be translated
|
95
|
-
Puppet.debug _("Unable to connect to server from server_list setting: %{detail}") % {detail: detail}
|
96
|
-
return false
|
73
|
+
# not found
|
74
|
+
nil
|
97
75
|
end
|
98
76
|
end
|
@@ -1,26 +1,23 @@
|
|
1
|
-
#
|
2
|
-
# @api private
|
3
|
-
#
|
4
1
|
# Resolve a service using settings. This is the default resolver if none of the
|
5
2
|
# other resolvers find a functional connection.
|
6
3
|
#
|
4
|
+
# @api public
|
7
5
|
class Puppet::HTTP::Resolver::Settings < Puppet::HTTP::Resolver
|
8
|
-
|
9
|
-
# @api private
|
10
|
-
#
|
6
|
+
|
11
7
|
# Resolve a service using the default server and port settings for this service.
|
12
8
|
#
|
13
9
|
# @param [Puppet::HTTP::Session] session
|
14
10
|
# @param [Symbol] name the name of the service to be resolved
|
15
11
|
# @param [Puppet::SSL::SSLContext] ssl_context
|
16
|
-
# @param [Proc]
|
17
|
-
#
|
12
|
+
# @param [Proc] canceled_handler optional callback allowing a resolver
|
13
|
+
# to cancel resolution.
|
18
14
|
#
|
19
15
|
# @return [Puppet::HTTP::Service] if the service successfully connects,
|
20
16
|
# return it. Otherwise, return nil.
|
21
17
|
#
|
22
|
-
|
18
|
+
# @api public
|
19
|
+
def resolve(session, name, ssl_context: nil, canceled_handler: nil)
|
23
20
|
service = Puppet::HTTP::Service.create_service(@client, session, name)
|
24
|
-
check_connection?(session, service, ssl_context: ssl_context
|
21
|
+
check_connection?(session, service, ssl_context: ssl_context) ? service : nil
|
25
22
|
end
|
26
23
|
end
|
@@ -1,11 +1,9 @@
|
|
1
|
+
# Resolve a service using DNS SRV records.
|
1
2
|
#
|
2
|
-
# @api
|
3
|
-
#
|
4
|
-
# Resolve a service using SRV
|
5
|
-
#
|
3
|
+
# @api public
|
6
4
|
class Puppet::HTTP::Resolver::SRV < Puppet::HTTP::Resolver
|
7
|
-
|
8
|
-
#
|
5
|
+
|
6
|
+
# Create an DNS SRV resolver.
|
9
7
|
#
|
10
8
|
# @param [Puppet::HTTP::Client] client
|
11
9
|
# @param [String] domain srv domain
|
@@ -14,32 +12,30 @@ class Puppet::HTTP::Resolver::SRV < Puppet::HTTP::Resolver
|
|
14
12
|
def initialize(client, domain:, dns: Resolv::DNS.new)
|
15
13
|
@client = client
|
16
14
|
@srv_domain = domain
|
17
|
-
@delegate = Puppet::
|
15
|
+
@delegate = Puppet::HTTP::DNS.new(dns)
|
18
16
|
end
|
19
17
|
|
20
|
-
#
|
21
|
-
# @api private
|
22
|
-
#
|
23
18
|
# Walk the available srv records and return the first that successfully connects
|
24
19
|
#
|
25
20
|
# @param [Puppet::HTTP::Session] session
|
26
21
|
# @param [Symbol] name the service being resolved
|
27
22
|
# @param [Puppet::SSL::SSLContext] ssl_context
|
28
|
-
# @param [Proc]
|
29
|
-
#
|
23
|
+
# @param [Proc] canceled_handler optional callback allowing a resolver
|
24
|
+
# to cancel resolution.
|
30
25
|
#
|
31
26
|
# @return [Puppet::HTTP::Service] if an available service is found, return
|
32
27
|
# it. Return nil otherwise.
|
33
28
|
#
|
34
|
-
|
29
|
+
# @api public
|
30
|
+
def resolve(session, name, ssl_context: nil, canceled_handler: nil)
|
35
31
|
# Here we pass our HTTP service name as the DNS SRV service name
|
36
32
|
# This is fine for :ca, but note that :puppet and :file are handled
|
37
33
|
# specially in `each_srv_record`.
|
38
34
|
@delegate.each_srv_record(@srv_domain, name) do |server, port|
|
39
35
|
service = Puppet::HTTP::Service.create_service(@client, session, name, server, port)
|
40
|
-
return service if check_connection?(session, service, ssl_context: ssl_context
|
36
|
+
return service if check_connection?(session, service, ssl_context: ssl_context)
|
41
37
|
end
|
42
38
|
|
43
|
-
|
39
|
+
nil
|
44
40
|
end
|
45
41
|
end
|
data/lib/puppet/http/response.rb
CHANGED
@@ -1,99 +1,100 @@
|
|
1
|
+
# Represents the response returned from the server from an HTTP request.
|
1
2
|
#
|
2
|
-
# @api
|
3
|
-
#
|
4
|
-
# Represents the response returned from the server from an HTTP request
|
5
|
-
#
|
3
|
+
# @api abstract
|
4
|
+
# @api public
|
6
5
|
class Puppet::HTTP::Response
|
7
|
-
# @
|
8
|
-
# @return [Net::HTTP] the Net::HTTP response
|
9
|
-
attr_reader :nethttp
|
10
|
-
|
11
|
-
# @api private
|
12
|
-
# @return [URI] the response uri
|
6
|
+
# @return [URI] the response url
|
13
7
|
attr_reader :url
|
14
8
|
|
9
|
+
# Create a response associated with the URL.
|
15
10
|
#
|
16
|
-
# @api private
|
17
|
-
#
|
18
|
-
# Object to represent the response returned from an HTTP request
|
19
|
-
#
|
20
|
-
# @param [Net::HTTP] nethttp the request response
|
21
11
|
# @param [URI] url
|
22
|
-
#
|
23
|
-
|
24
|
-
|
12
|
+
# @param [Integer] HTTP status
|
13
|
+
# @param [String] HTTP reason
|
14
|
+
def initialize(url, code, reason)
|
25
15
|
@url = url
|
16
|
+
@code = code
|
17
|
+
@reason = reason
|
26
18
|
end
|
27
19
|
|
28
|
-
#
|
29
|
-
# @api private
|
30
|
-
#
|
31
|
-
# Extract the response code
|
20
|
+
# Return the response code.
|
32
21
|
#
|
33
22
|
# @return [Integer] Response code for the request
|
34
23
|
#
|
24
|
+
# @api public
|
35
25
|
def code
|
36
|
-
@
|
26
|
+
@code
|
37
27
|
end
|
38
28
|
|
39
|
-
#
|
40
|
-
# @api private
|
41
|
-
#
|
42
|
-
# Extract the response message
|
29
|
+
# Return the response message.
|
43
30
|
#
|
44
31
|
# @return [String] Response message for the request
|
45
32
|
#
|
33
|
+
# @api public
|
46
34
|
def reason
|
47
|
-
@
|
35
|
+
@reason
|
48
36
|
end
|
49
37
|
|
50
|
-
#
|
51
|
-
# @api private
|
52
|
-
#
|
53
38
|
# Returns the entire response body. Can be used instead of
|
54
|
-
# Puppet::HTTP::Response.read_body
|
39
|
+
# `Puppet::HTTP::Response.read_body`, but both methods cannot be used for the
|
55
40
|
# same response.
|
56
41
|
#
|
57
42
|
# @return [String] Response body for the request
|
58
43
|
#
|
44
|
+
# @api public
|
59
45
|
def body
|
60
|
-
|
46
|
+
raise NotImplementedError
|
61
47
|
end
|
62
48
|
|
63
|
-
#
|
64
|
-
# @api private
|
65
|
-
#
|
66
49
|
# Streams the response body to the caller in chunks. Can be used instead of
|
67
|
-
# Puppet::HTTP::Response.body
|
50
|
+
# `Puppet::HTTP::Response.body`, but both methods cannot be used for the same
|
68
51
|
# response.
|
69
52
|
#
|
70
53
|
# @yield [String] Streams the response body in chunks
|
71
54
|
#
|
72
55
|
# @raise [ArgumentError] raise if a block is not given
|
73
56
|
#
|
57
|
+
# @api public
|
74
58
|
def read_body(&block)
|
75
|
-
raise
|
76
|
-
|
77
|
-
@nethttp.read_body(&block)
|
59
|
+
raise NotImplementedError
|
78
60
|
end
|
79
61
|
|
80
|
-
#
|
81
|
-
# @api private
|
82
|
-
#
|
83
|
-
# Check if the request received a response of success
|
62
|
+
# Check if the request received a response of success (HTTP 2xx).
|
84
63
|
#
|
85
64
|
# @return [Boolean] Returns true if the response indicates success
|
86
65
|
#
|
66
|
+
# @api public
|
87
67
|
def success?
|
88
|
-
@
|
68
|
+
200 <= @code && @code < 300
|
89
69
|
end
|
90
70
|
|
91
|
-
#
|
71
|
+
# Get a header case-insensitively.
|
72
|
+
#
|
73
|
+
# @param [String] name The header name
|
74
|
+
# @return [String] The header value
|
75
|
+
#
|
76
|
+
# @api public
|
92
77
|
def [](name)
|
93
|
-
|
78
|
+
raise NotImplementedError
|
79
|
+
end
|
80
|
+
|
81
|
+
# Yield each header name and value. Returns an enumerator if no block is given.
|
82
|
+
#
|
83
|
+
# @yieldparam [String] header name
|
84
|
+
# @yieldparam [String] header value
|
85
|
+
#
|
86
|
+
# @api public
|
87
|
+
def each_header(&block)
|
88
|
+
raise NotImplementedError
|
94
89
|
end
|
95
90
|
|
96
|
-
#
|
91
|
+
# Ensure the response body is fully read so that the server is not blocked
|
92
|
+
# waiting for us to read data from the socket. Also if the caller streamed
|
93
|
+
# the response, but didn't read the data, we need a way to drain the socket
|
94
|
+
# before adding the connection back to the connection pool, otherwise the
|
95
|
+
# unread response data would "leak" into the next HTTP request/response.
|
96
|
+
#
|
97
|
+
# @api public
|
97
98
|
def drain
|
98
99
|
body
|
99
100
|
true
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Puppet::HTTP::ResponseConverter
|
2
|
+
module_function
|
3
|
+
|
4
|
+
# Borrowed from puppetserver, see https://github.com/puppetlabs/puppetserver/commit/a1ebeaaa5af590003ccd23c89f808ba4f0c89609
|
5
|
+
def to_ruby_response(response)
|
6
|
+
str_code = response.code.to_s
|
7
|
+
|
8
|
+
# Copied from Net::HTTPResponse because it is private there.
|
9
|
+
clazz = Net::HTTPResponse::CODE_TO_OBJ[str_code] or
|
10
|
+
Net::HTTPResponse::CODE_CLASS_TO_OBJ[str_code[0,1]] or
|
11
|
+
Net::HTTPUnknownResponse
|
12
|
+
result = clazz.new(nil, str_code, nil)
|
13
|
+
result.body = response.body
|
14
|
+
# This is nasty, nasty. But apparently there is no way to create
|
15
|
+
# an instance of Net::HttpResponse from outside of the library and have
|
16
|
+
# the body be readable, unless you do stupid things like this.
|
17
|
+
result.instance_variable_set(:@read, true)
|
18
|
+
response.each_header do |k,v|
|
19
|
+
result[k] = v
|
20
|
+
end
|
21
|
+
result
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# Adapts Net::HTTPResponse to Puppet::HTTP::Response
|
2
|
+
#
|
3
|
+
# @api public
|
4
|
+
class Puppet::HTTP::ResponseNetHTTP < Puppet::HTTP::Response
|
5
|
+
|
6
|
+
# Create a response associated with the URL.
|
7
|
+
#
|
8
|
+
# @param [URI] url
|
9
|
+
# @param [Net::HTTPResponse] nethttp The response
|
10
|
+
def initialize(url, nethttp)
|
11
|
+
super(url, nethttp.code.to_i, nethttp.message)
|
12
|
+
|
13
|
+
@nethttp = nethttp
|
14
|
+
end
|
15
|
+
|
16
|
+
# (see Puppet::HTTP::Response#body)
|
17
|
+
def body
|
18
|
+
@nethttp.body
|
19
|
+
end
|
20
|
+
|
21
|
+
# (see Puppet::HTTP::Response#read_body)
|
22
|
+
def read_body(&block)
|
23
|
+
raise ArgumentError, "A block is required" unless block_given?
|
24
|
+
|
25
|
+
@nethttp.read_body(&block)
|
26
|
+
end
|
27
|
+
|
28
|
+
# (see Puppet::HTTP::Response#success?)
|
29
|
+
def success?
|
30
|
+
@nethttp.is_a?(Net::HTTPSuccess)
|
31
|
+
end
|
32
|
+
|
33
|
+
# (see Puppet::HTTP::Response#[])
|
34
|
+
def [](name)
|
35
|
+
@nethttp[name]
|
36
|
+
end
|
37
|
+
|
38
|
+
# (see Puppet::HTTP::Response#each_header)
|
39
|
+
def each_header(&block)
|
40
|
+
@nethttp.each_header(&block)
|
41
|
+
end
|
42
|
+
end
|