puppet 6.16.0-x64-mingw32 → 7.0.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +5 -3
- data/Gemfile.lock +31 -33
- data/README.md +4 -5
- data/Rakefile +4 -12
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -1
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/project_data.yaml +1 -14
- data/ext/redhat/puppet.spec.erb +0 -1
- data/ext/windows/service/daemon.rb +6 -5
- data/install.rb +21 -17
- data/lib/puppet.rb +11 -20
- data/lib/puppet/agent.rb +2 -2
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application.rb +172 -98
- data/lib/puppet/application/agent.rb +22 -6
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/device.rb +100 -104
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +15 -11
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/configurer.rb +66 -31
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/defaults.rb +166 -169
- data/lib/puppet/environments.rb +41 -15
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +56 -16
- data/lib/puppet/face/epp.rb +12 -2
- data/lib/puppet/face/facts.rb +66 -6
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/plugin.rb +5 -8
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/ffi/windows.rb +12 -0
- data/lib/puppet/ffi/windows/api_types.rb +311 -0
- data/lib/puppet/ffi/windows/constants.rb +404 -0
- data/lib/puppet/ffi/windows/functions.rb +628 -0
- data/lib/puppet/ffi/windows/structs.rb +338 -0
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/configuration.rb +0 -5
- data/lib/puppet/file_serving/configuration/parser.rb +3 -32
- data/lib/puppet/file_serving/http_metadata.rb +13 -1
- data/lib/puppet/file_serving/metadata.rb +4 -1
- data/lib/puppet/file_serving/mount.rb +1 -2
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +4 -4
- data/lib/puppet/file_system/uniquefile.rb +8 -16
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +3 -8
- data/lib/puppet/functions/epp.rb +1 -0
- data/lib/puppet/functions/inline_epp.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/new.rb +8 -3
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/rstrip.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +4 -4
- data/lib/puppet/generate/models/type/type.rb +4 -1
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +23 -13
- data/lib/puppet/http/client.rb +170 -115
- data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
- data/lib/puppet/http/errors.rb +16 -0
- data/lib/puppet/http/external_client.rb +5 -7
- data/lib/puppet/{network/http → http}/factory.rb +8 -11
- data/lib/puppet/{network/http → http}/pool.rb +61 -26
- data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
- data/lib/puppet/http/proxy.rb +137 -0
- data/lib/puppet/http/redirector.rb +13 -19
- data/lib/puppet/http/resolver.rb +10 -23
- data/lib/puppet/http/resolver/server_list.rb +23 -45
- data/lib/puppet/http/resolver/settings.rb +7 -10
- data/lib/puppet/http/resolver/srv.rb +11 -15
- data/lib/puppet/http/response.rb +49 -48
- data/lib/puppet/http/response_converter.rb +24 -0
- data/lib/puppet/http/response_net_http.rb +42 -0
- data/lib/puppet/http/retry_after_handler.rb +4 -13
- data/lib/puppet/http/service.rb +15 -27
- data/lib/puppet/http/service/ca.rb +11 -22
- data/lib/puppet/http/service/compiler.rb +23 -70
- data/lib/puppet/http/service/file_server.rb +19 -28
- data/lib/puppet/http/service/puppetserver.rb +53 -0
- data/lib/puppet/http/service/report.rb +8 -10
- data/lib/puppet/http/session.rb +16 -24
- data/lib/puppet/{network/http → http}/site.rb +1 -2
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/catalog/rest.rb +2 -4
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/fact_search.rb +60 -0
- data/lib/puppet/indirector/facts/facter.rb +27 -6
- data/lib/puppet/indirector/facts/json.rb +27 -0
- data/lib/puppet/indirector/facts/rest.rb +3 -22
- data/lib/puppet/indirector/facts/yaml.rb +4 -59
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
- data/lib/puppet/indirector/file_content/rest.rb +3 -7
- data/lib/puppet/indirector/file_metadata/http.rb +25 -5
- data/lib/puppet/indirector/file_metadata/rest.rb +5 -11
- data/lib/puppet/indirector/file_server.rb +1 -8
- data/lib/puppet/indirector/generic_http.rb +0 -11
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/json.rb +5 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/json.rb +8 -0
- data/lib/puppet/indirector/node/rest.rb +2 -4
- data/lib/puppet/indirector/report/json.rb +34 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/rest.rb +3 -8
- data/lib/puppet/indirector/request.rb +2 -103
- data/lib/puppet/indirector/rest.rb +12 -263
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/formats.rb +2 -1
- data/lib/puppet/network/http.rb +3 -3
- data/lib/puppet/network/http/api/indirected_routes.rb +3 -21
- data/lib/puppet/network/http/api/master/v3.rb +11 -13
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/connection.rb +247 -316
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node.rb +1 -30
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +93 -14
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -42
- data/lib/puppet/parser/compiler.rb +1 -199
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
- data/lib/puppet/parser/functions.rb +21 -17
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/resource.rb +3 -71
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +27 -13
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +18 -11
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- data/lib/puppet/pops/model/ast.pp +0 -42
- data/lib/puppet/pops/model/ast.rb +0 -290
- data/lib/puppet/pops/model/factory.rb +0 -45
- data/lib/puppet/pops/model/model_label_provider.rb +0 -5
- data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
- data/lib/puppet/pops/model/pn_transformer.rb +0 -16
- data/lib/puppet/pops/parser/egrammar.ra +0 -56
- data/lib/puppet/pops/parser/eparser.rb +1520 -1712
- data/lib/puppet/pops/parser/lexer2.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +0 -5
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -22
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- data/lib/puppet/pops/types/type_calculator.rb +0 -7
- data/lib/puppet/pops/types/type_parser.rb +0 -4
- data/lib/puppet/pops/types/types.rb +0 -1
- data/lib/puppet/pops/validation/checker4_0.rb +28 -42
- data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -1
- data/lib/puppet/provider.rb +0 -13
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +34 -0
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +1 -11
- data/lib/puppet/provider/package/gem.rb +27 -5
- data/lib/puppet/provider/package/pip.rb +0 -1
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/pkg.rb +0 -4
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +6 -4
- data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
- data/lib/puppet/provider/package/yum.rb +2 -1
- data/lib/puppet/provider/package/zypper.rb +3 -0
- data/lib/puppet/provider/service/smf.rb +191 -73
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +0 -10
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +11 -4
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reference/configuration.rb +2 -0
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/reports/http.rb +2 -0
- data/lib/puppet/resource.rb +3 -90
- data/lib/puppet/resource/catalog.rb +1 -14
- data/lib/puppet/resource/type.rb +5 -112
- data/lib/puppet/resource/type_collection.rb +3 -48
- data/lib/puppet/runtime.rb +1 -2
- data/lib/puppet/settings.rb +84 -35
- data/lib/puppet/settings/base_setting.rb +26 -2
- data/lib/puppet/settings/integer_setting.rb +17 -0
- data/lib/puppet/settings/port_setting.rb +15 -0
- data/lib/puppet/settings/priority_setting.rb +5 -4
- data/lib/puppet/ssl.rb +10 -6
- data/lib/puppet/ssl/base.rb +3 -5
- data/lib/puppet/ssl/certificate.rb +0 -6
- data/lib/puppet/ssl/certificate_request.rb +1 -12
- data/lib/puppet/ssl/certificate_signer.rb +6 -0
- data/lib/puppet/ssl/oids.rb +3 -1
- data/lib/puppet/ssl/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +37 -1
- data/lib/puppet/ssl/state_machine.rb +3 -1
- data/lib/puppet/ssl/verifier.rb +2 -0
- data/lib/puppet/test/test_helper.rb +19 -16
- data/lib/puppet/transaction.rb +3 -9
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +10 -8
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +9 -77
- data/lib/puppet/type/file.rb +45 -22
- data/lib/puppet/type/file/checksum.rb +5 -5
- data/lib/puppet/type/file/source.rb +33 -13
- data/lib/puppet/type/filebucket.rb +4 -4
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +5 -13
- data/lib/puppet/type/service.rb +53 -0
- data/lib/puppet/type/user.rb +18 -3
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/autoload.rb +9 -7
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/execution.rb +2 -13
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/monkey_patches.rb +0 -46
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/rdoc.rb +0 -7
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/rubygems.rb +5 -1
- data/lib/puppet/util/run_mode.rb +14 -2
- data/lib/puppet/util/windows.rb +3 -7
- data/lib/puppet/util/windows/daemon.rb +360 -0
- data/lib/puppet/util/windows/error.rb +1 -0
- data/lib/puppet/util/windows/eventlog.rb +5 -15
- data/lib/puppet/util/windows/file.rb +8 -242
- data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +4 -226
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +4 -4
- data/lib/puppet/util/windows/service.rb +52 -486
- data/lib/puppet/util/windows/string.rb +12 -13
- data/lib/puppet/util/windows/user.rb +242 -8
- data/lib/puppet/util/yaml.rb +0 -22
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509.rb +5 -1
- data/lib/puppet/x509/cert_provider.rb +29 -1
- data/locales/puppet.pot +713 -1380
- data/man/man5/puppet.conf.5 +84 -98
- data/man/man8/puppet-agent.8 +7 -4
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +6 -6
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +55 -9
- data/man/man8/puppet-filebucket.8 +6 -6
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-module.8 +1 -58
- data/man/man8/puppet-node.8 +7 -4
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +4 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
- data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/integration/application/agent_spec.rb +157 -59
- data/spec/integration/application/apply_spec.rb +150 -150
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +78 -29
- data/spec/integration/application/help_spec.rb +44 -0
- data/spec/integration/application/lookup_spec.rb +13 -0
- data/spec/integration/application/module_spec.rb +68 -0
- data/spec/integration/application/plugin_spec.rb +76 -4
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +33 -5
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/network/http_pool_spec.rb +29 -30
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/parser/catalog_spec.rb +0 -38
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/parser/node_spec.rb +0 -9
- data/spec/integration/parser/pcore_resource_spec.rb +0 -37
- data/spec/integration/type/file_spec.rb +6 -5
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +2 -2
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/integration/util/windows/security_spec.rb +1 -1
- data/spec/integration/util/windows/user_spec.rb +47 -5
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +9 -1
- data/spec/lib/puppet_spec/settings.rb +7 -1
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/agent_spec.rb +0 -2
- data/spec/unit/application/agent_spec.rb +3 -4
- data/spec/unit/application/config_spec.rb +224 -4
- data/spec/unit/application/doc_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +74 -8
- data/spec/unit/application/filebucket_spec.rb +41 -39
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +17 -4
- data/spec/unit/application_spec.rb +9 -4
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +14 -0
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +96 -44
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +12 -10
- data/spec/unit/defaults_spec.rb +77 -28
- data/spec/unit/environments_spec.rb +96 -32
- data/spec/unit/face/config_spec.rb +65 -12
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +2 -2
- data/spec/unit/face/plugin_spec.rb +73 -33
- data/spec/unit/file_bucket/file_spec.rb +1 -1
- data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +18 -0
- data/spec/unit/file_system_spec.rb +1 -2
- data/spec/unit/functions/camelcase_spec.rb +1 -1
- data/spec/unit/functions/capitalize_spec.rb +1 -1
- data/spec/unit/functions/downcase_spec.rb +1 -1
- data/spec/unit/functions/inline_epp_spec.rb +26 -1
- data/spec/unit/functions/upcase_spec.rb +1 -1
- data/spec/unit/http/client_spec.rb +71 -17
- data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
- data/spec/unit/http/external_client_spec.rb +4 -4
- data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
- data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
- data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
- data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
- data/spec/unit/http/resolver_spec.rb +34 -15
- data/spec/unit/http/response_spec.rb +6 -0
- data/spec/unit/http/service/ca_spec.rb +2 -3
- data/spec/unit/http/service/compiler_spec.rb +51 -65
- data/spec/unit/http/service/file_server_spec.rb +5 -6
- data/spec/unit/http/service/puppetserver_spec.rb +112 -0
- data/spec/unit/http/service/report_spec.rb +2 -3
- data/spec/unit/http/service_spec.rb +1 -3
- data/spec/unit/http/session_spec.rb +24 -35
- data/spec/unit/{network/http → http}/site_spec.rb +3 -3
- data/spec/unit/indirector/catalog/json_spec.rb +1 -1
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
- data/spec/unit/indirector/facts/facter_spec.rb +97 -0
- data/spec/unit/indirector/facts/json_spec.rb +255 -0
- data/spec/unit/indirector/facts/rest_spec.rb +1 -1
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_metadata/http_spec.rb +27 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_server_spec.rb +1 -15
- data/spec/unit/indirector/json_spec.rb +8 -8
- data/spec/unit/indirector/msgpack_spec.rb +8 -8
- data/spec/unit/indirector/node/json_spec.rb +33 -0
- data/spec/unit/indirector/node/rest_spec.rb +1 -1
- data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
- data/spec/unit/indirector/report/rest_spec.rb +2 -17
- data/spec/unit/indirector/report/yaml_spec.rb +72 -8
- data/spec/unit/indirector/request_spec.rb +3 -267
- data/spec/unit/indirector/rest_spec.rb +98 -752
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/authconfig_spec.rb +2 -132
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/formats_spec.rb +4 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +3 -98
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
- data/spec/unit/network/http/api_spec.rb +10 -0
- data/spec/unit/network/http/connection_spec.rb +61 -73
- data/spec/unit/network/http/handler_spec.rb +0 -6
- data/spec/unit/network/http_pool_spec.rb +0 -4
- data/spec/unit/node/environment_spec.rb +51 -22
- data/spec/unit/node_spec.rb +2 -54
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +19 -8
- data/spec/unit/pops/loaders/loaders_spec.rb +77 -22
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
- data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +7 -17
- data/spec/unit/pops/types/type_factory_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +61 -46
- data/spec/unit/pops/visitor_spec.rb +1 -1
- data/spec/unit/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/nameservice_spec.rb +0 -57
- data/spec/unit/provider/package/apt_spec.rb +77 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dpkg_spec.rb +22 -55
- data/spec/unit/provider/package/gem_spec.rb +32 -0
- data/spec/unit/provider/package/openbsd_spec.rb +2 -0
- data/spec/unit/provider/package/pip2_spec.rb +36 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +6 -2
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
- data/spec/unit/provider/package/yum_spec.rb +31 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/bsd_spec.rb +5 -1
- data/spec/unit/provider/service/daemontools_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +3 -5
- data/spec/unit/provider/service/freebsd_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_spec.rb +4 -5
- data/spec/unit/provider/service/init_spec.rb +45 -5
- data/spec/unit/provider/service/launchd_spec.rb +5 -6
- data/spec/unit/provider/service/openrc_spec.rb +4 -5
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/runit_spec.rb +2 -1
- data/spec/unit/provider/service/smf_spec.rb +402 -166
- data/spec/unit/provider/service/src_spec.rb +3 -5
- data/spec/unit/provider/service/systemd_spec.rb +3 -6
- data/spec/unit/provider/service/upstart_spec.rb +4 -5
- data/spec/unit/provider/service/windows_spec.rb +50 -15
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +22 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/provider_spec.rb +0 -12
- data/spec/unit/puppet_pal_2pec.rb +40 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource/type_collection_spec.rb +2 -22
- data/spec/unit/resource_spec.rb +3 -59
- data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
- data/spec/unit/settings/integer_setting_spec.rb +42 -0
- data/spec/unit/settings/port_setting_spec.rb +31 -0
- data/spec/unit/settings/priority_setting_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +586 -239
- data/spec/unit/ssl/base_spec.rb +36 -3
- data/spec/unit/ssl/certificate_request_spec.rb +15 -45
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/ssl_provider_spec.rb +78 -49
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +3 -3
- data/spec/unit/transaction/resource_harness_spec.rb +2 -2
- data/spec/unit/transaction_spec.rb +45 -79
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +1 -1
- data/spec/unit/type/file/ensure_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +1 -1
- data/spec/unit/type/file/source_spec.rb +4 -5
- data/spec/unit/type/file_spec.rb +134 -102
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type/service_spec.rb +209 -0
- data/spec/unit/type/user_spec.rb +31 -2
- data/spec/unit/type_spec.rb +70 -0
- data/spec/unit/util/backups_spec.rb +0 -2
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/checksums_spec.rb +16 -0
- data/spec/unit/util/command_line_spec.rb +11 -6
- data/spec/unit/util/execution_spec.rb +0 -29
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/rubygems_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -127
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util/windows/string_spec.rb +1 -3
- data/spec/unit/util/yaml_spec.rb +0 -54
- data/spec/unit/util_spec.rb +3 -21
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- metadata +76 -270
- data/conf/auth.conf +0 -150
- data/lib/puppet/application/cert.rb +0 -76
- data/lib/puppet/application/key.rb +0 -4
- data/lib/puppet/application/man.rb +0 -4
- data/lib/puppet/application/status.rb +0 -4
- data/lib/puppet/face/key.rb +0 -16
- data/lib/puppet/face/man.rb +0 -145
- data/lib/puppet/face/module/build.rb +0 -14
- data/lib/puppet/face/module/generate.rb +0 -14
- data/lib/puppet/face/module/search.rb +0 -103
- data/lib/puppet/face/status.rb +0 -51
- data/lib/puppet/indirector/certificate/file.rb +0 -9
- data/lib/puppet/indirector/certificate/rest.rb +0 -18
- data/lib/puppet/indirector/certificate_request/file.rb +0 -9
- data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
- data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
- data/lib/puppet/indirector/file_content/http.rb +0 -22
- data/lib/puppet/indirector/key/file.rb +0 -46
- data/lib/puppet/indirector/key/memory.rb +0 -7
- data/lib/puppet/indirector/ssl_file.rb +0 -162
- data/lib/puppet/indirector/status.rb +0 -3
- data/lib/puppet/indirector/status/local.rb +0 -12
- data/lib/puppet/indirector/status/rest.rb +0 -27
- data/lib/puppet/module_tool/applications/searcher.rb +0 -29
- data/lib/puppet/network/auth_config_parser.rb +0 -90
- data/lib/puppet/network/authstore.rb +0 -283
- data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
- data/lib/puppet/network/http/api/master/v3/environment.rb +0 -85
- data/lib/puppet/network/http/base_pool.rb +0 -36
- data/lib/puppet/network/http/compression.rb +0 -127
- data/lib/puppet/network/http/connection_adapter.rb +0 -182
- data/lib/puppet/network/http/nocache_pool.rb +0 -28
- data/lib/puppet/network/rest_controller.rb +0 -2
- data/lib/puppet/network/rights.rb +0 -210
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -64
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -20
- data/lib/puppet/parser/environment_compiler.rb +0 -199
- data/lib/puppet/pops/types/enumeration.rb +0 -16
- data/lib/puppet/resource/capability_finder.rb +0 -154
- data/lib/puppet/rest/errors.rb +0 -15
- data/lib/puppet/rest/response.rb +0 -35
- data/lib/puppet/rest/route.rb +0 -85
- data/lib/puppet/rest/routes.rb +0 -135
- data/lib/puppet/ssl/host.rb +0 -505
- data/lib/puppet/ssl/key.rb +0 -61
- data/lib/puppet/ssl/validator.rb +0 -61
- data/lib/puppet/ssl/validator/default_validator.rb +0 -209
- data/lib/puppet/ssl/validator/no_validator.rb +0 -22
- data/lib/puppet/ssl/verifier_adapter.rb +0 -58
- data/lib/puppet/status.rb +0 -40
- data/lib/puppet/util/connection.rb +0 -88
- data/lib/puppet/util/ssl.rb +0 -83
- data/lib/puppet/util/windows/api_types.rb +0 -282
- data/lib/puppet/vendor/load_pathspec.rb +0 -1
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
- data/lib/puppet/vendor/pathspec/LICENSE +0 -201
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/pathspec/README.md +0 -53
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
- data/man/man8/puppet-key.8 +0 -126
- data/man/man8/puppet-man.8 +0 -76
- data/man/man8/puppet-status.8 +0 -108
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/file_bucket/file_spec.rb +0 -50
- data/spec/integration/file_serving/content_spec.rb +0 -7
- data/spec/integration/file_serving/fileset_spec.rb +0 -12
- data/spec/integration/file_serving/metadata_spec.rb +0 -8
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
- data/spec/integration/file_system/uniquefile_spec.rb +0 -26
- data/spec/integration/module_tool/forge_spec.rb +0 -51
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/network/authconfig_spec.rb +0 -256
- data/spec/integration/provider/service/init_spec.rb +0 -48
- data/spec/integration/provider/service/systemd_spec.rb +0 -25
- data/spec/integration/provider/service/windows_spec.rb +0 -50
- data/spec/integration/reference/providers_spec.rb +0 -21
- data/spec/integration/reports_spec.rb +0 -13
- data/spec/integration/ssl/certificate_request_spec.rb +0 -44
- data/spec/integration/ssl/host_spec.rb +0 -72
- data/spec/integration/ssl/key_spec.rb +0 -99
- data/spec/integration/test/test_helper_spec.rb +0 -31
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/capability_spec.rb +0 -414
- data/spec/unit/face/catalog_spec.rb +0 -6
- data/spec/unit/face/key_spec.rb +0 -9
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/face/module/search_spec.rb +0 -231
- data/spec/unit/face/module_spec.rb +0 -3
- data/spec/unit/face/status_spec.rb +0 -9
- data/spec/unit/indirector/certificate/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
- data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
- data/spec/unit/indirector/key/file_spec.rb +0 -79
- data/spec/unit/indirector/ssl_file_spec.rb +0 -305
- data/spec/unit/indirector/status/local_spec.rb +0 -10
- data/spec/unit/indirector/status/rest_spec.rb +0 -50
- data/spec/unit/man_spec.rb +0 -31
- data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
- data/spec/unit/network/auth_config_parser_spec.rb +0 -115
- data/spec/unit/network/authstore_spec.rb +0 -422
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
- data/spec/unit/network/http/compression_spec.rb +0 -240
- data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
- data/spec/unit/network/http_spec.rb +0 -9
- data/spec/unit/network/rights_spec.rb +0 -439
- data/spec/unit/parser/environment_compiler_spec.rb +0 -723
- data/spec/unit/pops/types/enumeration_spec.rb +0 -51
- data/spec/unit/resource/capability_finder_spec.rb +0 -143
- data/spec/unit/rest/route_spec.rb +0 -132
- data/spec/unit/ssl/host_spec.rb +0 -650
- data/spec/unit/ssl/key_spec.rb +0 -173
- data/spec/unit/ssl/validator_spec.rb +0 -278
- data/spec/unit/status_spec.rb +0 -45
- data/spec/unit/util/ssl_spec.rb +0 -91
data/lib/puppet/util.rb
CHANGED
@@ -27,7 +27,7 @@ module Util
|
|
27
27
|
extend Puppet::Util::SymbolicFileMode
|
28
28
|
|
29
29
|
def default_env
|
30
|
-
Puppet
|
30
|
+
Puppet.features.microsoft_windows? ?
|
31
31
|
:windows :
|
32
32
|
:posix
|
33
33
|
end
|
@@ -296,6 +296,11 @@ module Util
|
|
296
296
|
AbsolutePathWindows = %r!^(?:(?:[A-Z]:#{slash})|(?:#{slash}#{slash}#{label}#{slash}#{label})|(?:#{slash}#{slash}\?#{slash}#{label}))!io
|
297
297
|
AbsolutePathPosix = %r!^/!
|
298
298
|
def absolute_path?(path, platform=nil)
|
299
|
+
unless path.is_a?(String)
|
300
|
+
Puppet.warning("Cannot check if #{path} is an absolute path because it is a '#{path.class}' and not a String'")
|
301
|
+
return false
|
302
|
+
end
|
303
|
+
|
299
304
|
# Ruby only sets File::ALT_SEPARATOR on Windows and the Ruby standard
|
300
305
|
# library uses that to test what platform it's on. Normally in Puppet we
|
301
306
|
# would use Puppet.features.microsoft_windows?, but this method needs to
|
@@ -356,7 +361,7 @@ module Util
|
|
356
361
|
|
357
362
|
# CGI.unescape doesn't handle space rules properly in uri paths
|
358
363
|
# URI.unescape does, but returns strings in their original encoding
|
359
|
-
path =
|
364
|
+
path = uri_unescape(uri.path.encode(Encoding::UTF_8))
|
360
365
|
|
361
366
|
if Puppet::Util::Platform.windows? && uri.scheme == 'file'
|
362
367
|
if uri.host && !uri.host.empty?
|
@@ -460,7 +465,18 @@ module Util
|
|
460
465
|
# + should be left unencoded
|
461
466
|
# URI::parse and URI::Generic.build don't like paths encoded with CGI.escape
|
462
467
|
# URI.escape does not change / to %2F and : to %3A like CGI.escape
|
463
|
-
|
468
|
+
#
|
469
|
+
# URI.escape is obsolete in Ruby 2.7. Ignore this error until we're able to
|
470
|
+
# switch to a different escape mechanism. If this is JRuby, we can't mask
|
471
|
+
# the error message, because this isn't thread safe. JRuby shouldn't be
|
472
|
+
# using Ruby 2.7 or raising the warning anyway.
|
473
|
+
orig_verbose = $VERBOSE
|
474
|
+
$VERBOSE = nil unless Puppet::Util::Platform.jruby?
|
475
|
+
begin
|
476
|
+
encoded += URI.escape(parts[:path]) unless parts[:path].nil?
|
477
|
+
ensure
|
478
|
+
$VERBOSE = orig_verbose unless Puppet::Util::Platform.jruby?
|
479
|
+
end
|
464
480
|
|
465
481
|
# each query parameter
|
466
482
|
if !parts[:query].nil?
|
@@ -479,6 +495,15 @@ module Util
|
|
479
495
|
end
|
480
496
|
module_function :uri_encode
|
481
497
|
|
498
|
+
def uri_unescape(path)
|
499
|
+
orig_verbose = $VERBOSE
|
500
|
+
$VERBOSE = nil unless Puppet::Util::Platform.jruby?
|
501
|
+
return URI.unescape(path)
|
502
|
+
ensure
|
503
|
+
$VERBOSE = orig_verbose unless Puppet::Util::Platform.jruby?
|
504
|
+
end
|
505
|
+
module_function :uri_unescape
|
506
|
+
|
482
507
|
def safe_posix_fork(stdin=$stdin, stdout=$stdout, stderr=$stderr, &block)
|
483
508
|
child_pid = Kernel.fork do
|
484
509
|
STDIN.reopen(stdin)
|
@@ -734,6 +759,19 @@ module Util
|
|
734
759
|
Random.new(seed).rand(max)
|
735
760
|
end
|
736
761
|
module_function :deterministic_rand_int
|
762
|
+
|
763
|
+
# Executes a block of code, wrapped around Facter.load_external(false) and
|
764
|
+
# Facter.load_external(true) which will cause Facter to not evaluate external facts.
|
765
|
+
def skip_external_facts
|
766
|
+
return yield unless Facter.respond_to? :load_external
|
767
|
+
begin
|
768
|
+
Facter.load_external(false)
|
769
|
+
yield
|
770
|
+
ensure
|
771
|
+
Facter.load_external(true)
|
772
|
+
end
|
773
|
+
end
|
774
|
+
module_function :skip_external_facts
|
737
775
|
end
|
738
776
|
end
|
739
777
|
|
data/lib/puppet/util/autoload.rb
CHANGED
@@ -10,6 +10,14 @@ require 'puppet/concurrent/synchronized'
|
|
10
10
|
# @api private
|
11
11
|
class Puppet::Util::ModuleDirectoriesAdapter < Puppet::Pops::Adaptable::Adapter
|
12
12
|
attr_accessor :directories
|
13
|
+
|
14
|
+
def self.create_adapter(env)
|
15
|
+
adapter = super(env)
|
16
|
+
adapter.directories = env.modulepath.flat_map do |dir|
|
17
|
+
Dir.glob(File.join(dir, '*', 'lib'))
|
18
|
+
end
|
19
|
+
adapter
|
20
|
+
end
|
13
21
|
end
|
14
22
|
|
15
23
|
# Autoload paths, either based on names or all at once.
|
@@ -119,13 +127,7 @@ class Puppet::Util::Autoload
|
|
119
127
|
def module_directories(env)
|
120
128
|
raise ArgumentError, "Autoloader requires an environment" unless env
|
121
129
|
|
122
|
-
Puppet::Util::ModuleDirectoriesAdapter.adapt(env)
|
123
|
-
a.directories ||= env.modulepath.collect do |dir|
|
124
|
-
Dir.entries(dir).reject { |f| f =~ /^\./ }.collect { |f| File.join(dir, f, "lib") }
|
125
|
-
end.flatten.find_all do |d|
|
126
|
-
FileTest.directory?(d)
|
127
|
-
end
|
128
|
-
end.directories
|
130
|
+
Puppet::Util::ModuleDirectoriesAdapter.adapt(env).directories
|
129
131
|
end
|
130
132
|
|
131
133
|
# @api private
|
@@ -19,8 +19,9 @@ module Puppet::Util::CharacterEncoding
|
|
19
19
|
begin
|
20
20
|
if original_encoding == Encoding::UTF_8
|
21
21
|
if !string_copy.valid_encoding?
|
22
|
-
Puppet.debug
|
23
|
-
{ value: string.dump }
|
22
|
+
Puppet.debug {
|
23
|
+
_("%{value} is already labeled as UTF-8 but this encoding is invalid. It cannot be transcoded by Puppet.") % { value: string.dump }
|
24
|
+
}
|
24
25
|
end
|
25
26
|
# String is already valid UTF-8 - noop
|
26
27
|
return string_copy
|
@@ -40,8 +41,9 @@ module Puppet::Util::CharacterEncoding
|
|
40
41
|
# Catch both our own self-determined failure to transcode as well as any
|
41
42
|
# error on ruby's part, ie Encoding::UndefinedConversionError on a
|
42
43
|
# failure to encode!.
|
43
|
-
Puppet.debug
|
44
|
-
{ error: detail.inspect, value: string.dump }
|
44
|
+
Puppet.debug {
|
45
|
+
_("%{error}: %{value} cannot be transcoded by Puppet.") % { error: detail.inspect, value: string.dump }
|
46
|
+
}
|
45
47
|
return string_copy
|
46
48
|
end
|
47
49
|
end
|
@@ -67,7 +69,9 @@ module Puppet::Util::CharacterEncoding
|
|
67
69
|
if string_copy.force_encoding(Encoding::UTF_8).valid_encoding?
|
68
70
|
return string_copy
|
69
71
|
else
|
70
|
-
Puppet.debug
|
72
|
+
Puppet.debug {
|
73
|
+
_("%{value} is not valid UTF-8 and result of overriding encoding would be invalid.") % { value: string.dump }
|
74
|
+
}
|
71
75
|
# Set copy back to its original encoding before returning
|
72
76
|
return string_copy.force_encoding(original_encoding)
|
73
77
|
end
|
@@ -7,11 +7,26 @@ require 'time'
|
|
7
7
|
module Puppet::Util::Checksums
|
8
8
|
module_function
|
9
9
|
|
10
|
+
KNOWN_CHECKSUMS = [
|
11
|
+
:sha256, :sha256lite,
|
12
|
+
:md5, :md5lite,
|
13
|
+
:sha1, :sha1lite,
|
14
|
+
:sha512,
|
15
|
+
:sha384,
|
16
|
+
:sha224,
|
17
|
+
:mtime, :ctime, :none
|
18
|
+
].freeze
|
19
|
+
|
10
20
|
# It's not a good idea to use some of these in some contexts: for example, I
|
11
21
|
# wouldn't try bucketing a file using the :none checksum type.
|
12
22
|
def known_checksum_types
|
13
|
-
|
14
|
-
|
23
|
+
KNOWN_CHECKSUMS
|
24
|
+
end
|
25
|
+
|
26
|
+
def valid_checksum?(type, value)
|
27
|
+
!!send("#{type}?", value)
|
28
|
+
rescue NoMethodError
|
29
|
+
false
|
15
30
|
end
|
16
31
|
|
17
32
|
class FakeChecksum
|
@@ -223,7 +238,7 @@ module Puppet::Util::Checksums
|
|
223
238
|
|
224
239
|
# Return the :mtime timestamp of a file.
|
225
240
|
def mtime_file(filename)
|
226
|
-
Puppet::FileSystem.stat(filename).
|
241
|
+
Puppet::FileSystem.stat(filename).mtime
|
227
242
|
end
|
228
243
|
|
229
244
|
# by definition this doesn't exist
|
@@ -293,7 +308,7 @@ module Puppet::Util::Checksums
|
|
293
308
|
|
294
309
|
# Return the :ctime of a file.
|
295
310
|
def ctime_file(filename)
|
296
|
-
Puppet::FileSystem.stat(filename).
|
311
|
+
Puppet::FileSystem.stat(filename).ctime
|
297
312
|
end
|
298
313
|
|
299
314
|
def ctime_stream(&block)
|
@@ -68,7 +68,7 @@ module Puppet::Util::Execution
|
|
68
68
|
if respond_to? :debug
|
69
69
|
debug "Executing '#{command_str}'"
|
70
70
|
else
|
71
|
-
Puppet.debug "Executing '#{command_str}'"
|
71
|
+
Puppet.debug { "Executing '#{command_str}'" }
|
72
72
|
end
|
73
73
|
|
74
74
|
# force the run of the command with
|
@@ -94,17 +94,6 @@ module Puppet::Util::Execution
|
|
94
94
|
end
|
95
95
|
private_class_method :exitstatus
|
96
96
|
|
97
|
-
# Wraps execution of {execute} with mapping of exception to given exception (and output as argument).
|
98
|
-
# @raise [exception] under same conditions as {execute}, but raises the given `exception` with the output as argument
|
99
|
-
# @return (see execute)
|
100
|
-
# @api public
|
101
|
-
# @deprecated
|
102
|
-
def self.execfail(command, exception)
|
103
|
-
execute(command)
|
104
|
-
rescue Puppet::ExecutionFailure => detail
|
105
|
-
raise exception, detail.message, detail.backtrace
|
106
|
-
end
|
107
|
-
|
108
97
|
# Default empty options for {execute}
|
109
98
|
NoOptionsSpecified = {}
|
110
99
|
|
@@ -186,7 +175,7 @@ module Puppet::Util::Execution
|
|
186
175
|
if respond_to? :debug
|
187
176
|
debug "Executing#{user_log_s}: '#{command_str}'"
|
188
177
|
else
|
189
|
-
Puppet.debug "Executing#{user_log_s}: '#{command_str}'"
|
178
|
+
Puppet.debug { "Executing#{user_log_s}: '#{command_str}'" }
|
190
179
|
end
|
191
180
|
|
192
181
|
null_file = Puppet::Util::Platform.windows? ? 'NUL' : '/dev/null'
|
@@ -300,7 +300,7 @@ module Puppet::Util::FileParsing
|
|
300
300
|
def record_line(name, options, &block)
|
301
301
|
raise ArgumentError, _("Must include a list of fields") unless options.include?(:fields)
|
302
302
|
|
303
|
-
record = FileRecord.new(:record, options, &block)
|
303
|
+
record = FileRecord.new(:record, **options, &block)
|
304
304
|
record.name = name.intern
|
305
305
|
|
306
306
|
new_line_type(record)
|
@@ -315,7 +315,7 @@ module Puppet::Util::FileParsing
|
|
315
315
|
def text_line(name, options, &block)
|
316
316
|
raise ArgumentError, _("You must provide a :match regex for text lines") unless options.include?(:match)
|
317
317
|
|
318
|
-
record = FileRecord.new(:text, options, &block)
|
318
|
+
record = FileRecord.new(:text, **options, &block)
|
319
319
|
record.name = name.intern
|
320
320
|
|
321
321
|
new_line_type(record)
|
@@ -1,217 +1,4 @@
|
|
1
|
-
require 'uri'
|
2
|
-
require 'puppet/ssl/openssl_loader'
|
3
1
|
require 'puppet/http'
|
4
2
|
|
5
|
-
|
6
|
-
|
7
|
-
if http_proxy_host && !no_proxy?(uri)
|
8
|
-
Net::HTTP.new(uri.host, uri.port, self.http_proxy_host, self.http_proxy_port, self.http_proxy_user, self.http_proxy_password)
|
9
|
-
else
|
10
|
-
http = Net::HTTP.new(uri.host, uri.port, nil, nil, nil, nil)
|
11
|
-
# Net::HTTP defaults the proxy port even though we said not to
|
12
|
-
# use one. Set it to nil so caller is not surprised
|
13
|
-
http.proxy_port = nil
|
14
|
-
http
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.http_proxy_env
|
19
|
-
# Returns a URI object if proxy is set, or nil
|
20
|
-
proxy_env = ENV["http_proxy"] || ENV["HTTP_PROXY"]
|
21
|
-
begin
|
22
|
-
return URI.parse(proxy_env) if proxy_env
|
23
|
-
rescue URI::InvalidURIError
|
24
|
-
return nil
|
25
|
-
end
|
26
|
-
return nil
|
27
|
-
end
|
28
|
-
|
29
|
-
# The documentation around the format of the no_proxy variable seems
|
30
|
-
# inconsistent. Some suggests the use of the * as a way of matching any
|
31
|
-
# hosts under a domain, e.g.:
|
32
|
-
# *.example.com
|
33
|
-
# Other documentation suggests that just a leading '.' indicates a domain
|
34
|
-
# level exclusion, e.g.:
|
35
|
-
# .example.com
|
36
|
-
# We'll accommodate both here.
|
37
|
-
def self.no_proxy?(dest)
|
38
|
-
no_proxy = self.no_proxy
|
39
|
-
unless no_proxy
|
40
|
-
return false
|
41
|
-
end
|
42
|
-
|
43
|
-
unless dest.is_a? URI
|
44
|
-
begin
|
45
|
-
dest = URI.parse(dest)
|
46
|
-
rescue URI::InvalidURIError
|
47
|
-
return false
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
no_proxy.split(/\s*,\s*/).each do |d|
|
52
|
-
host, port = d.split(':')
|
53
|
-
host = Regexp.escape(host).gsub('\*', '.*')
|
54
|
-
|
55
|
-
#If this no_proxy entry specifies a port, we want to match it against
|
56
|
-
#the destination port. Otherwise just match hosts.
|
57
|
-
if port
|
58
|
-
no_proxy_regex = %r(#{host}:#{port}$)
|
59
|
-
dest_string = "#{dest.host}:#{dest.port}"
|
60
|
-
else
|
61
|
-
no_proxy_regex = %r(#{host}$)
|
62
|
-
dest_string = "#{dest.host}"
|
63
|
-
end
|
64
|
-
|
65
|
-
if no_proxy_regex.match(dest_string)
|
66
|
-
return true
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
return false
|
71
|
-
end
|
72
|
-
|
73
|
-
def self.http_proxy_host
|
74
|
-
env = self.http_proxy_env
|
75
|
-
|
76
|
-
if env and env.host
|
77
|
-
return env.host
|
78
|
-
end
|
79
|
-
|
80
|
-
if Puppet.settings[:http_proxy_host] == 'none'
|
81
|
-
return nil
|
82
|
-
end
|
83
|
-
|
84
|
-
return Puppet.settings[:http_proxy_host]
|
85
|
-
end
|
86
|
-
|
87
|
-
def self.http_proxy_port
|
88
|
-
env = self.http_proxy_env
|
89
|
-
|
90
|
-
if env and env.port
|
91
|
-
return env.port
|
92
|
-
end
|
93
|
-
|
94
|
-
return Puppet.settings[:http_proxy_port]
|
95
|
-
end
|
96
|
-
|
97
|
-
def self.http_proxy_user
|
98
|
-
env = self.http_proxy_env
|
99
|
-
|
100
|
-
if env and env.user
|
101
|
-
return env.user
|
102
|
-
end
|
103
|
-
|
104
|
-
if Puppet.settings[:http_proxy_user] == 'none'
|
105
|
-
return nil
|
106
|
-
end
|
107
|
-
|
108
|
-
return Puppet.settings[:http_proxy_user]
|
109
|
-
end
|
110
|
-
|
111
|
-
def self.http_proxy_password
|
112
|
-
env = self.http_proxy_env
|
113
|
-
|
114
|
-
if env and env.password
|
115
|
-
return env.password
|
116
|
-
end
|
117
|
-
|
118
|
-
if Puppet.settings[:http_proxy_user] == 'none' or Puppet.settings[:http_proxy_password] == 'none'
|
119
|
-
return nil
|
120
|
-
end
|
121
|
-
|
122
|
-
return Puppet.settings[:http_proxy_password]
|
123
|
-
end
|
124
|
-
|
125
|
-
def self.no_proxy
|
126
|
-
no_proxy_env = ENV["no_proxy"] || ENV["NO_PROXY"]
|
127
|
-
|
128
|
-
if no_proxy_env
|
129
|
-
return no_proxy_env
|
130
|
-
end
|
131
|
-
|
132
|
-
if Puppet.settings[:no_proxy] == 'none'
|
133
|
-
return nil
|
134
|
-
end
|
135
|
-
|
136
|
-
return Puppet.settings[:no_proxy]
|
137
|
-
end
|
138
|
-
|
139
|
-
# Return a Net::HTTP::Proxy object.
|
140
|
-
#
|
141
|
-
# This method optionally configures SSL correctly if the URI scheme is
|
142
|
-
# 'https', including setting up the root certificate store so remote server
|
143
|
-
# SSL certificates can be validated.
|
144
|
-
#
|
145
|
-
# @param [URI] uri The URI that is to be accessed.
|
146
|
-
# @return [Net::HTTP::Proxy] object constructed tailored for the passed URI
|
147
|
-
def self.get_http_object(uri)
|
148
|
-
proxy = proxy(uri)
|
149
|
-
|
150
|
-
if uri.scheme == 'https'
|
151
|
-
cert_store = OpenSSL::X509::Store.new
|
152
|
-
cert_store.set_default_paths
|
153
|
-
|
154
|
-
proxy.use_ssl = true
|
155
|
-
proxy.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
156
|
-
proxy.cert_store = cert_store
|
157
|
-
end
|
158
|
-
|
159
|
-
if Puppet[:http_debug]
|
160
|
-
proxy.set_debug_output($stderr)
|
161
|
-
end
|
162
|
-
|
163
|
-
proxy.open_timeout = Puppet[:http_connect_timeout]
|
164
|
-
proxy.read_timeout = Puppet[:http_read_timeout]
|
165
|
-
|
166
|
-
proxy
|
167
|
-
end
|
168
|
-
|
169
|
-
# Retrieve a document through HTTP(s), following redirects if necessary. The
|
170
|
-
# returned response body may be compressed, and it is the caller's
|
171
|
-
# responsibility to decompress it based on the 'content-encoding' header.
|
172
|
-
#
|
173
|
-
# Based on the the client implementation in the HTTP pool.
|
174
|
-
#
|
175
|
-
# @see Puppet::Network::HTTP::Connection#request_with_redirects
|
176
|
-
#
|
177
|
-
# @param [URI] uri The address of the resource to retrieve.
|
178
|
-
# @param [symbol] method The name of the Net::HTTP method to use, typically :get, :head, :post etc.
|
179
|
-
# @param [FixNum] redirect_limit The number of redirections that can be followed.
|
180
|
-
# @return [Net::HTTPResponse] a response object
|
181
|
-
def self.request_with_redirects(uri, method, redirect_limit = 10, &block)
|
182
|
-
current_uri = uri
|
183
|
-
response = nil
|
184
|
-
|
185
|
-
0.upto(redirect_limit) do |redirection|
|
186
|
-
proxy = get_http_object(current_uri)
|
187
|
-
|
188
|
-
headers = { 'Accept' => '*/*', 'User-Agent' => Puppet[:http_user_agent] }
|
189
|
-
if Puppet.features.zlib?
|
190
|
-
headers["Accept-Encoding"] = Puppet::HTTP::ACCEPT_ENCODING
|
191
|
-
end
|
192
|
-
|
193
|
-
response = proxy.send(:head, current_uri, headers)
|
194
|
-
Puppet.debug("HTTP HEAD request to #{current_uri} returned #{response.code} #{response.message}")
|
195
|
-
|
196
|
-
if [301, 302, 307].include?(response.code.to_i)
|
197
|
-
# handle the redirection
|
198
|
-
current_uri = URI.parse(response['location'])
|
199
|
-
next
|
200
|
-
end
|
201
|
-
|
202
|
-
if method != :head
|
203
|
-
if block_given?
|
204
|
-
response = proxy.send("request_#{method}".to_sym, current_uri, headers, &block)
|
205
|
-
else
|
206
|
-
response = proxy.send(method, current_uri, headers)
|
207
|
-
end
|
208
|
-
|
209
|
-
Puppet.debug("HTTP #{method.to_s.upcase} request to #{current_uri} returned #{response.code} #{response.message}")
|
210
|
-
end
|
211
|
-
|
212
|
-
return response
|
213
|
-
end
|
214
|
-
|
215
|
-
raise RedirectionLimitExceededException, _("Too many HTTP redirections for %{uri}") % { uri: uri }
|
216
|
-
end
|
217
|
-
end
|
3
|
+
# for backwards compatibility
|
4
|
+
Puppet::Util::HttpProxy = Puppet::HTTP::Proxy
|