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
@@ -5,6 +5,61 @@ module Puppet::Pops
|
|
5
5
|
module Loader
|
6
6
|
class StaticLoader < Loader
|
7
7
|
|
8
|
+
BUILTIN_TYPE_NAMES = %w{
|
9
|
+
Auegas
|
10
|
+
Component
|
11
|
+
Computer
|
12
|
+
Cron
|
13
|
+
Exec
|
14
|
+
File
|
15
|
+
Filebucket
|
16
|
+
Group
|
17
|
+
Host
|
18
|
+
Interface
|
19
|
+
K5login
|
20
|
+
Macauthorization
|
21
|
+
Mailalias
|
22
|
+
Maillist
|
23
|
+
Mcx
|
24
|
+
Mount
|
25
|
+
Nagios_command
|
26
|
+
Nagios_contact
|
27
|
+
Nagios_contactgroup
|
28
|
+
Nagios_host
|
29
|
+
Nagios_hostdependency
|
30
|
+
Nagios_hostescalation
|
31
|
+
Nagios_hostgroup
|
32
|
+
Nagios_hostextinfo
|
33
|
+
Nagios_service
|
34
|
+
Nagios_servicedependency
|
35
|
+
Nagios_serviceescalation
|
36
|
+
Nagios_serviceextinfo
|
37
|
+
Nagios_servicegroup
|
38
|
+
Nagios_timeperiod
|
39
|
+
Notify
|
40
|
+
Package
|
41
|
+
Resources
|
42
|
+
Router
|
43
|
+
Schedule
|
44
|
+
Scheduled_task
|
45
|
+
Selboolean
|
46
|
+
Selmodule
|
47
|
+
Service
|
48
|
+
Ssh_authorized_key
|
49
|
+
Sshkey
|
50
|
+
Stage
|
51
|
+
Tidy
|
52
|
+
User
|
53
|
+
Vlan
|
54
|
+
Whit
|
55
|
+
Yumrepo
|
56
|
+
Zfs
|
57
|
+
Zone
|
58
|
+
Zpool
|
59
|
+
}.freeze
|
60
|
+
|
61
|
+
BUILTIN_TYPE_NAMES_LC = Set.new(BUILTIN_TYPE_NAMES.map { |n| n.downcase }).freeze
|
62
|
+
|
8
63
|
attr_reader :loaded
|
9
64
|
def initialize
|
10
65
|
@loaded = {}
|
@@ -41,13 +41,13 @@ class TypeDefinitionInstantiator
|
|
41
41
|
# loader to use when resolving contained aliases API. Such logic have a hard time finding the closure (where
|
42
42
|
# the loader is known - hence this mechanism
|
43
43
|
private_loader = loader.private_loader
|
44
|
-
Adapters::LoaderAdapter.adapt(type_definition).
|
45
|
-
|
44
|
+
Adapters::LoaderAdapter.adapt(type_definition).loader_name = private_loader.loader_name
|
45
|
+
create_runtime_type(type_definition)
|
46
46
|
end
|
47
47
|
|
48
48
|
def self.create_from_model(type_definition, loader)
|
49
|
-
typed_name =
|
50
|
-
type =
|
49
|
+
typed_name = TypedName.new(:type, type_definition.name.downcase)
|
50
|
+
type = create_runtime_type(type_definition)
|
51
51
|
loader.set_entry(
|
52
52
|
typed_name,
|
53
53
|
type,
|
@@ -55,23 +55,39 @@ class TypeDefinitionInstantiator
|
|
55
55
|
type
|
56
56
|
end
|
57
57
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
58
|
+
# @api private
|
59
|
+
def self.create_runtime_type(type_definition)
|
60
|
+
# Using the RUNTIME_NAME_AUTHORITY as the name_authority is motivated by the fact that the type
|
61
|
+
# alias name (managed by the runtime) becomes the name of the created type
|
62
|
+
#
|
63
|
+
create_type(type_definition.name, type_definition.type_expr, Pcore::RUNTIME_NAME_AUTHORITY)
|
64
|
+
end
|
65
|
+
|
66
|
+
# @api private
|
67
|
+
def self.create_type(name, type_expr, name_authority)
|
68
|
+
create_named_type(name, named_definition(type_expr), type_expr, name_authority)
|
69
|
+
end
|
70
|
+
|
71
|
+
# @api private
|
72
|
+
def self.create_named_type(name, type_name, type_expr, name_authority)
|
73
|
+
case type_name
|
74
|
+
when 'Object'
|
75
|
+
# No need for an alias. The Object type itself will receive the name instead
|
76
|
+
type_expr = type_expr.keys.empty? ? nil : type_expr.keys[0] unless type_expr.is_a?(Hash)
|
77
|
+
Types::PObjectType.new(name, type_expr)
|
78
|
+
when 'TypeSet'
|
62
79
|
# No need for an alias. The Object type itself will receive the name instead
|
63
|
-
|
64
|
-
Types::
|
80
|
+
type_expr = type_expr.keys.empty? ? nil : type_expr.keys[0] unless type_expr.is_a?(Hash)
|
81
|
+
Types::PTypeSetType.new(name, type_expr, name_authority)
|
65
82
|
else
|
66
83
|
Types::PTypeAliasType.new(name, type_expr)
|
67
84
|
end
|
68
85
|
end
|
69
|
-
private_class_method :create_type
|
70
86
|
|
71
|
-
|
72
|
-
|
87
|
+
# @api private
|
88
|
+
def self.named_definition(te)
|
89
|
+
te.is_a?(Model::AccessExpression) && (left = te.left_expr).is_a?(Model::QualifiedReference) ? left.cased_value : nil
|
73
90
|
end
|
74
|
-
private_class_method :object_definition?
|
75
91
|
end
|
76
92
|
end
|
77
93
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Puppet::Pops
|
2
|
+
module Loader
|
3
|
+
# A namespace/name/type combination that can be used as a compound hash key
|
4
|
+
#
|
5
|
+
# @api public
|
6
|
+
class TypedName
|
7
|
+
DOUBLE_COLON = '::'.freeze
|
8
|
+
|
9
|
+
attr_reader :hash
|
10
|
+
attr_reader :type
|
11
|
+
attr_reader :name_authority
|
12
|
+
attr_reader :name
|
13
|
+
attr_reader :name_parts
|
14
|
+
attr_reader :compound_name
|
15
|
+
|
16
|
+
def initialize(type, name, name_authority = Pcore::RUNTIME_NAME_AUTHORITY)
|
17
|
+
@type = type
|
18
|
+
@name_authority = name_authority
|
19
|
+
# relativize the name (get rid of leading ::), and make the split string available
|
20
|
+
parts = name.to_s.split(DOUBLE_COLON)
|
21
|
+
if parts[0].empty?
|
22
|
+
parts.shift
|
23
|
+
@name = name[2..-1]
|
24
|
+
else
|
25
|
+
@name = name
|
26
|
+
end
|
27
|
+
@name_parts = parts.freeze
|
28
|
+
|
29
|
+
# Use a frozen compound key for the hash and comparison. Most varying part first
|
30
|
+
@compound_name = "#{@name}/#{@type}/#{@name_authority}".freeze
|
31
|
+
@hash = @compound_name.hash
|
32
|
+
freeze
|
33
|
+
end
|
34
|
+
|
35
|
+
def ==(o)
|
36
|
+
o.class == self.class && o.compound_name == @compound_name
|
37
|
+
end
|
38
|
+
|
39
|
+
alias eql? ==
|
40
|
+
|
41
|
+
def qualified?
|
42
|
+
@name_parts.size > 1
|
43
|
+
end
|
44
|
+
|
45
|
+
def to_s
|
46
|
+
"#{@name_authority}/#{@type}/#{@name}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/puppet/pops/loaders.rb
CHANGED
@@ -1,4 +1,13 @@
|
|
1
1
|
module Puppet::Pops
|
2
|
+
# This is the container for all Loader instances. Each Loader instance has a `loader_name` by which it can be uniquely
|
3
|
+
# identified within this container.
|
4
|
+
# A Loader can be private or public. In general, code will have access to the private loader associated with the
|
5
|
+
# location of the code. It will be parented by a loader that in turn have access to other public loaders that
|
6
|
+
# can load only such entries that have been publicly available. The split between public and private is not
|
7
|
+
# yet enforced in Puppet.
|
8
|
+
#
|
9
|
+
# The name of a private loader should always end with ' private'
|
10
|
+
#
|
2
11
|
class Loaders
|
3
12
|
class LoaderError < Puppet::Error; end
|
4
13
|
|
@@ -8,7 +17,22 @@ class Loaders
|
|
8
17
|
attr_reader :private_environment_loader
|
9
18
|
attr_reader :implementation_registry
|
10
19
|
|
20
|
+
def self.new(environment)
|
21
|
+
obj = environment.loaders
|
22
|
+
if obj.nil?
|
23
|
+
obj = self.allocate
|
24
|
+
obj.send(:initialize, environment)
|
25
|
+
end
|
26
|
+
obj
|
27
|
+
end
|
28
|
+
|
11
29
|
def initialize(environment)
|
30
|
+
# Protect against environment havoc
|
31
|
+
raise ArgumentError.new("Attempt to redefine already initialized loaders for environment") unless environment.loaders.nil?
|
32
|
+
environment.loaders = self
|
33
|
+
@loaders_by_name = {}
|
34
|
+
|
35
|
+
add_loader_by_name(self.class.static_loader)
|
12
36
|
|
13
37
|
# Create the set of loaders
|
14
38
|
# 1. Puppet, loads from the "running" puppet - i.e. bundled functions, types, extension points and extensions
|
@@ -60,17 +84,17 @@ class Loaders
|
|
60
84
|
loaders.nil? ? nil : loaders.implementation_registry
|
61
85
|
end
|
62
86
|
|
63
|
-
def register_implementations(
|
87
|
+
def register_implementations(obj_classes, name_authority)
|
64
88
|
loader = @private_environment_loader
|
65
89
|
types = obj_classes.map do |obj_class|
|
66
90
|
type = obj_class._ptype
|
67
|
-
typed_name = Loader::
|
91
|
+
typed_name = Loader::TypedName.new(:type, type.name.downcase, name_authority)
|
68
92
|
entry = loader.loaded_entry(typed_name)
|
69
93
|
loader.set_entry(typed_name, type, obj_class._plocation) if entry.nil? || entry.value.nil?
|
70
94
|
type
|
71
95
|
end
|
72
|
-
# Resolve lazy so that all types can cross reference
|
73
|
-
parser = Types::TypeParser.
|
96
|
+
# Resolve lazy so that all types can cross reference each other
|
97
|
+
parser = Types::TypeParser.singleton
|
74
98
|
types.each { |type| type.resolve(parser, loader) }
|
75
99
|
end
|
76
100
|
|
@@ -85,7 +109,7 @@ class Loaders
|
|
85
109
|
unless loaders.nil?
|
86
110
|
name = name.to_s
|
87
111
|
caps_name = Types::TypeFormatter.singleton.capitalize_segments(name)
|
88
|
-
typed_name = Loader::
|
112
|
+
typed_name = Loader::TypedName.new(:type, name.downcase)
|
89
113
|
loaders.runtime3_type_loader.set_entry(typed_name, Types::PResourceType.new(caps_name), origin)
|
90
114
|
end
|
91
115
|
nil
|
@@ -102,6 +126,21 @@ class Loaders
|
|
102
126
|
loaders
|
103
127
|
end
|
104
128
|
|
129
|
+
# Lookup a loader by its unique name.
|
130
|
+
#
|
131
|
+
# @param [String] loader_name the name of the loader to lookup
|
132
|
+
# @return [Loader] the found loader
|
133
|
+
# @raise [Puppet::ParserError] if no loader is found
|
134
|
+
def [](loader_name)
|
135
|
+
loader = @loaders_by_name[loader_name]
|
136
|
+
if loader.nil?
|
137
|
+
# Unable to find the module private loader. Try resolving the module
|
138
|
+
loader = private_loader_for_module(loader_name[0..-9]) if loader_name.end_with?(' private')
|
139
|
+
raise Puppet::ParseError, "Unable to find loader named '#{loader_name}'" if loader.nil?
|
140
|
+
end
|
141
|
+
loader
|
142
|
+
end
|
143
|
+
|
105
144
|
# Finds the appropriate loader for the given `module_name`, or for the environment in case `module_name`
|
106
145
|
# is `nil` or empty.
|
107
146
|
#
|
@@ -160,6 +199,12 @@ class Loaders
|
|
160
199
|
md.private_loader
|
161
200
|
end
|
162
201
|
|
202
|
+
def add_loader_by_name(loader)
|
203
|
+
name = loader.loader_name
|
204
|
+
raise Puppet::ParseError, "Internal Error: Attempt to redefine loader named '#{name}'" if @loaders_by_name.include?(name)
|
205
|
+
@loaders_by_name[name] = loader
|
206
|
+
end
|
207
|
+
|
163
208
|
private
|
164
209
|
|
165
210
|
def create_puppet_system_loader()
|
@@ -183,19 +228,20 @@ class Loaders
|
|
183
228
|
# Puppet binder currently reads confdir/bindings - that is bad, it should be using the new environment support.
|
184
229
|
|
185
230
|
# The environment is not a namespace, so give it a nil "module_name"
|
186
|
-
module_name = nil
|
187
231
|
loader_name = "environment:#{environment.name}"
|
232
|
+
# env_conf is setup from the environment_dir value passed into Puppet::Environments::Directories.new
|
188
233
|
env_conf = Puppet.lookup(:environments).get_conf(environment.name)
|
234
|
+
env_path = env_conf.nil? || !env_conf.is_a?(Puppet::Settings::EnvironmentConf) ? nil : env_conf.path_to_env
|
189
235
|
|
190
236
|
# Create the 3.x resource type loader
|
191
|
-
@runtime3_type_loader = Loader::Runtime3TypeLoader.new(puppet_system_loader, environment)
|
237
|
+
@runtime3_type_loader = add_loader_by_name(Loader::Runtime3TypeLoader.new(puppet_system_loader, self, environment, env_conf.nil? ? nil : env_path))
|
192
238
|
|
193
|
-
if
|
239
|
+
if env_path.nil?
|
194
240
|
# Not a real directory environment, cannot work as a module TODO: Drop when legacy env are dropped?
|
195
|
-
loader = Loader::SimpleEnvironmentLoader.new(@runtime3_type_loader, loader_name)
|
241
|
+
loader = add_loader_by_name(Loader::SimpleEnvironmentLoader.new(@runtime3_type_loader, loader_name))
|
196
242
|
else
|
197
243
|
# View the environment as a module to allow loading from it - this module is always called 'environment'
|
198
|
-
loader = Loader::ModuleLoaders.module_loader_from(@runtime3_type_loader, self, 'environment',
|
244
|
+
loader = Loader::ModuleLoaders.module_loader_from(@runtime3_type_loader, self, 'environment', env_path)
|
199
245
|
end
|
200
246
|
|
201
247
|
# An environment has a module path even if it has a null loader
|
@@ -206,7 +252,7 @@ class Loaders
|
|
206
252
|
# Code in the environment gets to see all modules (since there is no metadata for the environment)
|
207
253
|
# but since this is not given to the module loaders, they can not load global code (since they can not
|
208
254
|
# have prior knowledge about this
|
209
|
-
loader = Loader::DependencyLoader.new(loader,
|
255
|
+
loader = add_loader_by_name(Loader::DependencyLoader.new(loader, 'environment private', @module_resolver.all_module_loaders()))
|
210
256
|
|
211
257
|
# The module loader gets the private loader via a lazy operation to look up the module's private loader.
|
212
258
|
# This does not work for an environment since it is not resolved the same way.
|
@@ -217,7 +263,7 @@ class Loaders
|
|
217
263
|
end
|
218
264
|
|
219
265
|
def configure_loaders_for_modules(parent_loader, environment)
|
220
|
-
@module_resolver = mr = ModuleResolver.new()
|
266
|
+
@module_resolver = mr = ModuleResolver.new(self)
|
221
267
|
environment.modules.each do |puppet_module|
|
222
268
|
# Create data about this module
|
223
269
|
md = LoaderModuleData.new(puppet_module)
|
@@ -239,7 +285,6 @@ class Loaders
|
|
239
285
|
#
|
240
286
|
class LoaderModuleData
|
241
287
|
|
242
|
-
attr_accessor :state
|
243
288
|
attr_accessor :public_loader
|
244
289
|
attr_accessor :private_loader
|
245
290
|
attr_accessor :resolutions
|
@@ -250,7 +295,6 @@ class Loaders
|
|
250
295
|
# @param puppet_module [Puppet::Module] the module instance for the module being represented
|
251
296
|
#
|
252
297
|
def initialize(puppet_module)
|
253
|
-
@state = :initial
|
254
298
|
@puppet_module = puppet_module
|
255
299
|
@resolutions = []
|
256
300
|
@public_loader = nil
|
@@ -270,7 +314,7 @@ class Loaders
|
|
270
314
|
end
|
271
315
|
|
272
316
|
def resolved?
|
273
|
-
|
317
|
+
!@private_loader.nil?
|
274
318
|
end
|
275
319
|
|
276
320
|
def restrict_to_dependencies?
|
@@ -290,7 +334,8 @@ class Loaders
|
|
290
334
|
#
|
291
335
|
class ModuleResolver
|
292
336
|
|
293
|
-
def initialize()
|
337
|
+
def initialize(loaders)
|
338
|
+
@loaders = loaders
|
294
339
|
@index = {}
|
295
340
|
@all_module_loaders = nil
|
296
341
|
end
|
@@ -309,7 +354,7 @@ class Loaders
|
|
309
354
|
|
310
355
|
def resolve(module_data)
|
311
356
|
if module_data.resolved?
|
312
|
-
|
357
|
+
nil
|
313
358
|
else
|
314
359
|
module_data.private_loader =
|
315
360
|
if module_data.restrict_to_dependencies?
|
@@ -325,7 +370,7 @@ class Loaders
|
|
325
370
|
def create_loader_with_all_modules_visible(from_module_data)
|
326
371
|
Puppet.debug{"ModuleLoader: module '#{from_module_data.name}' has unknown dependencies - it will have all other modules visible"}
|
327
372
|
|
328
|
-
Loader::DependencyLoader.new(from_module_data.public_loader, from_module_data.name, all_module_loaders())
|
373
|
+
@loaders.add_loader_by_name(Loader::DependencyLoader.new(from_module_data.public_loader, "#{from_module_data.name} private", all_module_loaders()))
|
329
374
|
end
|
330
375
|
|
331
376
|
def create_loader_with_only_dependencies_visible(from_module_data)
|
@@ -345,7 +390,7 @@ class Loaders
|
|
345
390
|
end
|
346
391
|
end
|
347
392
|
dependency_loaders = from_module_data.dependency_names.collect { |name| @index[name].public_loader }
|
348
|
-
Loader::DependencyLoader.new(from_module_data.public_loader, from_module_data.name, dependency_loaders)
|
393
|
+
@loaders.add_loader_by_name(Loader::DependencyLoader.new(from_module_data.public_loader, "#{from_module_data.name} private", dependency_loaders))
|
349
394
|
end
|
350
395
|
end
|
351
396
|
end
|
@@ -8,7 +8,7 @@ module Puppet::Pops
|
|
8
8
|
|
9
9
|
# The type used for validation of the _merge_ argument
|
10
10
|
def self.merge_t
|
11
|
-
@@merge_t ||= Types::TypeParser.
|
11
|
+
@@merge_t ||= Types::TypeParser.singleton.parse("Variant[String[1],Runtime[ruby,'Symbol'],Hash[Variant[String[1],Runtime[ruby,'Symbol']],Scalar,1]]")
|
12
12
|
end
|
13
13
|
private_class_method :merge_t
|
14
14
|
|
@@ -123,7 +123,7 @@ module Puppet::Pops
|
|
123
123
|
result
|
124
124
|
end
|
125
125
|
|
126
|
-
# Converts a single value to the type
|
126
|
+
# Converts a single value to the type expected when merging two elements
|
127
127
|
# @param value [Object] the value to convert
|
128
128
|
# @return [Object] the converted value
|
129
129
|
def convert_value(value)
|
@@ -149,7 +149,7 @@ module Puppet::Pops
|
|
149
149
|
# @return [Types::PStructType] the puppet type
|
150
150
|
#
|
151
151
|
def options_t
|
152
|
-
@options_t ||=Types::TypeParser.
|
152
|
+
@options_t ||=Types::TypeParser.singleton.parse("Struct[{strategy=>Optional[Pattern[#{self.class.key}]]}]")
|
153
153
|
end
|
154
154
|
|
155
155
|
# Returns the type used to validate the options hash
|
@@ -217,7 +217,7 @@ module Puppet::Pops
|
|
217
217
|
protected
|
218
218
|
|
219
219
|
def value_t
|
220
|
-
@value_t ||= Types::TypeParser.
|
220
|
+
@value_t ||= Types::TypeParser.singleton.parse('Hash[String,Data]')
|
221
221
|
end
|
222
222
|
|
223
223
|
MergeStrategy.add_strategy(self)
|
@@ -249,7 +249,7 @@ module Puppet::Pops
|
|
249
249
|
protected
|
250
250
|
|
251
251
|
def value_t
|
252
|
-
@value_t ||= Types::TypeParser.
|
252
|
+
@value_t ||= Types::TypeParser.singleton.parse('Variant[Scalar,Array[Data]]')
|
253
253
|
end
|
254
254
|
|
255
255
|
MergeStrategy.add_strategy(self)
|
@@ -320,7 +320,7 @@ module Puppet::Pops
|
|
320
320
|
#
|
321
321
|
# @return [Types::PAnyType] the puppet type used when validating the options hash
|
322
322
|
def options_t
|
323
|
-
@options_t ||= Types::TypeParser.
|
323
|
+
@options_t ||= Types::TypeParser.singleton.parse('Struct[{'\
|
324
324
|
"strategy=>Optional[Pattern[#{self.class.key}]],"\
|
325
325
|
'knockout_prefix=>Optional[String],'\
|
326
326
|
'merge_debug=>Optional[Boolean],'\
|
@@ -330,7 +330,7 @@ module Puppet::Pops
|
|
330
330
|
end
|
331
331
|
|
332
332
|
def value_t
|
333
|
-
@value_t ||= Types::TypeParser.
|
333
|
+
@value_t ||= Types::TypeParser.singleton.parse('Variant[Array[Data],Hash[String,Data]]')
|
334
334
|
end
|
335
335
|
|
336
336
|
MergeStrategy.add_strategy(self)
|
@@ -6,6 +6,10 @@ class Puppet::Pops::Migration::MigrationChecker
|
|
6
6
|
def initialize()
|
7
7
|
end
|
8
8
|
|
9
|
+
def self.singleton
|
10
|
+
@null_checker ||= self.new
|
11
|
+
end
|
12
|
+
|
9
13
|
# Produces a hash of available migrations; a map from a symbolic name in string form to a brief description.
|
10
14
|
# This version has no such supported migrations.
|
11
15
|
def available_migrations()
|