puppet 4.5.3-x86-mingw32 → 4.6.1-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 +7 -0
- data/Gemfile +10 -1
- data/ext/debian/control +2 -4
- data/ext/project_data.yaml +4 -4
- data/install.rb +6 -2
- data/lib/puppet.rb +3 -1
- data/lib/puppet/agent/locker.rb +1 -1
- data/lib/puppet/application.rb +6 -4
- data/lib/puppet/application/agent.rb +2 -1
- data/lib/puppet/application/cert.rb +35 -2
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/generate.rb +5 -0
- data/lib/puppet/application/lookup.rb +3 -3
- data/lib/puppet/application_support.rb +1 -1
- data/lib/puppet/compilable_resource_type.rb +15 -0
- data/lib/puppet/configurer.rb +67 -10
- data/lib/puppet/configurer/plugin_handler.rb +2 -4
- data/lib/puppet/data_providers/hiera_config.rb +1 -1
- data/lib/puppet/defaults.rb +34 -7
- data/lib/puppet/environments.rb +4 -2
- data/lib/puppet/error.rb +1 -1
- data/lib/puppet/external/dot.rb +1 -1
- data/lib/puppet/face/ca.rb +4 -1
- data/lib/puppet/face/certificate.rb +7 -1
- data/lib/puppet/face/epp.rb +5 -5
- data/lib/puppet/face/generate.rb +64 -0
- data/lib/puppet/face/help.rb +19 -13
- data/lib/puppet/face/man.rb +1 -1
- data/lib/puppet/feature/external_facts.rb +1 -1
- data/lib/puppet/file_system.rb +16 -0
- data/lib/puppet/file_system/file_impl.rb +5 -0
- data/lib/puppet/file_system/memory_impl.rb +4 -0
- data/lib/puppet/file_system/path_pattern.rb +1 -0
- data/lib/puppet/file_system/windows.rb +19 -0
- data/lib/puppet/functions.rb +3 -5
- data/lib/puppet/functions/assert_type.rb +1 -1
- data/lib/puppet/functions/defined.rb +7 -5
- data/lib/puppet/functions/dig.rb +2 -18
- data/lib/puppet/functions/hiera.rb +1 -1
- data/lib/puppet/functions/lest.rb +1 -37
- data/lib/puppet/functions/new.rb +2 -473
- data/lib/puppet/functions/reverse_each.rb +2 -59
- data/lib/puppet/functions/scanf.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -63
- data/lib/puppet/functions/then.rb +1 -61
- data/lib/puppet/functions/type.rb +1 -40
- data/lib/puppet/functions/unwrap.rb +40 -0
- data/lib/puppet/generate/models/type/property.rb +70 -0
- data/lib/puppet/generate/models/type/type.rb +57 -0
- data/lib/puppet/generate/templates/type/pcore.erb +41 -0
- data/lib/puppet/generate/type.rb +239 -0
- data/lib/puppet/graph/simple_graph.rb +2 -6
- data/lib/puppet/indirector/catalog/static_compiler.rb +5 -2
- data/lib/puppet/indirector/facts/facter.rb +1 -1
- data/lib/puppet/indirector/key/ca.rb +2 -2
- data/lib/puppet/indirector/request.rb +25 -4
- data/lib/puppet/indirector/rest.rb +73 -3
- data/lib/puppet/info_service/class_information_service.rb +1 -2
- data/lib/puppet/interface/documentation.rb +1 -1
- data/lib/puppet/loaders.rb +2 -0
- data/lib/puppet/metatype/manager.rb +6 -6
- data/lib/puppet/module.rb +8 -1
- data/lib/puppet/module_tool.rb +2 -2
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/errors/installer.rb +2 -2
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +23 -32
- data/lib/puppet/network/http/rack/rest.rb +15 -1
- data/lib/puppet/network/rights.rb +1 -11
- data/lib/puppet/node/environment.rb +7 -3
- data/lib/puppet/node/facts.rb +1 -1
- data/lib/puppet/parameter.rb +23 -3
- data/lib/puppet/parameter/boolean.rb +1 -1
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parser.rb +0 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
- data/lib/puppet/parser/ast/resource.rb +5 -0
- data/lib/puppet/parser/ast/resource_instance.rb +5 -1
- data/lib/puppet/parser/ast/resourceparam.rb +5 -0
- data/lib/puppet/parser/compiler.rb +14 -17
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +1 -1
- data/lib/puppet/parser/environment_compiler.rb +10 -0
- data/lib/puppet/parser/functions/create_resources.rb +39 -24
- data/lib/puppet/parser/functions/defined.rb +2 -26
- data/lib/puppet/parser/functions/dig.rb +29 -0
- data/lib/puppet/parser/functions/lest.rb +49 -0
- data/lib/puppet/parser/functions/new.rb +530 -0
- data/lib/puppet/parser/functions/require.rb +1 -1
- data/lib/puppet/parser/functions/reverse_each.rb +83 -0
- data/lib/puppet/parser/functions/scanf.rb +4 -4
- data/lib/puppet/parser/functions/step.rb +84 -0
- data/lib/puppet/parser/functions/then.rb +73 -0
- data/lib/puppet/parser/functions/type.rb +53 -0
- data/lib/puppet/parser/resource.rb +16 -7
- data/lib/puppet/parser/scope.rb +36 -28
- data/lib/puppet/parser/type_loader.rb +1 -1
- data/lib/puppet/plugins/data_providers/data_provider.rb +1 -1
- data/lib/puppet/pops.rb +13 -0
- data/lib/puppet/pops/adapters.rb +49 -49
- data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +1 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +39 -2
- data/lib/puppet/pops/evaluator/closure.rb +39 -13
- data/lib/puppet/pops/evaluator/collector_transformer.rb +10 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +16 -11
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -1
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +0 -1
- data/lib/puppet/pops/evaluator/relationship_operator.rb +1 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +19 -45
- data/lib/puppet/pops/functions/function.rb +5 -0
- data/lib/puppet/pops/issues.rb +1 -1
- data/lib/puppet/pops/label_provider.rb +2 -2
- data/lib/puppet/pops/loader/base_loader.rb +12 -15
- data/lib/puppet/pops/loader/loader.rb +15 -50
- data/lib/puppet/pops/loader/loader_paths.rb +28 -2
- data/lib/puppet/pops/loader/module_loaders.rb +16 -1
- data/lib/puppet/pops/loader/null_loader.rb +17 -1
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +12 -11
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +80 -0
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +2 -3
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +52 -13
- data/lib/puppet/pops/loader/static_loader.rb +55 -0
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +30 -14
- data/lib/puppet/pops/loader/typed_name.rb +50 -0
- data/lib/puppet/pops/loaders.rb +64 -19
- data/lib/puppet/pops/merge_strategy.rb +7 -7
- data/lib/puppet/pops/migration/migration_checker.rb +4 -0
- data/lib/puppet/pops/model/model_label_provider.rb +2 -0
- data/lib/puppet/pops/parser/egrammar.ra +8 -5
- data/lib/puppet/pops/parser/eparser.rb +1550 -1498
- data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +7 -0
- data/lib/puppet/pops/parser/lexer2.rb +14 -1
- data/lib/puppet/pops/parser/locator.rb +30 -1
- data/lib/puppet/pops/parser/parser_support.rb +0 -3
- data/lib/puppet/pops/parser/slurp_support.rb +3 -3
- data/lib/puppet/pops/patterns.rb +9 -1
- data/lib/puppet/pops/pcore.rb +67 -11
- data/lib/puppet/pops/puppet_stack.rb +43 -0
- data/lib/puppet/pops/resource/param.rb +51 -0
- data/lib/puppet/pops/resource/resource_type_impl.rb +301 -0
- data/lib/puppet/pops/resource/resource_type_set.pcore +21 -0
- data/lib/puppet/pops/serialization.rb +17 -0
- data/lib/puppet/pops/serialization/abstract_reader.rb +149 -0
- data/lib/puppet/pops/serialization/abstract_writer.rb +179 -0
- data/lib/puppet/pops/serialization/deserializer.rb +60 -0
- data/lib/puppet/pops/serialization/extension.rb +126 -0
- data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
- data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
- data/lib/puppet/pops/serialization/json.rb +247 -0
- data/lib/puppet/pops/serialization/object.rb +63 -0
- data/lib/puppet/pops/serialization/rgen.rb +151 -0
- data/lib/puppet/pops/serialization/serializer.rb +91 -0
- data/lib/puppet/pops/serialization/time_factory.rb +66 -0
- data/lib/puppet/pops/types/annotatable.rb +36 -0
- data/lib/puppet/pops/types/implementation_registry.rb +3 -8
- data/lib/puppet/pops/types/p_meta_type.rb +83 -0
- data/lib/puppet/pops/types/p_object_type.rb +110 -117
- data/lib/puppet/pops/types/p_runtime_type.rb +13 -0
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +23 -0
- data/lib/puppet/pops/types/p_sem_ver_type.rb +30 -2
- data/lib/puppet/pops/types/p_sensitive_type.rb +69 -0
- data/lib/puppet/pops/types/p_type_set_type.rb +361 -0
- data/lib/puppet/pops/types/puppet_object.rb +0 -5
- data/lib/puppet/pops/types/ruby_generator.rb +9 -2
- data/lib/puppet/pops/types/type_calculator.rb +6 -1
- data/lib/puppet/pops/types/type_factory.rb +14 -12
- data/lib/puppet/pops/types/type_formatter.rb +78 -33
- data/lib/puppet/pops/types/type_mismatch_describer.rb +0 -2
- data/lib/puppet/pops/types/type_parser.rb +27 -2
- data/lib/puppet/pops/types/type_set_reference.rb +59 -0
- data/lib/puppet/pops/types/types.rb +366 -13
- data/lib/puppet/pops/validation.rb +4 -4
- data/lib/puppet/pops/validation/checker4_0.rb +5 -2
- data/lib/puppet/pops/visitor.rb +2 -2
- data/lib/puppet/property.rb +64 -5
- data/lib/puppet/provider.rb +1 -1
- data/lib/puppet/provider/aixobject.rb +3 -3
- data/lib/puppet/provider/group/aix.rb +4 -4
- data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
- data/lib/puppet/provider/mailalias/aliases.rb +1 -1
- data/lib/puppet/provider/mcx/mcxcontent.rb +2 -2
- data/lib/puppet/provider/mount/parsed.rb +1 -1
- data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
- data/lib/puppet/provider/package/appdmg.rb +3 -3
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/dnf.rb +5 -0
- data/lib/puppet/provider/package/nim.rb +1 -1
- data/lib/puppet/provider/package/pacman.rb +2 -2
- data/lib/puppet/provider/package/pip.rb +5 -3
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +5 -5
- data/lib/puppet/provider/package/pkgdmg.rb +4 -4
- data/lib/puppet/provider/package/pkgin.rb +1 -1
- data/lib/puppet/provider/package/pkgutil.rb +1 -1
- data/lib/puppet/provider/package/portage.rb +48 -8
- data/lib/puppet/provider/package/sun.rb +1 -1
- data/lib/puppet/provider/package/tdnf.rb +28 -0
- data/lib/puppet/provider/package/yum.rb +22 -4
- data/lib/puppet/provider/parsedfile.rb +2 -2
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/bsd.rb +1 -1
- data/lib/puppet/provider/service/daemontools.rb +2 -2
- data/lib/puppet/provider/service/debian.rb +3 -3
- data/lib/puppet/provider/service/init.rb +5 -3
- data/lib/puppet/provider/service/launchd.rb +16 -2
- data/lib/puppet/provider/service/runit.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +8 -1
- data/lib/puppet/provider/service/systemd.rb +39 -6
- 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/directoryservice.rb +4 -3
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/windows_adsi.rb +3 -0
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/reference/type.rb +1 -1
- data/lib/puppet/resource.rb +33 -7
- data/lib/puppet/resource/capability_finder.rb +74 -54
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/settings.rb +17 -6
- data/lib/puppet/settings/environment_conf.rb +1 -1
- data/lib/puppet/settings/server_list_setting.rb +20 -0
- data/lib/puppet/ssl/certificate_authority.rb +32 -9
- data/lib/puppet/ssl/certificate_authority/interface.rb +164 -24
- data/lib/puppet/ssl/host.rb +3 -3
- data/lib/puppet/ssl/oids.rb +10 -0
- data/lib/puppet/ssl/validator/default_validator.rb +2 -2
- data/lib/puppet/test/test_helper.rb +2 -2
- data/lib/puppet/transaction.rb +12 -0
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/event.rb +29 -2
- data/lib/puppet/transaction/event_manager.rb +1 -1
- data/lib/puppet/transaction/persistence.rb +84 -0
- data/lib/puppet/transaction/report.rb +49 -2
- data/lib/puppet/transaction/resource_harness.rb +98 -18
- data/lib/puppet/type.rb +63 -21
- data/lib/puppet/type/augeas.rb +3 -3
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/file.rb +39 -2
- data/lib/puppet/type/file/data_sync.rb +13 -5
- data/lib/puppet/type/host.rb +1 -1
- data/lib/puppet/type/mount.rb +2 -6
- data/lib/puppet/type/notify.rb +1 -1
- data/lib/puppet/type/package.rb +1 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/scheduled_task.rb +1 -1
- data/lib/puppet/type/ssh_authorized_key.rb +2 -2
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/yumrepo.rb +3 -3
- data/lib/puppet/type/zone.rb +1 -1
- data/lib/puppet/util.rb +2 -2
- data/lib/puppet/util/classgen.rb +1 -1
- data/lib/puppet/util/command_line.rb +6 -2
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/http_proxy.rb +1 -1
- data/lib/puppet/util/inifile.rb +1 -1
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/logging.rb +1 -1
- data/lib/puppet/util/multi_match.rb +1 -1
- data/lib/puppet/util/plist.rb +15 -5
- data/lib/puppet/util/profiler.rb +1 -1
- data/lib/puppet/util/profiler/around_profiler.rb +1 -1
- data/lib/puppet/util/psych_support.rb +1 -1
- data/lib/puppet/util/rdoc.rb +2 -2
- data/lib/puppet/util/rubygems.rb +1 -1
- data/lib/puppet/util/watcher/periodic_watcher.rb +2 -2
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/adsi.rb +30 -8
- data/lib/puppet/util/windows/api_types.rb +1 -1
- data/lib/puppet/util/windows/file.rb +59 -0
- data/lib/puppet/util/windows/process.rb +10 -0
- data/lib/puppet/util/windows/security.rb +1 -1
- data/lib/puppet/util/windows/user.rb +22 -4
- data/lib/puppet/util/yaml.rb +15 -3
- data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +1 -1
- data/lib/puppet/vendor/rgen_patch.rb +1 -1
- data/lib/puppet/version.rb +2 -2
- data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +10 -0
- data/spec/integration/agent/logging_spec.rb +15 -14
- data/spec/integration/application/apply_spec.rb +1 -0
- data/spec/integration/directory_environments_spec.rb +16 -0
- data/spec/integration/environments/settings_spec.rb +32 -4
- data/spec/integration/faces/documentation_spec.rb +1 -1
- data/spec/integration/network/http/api/indirected_routes_spec.rb +33 -0
- data/spec/integration/node/environment_spec.rb +21 -0
- data/spec/integration/parser/collection_spec.rb +10 -0
- data/spec/integration/parser/compiler_spec.rb +76 -840
- data/spec/integration/parser/functions/require_spec.rb +3 -3
- data/spec/integration/parser/parameter_defaults_spec.rb +6 -2
- data/spec/integration/parser/pcore_resource_spec.rb +208 -0
- data/spec/integration/parser/resource_expressions_spec.rb +4 -2
- data/spec/integration/provider/yumrepo_spec.rb +4 -1
- data/spec/integration/transaction/report_spec.rb +666 -0
- data/spec/integration/type/file_spec.rb +11 -12
- data/spec/integration/util/windows/adsi_spec.rb +99 -0
- data/spec/integration/util/windows/principal_spec.rb +109 -60
- data/spec/integration/util/windows/process_spec.rb +4 -2
- data/spec/integration/util/windows/security_spec.rb +34 -8
- data/spec/integration/util/windows/user_spec.rb +26 -4
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/network.rb +12 -8
- data/spec/shared_examples/rhel_package_provider.rb +341 -0
- data/spec/spec_helper.rb +8 -2
- data/spec/unit/application/cert_spec.rb +20 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +0 -26
- data/spec/unit/configurer_spec.rb +46 -0
- data/spec/unit/defaults_spec.rb +14 -0
- data/spec/unit/face/generate_spec.rb +230 -0
- data/spec/unit/face/help_spec.rb +53 -0
- data/spec/unit/face/parser_spec.rb +6 -0
- data/spec/unit/face/plugin_spec.rb +0 -4
- data/spec/unit/file_system_spec.rb +85 -0
- data/spec/unit/functions/lookup_spec.rb +4 -4
- data/spec/unit/functions/match_spec.rb +2 -2
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/split_spec.rb +1 -1
- data/spec/unit/functions/unwrap_spec.rb +29 -0
- data/spec/unit/functions/versioncmp_spec.rb +1 -1
- data/spec/unit/functions4_spec.rb +8 -8
- data/spec/unit/indirector/facts/facter_spec.rb +1 -9
- data/spec/unit/indirector/rest_spec.rb +95 -9
- data/spec/unit/module_spec.rb +43 -7
- data/spec/unit/module_tool/applications/installer_spec.rb +10 -1
- data/spec/unit/module_tool/applications/unpacker_spec.rb +2 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +8 -0
- data/spec/unit/module_tool/tar/mini_spec.rb +3 -3
- data/spec/unit/network/http/api/indirected_routes_spec.rb +49 -58
- data/spec/unit/network/http/api/master/v3_spec.rb +7 -4
- data/spec/unit/network/rights_spec.rb +1 -1
- data/spec/unit/parameter_spec.rb +11 -0
- data/spec/unit/parser/compiler_spec.rb +19 -33
- data/spec/unit/{appmgmt_spec.rb → parser/environment_compiler_spec.rb} +12 -1
- data/spec/unit/parser/functions/create_resources_spec.rb +76 -4
- data/spec/unit/parser/functions/require_spec.rb +2 -2
- data/spec/unit/parser/resource_spec.rb +21 -11
- data/spec/unit/parser/scope_spec.rb +1 -5
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1 -1
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
- data/spec/unit/pops/loaders/loader_paths_spec.rb +1 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +63 -5
- data/spec/unit/pops/loaders/module_loaders_spec.rb +2 -2
- data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +27 -3
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +8 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +9 -0
- data/spec/unit/pops/puppet_stack_spec.rb +79 -0
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +37 -0
- data/spec/unit/pops/serialization/packer_spec.rb +153 -0
- data/spec/unit/pops/serialization/rgen_spec.rb +88 -0
- data/spec/unit/pops/serialization/serialization_spec.rb +228 -0
- data/spec/unit/pops/types/p_object_type_spec.rb +44 -2
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +42 -0
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +139 -0
- data/spec/unit/pops/types/p_type_set_type_spec.rb +424 -0
- data/spec/unit/pops/types/ruby_generator_spec.rb +497 -181
- data/spec/unit/pops/types/type_calculator_spec.rb +10 -4
- data/spec/unit/pops/types/type_formatter_spec.rb +1 -1
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +2 -2
- data/spec/unit/pops/types/type_parser_spec.rb +1 -1
- data/spec/unit/pops/types/types_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +18 -1
- data/spec/unit/property_spec.rb +48 -11
- data/spec/unit/provider/group/windows_adsi_spec.rb +11 -1
- data/spec/unit/provider/package/dnf_spec.rb +1 -99
- data/spec/unit/provider/package/pacman_spec.rb +4 -4
- data/spec/unit/provider/package/pip_spec.rb +14 -0
- data/spec/unit/provider/package/pkg_spec.rb +6 -0
- data/spec/unit/provider/package/pkgdmg_spec.rb +0 -3
- data/spec/unit/provider/package/portage_spec.rb +64 -8
- data/spec/unit/provider/package/tdnf_spec.rb +18 -0
- data/spec/unit/provider/package/windows/package_spec.rb +4 -1
- data/spec/unit/provider/package/windows_spec.rb +8 -2
- data/spec/unit/provider/package/yum_spec.rb +6 -377
- data/spec/unit/provider/service/base_spec.rb +6 -0
- data/spec/unit/provider/service/debian_spec.rb +16 -7
- data/spec/unit/provider/service/gentoo_spec.rb +6 -0
- data/spec/unit/provider/service/init_spec.rb +7 -0
- data/spec/unit/provider/service/launchd_spec.rb +35 -4
- data/spec/unit/provider/service/openrc_spec.rb +6 -0
- data/spec/unit/provider/service/smf_spec.rb +31 -6
- data/spec/unit/provider/service/src_spec.rb +6 -0
- data/spec/unit/provider/service/systemd_spec.rb +70 -20
- data/spec/unit/provider/service/upstart_spec.rb +6 -0
- data/spec/unit/provider/user/aix_spec.rb +7 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +30 -1
- data/spec/unit/provider/user/windows_adsi_spec.rb +19 -0
- data/spec/unit/resource/capability_finder_spec.rb +51 -3
- data/spec/unit/resource/catalog_spec.rb +5 -0
- data/spec/unit/resource/type_spec.rb +2 -2
- data/spec/unit/resource_spec.rb +19 -0
- data/spec/unit/settings_spec.rb +13 -0
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +176 -10
- data/spec/unit/ssl/certificate_authority_spec.rb +63 -22
- data/spec/unit/ssl/host_spec.rb +1 -1
- data/spec/unit/ssl/oids_spec.rb +24 -21
- data/spec/unit/transaction/event_spec.rb +3 -1
- data/spec/unit/transaction/persistence_spec.rb +173 -0
- data/spec/unit/transaction/report_spec.rb +64 -1
- data/spec/unit/transaction/resource_harness_spec.rb +91 -0
- data/spec/unit/type/file/content_spec.rb +47 -15
- data/spec/unit/type/file_spec.rb +28 -0
- data/spec/unit/type/mount_spec.rb +5 -12
- data/spec/unit/type/yumrepo_spec.rb +1 -5
- data/spec/unit/type_spec.rb +32 -0
- data/spec/unit/util/command_line_spec.rb +11 -0
- data/spec/unit/util/execution_spec.rb +1 -1
- data/spec/unit/util/plist_spec.rb +16 -3
- data/spec/unit/util/storage_spec.rb +4 -1
- data/spec/unit/util/windows/adsi_spec.rb +23 -2
- data/spec/unit/util/windows/file_spec.rb +56 -1
- data/spec/unit/util/windows/sid_spec.rb +31 -7
- data/spec/unit/util/yaml_spec.rb +12 -0
- data/spec/unit/util_spec.rb +87 -20
- metadata +91 -48
- data/ext/puppetlisten/puppetlisten.rb +0 -77
- data/ext/puppetlisten/puppetrun.rb +0 -38
- data/lib/puppet/resource/type_collection_helper.rb +0 -7
- data/spec/unit/parser/functions/defined_spec.rb +0 -120
- data/spec/unit/resource/type_collection_helper_spec.rb +0 -24
@@ -68,7 +68,7 @@ Puppet::Type.type(:ssh_authorized_key).provide(
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
#
|
71
|
+
# Parse sshv2 option strings, which is a comma-separated list of
|
72
72
|
# either key="values" elements or bare-word elements
|
73
73
|
def self.parse_options(options)
|
74
74
|
result = []
|
@@ -56,7 +56,7 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
|
|
56
56
|
# Valid attributes to be managed by this provider.
|
57
57
|
# It is a list with of hash
|
58
58
|
# :aix_attr AIX command attribute name
|
59
|
-
# :puppet_prop Puppet
|
59
|
+
# :puppet_prop Puppet property name
|
60
60
|
# :to Method to adapt puppet property to aix command value. Optional.
|
61
61
|
# :from Method to adapt aix command value to puppet property. Optional
|
62
62
|
self.attribute_mapping = [
|
@@ -279,6 +279,7 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
|
|
279
279
|
|
280
280
|
def managed_attribute_keys(hash)
|
281
281
|
managed_attributes ||= @resource.original_parameters[:attributes] || hash.keys.map{|k| k.to_s}
|
282
|
+
managed_attributes = [managed_attributes] unless managed_attributes.is_a?(Array)
|
282
283
|
managed_attributes.map {|attr| key, value = attr.split("="); key.strip.to_sym}
|
283
284
|
end
|
284
285
|
|
@@ -289,7 +290,7 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
|
|
289
290
|
end
|
290
291
|
|
291
292
|
def filter_attributes(hash)
|
292
|
-
# Return only managed
|
293
|
+
# Return only managed attributes.
|
293
294
|
managed_keys = managed_attribute_keys(hash)
|
294
295
|
results = hash.select {
|
295
296
|
|k,v| should_include?(k, managed_keys)
|
@@ -141,7 +141,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
141
141
|
################################
|
142
142
|
# Get Password/Salt/Iterations #
|
143
143
|
################################
|
144
|
-
if attribute_hash[:shadowhashdata].empty?
|
144
|
+
if attribute_hash[:shadowhashdata].nil? or attribute_hash[:shadowhashdata].empty?
|
145
145
|
attribute_hash[:password] = '*'
|
146
146
|
else
|
147
147
|
embedded_binary_plist = get_embedded_binary_plist(attribute_hash[:shadowhashdata])
|
@@ -367,7 +367,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
367
367
|
# flushing the dscl cache to allow all dscl calls to get INTO the cache
|
368
368
|
# first. This could be made faster (and avoid a sleep call) by finding
|
369
369
|
# a way to enter calls into the dscl cache faster. A sleep time of 1
|
370
|
-
# second would
|
370
|
+
# second would intermittently require a second Puppet run to set
|
371
371
|
# properties, so 2 seconds seems to be the minimum working value.
|
372
372
|
sleep 2
|
373
373
|
flush_dscl_cache
|
@@ -553,6 +553,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
553
553
|
# password hash (and Salt/Iterations value if the OS is 10.8 or greater)
|
554
554
|
# into the ShadowHashData key of the user's plist.
|
555
555
|
def set_shadow_hash_data(users_plist, binary_plist)
|
556
|
+
binary_plist = Puppet::Util::Plist.string_to_blob(binary_plist)
|
556
557
|
if users_plist.has_key?('ShadowHashData')
|
557
558
|
users_plist['ShadowHashData'][0] = binary_plist
|
558
559
|
else
|
@@ -595,7 +596,7 @@ Puppet::Type.type(:user).provide :directoryservice do
|
|
595
596
|
shadow_hash_data['SALTED-SHA512-PBKDF2'] = Hash.new unless shadow_hash_data['SALTED-SHA512-PBKDF2']
|
596
597
|
case field
|
597
598
|
when 'salt', 'entropy'
|
598
|
-
shadow_hash_data['SALTED-SHA512-PBKDF2'][field] = base64_decode_string(value)
|
599
|
+
shadow_hash_data['SALTED-SHA512-PBKDF2'][field] = Puppet::Util::Plist.string_to_blob(base64_decode_string(value))
|
599
600
|
when 'iterations'
|
600
601
|
shadow_hash_data['SALTED-SHA512-PBKDF2'][field] = Integer(value)
|
601
602
|
else
|
@@ -3,7 +3,7 @@ Puppet::Type.type(:user).provide :hpuxuseradd, :parent => :useradd do
|
|
3
3
|
switch to HP-UX's special `usermod` binary to work around the fact that
|
4
4
|
its standard `usermod` cannot make changes while the user is logged in.
|
5
5
|
New functionality provides for changing trusted computing passwords and
|
6
|
-
resetting password expirations under trusted computing"
|
6
|
+
resetting password expirations under trusted computing."
|
7
7
|
|
8
8
|
defaultfor :operatingsystem => "hp-ux"
|
9
9
|
confine :operatingsystem => "hp-ux"
|
@@ -161,7 +161,7 @@ Puppet::Type.type(:user).provide :user_role_add, :parent => :useradd, :source =>
|
|
161
161
|
return @shadow_entry if defined? @shadow_entry
|
162
162
|
@shadow_entry = File.readlines(target_file_path).
|
163
163
|
reject { |r| r =~ /^[^\w]/ }.
|
164
|
-
# PUP-229
|
164
|
+
# PUP-229: don't suppress the empty fields
|
165
165
|
collect { |l| l.chomp.split(':', -1) }.
|
166
166
|
find { |user, _| user == @resource[:name] }
|
167
167
|
end
|
@@ -117,6 +117,9 @@ Puppet::Type.type(:user).provide :windows_adsi do
|
|
117
117
|
end
|
118
118
|
|
119
119
|
def password
|
120
|
+
# avoid a LogonUserW style password check when the resource is not yet
|
121
|
+
# populated with a password (as is the case with `puppet resource user`)
|
122
|
+
return nil if @resource[:password].nil?
|
120
123
|
user.password_is?( @resource[:password] ) ? @resource[:password] : nil
|
121
124
|
end
|
122
125
|
|
@@ -47,7 +47,7 @@ Puppet::Type.type(:zfs).provide(:zfs) do
|
|
47
47
|
[:aclmode, :shareiscsi].each do |field|
|
48
48
|
# The zfs commands use the property value '-' to indicate that the
|
49
49
|
# property is not set. We make use of this value to indicate that the
|
50
|
-
# property is not set since it is not
|
50
|
+
# property is not set since it is not available. Conversely, if these
|
51
51
|
# properties are attempted to be unset, and resulted in an error, our
|
52
52
|
# best bet is to catch the exception and continue.
|
53
53
|
define_method(field) do
|
@@ -36,7 +36,7 @@ Puppet::Util::Reference.newreference :type, :doc => "All Puppet resource types a
|
|
36
36
|
- *Providers* provide low-level functionality for a given resource type. This is
|
37
37
|
usually in the form of calling out to external commands.
|
38
38
|
|
39
|
-
When required binaries are specified for providers, fully
|
39
|
+
When required binaries are specified for providers, fully qualified paths
|
40
40
|
indicate that the binary must exist at that specific path and unqualified
|
41
41
|
binaries indicate that Puppet will search for the binary using the shell
|
42
42
|
path.
|
data/lib/puppet/resource.rb
CHANGED
@@ -14,6 +14,11 @@ class Puppet::Resource
|
|
14
14
|
attr_accessor :file, :line, :catalog, :exported, :virtual, :strict
|
15
15
|
attr_reader :type, :title
|
16
16
|
|
17
|
+
# @!attribute [rw] sensitive_parameters
|
18
|
+
# @api private
|
19
|
+
# @return [Array<Symbol>] A list of parameters to be treated as sensitive
|
20
|
+
attr_accessor :sensitive_parameters
|
21
|
+
|
17
22
|
# @deprecated
|
18
23
|
attr_accessor :validate_parameters
|
19
24
|
|
@@ -36,6 +41,10 @@ class Puppet::Resource
|
|
36
41
|
params.each { |param, value| resource[param] = value }
|
37
42
|
end
|
38
43
|
|
44
|
+
if sensitive_parameters = data['sensitive_parameters']
|
45
|
+
resource.sensitive_parameters = sensitive_parameters.map(&:to_sym)
|
46
|
+
end
|
47
|
+
|
39
48
|
if tags = data['tags']
|
40
49
|
tags.each { |tag| resource.tag(tag) }
|
41
50
|
end
|
@@ -74,6 +83,8 @@ class Puppet::Resource
|
|
74
83
|
|
75
84
|
data["parameters"] = params unless params.empty?
|
76
85
|
|
86
|
+
data["sensitive_parameters"] = sensitive_parameters unless sensitive_parameters.empty?
|
87
|
+
|
77
88
|
data
|
78
89
|
end
|
79
90
|
|
@@ -141,12 +152,14 @@ class Puppet::Resource
|
|
141
152
|
|
142
153
|
# Compatibility method.
|
143
154
|
def builtin?
|
155
|
+
# TODO: should be deprecated (was only used in one place in puppet codebase)
|
144
156
|
builtin_type?
|
145
157
|
end
|
146
158
|
|
147
159
|
# Is this a builtin resource type?
|
148
160
|
def builtin_type?
|
149
|
-
resource_type
|
161
|
+
# Note - old implementation only checked if the resource_type was a Class
|
162
|
+
resource_type.is_a?(Puppet::CompilableResourceType)
|
150
163
|
end
|
151
164
|
|
152
165
|
# Iterate over each param/value pair, as required for Enumerable.
|
@@ -197,6 +210,7 @@ class Puppet::Resource
|
|
197
210
|
# @api public
|
198
211
|
def initialize(type, title = nil, attributes = {})
|
199
212
|
@parameters = {}
|
213
|
+
@sensitive_parameters = []
|
200
214
|
if type.is_a?(Puppet::Resource)
|
201
215
|
# Copy constructor. Let's avoid munging, extracting, tagging, etc
|
202
216
|
src = type
|
@@ -224,6 +238,7 @@ class Puppet::Resource
|
|
224
238
|
|
225
239
|
self[p] = v
|
226
240
|
end
|
241
|
+
@sensitive_parameters.replace(type.sensitive_parameters)
|
227
242
|
else
|
228
243
|
if type.is_a?(Hash)
|
229
244
|
raise ArgumentError, "Puppet::Resource.new does not take a hash as the first argument. "+
|
@@ -231,12 +246,23 @@ class Puppet::Resource
|
|
231
246
|
end
|
232
247
|
|
233
248
|
environment = attributes[:environment]
|
234
|
-
|
235
|
-
|
236
|
-
|
249
|
+
# In order to avoid an expensive search of 'known_resource_types" and
|
250
|
+
# to obey/preserve the implementation of the resource's type - if the
|
251
|
+
# given type is a resource type implementation (one of):
|
252
|
+
# * a "classic" 3.x ruby plugin
|
253
|
+
# * a compatible implementation (e.g. loading from pcore metadata)
|
254
|
+
# * a resolved user defined type
|
255
|
+
#
|
256
|
+
# ...then, modify the parameters to the "old" (agent side compatible) way
|
257
|
+
# of describing the type/title with string/symbols.
|
258
|
+
#
|
259
|
+
# TODO: Further optimizations should be possible as the "type juggling" is
|
260
|
+
# not needed when the type implementation is known.
|
261
|
+
#
|
262
|
+
if type.is_a?(Puppet::CompilableResourceType) || type.is_a?(Puppet::Resource::Type)
|
263
|
+
# set the resource type implementation
|
237
264
|
self.resource_type = type
|
238
|
-
#
|
239
|
-
# been passed as a symbol.
|
265
|
+
# set the type name to the symbolic name
|
240
266
|
type = type.name
|
241
267
|
end
|
242
268
|
|
@@ -584,7 +610,7 @@ class Puppet::Resource
|
|
584
610
|
def parse_title
|
585
611
|
h = {}
|
586
612
|
type = resource_type
|
587
|
-
if type.respond_to?
|
613
|
+
if type.respond_to?(:title_patterns) && !type.title_patterns.nil?
|
588
614
|
type.title_patterns.each { |regexp, symbols_and_lambdas|
|
589
615
|
if captures = regexp.match(title.to_s)
|
590
616
|
symbols_and_lambdas.zip(captures[1..-1]).each do |symbol_and_lambda,capture|
|
@@ -12,7 +12,11 @@ require 'json'
|
|
12
12
|
# @api private
|
13
13
|
module Puppet::Resource::CapabilityFinder
|
14
14
|
|
15
|
-
# Looks
|
15
|
+
# Looks up a capability resource from PuppetDB. Capability resources are
|
16
|
+
# required to be unique per environment and code id. If multiple copies of a
|
17
|
+
# capability resource are found, the one matching the current code id is
|
18
|
+
# used.
|
19
|
+
#
|
16
20
|
# @param environment [String] environment name
|
17
21
|
# @param code_id [String,nil] code_id of the catalog
|
18
22
|
# @param cap [Puppet::Type] the capability resource type instance
|
@@ -22,6 +26,29 @@ module Puppet::Resource::CapabilityFinder
|
|
22
26
|
raise Puppet::DevError, 'PuppetDB is not available'
|
23
27
|
end
|
24
28
|
|
29
|
+
resources = search(environment, nil, cap)
|
30
|
+
|
31
|
+
if resources.size > 1 && code_id
|
32
|
+
Puppet.debug "Found multiple resources when looking up capability #{cap}, filtering by code id #{code_id}"
|
33
|
+
resources = search(environment, code_id, cap)
|
34
|
+
end
|
35
|
+
|
36
|
+
if resources.size > 1
|
37
|
+
raise Puppet::DevError,
|
38
|
+
"Unexpected response from PuppetDB when looking up #{cap}:\n" \
|
39
|
+
"expected exactly one resource but got #{resources.size};\n" \
|
40
|
+
"returned data is:\n#{resources.inspect}"
|
41
|
+
end
|
42
|
+
|
43
|
+
if resource_hash = resources.first
|
44
|
+
instantiate_resource(resource_hash)
|
45
|
+
else
|
46
|
+
Puppet.debug "Could not find capability resource #{cap} in PuppetDB"
|
47
|
+
nil
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.search(environment, code_id, cap)
|
25
52
|
query_terms = [
|
26
53
|
'and',
|
27
54
|
['=', 'type', cap.type.capitalize],
|
@@ -36,67 +63,60 @@ module Puppet::Resource::CapabilityFinder
|
|
36
63
|
['=', 'code_id', code_id]]]]
|
37
64
|
end
|
38
65
|
|
39
|
-
Puppet.notice "
|
66
|
+
Puppet.notice "Looking up capability #{cap} in PuppetDB: #{query_terms}"
|
40
67
|
|
41
|
-
|
42
|
-
|
43
|
-
# The format of the response body is documented at
|
44
|
-
# http://docs.puppetlabs.com/puppetdb/3.0/api/query/v4/resources.html#response-format
|
45
|
-
# In a nutshell, we expect to get an array of resources back. If the
|
46
|
-
# array is empty, the lookup failed and we return +nil+, if it
|
47
|
-
# contains exactly one, we turn that resource back into a Puppet
|
48
|
-
# ::Resource. If the array contains more than one entry, we have a
|
49
|
-
# bug in the overall system, as we allowed multiple capabilities with
|
50
|
-
# the same type and title to be produced in this environment.
|
51
|
-
unless data.is_a?(Array)
|
52
|
-
raise Puppet::DevError,
|
53
|
-
"Unexpected response from PuppetDB when looking up #{cap}: " +
|
54
|
-
"expected an Array but got #{data.inspect}"
|
55
|
-
end
|
56
|
-
if data.size > 1
|
57
|
-
raise Puppet::DevError,
|
58
|
-
"Unexpected response from PuppetDB when looking up #{cap}:\n" +
|
59
|
-
"expected exactly one resource but got #{data.size};\n" +
|
60
|
-
"returned data is:\n#{data.inspect}"
|
61
|
-
end
|
68
|
+
query_puppetdb(query_terms)
|
69
|
+
end
|
62
70
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
next if param == 'name'
|
75
|
-
if value = resource_hash['parameters'][param]
|
76
|
-
resource[param] = value
|
77
|
-
else
|
78
|
-
Puppet.debug "No capability value for #{resource}->#{param}"
|
71
|
+
def self.query_puppetdb(query)
|
72
|
+
begin
|
73
|
+
# If using PuppetDB >= 4, use the API method query_puppetdb()
|
74
|
+
result = if Puppet::Util::Puppetdb.respond_to?(:query_puppetdb)
|
75
|
+
# PuppetDB 4 uses a unified query endpoint, so we have to specify what we're querying
|
76
|
+
Puppet::Util::Puppetdb.query_puppetdb(["from", "resources", query])
|
77
|
+
# For PuppetDB < 4, use the old internal method action()
|
78
|
+
else
|
79
|
+
url = "/pdb/query/v4/resource?query=#{CGI.escape(query.to_json)}"
|
80
|
+
response = Puppet::Util::Puppetdb::Http.action(url) do |conn, uri|
|
81
|
+
conn.get(uri, { 'Accept' => 'application/json'})
|
79
82
|
end
|
83
|
+
JSON.parse(response.body)
|
84
|
+
end
|
85
|
+
|
86
|
+
# The format of the response body is documented at
|
87
|
+
# http://docs.puppetlabs.com/puppetdb/3.0/api/query/v4/resources.html#response-format
|
88
|
+
unless result.is_a?(Array)
|
89
|
+
raise Puppet::DevError,
|
90
|
+
"Unexpected response from PuppetDB when looking up #{cap}: " \
|
91
|
+
"expected an Array but got #{result.inspect}"
|
80
92
|
end
|
81
|
-
|
93
|
+
|
94
|
+
result
|
95
|
+
rescue JSON::JSONError => e
|
96
|
+
raise Puppet::DevError,
|
97
|
+
"Invalid JSON from PuppetDB when looking up #{cap}\n#{e}"
|
82
98
|
end
|
83
99
|
end
|
84
100
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
101
|
+
private
|
102
|
+
|
103
|
+
def self.instantiate_resource(resource_hash)
|
104
|
+
resource = Puppet::Resource.new(resource_hash['type'],
|
105
|
+
resource_hash['title'])
|
106
|
+
real_type = Puppet::Type.type(resource.type)
|
107
|
+
if real_type.nil?
|
108
|
+
fail Puppet::ParseError,
|
109
|
+
"Could not find resource type #{resource.type} returned from PuppetDB"
|
110
|
+
end
|
111
|
+
real_type.parameters.each do |param|
|
112
|
+
param = param.to_s
|
113
|
+
next if param == 'name'
|
114
|
+
if value = resource_hash['parameters'][param]
|
115
|
+
resource[param] = value
|
116
|
+
else
|
117
|
+
Puppet.debug "No capability value for #{resource}->#{param}"
|
95
118
|
end
|
96
|
-
JSON.parse(response.body)
|
97
119
|
end
|
98
|
-
|
99
|
-
raise Puppet::DevError,
|
100
|
-
"Invalid JSON from PuppetDB when looking up #{cap}\n#{e}"
|
120
|
+
return resource
|
101
121
|
end
|
102
122
|
end
|
@@ -30,7 +30,7 @@ module Puppet
|
|
30
30
|
attr_accessor :evaluation_time
|
31
31
|
|
32
32
|
# Boolean status types set while evaluating `@real_resource`.
|
33
|
-
STATES = [:skipped, :failed, :failed_to_restart, :restarted, :changed, :out_of_sync, :scheduled]
|
33
|
+
STATES = [:skipped, :failed, :failed_to_restart, :restarted, :changed, :out_of_sync, :scheduled, :corrective_change]
|
34
34
|
attr_accessor *STATES
|
35
35
|
|
36
36
|
# @!attribute [r] source_description
|
@@ -83,6 +83,10 @@ module Puppet
|
|
83
83
|
# while evaluating `@real_resource`.
|
84
84
|
attr_reader :events
|
85
85
|
|
86
|
+
# @!attribute [r] corrective_change
|
87
|
+
# @return [Boolean] true if the resource contained a corrective change.
|
88
|
+
attr_reader :corrective_change
|
89
|
+
|
86
90
|
# @!attribute [rw] failed_dependencies
|
87
91
|
# @return [Array<Puppet::Resource>] A cache of all
|
88
92
|
# dependencies of this resource that failed to apply.
|
@@ -130,6 +134,9 @@ module Puppet
|
|
130
134
|
@out_of_sync_count += 1
|
131
135
|
@out_of_sync = true
|
132
136
|
end
|
137
|
+
if event.corrective_change
|
138
|
+
@corrective_change = true
|
139
|
+
end
|
133
140
|
end
|
134
141
|
|
135
142
|
def failed_because(detail)
|
@@ -153,6 +160,7 @@ module Puppet
|
|
153
160
|
@out_of_sync = false
|
154
161
|
@skipped = false
|
155
162
|
@failed = false
|
163
|
+
@corrective_change = false
|
156
164
|
|
157
165
|
@file = resource.file
|
158
166
|
@line = resource.line
|
@@ -181,7 +189,7 @@ module Puppet
|
|
181
189
|
@changed = data['changed']
|
182
190
|
@skipped = data['skipped']
|
183
191
|
@failed = data['failed']
|
184
|
-
|
192
|
+
@corrective_change = data['corrective_change']
|
185
193
|
@events = data['events'].map do |event|
|
186
194
|
# in YAML (for reports) we serialize this as an object, but
|
187
195
|
# in PSON it becomes a hash. Depending on where we came from
|
@@ -212,6 +220,7 @@ module Puppet
|
|
212
220
|
'change_count' => @change_count,
|
213
221
|
'out_of_sync_count' => @out_of_sync_count,
|
214
222
|
'events' => @events,
|
223
|
+
'corrective_change' => @corrective_change,
|
215
224
|
}
|
216
225
|
end
|
217
226
|
|
data/lib/puppet/settings.rb
CHANGED
@@ -29,6 +29,7 @@ class Puppet::Settings
|
|
29
29
|
require 'puppet/settings/config_file'
|
30
30
|
require 'puppet/settings/value_translator'
|
31
31
|
require 'puppet/settings/environment_conf'
|
32
|
+
require 'puppet/settings/server_list_setting'
|
32
33
|
|
33
34
|
# local reference for convenience
|
34
35
|
PuppetOptionParser = Puppet::Util::CommandLine::PuppetOptionParser
|
@@ -667,6 +668,7 @@ class Puppet::Settings
|
|
667
668
|
:symbolic_enum => SymbolicEnumSetting,
|
668
669
|
:priority => PrioritySetting,
|
669
670
|
:autosign => AutosignSetting,
|
671
|
+
:server_list => ServerListSetting
|
670
672
|
}
|
671
673
|
|
672
674
|
# Create a new setting. The value is passed in because it's used to determine
|
@@ -876,7 +878,7 @@ class Puppet::Settings
|
|
876
878
|
# also supports additional options such as "mode", "owner", "group"
|
877
879
|
# :directory - A (single) directory path; puppet may attempt to create this file depending on how the settings are used. This type
|
878
880
|
# also supports additional options such as "mode", "owner", "group"
|
879
|
-
# :path - This is intended to be used for settings whose value can contain multiple directory paths,
|
881
|
+
# :path - This is intended to be used for settings whose value can contain multiple directory paths, represented
|
880
882
|
# as strings separated by the system path separator (e.g. system path, module path, etc.).
|
881
883
|
# [:mode] => an (optional) octal value to be used as the permissions/mode for :file and :directory settings
|
882
884
|
# [:owner] => optional owner username/uid for :file and :directory settings
|
@@ -1360,12 +1362,21 @@ Generated on #{Time.now}.
|
|
1360
1362
|
"Attempt to assign a value to unknown setting #{name.inspect}"
|
1361
1363
|
end
|
1362
1364
|
|
1363
|
-
|
1364
|
-
|
1365
|
-
|
1366
|
-
|
1365
|
+
# This little exception-handling dance ensures that a hook is
|
1366
|
+
# able to check whether a value for itself has been explicitly
|
1367
|
+
# set, while still preserving the existing value if the hook
|
1368
|
+
# throws (as was existing behavior)
|
1369
|
+
old_value = @values[name]
|
1367
1370
|
@values[name] = value
|
1368
|
-
|
1371
|
+
begin
|
1372
|
+
if default.has_hook?
|
1373
|
+
default.handle(value)
|
1374
|
+
end
|
1375
|
+
rescue Exception => e
|
1376
|
+
@values[name] = old_value
|
1377
|
+
raise e
|
1378
|
+
end
|
1379
|
+
end
|
1369
1380
|
|
1370
1381
|
def inspect
|
1371
1382
|
%Q{<#{self.class}:#{self.object_id} @name="#{@name}" @values="#{@values}">}
|