puppet 5.3.7 → 5.4.0
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/CONTRIBUTING.md +42 -29
- data/README.md +8 -6
- data/ext/cert_inspector +2 -2
- data/ext/envpuppet +1 -1
- data/ext/gentoo/init.d/puppetmaster +4 -4
- data/ext/ips/puppet-agent +11 -11
- data/ext/ips/puppet-master +11 -11
- data/ext/puppet-test +1 -2
- data/ext/redhat/client.init +2 -2
- data/ext/redhat/logrotate +1 -1
- data/ext/solaris/smf/puppet +11 -11
- data/ext/solaris/smf/svc-puppetd +5 -5
- data/ext/solaris/smf/svc-puppetmasterd +5 -5
- data/ext/windows/service/daemon.rb +1 -1
- data/install.rb +2 -3
- data/lib/puppet/agent.rb +1 -1
- data/lib/puppet/application/cert.rb +1 -3
- data/lib/puppet/application/describe.rb +0 -1
- data/lib/puppet/application/device.rb +12 -99
- data/lib/puppet/application/filebucket.rb +32 -11
- data/lib/puppet/application/lookup.rb +1 -11
- data/lib/puppet/application/script.rb +261 -0
- data/lib/puppet/configurer.rb +3 -4
- data/lib/puppet/configurer/plugin_handler.rb +26 -9
- data/lib/puppet/context.rb +1 -1
- data/lib/puppet/datatypes.rb +213 -0
- data/lib/puppet/datatypes/error.rb +21 -0
- data/lib/puppet/datatypes/impl/error.rb +40 -0
- data/lib/puppet/defaults.rb +51 -20
- data/lib/puppet/environments.rb +17 -0
- data/lib/puppet/error.rb +17 -0
- data/lib/puppet/etc.rb +2 -2
- data/lib/puppet/external/pson/pure/generator.rb +1 -1
- data/lib/puppet/external/pson/pure/parser.rb +1 -1
- data/lib/puppet/face/config.rb +45 -0
- data/lib/puppet/face/epp.rb +3 -3
- data/lib/puppet/face/help/action.erb +3 -0
- data/lib/puppet/face/module/build.rb +1 -0
- data/lib/puppet/face/module/generate.rb +5 -0
- data/lib/puppet/face/module/install.rb +1 -0
- data/lib/puppet/face/module/search.rb +6 -2
- data/lib/puppet/face/module/uninstall.rb +1 -0
- data/lib/puppet/face/module/upgrade.rb +1 -0
- data/lib/puppet/face/parser.rb +0 -1
- data/lib/puppet/face/plugin.rb +1 -3
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/feature/bolt.rb +3 -0
- data/lib/puppet/file_bucket/dipper.rb +1 -2
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +2 -2
- data/lib/puppet/forge.rb +6 -0
- data/lib/puppet/functions.rb +70 -88
- data/lib/puppet/functions/all.rb +6 -2
- data/lib/puppet/functions/annotate.rb +1 -1
- data/lib/puppet/functions/any.rb +7 -3
- data/lib/puppet/functions/contain.rb +6 -0
- data/lib/puppet/functions/convert_to.rb +32 -0
- data/lib/puppet/functions/defined.rb +0 -3
- data/lib/puppet/functions/each.rb +10 -6
- data/lib/puppet/functions/filter.rb +16 -10
- data/lib/puppet/functions/find_file.rb +0 -1
- data/lib/puppet/functions/include.rb +6 -0
- data/lib/puppet/functions/map.rb +12 -9
- data/lib/puppet/functions/module_directory.rb +41 -0
- data/lib/puppet/functions/new.rb +1 -4
- data/lib/puppet/functions/regsubst.rb +1 -1
- data/lib/puppet/functions/require.rb +6 -0
- data/lib/puppet/generate/type.rb +1 -1
- data/lib/puppet/gettext/config.rb +2 -2
- data/lib/puppet/gettext/stubs.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +0 -1
- data/lib/puppet/indirector/file_bucket_file/file.rb +6 -2
- data/lib/puppet/indirector/file_server.rb +1 -1
- data/lib/puppet/indirector/node/ldap.rb +19 -3
- data/lib/puppet/indirector/request.rb +10 -6
- data/lib/puppet/indirector/rest.rb +11 -12
- data/lib/puppet/info_service/class_information_service.rb +1 -1
- data/lib/puppet/interface/action.rb +11 -0
- data/lib/puppet/interface/action_builder.rb +8 -0
- data/lib/puppet/interface/option_manager.rb +1 -1
- data/lib/puppet/loaders.rb +2 -0
- data/lib/puppet/module.rb +6 -2
- data/lib/puppet/module_tool/applications/builder.rb +4 -0
- data/lib/puppet/module_tool/applications/installer.rb +3 -0
- data/lib/puppet/module_tool/applications/uninstaller.rb +3 -0
- data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.rb +3 -0
- data/lib/puppet/module_tool/installed_modules.rb +1 -1
- data/lib/puppet/module_tool/metadata.rb +0 -1
- data/lib/puppet/network/authstore.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/connection.rb +1 -9
- data/lib/puppet/network/http/factory.rb +0 -3
- data/lib/puppet/network/http/webrick.rb +1 -0
- data/lib/puppet/network/rights.rb +1 -1
- data/lib/puppet/node.rb +53 -0
- data/lib/puppet/node/environment.rb +1 -1
- data/lib/puppet/parameter/boolean.rb +1 -1
- data/lib/puppet/parser.rb +1 -0
- data/lib/puppet/parser/abstract_compiler.rb +36 -0
- data/lib/puppet/parser/ast/branch.rb +1 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +8 -52
- data/lib/puppet/parser/compiler.rb +4 -54
- data/lib/puppet/parser/functions.rb +0 -1
- data/lib/puppet/parser/functions/create_resources.rb +6 -0
- data/lib/puppet/parser/functions/fqdn_rand.rb +6 -2
- data/lib/puppet/parser/functions/inline_template.rb +6 -0
- data/lib/puppet/parser/functions/new.rb +47 -32
- data/lib/puppet/parser/functions/realize.rb +6 -0
- data/lib/puppet/parser/functions/return.rb +1 -22
- data/lib/puppet/parser/functions/reverse_each.rb +1 -1
- data/lib/puppet/parser/functions/scanf.rb +1 -1
- data/lib/puppet/parser/functions/sha256.rb +5 -0
- data/lib/puppet/parser/functions/tag.rb +6 -0
- data/lib/puppet/parser/functions/tagged.rb +6 -0
- data/lib/puppet/parser/functions/template.rb +5 -0
- data/lib/puppet/parser/scope.rb +28 -4
- data/lib/puppet/parser/script_compiler.rb +118 -0
- data/lib/puppet/parser/type_loader.rb +1 -1
- data/lib/puppet/pops.rb +1 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +38 -4
- data/lib/puppet/pops/evaluator/closure.rb +12 -4
- data/lib/puppet/pops/evaluator/compare_operator.rb +4 -4
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +13 -0
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +38 -10
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +1 -1
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +1 -1
- data/lib/puppet/pops/evaluator/runtime3_support.rb +2 -3
- data/lib/puppet/pops/functions/dispatch.rb +6 -5
- data/lib/puppet/pops/functions/function.rb +2 -2
- data/lib/puppet/pops/issues.rb +34 -2
- data/lib/puppet/pops/loader/base_loader.rb +10 -0
- data/lib/puppet/pops/loader/dependency_loader.rb +7 -0
- data/lib/puppet/pops/loader/loader.rb +21 -2
- data/lib/puppet/pops/loader/loader_paths.rb +180 -30
- data/lib/puppet/pops/loader/module_loaders.rb +202 -33
- data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +84 -0
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +9 -9
- data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +40 -0
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +6 -1
- data/lib/puppet/pops/loader/static_loader.rb +23 -8
- data/lib/puppet/pops/loader/task_instantiator.rb +69 -0
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +4 -0
- data/lib/puppet/pops/loaders.rb +122 -11
- data/lib/puppet/pops/lookup/data_dig_function_provider.rb +1 -1
- data/lib/puppet/pops/lookup/interpolation.rb +1 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +0 -1
- data/lib/puppet/pops/model/ast.pp +3 -0
- data/lib/puppet/pops/model/ast.rb +34 -1
- data/lib/puppet/pops/model/factory.rb +30 -3
- data/lib/puppet/pops/model/model_label_provider.rb +1 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +12 -1
- data/lib/puppet/pops/model/tree_dumper.rb +1 -1
- data/lib/puppet/pops/parser/code_merger.rb +2 -2
- data/lib/puppet/pops/parser/egrammar.ra +44 -15
- data/lib/puppet/pops/parser/eparser.rb +1687 -1571
- data/lib/puppet/pops/parser/epp_support.rb +1 -3
- data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +2 -2
- data/lib/puppet/pops/parser/lexer2.rb +4 -4
- data/lib/puppet/pops/parser/lexer_support.rb +2 -2
- data/lib/puppet/pops/parser/locatable.rb +1 -1
- data/lib/puppet/pops/parser/locator.rb +7 -13
- data/lib/puppet/pops/parser/parser_support.rb +3 -3
- data/lib/puppet/pops/parser/slurp_support.rb +0 -3
- data/lib/puppet/pops/pcore.rb +45 -0
- data/lib/puppet/pops/resource/param.rb +1 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +1 -1
- data/lib/puppet/pops/serialization/abstract_reader.rb +4 -0
- data/lib/puppet/pops/serialization/abstract_writer.rb +6 -0
- data/lib/puppet/pops/serialization/extension.rb +1 -0
- data/lib/puppet/pops/serialization/from_data_converter.rb +64 -10
- data/lib/puppet/pops/serialization/json_path.rb +2 -1
- data/lib/puppet/pops/serialization/object.rb +3 -4
- data/lib/puppet/pops/serialization/serializer.rb +2 -1
- data/lib/puppet/pops/serialization/to_data_converter.rb +7 -3
- data/lib/puppet/pops/time/timespan.rb +1 -1
- data/lib/puppet/pops/types/iterable.rb +38 -9
- data/lib/puppet/pops/types/p_init_type.rb +1 -1
- data/lib/puppet/pops/types/p_meta_type.rb +4 -0
- data/lib/puppet/pops/types/p_object_type.rb +146 -14
- data/lib/puppet/pops/types/p_object_type_extension.rb +218 -0
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +0 -1
- data/lib/puppet/pops/types/p_sem_ver_type.rb +10 -2
- data/lib/puppet/pops/types/p_type_set_type.rb +0 -1
- data/lib/puppet/pops/types/p_uri_type.rb +190 -0
- data/lib/puppet/pops/types/puppet_object.rb +15 -1
- data/lib/puppet/pops/types/ruby_generator.rb +46 -54
- data/lib/puppet/pops/types/string_converter.rb +22 -1
- data/lib/puppet/pops/types/type_acceptor.rb +1 -1
- data/lib/puppet/pops/types/type_calculator.rb +13 -4
- data/lib/puppet/pops/types/type_factory.rb +29 -5
- data/lib/puppet/pops/types/type_formatter.rb +67 -4
- data/lib/puppet/pops/types/type_parser.rb +92 -4
- data/lib/puppet/pops/types/type_with_members.rb +43 -0
- data/lib/puppet/pops/types/types.rb +212 -80
- data/lib/puppet/pops/validation/checker4_0.rb +10 -6
- data/lib/puppet/pops/validation/tasks_checker.rb +60 -0
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +6 -1
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/provider.rb +18 -8
- data/lib/puppet/provider/augeas/augeas.rb +3 -4
- data/lib/puppet/provider/exec.rb +0 -2
- data/lib/puppet/provider/group/groupadd.rb +25 -1
- data/lib/puppet/provider/group/windows_adsi.rb +7 -4
- data/lib/puppet/provider/mount.rb +25 -8
- data/lib/puppet/provider/nameservice.rb +9 -4
- data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
- data/lib/puppet/provider/nameservice/objectadd.rb +13 -24
- data/lib/puppet/provider/nameservice/pw.rb +14 -14
- data/lib/puppet/provider/package/appdmg.rb +0 -1
- data/lib/puppet/provider/package/apple.rb +0 -1
- data/lib/puppet/provider/package/gem.rb +2 -2
- data/lib/puppet/provider/package/macports.rb +2 -2
- data/lib/puppet/provider/package/pkg.rb +3 -0
- data/lib/puppet/provider/package/pkgdmg.rb +0 -1
- data/lib/puppet/provider/package/portage.rb +0 -1
- data/lib/puppet/provider/package/yum.rb +23 -8
- data/lib/puppet/provider/package/zypper.rb +2 -2
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +2 -2
- data/lib/puppet/provider/service/init.rb +1 -0
- data/lib/puppet/provider/service/launchd.rb +6 -7
- data/lib/puppet/provider/service/redhat.rb +3 -2
- data/lib/puppet/provider/service/systemd.rb +2 -2
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +3 -2
- data/lib/puppet/provider/user/openbsd.rb +1 -1
- data/lib/puppet/provider/user/pw.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +7 -1
- data/lib/puppet/provider/user/useradd.rb +36 -6
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -4
- data/lib/puppet/provider/zfs/zfs.rb +23 -3
- data/lib/puppet/provider/zpool/zpool.rb +1 -1
- data/lib/puppet/reference/configuration.rb +0 -2
- data/lib/puppet/reference/type.rb +0 -1
- data/lib/puppet/resource.rb +1 -2
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/resource/status.rb +0 -1
- data/lib/puppet/resource/type.rb +4 -4
- data/lib/puppet/resource/type_collection.rb +1 -1
- data/lib/puppet/settings/base_setting.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +0 -1
- data/lib/puppet/settings/ini_file.rb +66 -12
- data/lib/puppet/ssl/certificate_authority.rb +1 -1
- data/lib/puppet/ssl/certificate_request.rb +2 -2
- data/lib/puppet/ssl/certificate_revocation_list.rb +2 -1
- data/lib/puppet/ssl/certificate_signer.rb +11 -0
- data/lib/puppet/ssl/host.rb +2 -2
- data/lib/puppet/syntax_checkers/base64.rb +1 -1
- data/lib/puppet/transaction.rb +37 -14
- data/lib/puppet/transaction/report.rb +3 -1
- data/lib/puppet/type.rb +17 -4
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/exec.rb +5 -4
- data/lib/puppet/type/file.rb +3 -3
- data/lib/puppet/type/file/checksum.rb +7 -1
- data/lib/puppet/type/file/checksum_value.rb +4 -3
- data/lib/puppet/type/group.rb +3 -0
- data/lib/puppet/type/k5login.rb +101 -0
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/mount.rb +6 -2
- data/lib/puppet/type/tidy.rb +6 -4
- data/lib/puppet/type/user.rb +26 -39
- data/lib/puppet/type/yumrepo.rb +9 -0
- data/lib/puppet/type/zfs.rb +4 -0
- data/lib/puppet/util.rb +8 -15
- data/lib/puppet/util/character_encoding.rb +2 -2
- data/lib/puppet/util/checksums.rb +82 -1
- data/lib/puppet/util/errors.rb +0 -2
- data/lib/puppet/util/filetype.rb +2 -2
- data/lib/puppet/util/json_lockfile.rb +1 -1
- data/lib/puppet/util/log.rb +1 -1
- data/lib/puppet/util/log/destinations.rb +10 -1
- data/lib/puppet/util/monkey_patches.rb +1 -1
- data/lib/puppet/util/network_device/cisco/device.rb +5 -5
- data/lib/puppet/util/network_device/config.rb +2 -3
- data/lib/puppet/util/platform.rb +13 -0
- data/lib/puppet/util/plist.rb +4 -4
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -1
- data/lib/puppet/util/reference.rb +8 -1
- data/lib/puppet/util/windows/adsi.rb +18 -15
- data/lib/puppet/util/windows/principal.rb +6 -7
- data/lib/puppet/util/windows/process.rb +1 -1
- data/lib/puppet/util/windows/registry.rb +2 -2
- data/lib/puppet/util/windows/sid.rb +7 -62
- data/lib/puppet/vendor/deep_merge/README.md +2 -2
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +18 -18
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +2 -2
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +5 -5
- data/lib/puppet/vendor/semantic_puppet/locales/config.yaml +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +874 -0
- data/locales/ja/puppet.po +140 -163
- data/locales/puppet.pot +940 -597
- data/man/man5/puppet.conf.5 +16 -91
- data/man/man8/puppet-agent.8 +2 -6
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-cert.8 +1 -1
- data/man/man8/puppet-certificate.8 +1 -1
- data/man/man8/puppet-certificate_request.8 +1 -1
- data/man/man8/puppet-certificate_revocation_list.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 +11 -33
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +4 -22
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-master.8 +1 -1
- data/man/man8/puppet-module.8 +2 -11
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/integration/application/lookup_spec.rb +0 -21
- data/spec/integration/parser/compiler_spec.rb +18 -0
- data/spec/integration/parser/script_compiler_spec.rb +113 -0
- data/spec/integration/provider/mount_spec.rb +2 -0
- data/spec/integration/type/file_spec.rb +11 -3
- data/spec/integration/util/windows/adsi_spec.rb +1 -86
- data/spec/integration/util/windows/principal_spec.rb +1 -10
- data/spec/shared_contexts/checksum.rb +4 -1
- data/spec/shared_contexts/digests.rb +46 -1
- data/spec/shared_contexts/types_setup.rb +8 -3
- data/spec/unit/agent_spec.rb +2 -2
- data/spec/unit/application/cert_spec.rb +5 -17
- data/spec/unit/application/device_spec.rb +2 -96
- data/spec/unit/application/filebucket_spec.rb +18 -4
- data/spec/unit/configurer/plugin_handler_spec.rb +5 -32
- data/spec/unit/configurer_spec.rb +3 -3
- data/spec/unit/datatypes_spec.rb +304 -0
- data/spec/unit/defaults_spec.rb +41 -20
- data/spec/unit/face/config_spec.rb +46 -1
- data/spec/unit/face/epp_face_spec.rb +7 -3
- data/spec/unit/face/module/search_spec.rb +11 -0
- data/spec/unit/face/parser_spec.rb +2 -2
- data/spec/unit/file_bucket/dipper_spec.rb +12 -1
- data/spec/unit/forge/module_release_spec.rb +70 -0
- data/spec/unit/functions/break_spec.rb +34 -2
- data/spec/unit/functions/contain_spec.rb +1 -0
- data/spec/unit/functions/convert_to_spec.rb +22 -0
- data/spec/unit/functions/epp_spec.rb +5 -0
- data/spec/unit/functions/include_spec.rb +15 -0
- data/spec/unit/functions/module_directory_spec.rb +43 -0
- data/spec/unit/functions/new_spec.rb +14 -14
- data/spec/unit/functions/require_spec.rb +2 -0
- data/spec/unit/functions/shared.rb +12 -0
- data/spec/unit/functions/step_spec.rb +1 -1
- data/spec/unit/functions4_spec.rb +49 -4
- data/spec/unit/indirector/catalog/compiler_spec.rb +3 -3
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +148 -94
- data/spec/unit/indirector/node/ldap_spec.rb +15 -12
- data/spec/unit/indirector/rest_spec.rb +0 -43
- data/spec/unit/interface/action_spec.rb +33 -0
- data/spec/unit/module_tool/applications/builder_spec.rb +7 -0
- data/spec/unit/module_tool/applications/installer_spec.rb +8 -0
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +8 -0
- data/spec/unit/module_tool/applications/upgrader_spec.rb +6 -0
- data/spec/unit/network/http/connection_spec.rb +1 -1
- data/spec/unit/network/http/factory_spec.rb +28 -35
- data/spec/unit/parser/compiler_spec.rb +0 -8
- data/spec/unit/parser/environment_compiler_spec.rb +36 -0
- data/spec/unit/parser/functions/create_resources_spec.rb +9 -0
- data/spec/unit/parser/functions/inline_template_spec.rb +7 -0
- data/spec/unit/parser/functions/realize_spec.rb +9 -0
- data/spec/unit/parser/functions/tag_spec.rb +7 -0
- data/spec/unit/parser/functions/tagged_spec.rb +25 -0
- data/spec/unit/parser/functions/template_spec.rb +8 -0
- data/spec/unit/parser/scope_spec.rb +19 -0
- data/spec/unit/pops/evaluator/conditionals_spec.rb +1 -1
- data/spec/unit/pops/loaders/loader_spec.rb +516 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +11 -0
- data/spec/unit/pops/loaders/module_loaders_spec.rb +43 -0
- data/spec/unit/pops/loaders/static_loader_spec.rb +15 -7
- data/spec/unit/pops/model/model_spec.rb +5 -0
- data/spec/unit/pops/parser/lexer2_spec.rb +15 -0
- data/spec/unit/pops/parser/locator_spec.rb +20 -0
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +33 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +28 -0
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +12 -0
- data/spec/unit/pops/parser/parse_plan_spec.rb +48 -0
- data/spec/unit/pops/serialization/packer_spec.rb +8 -0
- data/spec/unit/pops/serialization/serialization_spec.rb +30 -0
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +31 -0
- data/spec/unit/pops/types/error_spec.rb +207 -0
- data/spec/unit/pops/types/p_init_type_spec.rb +98 -0
- data/spec/unit/pops/types/p_object_type_spec.rb +275 -10
- data/spec/unit/pops/types/p_uri_type_spec.rb +191 -0
- data/spec/unit/pops/types/ruby_generator_spec.rb +82 -44
- data/spec/unit/pops/types/task_spec.rb +353 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +76 -5
- data/spec/unit/pops/types/type_formatter_spec.rb +31 -13
- data/spec/unit/pops/types/type_parser_spec.rb +13 -1
- data/spec/unit/pops/types/types_spec.rb +60 -0
- data/spec/unit/pops/validator/validator_spec.rb +76 -0
- data/spec/unit/provider/group/groupadd_spec.rb +77 -1
- data/spec/unit/provider/group/pw_spec.rb +4 -4
- data/spec/unit/provider/group/windows_adsi_spec.rb +22 -79
- data/spec/unit/provider/mount_spec.rb +18 -5
- data/spec/unit/provider/nameservice_spec.rb +5 -5
- data/spec/unit/provider/package/dnf_spec.rb +2 -2
- data/spec/unit/provider/package/gem_spec.rb +1 -1
- data/spec/unit/provider/package/pkg_spec.rb +3 -0
- data/spec/unit/provider/package/yum_spec.rb +40 -0
- data/spec/unit/provider/service/launchd_spec.rb +2 -1
- data/spec/unit/provider/service/redhat_spec.rb +5 -0
- data/spec/unit/provider/service/systemd_spec.rb +1 -1
- data/spec/unit/provider/user/hpux_spec.rb +2 -2
- data/spec/unit/provider/user/openbsd_spec.rb +2 -2
- data/spec/unit/provider/user/pw_spec.rb +14 -14
- data/spec/unit/provider/user/user_role_add_spec.rb +19 -2
- data/spec/unit/provider/user/useradd_spec.rb +188 -22
- data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
- data/spec/unit/provider/zfs/zfs_spec.rb +55 -1
- data/spec/unit/provider_spec.rb +48 -0
- data/spec/unit/puppet_pal_2pec.rb +1005 -0
- data/spec/unit/puppet_pal_spec.rb +11 -0
- data/spec/unit/settings/ini_file_spec.rb +313 -2
- data/spec/unit/ssl/certificate_request_spec.rb +42 -1
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +2 -1
- data/spec/unit/transaction/report_spec.rb +1 -0
- data/spec/unit/transaction_spec.rb +112 -21
- data/spec/unit/type/file/checksum_spec.rb +20 -0
- data/spec/unit/type/file_spec.rb +8 -0
- data/spec/unit/type/group_spec.rb +8 -0
- data/spec/unit/type/k5login_spec.rb +22 -1
- data/spec/unit/type/scheduled_task_spec.rb +15 -0
- data/spec/unit/type/user_spec.rb +11 -1
- data/spec/unit/type/yumrepo_spec.rb +5 -0
- data/spec/unit/util/checksums_spec.rb +3 -3
- data/spec/unit/util/log/destinations_spec.rb +14 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +1 -1
- data/spec/unit/util/plist_spec.rb +3 -3
- data/spec/unit/util/windows/adsi_spec.rb +27 -31
- data/spec/unit/util/windows/sid_spec.rb +15 -86
- data/spec/unit/util_spec.rb +17 -3
- data/tasks/manpages.rake +1 -1
- metadata +216 -178
- data/lib/puppet/bindings.rb +0 -148
- data/lib/puppet/configurer/downloader_factory.rb +0 -44
- data/spec/unit/configurer/downloader_factory_spec.rb +0 -129
@@ -5,7 +5,7 @@ Puppet::Type.type(:zfs).provide(:zfs) do
|
|
5
5
|
|
6
6
|
def self.instances
|
7
7
|
zfs(:list, '-H').split("\n").collect do |line|
|
8
|
-
name,
|
8
|
+
name, _used, _avail, _refer, _mountpoint = line.split(/\s+/)
|
9
9
|
new({:name => name, :ensure => :present})
|
10
10
|
end
|
11
11
|
end
|
@@ -42,13 +42,24 @@ Puppet::Type.type(:zfs).provide(:zfs) do
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
+
# On FreeBSD zoned is called jailed
|
46
|
+
def container_property
|
47
|
+
case Facter.value(:operatingsystem)
|
48
|
+
when "FreeBSD"
|
49
|
+
:jailed
|
50
|
+
else
|
51
|
+
:zoned
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
45
55
|
PARAMETER_UNSET_OR_NOT_AVAILABLE = '-'
|
46
56
|
|
47
57
|
# https://docs.oracle.com/cd/E19963-01/html/821-1448/gbscy.html
|
48
58
|
# shareiscsi (added in build 120) was removed from S11 build 136
|
49
59
|
# aclmode was removed from S11 in build 139 but it may have been added back
|
60
|
+
# acltype is for ZFS on Linux, and allows disabling or enabling POSIX ACLs
|
50
61
|
# http://webcache.googleusercontent.com/search?q=cache:-p74K0DVsdwJ:developers.slashdot.org/story/11/11/09/2343258/solaris-11-released+&cd=13
|
51
|
-
[:aclmode, :shareiscsi].each do |field|
|
62
|
+
[:aclmode, :acltype, :shareiscsi].each do |field|
|
52
63
|
# The zfs commands use the property value '-' to indicate that the
|
53
64
|
# property is not set. We make use of this value to indicate that the
|
54
65
|
# property is not set since it is not available. Conversely, if these
|
@@ -74,7 +85,7 @@ Puppet::Type.type(:zfs).provide(:zfs) do
|
|
74
85
|
:mountpoint, :nbmand, :primarycache, :quota, :readonly,
|
75
86
|
:recordsize, :refquota, :refreservation, :reservation,
|
76
87
|
:secondarycache, :setuid, :sharenfs, :sharesmb,
|
77
|
-
:snapdir, :version, :volsize, :vscan, :xattr
|
88
|
+
:snapdir, :version, :volsize, :vscan, :xattr].each do |field|
|
78
89
|
define_method(field) do
|
79
90
|
zfs(:get, "-H", "-o", "value", field, @resource[:name]).strip
|
80
91
|
end
|
@@ -84,5 +95,14 @@ Puppet::Type.type(:zfs).provide(:zfs) do
|
|
84
95
|
end
|
85
96
|
end
|
86
97
|
|
98
|
+
|
99
|
+
define_method(:zoned) do
|
100
|
+
zfs(:get, "-H", "-o", "value", container_property, @resource[:name]).strip
|
101
|
+
end
|
102
|
+
|
103
|
+
define_method("zoned=") do |should|
|
104
|
+
zfs(:set, "#{container_property}=#{should}", @resource[:name])
|
105
|
+
end
|
106
|
+
|
87
107
|
end
|
88
108
|
|
@@ -6,7 +6,7 @@ Puppet::Type.type(:zpool).provide(:zpool) do
|
|
6
6
|
#NAME SIZE ALLOC FREE CAP HEALTH ALTROOT
|
7
7
|
def self.instances
|
8
8
|
zpool(:list, '-H').split("\n").collect do |line|
|
9
|
-
name,
|
9
|
+
name, _size, _alloc, _free, _cap, _health, _altroot = line.split(/\s+/)
|
10
10
|
new({:name => name, :ensure => :present})
|
11
11
|
end
|
12
12
|
end
|
@@ -34,8 +34,6 @@ config = Puppet::Util::Reference.newreference(:configuration, :depth => 1, :doc
|
|
34
34
|
val = 'Unix/Linux: /var/log/puppetlabs/puppet -- Windows: C:\ProgramData\PuppetLabs\puppet\var\log -- Non-root user: ~/.puppetlabs/var/log'
|
35
35
|
elsif name.to_s == 'hiera_config'
|
36
36
|
val = '$confdir/hiera.yaml. However, if a file exists at $codedir/hiera.yaml, Puppet uses that instead.'
|
37
|
-
elsif name.to_s == 'certname'
|
38
|
-
val = "the Host's fully qualified domain name, as determined by facter"
|
39
37
|
end
|
40
38
|
|
41
39
|
# Leave out the section information; it was apparently confusing people.
|
@@ -79,7 +79,6 @@ Puppet::Util::Reference.newreference :type, :doc => "All Puppet resource types a
|
|
79
79
|
|
80
80
|
raise _("Could not retrieve property %{sname} on type %{type_name}") % { sname: sname, type_name: type.name } unless property
|
81
81
|
|
82
|
-
doc = nil
|
83
82
|
unless doc = property.doc
|
84
83
|
$stderr.puts _("No docs for %{type}[%{sname}]") % { type: type, sname: sname }
|
85
84
|
next
|
data/lib/puppet/resource.rb
CHANGED
@@ -257,7 +257,6 @@ class Puppet::Resource
|
|
257
257
|
{ type: (type[:type] || type["type"]).inspect, title: (type[:title] || type["title"]).inspect }
|
258
258
|
end
|
259
259
|
|
260
|
-
environment = attributes[:environment]
|
261
260
|
# In order to avoid an expensive search of 'known_resource_types" and
|
262
261
|
# to obey/preserve the implementation of the resource's type - if the
|
263
262
|
# given type is a resource type implementation (one of):
|
@@ -279,7 +278,7 @@ class Puppet::Resource
|
|
279
278
|
end
|
280
279
|
@exported = false
|
281
280
|
|
282
|
-
# Set things like strictness first.
|
281
|
+
# Set things like environment, strictness first.
|
283
282
|
attributes.each do |attr, value|
|
284
283
|
next if attr == :parameters
|
285
284
|
send(attr.to_s + "=", value)
|
@@ -595,7 +595,7 @@ class Puppet::Resource::Catalog < Puppet::Graph::SimpleGraph
|
|
595
595
|
transaction = Puppet::Transaction.new(self, options[:report], prioritizer)
|
596
596
|
transaction.tags = options[:tags] if options[:tags]
|
597
597
|
transaction.ignoreschedules = true if options[:ignoreschedules]
|
598
|
-
transaction.for_network_device =
|
598
|
+
transaction.for_network_device = options[:network_device]
|
599
599
|
|
600
600
|
transaction
|
601
601
|
end
|
@@ -144,7 +144,6 @@ module Puppet
|
|
144
144
|
# Puppet::Transaction::Event failure with the given message.
|
145
145
|
# @param message [String] the reason for a status failure
|
146
146
|
def fail_with_event(message)
|
147
|
-
failed = true
|
148
147
|
add_event(@real_resource.event(:name => :resource_error, :status => "failure", :message => message))
|
149
148
|
end
|
150
149
|
|
data/lib/puppet/resource/type.rb
CHANGED
@@ -43,7 +43,7 @@ class Puppet::Resource::Type
|
|
43
43
|
# :capability - the type name of the capres produced/consumed
|
44
44
|
# :mappings - a hash of attribute_name => Expression
|
45
45
|
# These two attributes are populated in
|
46
|
-
# PopsBridge::
|
46
|
+
# PopsBridge::instantiate_CapabilityMapping
|
47
47
|
|
48
48
|
# Map from argument (aka parameter) names to Puppet Type
|
49
49
|
# @return [Hash<Symbol, Puppet::Pops::Types::PAnyType] map from name to type
|
@@ -442,9 +442,9 @@ class Puppet::Resource::Type
|
|
442
442
|
def convert_from_ast(name)
|
443
443
|
value = name.value
|
444
444
|
if value.is_a?(Puppet::Parser::AST::Regex)
|
445
|
-
|
445
|
+
value.value
|
446
446
|
else
|
447
|
-
|
447
|
+
value
|
448
448
|
end
|
449
449
|
end
|
450
450
|
|
@@ -476,7 +476,7 @@ class Puppet::Resource::Type
|
|
476
476
|
# Note we're doing something somewhat weird here -- we're setting
|
477
477
|
# the class's namespace to its fully qualified name. This means
|
478
478
|
# anything inside that class starts looking in that namespace first.
|
479
|
-
@namespace,
|
479
|
+
@namespace, _ = @type == :hostclass ? [@name, ''] : namesplit(@name)
|
480
480
|
end
|
481
481
|
end
|
482
482
|
|
@@ -98,7 +98,7 @@ class Puppet::Settings::BaseSetting
|
|
98
98
|
@iscreated
|
99
99
|
end
|
100
100
|
|
101
|
-
# short name for the
|
101
|
+
# short name for the element
|
102
102
|
def short=(value)
|
103
103
|
raise ArgumentError, _("Short names can only be one character.") if value.to_s.length != 1
|
104
104
|
@short = value.to_s
|
@@ -22,7 +22,6 @@ class Puppet::Settings::EnvironmentConf
|
|
22
22
|
def self.load_from(path_to_env, global_module_path)
|
23
23
|
path_to_env = File.expand_path(path_to_env)
|
24
24
|
conf_file = File.join(path_to_env, 'environment.conf')
|
25
|
-
config = nil
|
26
25
|
|
27
26
|
begin
|
28
27
|
config = Puppet.settings.parse_file(conf_file)
|
@@ -12,7 +12,7 @@ class Puppet::Settings::IniFile
|
|
12
12
|
def self.parse(config_fh)
|
13
13
|
config = new([DefaultSection.new])
|
14
14
|
config_fh.each_line do |line|
|
15
|
-
case line
|
15
|
+
case line.chomp
|
16
16
|
when /^(\s*)\[([[:word:]]+)\](\s*)$/
|
17
17
|
config.append(SectionLine.new($1, $2, $3))
|
18
18
|
when /^(\s*)([[:word:]]+)(\s*=\s*)(.*?)(\s*)$/
|
@@ -34,6 +34,15 @@ class Puppet::Settings::IniFile
|
|
34
34
|
@lines << line
|
35
35
|
end
|
36
36
|
|
37
|
+
def delete(section, name)
|
38
|
+
delete_offset = @lines.index(setting(section, name))
|
39
|
+
next_offset = delete_offset + 1
|
40
|
+
if next_offset < @lines.length
|
41
|
+
@lines[next_offset].previous = @lines[delete_offset].previous
|
42
|
+
end
|
43
|
+
@lines.delete_at(delete_offset)
|
44
|
+
end
|
45
|
+
|
37
46
|
def insert_after(line, new_line)
|
38
47
|
new_line.previous = line
|
39
48
|
|
@@ -76,7 +85,30 @@ class Puppet::Settings::IniFile
|
|
76
85
|
lines.select { |line| line.is_a?(SettingLine) }
|
77
86
|
end
|
78
87
|
|
88
|
+
def settings_exist_in_default_section?
|
89
|
+
lines_in(DEFAULT_SECTION_NAME).any? { |line| line.is_a?(SettingLine) }
|
90
|
+
end
|
91
|
+
|
92
|
+
def section_exists_with_default_section_name?
|
93
|
+
section_lines.any? do |section|
|
94
|
+
!section.is_a?(DefaultSection) && section.name == DEFAULT_SECTION_NAME
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def set_default_section_write_sectionline(value)
|
99
|
+
if index = @lines.find_index { |line| line.is_a?(DefaultSection) }
|
100
|
+
@lines[index].write_sectionline = true
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
79
104
|
def write(fh)
|
105
|
+
# If no real section line for the default section exists, configure the
|
106
|
+
# DefaultSection object to write its section line. (DefaultSection objects
|
107
|
+
# don't write the section line unless explicitly configured to do so)
|
108
|
+
if settings_exist_in_default_section? && !section_exists_with_default_section_name?
|
109
|
+
set_default_section_write_sectionline(true)
|
110
|
+
end
|
111
|
+
|
80
112
|
fh.truncate(0)
|
81
113
|
fh.rewind
|
82
114
|
@lines.each do |line|
|
@@ -99,6 +131,14 @@ class Puppet::Settings::IniFile
|
|
99
131
|
end
|
100
132
|
end
|
101
133
|
|
134
|
+
def delete(section_name, name)
|
135
|
+
setting = @config.setting(section_name, name)
|
136
|
+
if setting
|
137
|
+
@config.delete(section_name, name)
|
138
|
+
setting.to_s.chomp
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
102
142
|
private
|
103
143
|
|
104
144
|
def add_setting(section_name, name, value)
|
@@ -131,41 +171,55 @@ class Puppet::Settings::IniFile
|
|
131
171
|
Line = Struct.new(:text) do
|
132
172
|
include LineNumber
|
133
173
|
|
174
|
+
def to_s
|
175
|
+
text
|
176
|
+
end
|
177
|
+
|
134
178
|
def write(fh)
|
135
|
-
fh.puts(
|
179
|
+
fh.puts(to_s)
|
136
180
|
end
|
137
181
|
end
|
138
182
|
|
139
183
|
SettingLine = Struct.new(:prefix, :name, :infix, :value, :suffix) do
|
140
184
|
include LineNumber
|
141
185
|
|
186
|
+
def to_s
|
187
|
+
"#{prefix}#{name}#{infix}#{value}#{suffix}"
|
188
|
+
end
|
189
|
+
|
142
190
|
def write(fh)
|
143
|
-
fh.
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
191
|
+
fh.puts(to_s)
|
192
|
+
end
|
193
|
+
|
194
|
+
def ==(other)
|
195
|
+
super(other) && self.line_number == other.line_number
|
148
196
|
end
|
149
197
|
end
|
150
198
|
|
151
199
|
SectionLine = Struct.new(:prefix, :name, :suffix) do
|
152
200
|
include LineNumber
|
153
201
|
|
202
|
+
def to_s
|
203
|
+
"#{prefix}[#{name}]#{suffix}"
|
204
|
+
end
|
205
|
+
|
154
206
|
def write(fh)
|
155
|
-
fh.
|
156
|
-
fh.write("[")
|
157
|
-
fh.write(name)
|
158
|
-
fh.write("]")
|
159
|
-
fh.puts(suffix)
|
207
|
+
fh.puts(to_s)
|
160
208
|
end
|
161
209
|
end
|
162
210
|
|
163
211
|
class DefaultSection < SectionLine
|
212
|
+
attr_accessor :write_sectionline
|
213
|
+
|
164
214
|
def initialize
|
215
|
+
@write_sectionline = false
|
165
216
|
super("", DEFAULT_SECTION_NAME, "")
|
166
217
|
end
|
167
218
|
|
168
219
|
def write(fh)
|
220
|
+
if @write_sectionline
|
221
|
+
super(fh)
|
222
|
+
end
|
169
223
|
end
|
170
224
|
end
|
171
225
|
end
|
@@ -399,7 +399,7 @@ class Puppet::SSL::CertificateAuthority
|
|
399
399
|
|
400
400
|
# Check for wildcards in the subjectAltName fields too.
|
401
401
|
if csr.subject_alt_names.any? {|x| x.include? '*' }
|
402
|
-
raise CertificateSigningError.new(hostname), _("CSR '%{csr}' subjectAltName contains a wildcard, which is not allowed: %{alt_names} To continue, this CSR needs to be cleaned.") % { csr: csr.name, alt_names: csr.subject_alt_names.join(', ') }
|
402
|
+
raise CertificateSigningError.new(hostname), _("CSR '%{csr}' subjectAltName contains a wildcard, which is not allowed: %{alt_names}. To continue, this CSR needs to be cleaned.") % { csr: csr.name, alt_names: csr.subject_alt_names.join(', ') }
|
403
403
|
end
|
404
404
|
end
|
405
405
|
|
@@ -109,7 +109,7 @@ DOC
|
|
109
109
|
|
110
110
|
def ext_value_to_ruby_value(asn1_arr)
|
111
111
|
# A list of ASN1 types than can't be directly converted to a Ruby type
|
112
|
-
@
|
112
|
+
@non_convertible ||= [OpenSSL::ASN1::EndOfContent,
|
113
113
|
OpenSSL::ASN1::BitString,
|
114
114
|
OpenSSL::ASN1::Null,
|
115
115
|
OpenSSL::ASN1::Enumerated,
|
@@ -130,7 +130,7 @@ DOC
|
|
130
130
|
# type, use the original ASN1 value. This is needed to work around a bug
|
131
131
|
# in Ruby's OpenSSL library which doesn't convert the value of unknown
|
132
132
|
# extension OIDs properly. See PUP-3560
|
133
|
-
if @
|
133
|
+
if @non_convertible.include?(asn1_val.class) then
|
134
134
|
# Allows OpenSSL to take the ASN1 value and turn it into something Ruby understands
|
135
135
|
OpenSSL::X509::Extension.new(asn1_arr.first.value, asn1_val.to_der).value
|
136
136
|
else
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'puppet/ssl/base'
|
2
2
|
require 'puppet/indirector'
|
3
|
+
require 'puppet/ssl/certificate_signer'
|
3
4
|
|
4
5
|
# Manage the CRL.
|
5
6
|
class Puppet::SSL::CertificateRevocationList < Puppet::SSL::Base
|
@@ -105,6 +106,6 @@ private
|
|
105
106
|
end
|
106
107
|
|
107
108
|
def sign_with(cakey)
|
108
|
-
|
109
|
+
Puppet::SSL::CertificateSigner.new.sign(@content, cakey)
|
109
110
|
end
|
110
111
|
end
|
@@ -4,11 +4,22 @@
|
|
4
4
|
#
|
5
5
|
# @api private
|
6
6
|
class Puppet::SSL::CertificateSigner
|
7
|
+
|
8
|
+
# @!attribute [r] digest
|
9
|
+
# @return [OpenSSL::Digest]
|
10
|
+
attr_reader :digest
|
11
|
+
|
7
12
|
def initialize
|
8
13
|
if OpenSSL::Digest.const_defined?('SHA256')
|
9
14
|
@digest = OpenSSL::Digest::SHA256
|
10
15
|
elsif OpenSSL::Digest.const_defined?('SHA1')
|
11
16
|
@digest = OpenSSL::Digest::SHA1
|
17
|
+
elsif OpenSSL::Digest.const_defined?('SHA512')
|
18
|
+
@digest = OpenSSL::Digest::SHA512
|
19
|
+
elsif OpenSSL::Digest.const_defined?('SHA384')
|
20
|
+
@digest = OpenSSL::Digest::SHA384
|
21
|
+
elsif OpenSSL::Digest.const_defined?('SHA224')
|
22
|
+
@digest = OpenSSL::Digest::SHA224
|
12
23
|
else
|
13
24
|
raise Puppet::Error,
|
14
25
|
"No FIPS 140-2 compliant digest algorithm in OpenSSL::Digest"
|
data/lib/puppet/ssl/host.rb
CHANGED
@@ -211,7 +211,7 @@ DOC
|
|
211
211
|
raise Puppet::Error, _("No private key with which to validate certificate with fingerprint: %{fingerprint}") % { fingerprint: certificate.fingerprint } unless key
|
212
212
|
unless certificate.content.check_private_key(key.content)
|
213
213
|
raise Puppet::Error, _(<<ERROR_STRING) % { fingerprint: certificate.fingerprint, cert_name: Puppet[:certname], ssl_dir: Puppet[:ssldir], cert_dir: Puppet[:certdir].gsub('/', '\\') }
|
214
|
-
The certificate retrieved from the master does not match the agent's private key.
|
214
|
+
The certificate retrieved from the master does not match the agent's private key. Did you forget to run as root?
|
215
215
|
Certificate fingerprint: %{fingerprint}
|
216
216
|
To fix this, remove the certificate from both the master and the agent and then start a puppet run, which will automatically regenerate a certificate.
|
217
217
|
On the master:
|
@@ -320,7 +320,7 @@ ERROR_STRING
|
|
320
320
|
# configurable
|
321
321
|
# --jeffweiss 29 aug 2012
|
322
322
|
def suitable_message_digest_algorithms
|
323
|
-
[:SHA1, :SHA256, :SHA512]
|
323
|
+
[:SHA1, :SHA224, :SHA256, :SHA384, :SHA512]
|
324
324
|
end
|
325
325
|
|
326
326
|
# Attempt to retrieve a cert, if we don't already have one.
|
@@ -23,7 +23,7 @@ class Puppet::SyntaxCheckers::Base64 < Puppet::Plugins::SyntaxCheckers::SyntaxCh
|
|
23
23
|
# Do a strict decode64 on text with all whitespace stripped since the non strict version
|
24
24
|
# simply skips all non base64 characters
|
25
25
|
Base64.strict_decode64(cleaned_text)
|
26
|
-
rescue
|
26
|
+
rescue
|
27
27
|
msg = if (cleaned_text.bytes.to_a.size * 8) % 6 != 0
|
28
28
|
_("Base64 syntax checker: Cannot parse invalid Base64 string - padding is not correct")
|
29
29
|
else
|
data/lib/puppet/transaction.rb
CHANGED
@@ -28,7 +28,7 @@ class Puppet::Transaction
|
|
28
28
|
# Handles most of the actual interacting with resources
|
29
29
|
attr_reader :resource_harness
|
30
30
|
|
31
|
-
attr_reader :prefetched_providers
|
31
|
+
attr_reader :prefetched_providers, :prefetch_failed_providers
|
32
32
|
|
33
33
|
# @!attribute [r] persistence
|
34
34
|
# @return [Puppet::Transaction::Persistence] persistence object for cross
|
@@ -54,6 +54,8 @@ class Puppet::Transaction
|
|
54
54
|
@resource_harness = Puppet::Transaction::ResourceHarness.new(self)
|
55
55
|
|
56
56
|
@prefetched_providers = Hash.new { |h,k| h[k] = {} }
|
57
|
+
|
58
|
+
@prefetch_failed_providers = Hash.new { |h,k| h[k] = {} }
|
57
59
|
end
|
58
60
|
|
59
61
|
# Invoke the pre_run_check hook in every resource in the catalog.
|
@@ -175,9 +177,9 @@ class Puppet::Transaction
|
|
175
177
|
if resource.is_a?(Puppet::Type::Component)
|
176
178
|
Puppet.warning _("Somehow left a component in the relationship graph")
|
177
179
|
else
|
178
|
-
resource.info _("Starting to evaluate the resource") if Puppet[:evaltrace]
|
180
|
+
resource.info _("Starting to evaluate the resource") if Puppet[:evaltrace] && @catalog.host_config?
|
179
181
|
seconds = thinmark { block.call(resource) }
|
180
|
-
resource.info _("Evaluated in %{seconds} seconds") % { seconds: "%0.2f" % seconds } if Puppet[:evaltrace]
|
182
|
+
resource.info _("Evaluated in %{seconds} seconds") % { seconds: "%0.2f" % seconds } if Puppet[:evaltrace] && @catalog.host_config?
|
181
183
|
end
|
182
184
|
end
|
183
185
|
|
@@ -231,7 +233,11 @@ class Puppet::Transaction
|
|
231
233
|
|
232
234
|
def prefetch_if_necessary(resource)
|
233
235
|
provider_class = resource.provider.class
|
234
|
-
|
236
|
+
if !provider_class.respond_to?(:prefetch) or
|
237
|
+
prefetched_providers[resource.type][provider_class.name] or
|
238
|
+
prefetch_failed_providers[resource.type][provider_class.name]
|
239
|
+
return
|
240
|
+
end
|
235
241
|
|
236
242
|
resources = resources_by_provider(resource.type, provider_class.name)
|
237
243
|
|
@@ -302,14 +308,20 @@ class Puppet::Transaction
|
|
302
308
|
# up-front at failure time because the graph may be mutated as we
|
303
309
|
# walk it.
|
304
310
|
def propagate_failure(resource)
|
311
|
+
|
312
|
+
provider_class = resource.provider.class
|
313
|
+
s = resource_status(resource)
|
314
|
+
if prefetch_failed_providers[resource.type][provider_class.name] && !s.nil?
|
315
|
+
message = _("Prefetch failed for %{type_name} provider '%{name}'") % { type_name: resource.type, name: provider_class.name }
|
316
|
+
s.fail_with_event(message)
|
317
|
+
end
|
318
|
+
|
305
319
|
failed = Set.new
|
306
320
|
relationship_graph.direct_dependencies_of(resource).each do |dep|
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
end
|
312
|
-
end
|
321
|
+
s = resource_status(dep)
|
322
|
+
next if s.nil?
|
323
|
+
failed.merge(s.failed_dependencies) if s.dependency_failed?
|
324
|
+
failed.add(dep) if s.failed? || s.failed_to_restart?
|
313
325
|
end
|
314
326
|
resource_status(resource).failed_dependencies = failed.to_a
|
315
327
|
end
|
@@ -338,13 +350,20 @@ class Puppet::Transaction
|
|
338
350
|
# types, just providers.
|
339
351
|
def prefetch(provider_class, resources)
|
340
352
|
type_name = provider_class.resource_type.name
|
341
|
-
return if @prefetched_providers[type_name][provider_class.name]
|
353
|
+
return if @prefetched_providers[type_name][provider_class.name] ||
|
354
|
+
@prefetch_failed_providers[type_name][provider_class.name]
|
342
355
|
Puppet.debug "Prefetching #{provider_class.name} resources for #{type_name}"
|
343
356
|
begin
|
344
357
|
provider_class.prefetch(resources)
|
345
|
-
rescue
|
358
|
+
rescue Exception => detail
|
359
|
+
if !detail.is_a?(LoadError) && !detail.is_a?(Puppet::MissingCommand)
|
360
|
+
raise unless Puppet.settings[:future_features]
|
361
|
+
|
362
|
+
@prefetch_failed_providers[type_name][provider_class.name] = true
|
363
|
+
end
|
346
364
|
#TRANSLATORS `prefetch` is a function name and should not be translated
|
347
|
-
|
365
|
+
message = _("Could not prefetch %{type_name} provider '%{name}': %{detail}") % { type_name: type_name, name: provider_class.name, detail: detail }
|
366
|
+
Puppet.log_exception(detail, message)
|
348
367
|
end
|
349
368
|
@prefetched_providers[type_name][provider_class.name] = true
|
350
369
|
end
|
@@ -355,7 +374,7 @@ class Puppet::Transaction
|
|
355
374
|
|
356
375
|
# Is the resource currently scheduled?
|
357
376
|
def scheduled?(resource)
|
358
|
-
self.ignoreschedules
|
377
|
+
self.ignoreschedules || resource_harness.scheduled?(resource)
|
359
378
|
end
|
360
379
|
|
361
380
|
# Should this resource be skipped?
|
@@ -374,6 +393,10 @@ class Puppet::Transaction
|
|
374
393
|
unless resource.class == Puppet::Type.type(:whit) then
|
375
394
|
resource.warning _("Skipping because of failed dependencies")
|
376
395
|
end
|
396
|
+
elsif resource_status(resource).failed? &&
|
397
|
+
@prefetch_failed_providers[resource.type][resource.provider.class.name]
|
398
|
+
#Do not try to evaluate a resource with a known failed provider
|
399
|
+
resource.warning _("Skipping because provider prefetch failed")
|
377
400
|
elsif resource.virtual?
|
378
401
|
resource.debug "Skipping because virtual"
|
379
402
|
elsif !host_and_device_resource?(resource) && resource.appliable_to_host? && for_network_device
|