puppet 6.19.0-x86-mingw32 → 7.3.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/CODEOWNERS +2 -16
- data/Gemfile +3 -4
- data/Gemfile.lock +33 -28
- data/README.md +1 -1
- 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 +2 -14
- data/ext/redhat/puppet.spec.erb +0 -1
- data/ext/windows/service/daemon.rb +6 -5
- data/install.rb +21 -17
- data/lib/puppet.rb +11 -20
- data/lib/puppet/application.rb +182 -104
- data/lib/puppet/application/agent.rb +1 -0
- data/lib/puppet/application/apply.rb +3 -2
- data/lib/puppet/application/device.rb +101 -104
- data/lib/puppet/application/filebucket.rb +15 -11
- data/lib/puppet/application/script.rb +1 -0
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/application_support.rb +7 -0
- data/lib/puppet/configurer.rb +44 -36
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/defaults.rb +71 -170
- data/lib/puppet/environments.rb +44 -75
- data/lib/puppet/face/config.rb +10 -0
- data/lib/puppet/face/epp.rb +12 -2
- data/lib/puppet/face/facts.rb +80 -6
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/node/clean.rb +8 -0
- data/lib/puppet/face/plugin.rb +5 -8
- data/lib/puppet/ffi/posix.rb +10 -0
- data/lib/puppet/ffi/posix/constants.rb +14 -0
- data/lib/puppet/ffi/posix/functions.rb +24 -0
- data/lib/puppet/ffi/windows.rb +12 -0
- data/lib/puppet/ffi/windows/api_types.rb +311 -0
- data/lib/puppet/ffi/windows/constants.rb +404 -0
- data/lib/puppet/ffi/windows/functions.rb +628 -0
- data/lib/puppet/ffi/windows/structs.rb +338 -0
- data/lib/puppet/file_serving/configuration.rb +0 -5
- data/lib/puppet/file_serving/configuration/parser.rb +6 -32
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount.rb +1 -2
- data/lib/puppet/forge/repository.rb +0 -1
- data/lib/puppet/functions/epp.rb +1 -0
- data/lib/puppet/functions/inline_epp.rb +1 -0
- data/lib/puppet/generate/models/type/type.rb +4 -1
- data/lib/puppet/http.rb +22 -13
- data/lib/puppet/http/client.rb +164 -114
- data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
- data/lib/puppet/http/errors.rb +16 -0
- data/lib/puppet/http/external_client.rb +5 -7
- data/lib/puppet/{network/http → http}/factory.rb +8 -11
- data/lib/puppet/{network/http → http}/pool.rb +61 -26
- data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
- data/lib/puppet/http/proxy.rb +137 -0
- data/lib/puppet/http/redirector.rb +4 -12
- data/lib/puppet/http/resolver.rb +5 -15
- data/lib/puppet/http/resolver/server_list.rb +6 -10
- data/lib/puppet/http/resolver/settings.rb +4 -7
- data/lib/puppet/http/resolver/srv.rb +7 -11
- data/lib/puppet/http/response.rb +36 -54
- data/lib/puppet/http/response_converter.rb +24 -0
- data/lib/puppet/http/response_net_http.rb +42 -0
- data/lib/puppet/http/retry_after_handler.rb +4 -13
- data/lib/puppet/http/service.rb +12 -26
- data/lib/puppet/http/service/ca.rb +11 -22
- data/lib/puppet/http/service/compiler.rb +22 -69
- data/lib/puppet/http/service/file_server.rb +18 -27
- data/lib/puppet/http/service/puppetserver.rb +26 -12
- data/lib/puppet/http/service/report.rb +8 -10
- data/lib/puppet/http/session.rb +11 -20
- data/lib/puppet/{network/http → http}/site.rb +1 -2
- data/lib/puppet/indirector/catalog/rest.rb +2 -4
- data/lib/puppet/indirector/fact_search.rb +60 -0
- data/lib/puppet/indirector/facts/facter.rb +24 -3
- 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 +3 -58
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
- data/lib/puppet/indirector/file_content/rest.rb +2 -6
- data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
- data/lib/puppet/indirector/file_server.rb +1 -8
- data/lib/puppet/indirector/generic_http.rb +0 -11
- data/lib/puppet/indirector/json.rb +5 -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/rest.rb +3 -8
- data/lib/puppet/indirector/request.rb +0 -101
- data/lib/puppet/indirector/rest.rb +12 -263
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/module_tool/applications/installer.rb +48 -2
- data/lib/puppet/module_tool/errors/shared.rb +17 -2
- data/lib/puppet/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/formats.rb +69 -1
- data/lib/puppet/network/http.rb +3 -3
- data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
- data/lib/puppet/network/http/api/master/v3.rb +11 -13
- data/lib/puppet/network/http/connection.rb +247 -316
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node.rb +1 -30
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +73 -18
- data/lib/puppet/parser/ast/leaf.rb +3 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
- data/lib/puppet/parser/compiler.rb +0 -198
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
- data/lib/puppet/parser/resource.rb +0 -69
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/issues.rb +0 -5
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
- data/lib/puppet/pops/model/ast.pp +0 -42
- data/lib/puppet/pops/model/ast.rb +0 -290
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/model/factory.rb +0 -45
- data/lib/puppet/pops/model/model_label_provider.rb +0 -5
- data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
- data/lib/puppet/pops/model/pn_transformer.rb +0 -16
- data/lib/puppet/pops/parser/egrammar.ra +0 -56
- data/lib/puppet/pops/parser/eparser.rb +1520 -1712
- data/lib/puppet/pops/parser/lexer2.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +0 -5
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
- data/lib/puppet/pops/types/type_calculator.rb +0 -7
- data/lib/puppet/pops/types/type_parser.rb +0 -4
- data/lib/puppet/pops/types/types.rb +0 -1
- data/lib/puppet/pops/validation/checker4_0.rb +9 -37
- data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
- data/lib/puppet/provider.rb +0 -13
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +4 -0
- data/lib/puppet/provider/package/dpkg.rb +0 -10
- data/lib/puppet/provider/package/gem.rb +23 -3
- data/lib/puppet/provider/package/pip.rb +0 -1
- data/lib/puppet/provider/package/pkg.rb +0 -4
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +1 -4
- data/lib/puppet/provider/service/smf.rb +191 -73
- data/lib/puppet/provider/user/aix.rb +2 -2
- data/lib/puppet/provider/user/directoryservice.rb +0 -10
- data/lib/puppet/reference/configuration.rb +8 -5
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource.rb +1 -89
- data/lib/puppet/resource/catalog.rb +1 -14
- data/lib/puppet/resource/type.rb +3 -119
- data/lib/puppet/resource/type_collection.rb +3 -48
- data/lib/puppet/runtime.rb +1 -2
- data/lib/puppet/settings.rb +88 -48
- data/lib/puppet/settings/alias_setting.rb +37 -0
- 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_provider.rb +17 -0
- data/lib/puppet/ssl/state_machine.rb +3 -1
- data/lib/puppet/ssl/verifier.rb +2 -0
- data/lib/puppet/test/test_helper.rb +1 -3
- data/lib/puppet/transaction.rb +1 -7
- data/lib/puppet/transaction/report.rb +2 -4
- data/lib/puppet/type.rb +0 -76
- data/lib/puppet/type/file.rb +5 -7
- data/lib/puppet/type/file/checksum.rb +1 -1
- data/lib/puppet/type/file/source.rb +1 -1
- data/lib/puppet/type/filebucket.rb +3 -3
- data/lib/puppet/type/package.rb +5 -13
- data/lib/puppet/type/user.rb +1 -1
- data/lib/puppet/util/autoload.rb +1 -8
- data/lib/puppet/util/execution.rb +0 -11
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/monkey_patches.rb +0 -46
- data/lib/puppet/util/posix.rb +54 -5
- data/lib/puppet/util/rdoc.rb +0 -7
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/rubygems.rb +5 -1
- data/lib/puppet/util/run_mode.rb +9 -1
- data/lib/puppet/util/windows.rb +3 -8
- data/lib/puppet/util/windows/daemon.rb +360 -0
- data/lib/puppet/util/windows/error.rb +1 -0
- data/lib/puppet/util/windows/eventlog.rb +4 -9
- data/lib/puppet/util/windows/file.rb +8 -242
- data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
- data/lib/puppet/util/windows/process.rb +4 -226
- data/lib/puppet/util/windows/service.rb +9 -460
- data/lib/puppet/util/windows/string.rb +12 -13
- data/lib/puppet/util/yaml.rb +0 -22
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509.rb +5 -1
- data/lib/puppet/x509/cert_provider.rb +29 -1
- data/locales/puppet.pot +629 -1314
- data/man/man5/puppet.conf.5 +39 -99
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +2 -2
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +58 -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 +1 -1
- data/man/man8/puppet-module.8 +1 -58
- data/man/man8/puppet-node.8 +4 -1
- 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 +2 -2
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
- data/spec/integration/application/agent_spec.rb +151 -14
- data/spec/integration/application/apply_spec.rb +20 -1
- data/spec/integration/application/filebucket_spec.rb +16 -16
- data/spec/integration/application/help_spec.rb +2 -0
- data/spec/integration/application/plugin_spec.rb +23 -1
- data/spec/integration/defaults_spec.rb +7 -10
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
- data/spec/integration/network/http_pool_spec.rb +3 -21
- data/spec/integration/parser/catalog_spec.rb +0 -38
- data/spec/integration/parser/node_spec.rb +0 -9
- data/spec/integration/parser/pcore_resource_spec.rb +0 -37
- data/spec/integration/resource/type_collection_spec.rb +2 -6
- data/spec/integration/transaction_spec.rb +4 -9
- data/spec/integration/type/file_spec.rb +5 -4
- data/spec/integration/util/windows/adsi_spec.rb +3 -1
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
- data/spec/integration/util/windows/registry_spec.rb +0 -10
- data/spec/integration/util/windows/security_spec.rb +1 -1
- data/spec/lib/puppet_spec/puppetserver.rb +1 -1
- data/spec/lib/puppet_spec/settings.rb +7 -1
- data/spec/spec_helper.rb +3 -4
- data/spec/unit/agent_spec.rb +8 -8
- data/spec/unit/application/agent_spec.rb +0 -1
- data/spec/unit/application/config_spec.rb +224 -4
- data/spec/unit/application/facts_spec.rb +35 -0
- data/spec/unit/application/filebucket_spec.rb +41 -41
- data/spec/unit/application/ssl_spec.rb +2 -2
- data/spec/unit/application_spec.rb +51 -9
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +6 -2
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +12 -9
- data/spec/unit/confine/feature_spec.rb +1 -1
- data/spec/unit/confine_spec.rb +8 -2
- data/spec/unit/context/trusted_information_spec.rb +2 -6
- data/spec/unit/defaults_spec.rb +26 -32
- data/spec/unit/environments_spec.rb +96 -22
- data/spec/unit/face/config_spec.rb +27 -32
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +14 -13
- data/spec/unit/face/plugin_spec.rb +73 -33
- data/spec/unit/file_bucket/file_spec.rb +1 -1
- data/spec/unit/file_serving/configuration/parser_spec.rb +22 -19
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- data/spec/unit/file_serving/metadata_spec.rb +3 -3
- data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
- data/spec/unit/forge/module_release_spec.rb +2 -7
- 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 +7 -8
- data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
- data/spec/unit/http/external_client_spec.rb +4 -4
- data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
- data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
- data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
- data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
- data/spec/unit/http/resolver_spec.rb +13 -13
- data/spec/unit/http/service/compiler_spec.rb +49 -62
- data/spec/unit/http/service/file_server_spec.rb +3 -3
- data/spec/unit/http/service/puppetserver_spec.rb +34 -4
- data/spec/unit/http/service_spec.rb +1 -2
- data/spec/unit/http/session_spec.rb +16 -14
- data/spec/unit/{network/http → http}/site_spec.rb +3 -3
- data/spec/unit/indirector/face_spec.rb +0 -1
- data/spec/unit/indirector/facts/facter_spec.rb +104 -1
- data/spec/unit/indirector/facts/json_spec.rb +255 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_server_spec.rb +1 -15
- data/spec/unit/indirector/indirection_spec.rb +8 -12
- data/spec/unit/indirector/node/json_spec.rb +33 -0
- 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 +0 -264
- data/spec/unit/indirector/rest_spec.rb +98 -752
- data/spec/unit/indirector_spec.rb +2 -2
- data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
- data/spec/unit/network/authconfig_spec.rb +2 -132
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/formats_spec.rb +45 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -101
- data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
- data/spec/unit/network/http/api_spec.rb +10 -0
- data/spec/unit/network/http/connection_spec.rb +19 -41
- data/spec/unit/network/http/handler_spec.rb +0 -6
- data/spec/unit/network/http_pool_spec.rb +0 -4
- data/spec/unit/node/environment_spec.rb +33 -21
- data/spec/unit/node_spec.rb +2 -54
- data/spec/unit/parser/compiler_spec.rb +3 -19
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
- data/spec/unit/parser/resource_spec.rb +14 -8
- data/spec/unit/parser/templatewrapper_spec.rb +4 -3
- data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
- data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
- data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
- data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
- data/spec/unit/pops/types/type_factory_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +61 -46
- data/spec/unit/pops/visitor_spec.rb +1 -1
- data/spec/unit/property_spec.rb +1 -0
- data/spec/unit/provider/nameservice_spec.rb +66 -122
- data/spec/unit/provider/package/apt_spec.rb +4 -8
- data/spec/unit/provider/package/base_spec.rb +6 -5
- data/spec/unit/provider/package/dpkg_spec.rb +0 -48
- data/spec/unit/provider/package/gem_spec.rb +32 -0
- data/spec/unit/provider/package/pacman_spec.rb +18 -12
- data/spec/unit/provider/package/pip_spec.rb +6 -11
- data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
- data/spec/unit/provider/service/smf_spec.rb +401 -165
- data/spec/unit/provider/service/windows_spec.rb +0 -1
- data/spec/unit/provider/user/aix_spec.rb +5 -0
- data/spec/unit/provider/user/hpux_spec.rb +1 -1
- data/spec/unit/provider/user/pw_spec.rb +2 -0
- data/spec/unit/provider/user/useradd_spec.rb +1 -0
- data/spec/unit/provider_spec.rb +6 -20
- data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
- data/spec/unit/resource/type_collection_spec.rb +2 -22
- data/spec/unit/resource/type_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +11 -66
- 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 +560 -228
- data/spec/unit/ssl/base_spec.rb +36 -4
- 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 +14 -8
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
- data/spec/unit/transaction/event_manager_spec.rb +14 -11
- data/spec/unit/transaction/report_spec.rb +0 -2
- data/spec/unit/transaction/resource_harness_spec.rb +2 -2
- data/spec/unit/transaction_spec.rb +57 -82
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +1 -2
- data/spec/unit/type/file/ensure_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +1 -1
- data/spec/unit/type/file/selinux_spec.rb +0 -2
- data/spec/unit/type/file/source_spec.rb +0 -1
- data/spec/unit/type/file_spec.rb +12 -12
- data/spec/unit/type/group_spec.rb +13 -6
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type/resources_spec.rb +7 -7
- data/spec/unit/type/service_spec.rb +1 -1
- data/spec/unit/type/tidy_spec.rb +0 -1
- data/spec/unit/type_spec.rb +22 -2
- data/spec/unit/util/at_fork_spec.rb +2 -2
- data/spec/unit/util/autoload_spec.rb +5 -1
- data/spec/unit/util/backups_spec.rb +1 -4
- data/spec/unit/util/execution_spec.rb +15 -40
- data/spec/unit/util/inifile_spec.rb +6 -14
- data/spec/unit/util/log_spec.rb +8 -7
- data/spec/unit/util/logging_spec.rb +3 -3
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/posix_spec.rb +363 -15
- data/spec/unit/util/rubygems_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +21 -121
- data/spec/unit/util/selinux_spec.rb +76 -52
- data/spec/unit/util/storage_spec.rb +3 -1
- data/spec/unit/util/suidmanager_spec.rb +44 -41
- data/spec/unit/util/windows/string_spec.rb +1 -3
- data/spec/unit/util/yaml_spec.rb +0 -54
- data/spec/unit/util_spec.rb +13 -24
- metadata +66 -226
- data/conf/auth.conf +0 -150
- data/lib/puppet/application/cert.rb +0 -76
- data/lib/puppet/application/key.rb +0 -4
- data/lib/puppet/application/man.rb +0 -4
- data/lib/puppet/application/status.rb +0 -4
- data/lib/puppet/face/key.rb +0 -16
- data/lib/puppet/face/man.rb +0 -145
- data/lib/puppet/face/module/build.rb +0 -14
- data/lib/puppet/face/module/generate.rb +0 -14
- data/lib/puppet/face/module/search.rb +0 -103
- data/lib/puppet/face/status.rb +0 -51
- data/lib/puppet/indirector/certificate/file.rb +0 -9
- data/lib/puppet/indirector/certificate/rest.rb +0 -18
- data/lib/puppet/indirector/certificate_request/file.rb +0 -9
- data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
- data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
- data/lib/puppet/indirector/file_content/http.rb +0 -22
- data/lib/puppet/indirector/key/file.rb +0 -46
- data/lib/puppet/indirector/key/memory.rb +0 -7
- data/lib/puppet/indirector/ssl_file.rb +0 -162
- data/lib/puppet/indirector/status.rb +0 -3
- data/lib/puppet/indirector/status/local.rb +0 -12
- data/lib/puppet/indirector/status/rest.rb +0 -27
- data/lib/puppet/module_tool/applications/searcher.rb +0 -29
- data/lib/puppet/network/auth_config_parser.rb +0 -90
- data/lib/puppet/network/authstore.rb +0 -283
- data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
- data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
- data/lib/puppet/network/http/base_pool.rb +0 -36
- data/lib/puppet/network/http/compression.rb +0 -127
- data/lib/puppet/network/http/connection_adapter.rb +0 -184
- data/lib/puppet/network/http/nocache_pool.rb +0 -28
- data/lib/puppet/network/rest_controller.rb +0 -2
- data/lib/puppet/network/rights.rb +0 -210
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
- data/lib/puppet/parser/environment_compiler.rb +0 -202
- data/lib/puppet/pops/types/enumeration.rb +0 -16
- data/lib/puppet/resource/capability_finder.rb +0 -154
- data/lib/puppet/rest/errors.rb +0 -15
- data/lib/puppet/rest/response.rb +0 -35
- data/lib/puppet/rest/route.rb +0 -85
- data/lib/puppet/rest/routes.rb +0 -135
- data/lib/puppet/ssl/host.rb +0 -505
- data/lib/puppet/ssl/key.rb +0 -61
- data/lib/puppet/ssl/validator.rb +0 -61
- data/lib/puppet/ssl/validator/default_validator.rb +0 -209
- data/lib/puppet/ssl/validator/no_validator.rb +0 -22
- data/lib/puppet/ssl/verifier_adapter.rb +0 -58
- data/lib/puppet/status.rb +0 -40
- data/lib/puppet/util/connection.rb +0 -88
- data/lib/puppet/util/ssl.rb +0 -83
- data/lib/puppet/util/windows/api_types.rb +0 -309
- data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
- data/lib/puppet/vendor/load_pathspec.rb +0 -1
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
- data/lib/puppet/vendor/pathspec/LICENSE +0 -201
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/pathspec/README.md +0 -53
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
- data/man/man8/puppet-key.8 +0 -126
- data/man/man8/puppet-man.8 +0 -76
- data/man/man8/puppet-status.8 +0 -108
- data/spec/integration/application/config_spec.rb +0 -74
- data/spec/integration/network/authconfig_spec.rb +0 -256
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
- data/spec/unit/application/man_spec.rb +0 -52
- data/spec/unit/capability_spec.rb +0 -414
- data/spec/unit/face/catalog_spec.rb +0 -6
- data/spec/unit/face/key_spec.rb +0 -9
- 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/module_tool/applications/searcher_spec.rb +0 -38
- data/spec/unit/network/auth_config_parser_spec.rb +0 -115
- data/spec/unit/network/authstore_spec.rb +0 -422
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
- data/spec/unit/network/http/compression_spec.rb +0 -240
- data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
- data/spec/unit/network/http_spec.rb +0 -9
- data/spec/unit/network/rights_spec.rb +0 -439
- data/spec/unit/parser/environment_compiler_spec.rb +0 -730
- data/spec/unit/pops/types/enumeration_spec.rb +0 -51
- data/spec/unit/resource/capability_finder_spec.rb +0 -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/spec/unit/ssl/base_spec.rb
CHANGED
@@ -38,16 +38,14 @@ describe Puppet::SSL::Certificate do
|
|
38
38
|
|
39
39
|
describe "when determining a name from a certificate subject" do
|
40
40
|
it "should extract only the CN and not any other components" do
|
41
|
-
|
42
|
-
expect(
|
43
|
-
expect(@class.name_from_subject(subject)).to eq('host.domain.com')
|
41
|
+
name = OpenSSL::X509::Name.parse('/CN=host.domain.com/L=Portland/ST=Oregon')
|
42
|
+
expect(@class.name_from_subject(name)).to eq('host.domain.com')
|
44
43
|
end
|
45
44
|
end
|
46
45
|
|
47
46
|
describe "when initializing wrapped class from a file with #read" do
|
48
47
|
it "should open the file with ASCII encoding" do
|
49
48
|
path = '/foo/bar/cert'
|
50
|
-
allow(Puppet::SSL::Base).to receive(:valid_certname).and_return(true)
|
51
49
|
expect(Puppet::FileSystem).to receive(:read).with(path, :encoding => Encoding::ASCII).and_return("bar")
|
52
50
|
@base.read(path)
|
53
51
|
end
|
@@ -90,4 +88,38 @@ describe Puppet::SSL::Certificate do
|
|
90
88
|
}.to raise_error(Puppet::Error, "Unknown signature algorithm 'nonsense'")
|
91
89
|
end
|
92
90
|
end
|
91
|
+
|
92
|
+
describe "when getting a CN from a subject" do
|
93
|
+
def parse(dn)
|
94
|
+
OpenSSL::X509::Name.parse(dn)
|
95
|
+
end
|
96
|
+
|
97
|
+
def cn_from(subject)
|
98
|
+
@class.name_from_subject(subject)
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should correctly parse a subject containing only a CN" do
|
102
|
+
subj = parse('/CN=foo')
|
103
|
+
expect(cn_from(subj)).to eq('foo')
|
104
|
+
end
|
105
|
+
|
106
|
+
it "should correctly parse a subject containing other components" do
|
107
|
+
subj = parse('/CN=Root CA/OU=Server Operations/O=Example Org')
|
108
|
+
expect(cn_from(subj)).to eq('Root CA')
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should correctly parse a subject containing other components with CN not first" do
|
112
|
+
subj = parse('/emailAddress=foo@bar.com/CN=foo.bar.com/O=Example Org')
|
113
|
+
expect(cn_from(subj)).to eq('foo.bar.com')
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should return nil for a subject with no CN" do
|
117
|
+
subj = parse('/OU=Server Operations/O=Example Org')
|
118
|
+
expect(cn_from(subj)).to eq(nil)
|
119
|
+
end
|
120
|
+
|
121
|
+
it "should return nil for a bare string" do
|
122
|
+
expect(cn_from("/CN=foo")).to eq(nil)
|
123
|
+
end
|
124
|
+
end
|
93
125
|
end
|
@@ -1,23 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
require 'puppet/ssl/certificate_request'
|
4
|
-
require 'puppet/ssl/key'
|
5
4
|
|
6
5
|
describe Puppet::SSL::CertificateRequest do
|
7
6
|
let(:request) { described_class.new("myname") }
|
8
|
-
let(:key) {
|
9
|
-
k = Puppet::SSL::Key.new("myname")
|
10
|
-
k.generate
|
11
|
-
k
|
12
|
-
}
|
13
|
-
|
14
|
-
it "should be extended with the Indirector module" do
|
15
|
-
expect(described_class.singleton_class).to be_include(Puppet::Indirector)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should indirect certificate_request" do
|
19
|
-
expect(described_class.indirection.name).to eq(:certificate_request)
|
20
|
-
end
|
7
|
+
let(:key) { OpenSSL::PKey::RSA.new(Puppet[:keylength]) }
|
21
8
|
|
22
9
|
it "should use any provided name as its name" do
|
23
10
|
expect(described_class.new("myname").name).to eq("myname")
|
@@ -83,14 +70,9 @@ describe Puppet::SSL::CertificateRequest do
|
|
83
70
|
end
|
84
71
|
|
85
72
|
describe "when generating", :unless => RUBY_PLATFORM == 'java' do
|
86
|
-
it "should
|
73
|
+
it "should verify the CSR using the public key associated with the private key" do
|
87
74
|
request.generate(key)
|
88
|
-
expect(request.content.verify(key.
|
89
|
-
end
|
90
|
-
|
91
|
-
it "should set the subject to [CN, name]" do
|
92
|
-
request.generate(key)
|
93
|
-
expect(request.content.subject).to eq OpenSSL::X509::Name.new([['CN', key.name]])
|
75
|
+
expect(request.content.verify(key.public_key)).to be_truthy
|
94
76
|
end
|
95
77
|
|
96
78
|
it "should set the version to 0" do
|
@@ -101,7 +83,7 @@ describe Puppet::SSL::CertificateRequest do
|
|
101
83
|
it "should set the public key to the provided key's public key" do
|
102
84
|
request.generate(key)
|
103
85
|
# The openssl bindings do not define equality on keys so we use to_s
|
104
|
-
expect(request.content.public_key.to_s).to eq(key.
|
86
|
+
expect(request.content.public_key.to_s).to eq(key.public_key.to_s)
|
105
87
|
end
|
106
88
|
|
107
89
|
context "without subjectAltName / dns_alt_names" do
|
@@ -295,20 +277,20 @@ describe Puppet::SSL::CertificateRequest do
|
|
295
277
|
|
296
278
|
it "should sign the csr with the provided key" do
|
297
279
|
request.generate(key)
|
298
|
-
expect(request.content.verify(key.
|
280
|
+
expect(request.content.verify(key.public_key)).to be_truthy
|
299
281
|
end
|
300
282
|
|
301
283
|
it "should verify the generated request using the public key" do
|
302
284
|
# Stupid keys don't have a competent == method.
|
303
285
|
expect_any_instance_of(OpenSSL::X509::Request).to receive(:verify) do |public_key|
|
304
|
-
public_key.to_s == key.
|
286
|
+
public_key.to_s == key.public_key.to_s
|
305
287
|
end.and_return(true)
|
306
288
|
request.generate(key)
|
307
289
|
end
|
308
290
|
|
309
291
|
it "should fail if verification fails" do
|
310
292
|
expect_any_instance_of(OpenSSL::X509::Request).to receive(:verify) do |public_key|
|
311
|
-
public_key.to_s == key.
|
293
|
+
public_key.to_s == key.public_key.to_s
|
312
294
|
end.and_return(false)
|
313
295
|
|
314
296
|
expect do
|
@@ -334,8 +316,8 @@ describe Puppet::SSL::CertificateRequest do
|
|
334
316
|
expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA256").and_return(false)
|
335
317
|
expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA1").and_return(true)
|
336
318
|
signer = Puppet::SSL::CertificateSigner.new
|
337
|
-
signer.sign(csr, key
|
338
|
-
expect(csr.verify(key
|
319
|
+
signer.sign(csr, key)
|
320
|
+
expect(csr.verify(key)).to be_truthy
|
339
321
|
end
|
340
322
|
|
341
323
|
# Attempts to use SHA512 and SHA384 for signing certificates don't seem to work
|
@@ -348,8 +330,8 @@ describe Puppet::SSL::CertificateRequest do
|
|
348
330
|
expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA1").and_return(false)
|
349
331
|
expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA512").and_return(true)
|
350
332
|
signer = Puppet::SSL::CertificateSigner.new
|
351
|
-
signer.sign(csr, key
|
352
|
-
expect(csr.verify(key
|
333
|
+
signer.sign(csr, key)
|
334
|
+
expect(csr.verify(key)).to be_truthy
|
353
335
|
end
|
354
336
|
|
355
337
|
# Attempts to use SHA512 and SHA384 for signing certificates don't seem to work
|
@@ -363,8 +345,8 @@ describe Puppet::SSL::CertificateRequest do
|
|
363
345
|
expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA512").and_return(false)
|
364
346
|
expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA384").and_return(true)
|
365
347
|
signer = Puppet::SSL::CertificateSigner.new
|
366
|
-
signer.sign(csr, key
|
367
|
-
expect(csr.verify(key
|
348
|
+
signer.sign(csr, key)
|
349
|
+
expect(csr.verify(key)).to be_truthy
|
368
350
|
end
|
369
351
|
|
370
352
|
it "should use SHA224 to sign the csr when SHA256/SHA1/SHA512/SHA384 aren't available" do
|
@@ -375,8 +357,8 @@ describe Puppet::SSL::CertificateRequest do
|
|
375
357
|
expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA384").and_return(false)
|
376
358
|
expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA224").and_return(true)
|
377
359
|
signer = Puppet::SSL::CertificateSigner.new
|
378
|
-
signer.sign(csr, key
|
379
|
-
expect(csr.verify(key
|
360
|
+
signer.sign(csr, key)
|
361
|
+
expect(csr.verify(key)).to be_truthy
|
380
362
|
end
|
381
363
|
|
382
364
|
it "should raise an error if neither SHA256/SHA1/SHA512/SHA384/SHA224 are available" do
|
@@ -390,16 +372,4 @@ describe Puppet::SSL::CertificateRequest do
|
|
390
372
|
}.to raise_error(Puppet::Error)
|
391
373
|
end
|
392
374
|
end
|
393
|
-
|
394
|
-
it "should save the CSR" do
|
395
|
-
csr = Puppet::SSL::CertificateRequest.new("me")
|
396
|
-
terminus = double('terminus')
|
397
|
-
allow(terminus).to receive(:validate)
|
398
|
-
expect(Puppet::SSL::CertificateRequest.indirection).to receive(:prepare).and_return(terminus)
|
399
|
-
expect(terminus).to receive(:save) do |request|
|
400
|
-
expect(request.instance).to eq(csr)
|
401
|
-
expect(request.key).to eq("me")
|
402
|
-
end
|
403
|
-
Puppet::SSL::CertificateRequest.indirection.save(csr)
|
404
|
-
end
|
405
375
|
end
|
@@ -4,7 +4,7 @@ require 'puppet/certificate_factory'
|
|
4
4
|
require 'puppet/ssl/certificate'
|
5
5
|
|
6
6
|
describe Puppet::SSL::Certificate do
|
7
|
-
let :key do
|
7
|
+
let :key do OpenSSL::PKey::RSA.new(Puppet[:keylength]) end
|
8
8
|
|
9
9
|
# Sign the provided cert so that it can be DER-decoded later
|
10
10
|
def sign_wrapped_cert(cert)
|
@@ -16,14 +16,6 @@ describe Puppet::SSL::Certificate do
|
|
16
16
|
@class = Puppet::SSL::Certificate
|
17
17
|
end
|
18
18
|
|
19
|
-
it "should be extended with the Indirector module" do
|
20
|
-
expect(@class.singleton_class).to be_include(Puppet::Indirector)
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should indirect certificate" do
|
24
|
-
expect(@class.indirection.name).to eq(:certificate)
|
25
|
-
end
|
26
|
-
|
27
19
|
it "should only support the text format" do
|
28
20
|
expect(@class.supported_formats).to eq([:s])
|
29
21
|
end
|
@@ -82,8 +74,7 @@ describe Puppet::SSL::Certificate do
|
|
82
74
|
|
83
75
|
describe "when managing instances" do
|
84
76
|
def build_cert(opts)
|
85
|
-
key =
|
86
|
-
key.generate
|
77
|
+
key = OpenSSL::PKey::RSA.new(Puppet[:keylength])
|
87
78
|
csr = Puppet::SSL::CertificateRequest.new('quux')
|
88
79
|
csr.generate(key, opts)
|
89
80
|
|
@@ -271,14 +271,20 @@ describe Puppet::SSL::SSLProvider do
|
|
271
271
|
end
|
272
272
|
|
273
273
|
# This option is only available in openssl 1.1
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
274
|
+
# OpenSSL 1.1.1h no longer reports expired root CAs when using "verify".
|
275
|
+
# This regression was fixed in 1.1.1i, so only skip this test if we're on
|
276
|
+
# the affected version.
|
277
|
+
# See: https://github.com/openssl/openssl/pull/13585
|
278
|
+
if Puppet::Util::Package.versioncmp(OpenSSL::OPENSSL_LIBRARY_VERSION.split[1], '1.1.1h') != 0
|
279
|
+
it 'raises if root cert signature is invalid', if: defined?(OpenSSL::X509::V_FLAG_CHECK_SS_SIGNATURE) do
|
280
|
+
ca = global_cacerts.first
|
281
|
+
ca.sign(wrong_key, OpenSSL::Digest::SHA256.new)
|
282
|
+
|
283
|
+
expect {
|
284
|
+
subject.create_context(**config.merge(cacerts: global_cacerts))
|
285
|
+
}.to raise_error(Puppet::SSL::CertVerifyError,
|
286
|
+
"Invalid signature for certificate 'CN=Test CA'")
|
287
|
+
end
|
282
288
|
end
|
283
289
|
|
284
290
|
it 'raises if intermediate CA signature is invalid' do
|
@@ -505,7 +505,6 @@ describe Puppet::SSL::StateMachine, unless: Puppet::Util::Platform.jruby? do
|
|
505
505
|
Puppet[:certificate_revocation] = false
|
506
506
|
|
507
507
|
expect(cert_provider).not_to receive(:load_crls)
|
508
|
-
expect(Puppet::Rest::Routes).not_to receive(:get_crls)
|
509
508
|
|
510
509
|
state.next_state
|
511
510
|
|
@@ -6,7 +6,6 @@ describe Puppet::SSL::Verifier do
|
|
6
6
|
let(:host) { 'example.com' }
|
7
7
|
let(:http) { Net::HTTP.new(host) }
|
8
8
|
let(:verifier) { described_class.new(host, ssl_context) }
|
9
|
-
let(:adapter) { Puppet::SSL::VerifierAdapter.new(Puppet::SSL::Validator::DefaultValidator.new) }
|
10
9
|
|
11
10
|
context '#reusable?' do
|
12
11
|
it 'Verifiers with the same ssl_context are reusable' do
|
@@ -16,26 +15,6 @@ describe Puppet::SSL::Verifier do
|
|
16
15
|
it 'Verifiers with different ssl_contexts are not reusable' do
|
17
16
|
expect(verifier).to_not be_reusable(described_class.new(host, Puppet::SSL::SSLContext.new))
|
18
17
|
end
|
19
|
-
|
20
|
-
it 'Verifier is not reusable with VerifierAdapter' do
|
21
|
-
expect(verifier).to_not be_reusable(adapter)
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'VerifierAdapter is not reusable with Verifier' do
|
25
|
-
expect(adapter).to_not be_reusable(verifier)
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'VerifierAdapters with the same class of Validator are reusable' do
|
29
|
-
expect(
|
30
|
-
adapter
|
31
|
-
).to be_reusable(Puppet::SSL::VerifierAdapter.new(Puppet::SSL::Validator::DefaultValidator.new))
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'VerifierAdapters with different classes of Validators are not reusable' do
|
35
|
-
expect(
|
36
|
-
adapter
|
37
|
-
).to_not be_reusable(Puppet::SSL::VerifierAdapter.new(Puppet::SSL::Validator::NoValidator.new))
|
38
|
-
end
|
39
18
|
end
|
40
19
|
|
41
20
|
context '#setup_connection' do
|
@@ -33,10 +33,6 @@ describe Puppet::Transaction::AdditionalResourceGenerator do
|
|
33
33
|
|
34
34
|
newparam(:code)
|
35
35
|
|
36
|
-
def respond_to?(method_name)
|
37
|
-
method_name == self[:kind] || super
|
38
|
-
end
|
39
|
-
|
40
36
|
def eval_generate
|
41
37
|
eval_code
|
42
38
|
end
|
@@ -314,13 +310,13 @@ describe Puppet::Transaction::AdditionalResourceGenerator do
|
|
314
310
|
|
315
311
|
it "sets resources_failed_to_generate to true if resource#eval_generate raises an exception" do
|
316
312
|
catalog = compile_to_ral(<<-MANIFEST)
|
317
|
-
|
313
|
+
generator { thing: }
|
318
314
|
MANIFEST
|
319
315
|
|
320
|
-
allow(catalog.resource("
|
316
|
+
allow(catalog.resource("Generator[thing]")).to receive(:eval_generate).and_raise(RuntimeError)
|
321
317
|
relationship_graph = relationship_graph_for(catalog)
|
322
318
|
generator = Puppet::Transaction::AdditionalResourceGenerator.new(catalog, relationship_graph, prioritizer)
|
323
|
-
generator.eval_generate(catalog.resource("
|
319
|
+
generator.eval_generate(catalog.resource("Generator[thing]"))
|
324
320
|
|
325
321
|
expect(generator.resources_failed_to_generate).to be_truthy
|
326
322
|
end
|
@@ -152,6 +152,9 @@ describe Puppet::Transaction::EventManager do
|
|
152
152
|
|
153
153
|
@resource = Puppet::Type.type(:file).new :path => make_absolute("/my/file")
|
154
154
|
@event = Puppet::Transaction::Event.new(:name => :event, :resource => @resource)
|
155
|
+
|
156
|
+
@resource.class.send(:define_method, :callback1) {}
|
157
|
+
@resource.class.send(:define_method, :callback2) {}
|
155
158
|
end
|
156
159
|
|
157
160
|
it "should call the required callback once for each set of associated events" do
|
@@ -178,7 +181,7 @@ describe Puppet::Transaction::EventManager do
|
|
178
181
|
|
179
182
|
allow(@resource).to receive(:callback1)
|
180
183
|
|
181
|
-
@manager.process_events(@resource)
|
184
|
+
@manager.process_events(@resource)
|
182
185
|
|
183
186
|
expect(@transaction.resource_status(@resource).events.length).to eq(1)
|
184
187
|
end
|
@@ -211,9 +214,11 @@ describe Puppet::Transaction::EventManager do
|
|
211
214
|
@event2 = Puppet::Transaction::Event.new(:name => :event, :resource => @resource)
|
212
215
|
@event2.status = "success"
|
213
216
|
expect(@manager).to receive(:queued_events).with(@resource).and_yield(:callback1, [@event, @event2])
|
217
|
+
@resource.class.send(:define_method, :callback1) {}
|
214
218
|
end
|
215
219
|
|
216
220
|
it "should call the callback" do
|
221
|
+
|
217
222
|
expect(@resource).to receive(:callback1)
|
218
223
|
|
219
224
|
@manager.process_events(@resource)
|
@@ -225,6 +230,7 @@ describe Puppet::Transaction::EventManager do
|
|
225
230
|
allow(@event).to receive(:status).and_return("noop")
|
226
231
|
allow(@resource).to receive(:event).and_return(Puppet::Transaction::Event.new)
|
227
232
|
expect(@manager).to receive(:queued_events).with(@resource).and_yield(:callback1, [@event])
|
233
|
+
@resource.class.send(:define_method, :callback1) {}
|
228
234
|
end
|
229
235
|
|
230
236
|
it "should log" do
|
@@ -254,6 +260,7 @@ describe Puppet::Transaction::EventManager do
|
|
254
260
|
allow(@resource).to receive(:event).and_return(Puppet::Transaction::Event.new)
|
255
261
|
allow(@resource).to receive(:noop?).and_return(true)
|
256
262
|
expect(@manager).to receive(:queued_events).with(@resource).and_yield(:callback1, [@event])
|
263
|
+
@resource.class.send(:define_method, :callback1) {}
|
257
264
|
end
|
258
265
|
|
259
266
|
it "should log" do
|
@@ -279,7 +286,7 @@ describe Puppet::Transaction::EventManager do
|
|
279
286
|
|
280
287
|
describe "and the callback fails" do
|
281
288
|
before do
|
282
|
-
|
289
|
+
@resource.class.send(:define_method, :callback1) { raise "a failure" }
|
283
290
|
|
284
291
|
expect(@manager).to receive(:queued_events).and_yield(:callback1, [@event])
|
285
292
|
end
|
@@ -323,16 +330,12 @@ describe Puppet::Transaction::EventManager do
|
|
323
330
|
|
324
331
|
describe "when queueing then processing events for a given resource" do
|
325
332
|
before do
|
326
|
-
@
|
327
|
-
@
|
333
|
+
@catalog = Puppet::Resource::Catalog.new
|
334
|
+
@target = Puppet::Type.type(:exec).new(name: 'target', path: ENV['PATH'])
|
335
|
+
@resource = Puppet::Type.type(:exec).new(name: 'resource', path: ENV['PATH'], notify: @target)
|
336
|
+
@catalog.add_resource(@resource, @target)
|
328
337
|
|
329
|
-
@
|
330
|
-
@target = Puppet::Type.type(:file).new :path => make_absolute("/your/file")
|
331
|
-
|
332
|
-
@graph = allow('graph')
|
333
|
-
allow(@graph).to receive(:matching_edges).and_return([])
|
334
|
-
allow(@graph).to receive(:matching_edges).with(anything, @resource).and_return([double('edge', :target => @target, :callback => :refresh)])
|
335
|
-
allow(@manager).to receive(:relationship_graph).and_return(@graph)
|
338
|
+
@manager = Puppet::Transaction::EventManager.new(Puppet::Transaction.new(@catalog, nil, nil))
|
336
339
|
|
337
340
|
@event = Puppet::Transaction::Event.new(:name => :notify, :resource => @target)
|
338
341
|
@event2 = Puppet::Transaction::Event.new(:name => :service_start, :resource => @target, :invalidate_refreshes => true)
|
@@ -675,7 +675,6 @@ Version:
|
|
675
675
|
report.code_id = "some code id"
|
676
676
|
report.catalog_uuid = "some catalog uuid"
|
677
677
|
report.cached_catalog_status = "not_used"
|
678
|
-
report.master_used = "test:000"
|
679
678
|
report.server_used = "test:000"
|
680
679
|
report.add_resource_status(status)
|
681
680
|
report.transaction_completed = true
|
@@ -694,7 +693,6 @@ Version:
|
|
694
693
|
report.code_id = "some code id"
|
695
694
|
report.catalog_uuid = "some catalog uuid"
|
696
695
|
report.cached_catalog_status = "not_used"
|
697
|
-
report.master_used = "test:000"
|
698
696
|
report.server_used = "test:000"
|
699
697
|
report.add_resource_status(status)
|
700
698
|
report.transaction_completed = true
|
@@ -612,14 +612,14 @@ describe Puppet::Transaction::ResourceHarness do
|
|
612
612
|
allow_any_instance_of(Puppet::Transaction::Event).to receive(:corrective_change).and_return(true)
|
613
613
|
status = @harness.evaluate(resource)
|
614
614
|
sync_event = status.events[0]
|
615
|
-
expect(sync_event.message).to match(/content changed '{
|
615
|
+
expect(sync_event.message).to match(/content changed '{sha256}[0-9a-f]+' to '{sha256}[0-9a-f]+' \(corrective\)/)
|
616
616
|
end
|
617
617
|
|
618
618
|
it "contains no modifier when intentional change" do
|
619
619
|
allow_any_instance_of(Puppet::Transaction::Event).to receive(:corrective_change).and_return(false)
|
620
620
|
status = @harness.evaluate(resource)
|
621
621
|
sync_event = status.events[0]
|
622
|
-
expect(sync_event.message).to match(/content changed '{
|
622
|
+
expect(sync_event.message).to match(/content changed '{sha256}[0-9a-f]+' to '{sha256}[0-9a-f]+'$/)
|
623
623
|
end
|
624
624
|
end
|
625
625
|
end
|
@@ -5,6 +5,13 @@ require 'puppet_spec/compiler'
|
|
5
5
|
require 'puppet/transaction'
|
6
6
|
require 'fileutils'
|
7
7
|
|
8
|
+
Puppet::Type.newtype(:generator) do
|
9
|
+
newparam(:name) { isnamevar }
|
10
|
+
|
11
|
+
def generate
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
8
15
|
describe Puppet::Transaction do
|
9
16
|
include PuppetSpec::Files
|
10
17
|
include PuppetSpec::Compiler
|
@@ -323,9 +330,9 @@ describe Puppet::Transaction do
|
|
323
330
|
describe "when generating resources before traversal" do
|
324
331
|
let(:catalog) { Puppet::Resource::Catalog.new }
|
325
332
|
let(:transaction) { Puppet::Transaction.new(catalog, nil, Puppet::Graph::SequentialPrioritizer.new) }
|
326
|
-
let(:generator) { Puppet::Type.type(:
|
333
|
+
let(:generator) { Puppet::Type.type(:generator).new :title => "generator" }
|
327
334
|
let(:generated) do
|
328
|
-
%w[a b c].map { |name| Puppet::Type.type(:
|
335
|
+
%w[a b c].map { |name| Puppet::Type.type(:generator).new(:name => name) }
|
329
336
|
end
|
330
337
|
|
331
338
|
before :each do
|
@@ -598,115 +605,81 @@ describe Puppet::Transaction do
|
|
598
605
|
transaction.prefetch_if_necessary(resource)
|
599
606
|
end
|
600
607
|
|
601
|
-
it "should not rescue SystemExit
|
602
|
-
Puppet.settings[:future_features] = false
|
608
|
+
it "should not rescue SystemExit" do
|
603
609
|
expect(resource.provider.class).to receive(:prefetch).and_raise(SystemExit, "SystemMessage")
|
604
610
|
expect { transaction.prefetch_if_necessary(resource) }.to raise_error(SystemExit, "SystemMessage")
|
605
611
|
end
|
606
612
|
|
607
|
-
it "should
|
608
|
-
Puppet.settings[:future_features] = true
|
609
|
-
expect(resource.provider.class).to receive(:prefetch).and_raise(SystemExit, "SystemMessage")
|
610
|
-
expect { transaction.prefetch_if_necessary(resource) }.to raise_error(SystemExit, "SystemMessage")
|
611
|
-
end
|
612
|
-
|
613
|
-
it "should rescue LoadError without future_features flag" do
|
614
|
-
Puppet.settings[:future_features] = false
|
615
|
-
expect(resource.provider.class).to receive(:prefetch).and_raise(LoadError, "LoadMessage")
|
616
|
-
expect { transaction.prefetch_if_necessary(resource) }.not_to raise_error
|
617
|
-
end
|
618
|
-
|
619
|
-
it "should rescue LoadError with future_features flag" do
|
620
|
-
Puppet.settings[:future_features] = true
|
613
|
+
it "should mark resources as failed when prefetching raises LoadError" do
|
621
614
|
expect(resource.provider.class).to receive(:prefetch).and_raise(LoadError, "LoadMessage")
|
622
|
-
|
615
|
+
transaction.prefetch_if_necessary(resource)
|
616
|
+
expect(transaction.prefetched_providers[:package][:pkgng]).to be_truthy
|
623
617
|
end
|
624
618
|
|
625
|
-
describe "and prefetching
|
619
|
+
describe "and prefetching raises Puppet::Error" do
|
626
620
|
before :each do
|
627
621
|
expect(resource.provider.class).to receive(:prefetch).and_raise(Puppet::Error, "message")
|
628
622
|
end
|
629
623
|
|
630
|
-
|
631
|
-
|
632
|
-
Puppet.settings[:future_features] = false
|
633
|
-
end
|
634
|
-
|
635
|
-
it "should not rescue prefetch executions" do
|
636
|
-
expect { transaction.prefetch_if_necessary(resource) }.to raise_error(Puppet::Error)
|
637
|
-
end
|
624
|
+
it "should rescue prefetch executions" do
|
625
|
+
transaction.prefetch_if_necessary(resource)
|
638
626
|
|
639
|
-
|
640
|
-
expect(Puppet).to receive(:log_exception).with(anything, "Could not prefetch package provider 'pkgng': message")
|
641
|
-
expect { transaction.prefetch_if_necessary(resource) }.to raise_error(Puppet::Error, "message")
|
642
|
-
end
|
627
|
+
expect(transaction.prefetched_providers[:package][:pkgng]).to be_truthy
|
643
628
|
end
|
644
629
|
|
645
|
-
|
646
|
-
|
647
|
-
Puppet.settings[:future_features] = true
|
648
|
-
end
|
630
|
+
it "should mark resources as failed", :unless => RUBY_PLATFORM == 'java' do
|
631
|
+
transaction.evaluate
|
649
632
|
|
650
|
-
|
651
|
-
|
633
|
+
expect(transaction.resource_status(resource).failed?).to be_truthy
|
634
|
+
end
|
652
635
|
|
653
|
-
|
654
|
-
|
636
|
+
it "should mark a provider that has failed prefetch" do
|
637
|
+
transaction.prefetch_if_necessary(resource)
|
655
638
|
|
656
|
-
|
657
|
-
|
639
|
+
expect(transaction.prefetch_failed_providers[:package][:pkgng]).to be_truthy
|
640
|
+
end
|
658
641
|
|
659
|
-
|
642
|
+
describe "and new resources are generated" do
|
643
|
+
let(:generator) { Puppet::Type.type(:generator).new :title => "generator" }
|
644
|
+
let(:generated) do
|
645
|
+
%w[a b c].map { |name| Puppet::Type.type(:package).new :title => "foo", :name => name, :provider => :apt }
|
660
646
|
end
|
661
647
|
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
648
|
+
before :each do
|
649
|
+
catalog.add_resource generator
|
650
|
+
allow(generator).to receive(:generate).and_return(generated)
|
651
|
+
allow(catalog).to receive(:container_of).and_return(generator)
|
666
652
|
end
|
667
653
|
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
end
|
673
|
-
|
674
|
-
before :each do
|
675
|
-
catalog.add_resource generator
|
676
|
-
allow(generator).to receive(:generate).and_return(generated)
|
677
|
-
allow(catalog).to receive(:container_of).and_return(generator)
|
678
|
-
end
|
654
|
+
it "should not evaluate resources with a failed provider, even if the prefetch is rescued" do
|
655
|
+
#Only the generator resource should be applied, all the other resources are failed, and skipped.
|
656
|
+
catalog.remove_resource resource2
|
657
|
+
expect(transaction).to receive(:apply).once
|
679
658
|
|
680
|
-
|
681
|
-
|
682
|
-
catalog.remove_resource resource2
|
683
|
-
expect(transaction).to receive(:apply).once
|
684
|
-
|
685
|
-
transaction.evaluate
|
686
|
-
end
|
659
|
+
transaction.evaluate
|
660
|
+
end
|
687
661
|
|
688
|
-
|
689
|
-
|
690
|
-
|
662
|
+
it "should not fail other resources added after the failing resource", :unless => RUBY_PLATFORM == 'java' do
|
663
|
+
new_resource = Puppet::Type.type(:notify).new :name => "baz"
|
664
|
+
catalog.add_resource(new_resource)
|
691
665
|
|
692
|
-
|
666
|
+
transaction.evaluate
|
693
667
|
|
694
|
-
|
695
|
-
|
668
|
+
expect(transaction.resource_status(new_resource).failed?).to be_falsey
|
669
|
+
end
|
696
670
|
|
697
|
-
|
698
|
-
|
699
|
-
|
671
|
+
it "should fail other resources that require the failing resource" do
|
672
|
+
new_resource = Puppet::Type.type(:notify).new(:name => "baz", :require => resource)
|
673
|
+
catalog.add_resource(new_resource)
|
700
674
|
|
701
|
-
|
702
|
-
|
675
|
+
catalog.remove_resource resource2
|
676
|
+
expect(transaction).to receive(:apply).once
|
703
677
|
|
704
|
-
|
678
|
+
transaction.evaluate
|
705
679
|
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
end
|
680
|
+
expect(transaction.resource_status(resource).failed?).to be_truthy
|
681
|
+
expect(transaction.resource_status(new_resource).dependency_failed?).to be_truthy
|
682
|
+
expect(transaction.skip?(new_resource)).to be_truthy
|
710
683
|
end
|
711
684
|
end
|
712
685
|
end
|
@@ -785,6 +758,9 @@ describe Puppet::Transaction do
|
|
785
758
|
def self.is_selinux_enabled
|
786
759
|
true
|
787
760
|
end
|
761
|
+
|
762
|
+
def self.matchpathcon_fini
|
763
|
+
end
|
788
764
|
end
|
789
765
|
end
|
790
766
|
|
@@ -828,7 +804,6 @@ describe Puppet::Transaction do
|
|
828
804
|
before do
|
829
805
|
@resource = Puppet::Type.type(:notify).new :title => "foobar"
|
830
806
|
@catalog.add_resource @resource
|
831
|
-
allow(@transaction).to receive(:add_dynamically_generated_resources)
|
832
807
|
end
|
833
808
|
|
834
809
|
it 'should stop processing if :stop_processing? is true' do
|