puppet 4.5.3-universal-darwin → 4.6.1-universal-darwin
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 +89 -34
- 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
@@ -19,10 +19,18 @@
|
|
19
19
|
#
|
20
20
|
# @api public
|
21
21
|
#
|
22
|
-
|
22
|
+
module Puppet::Pops
|
23
|
+
module Loader
|
24
|
+
class Loader
|
25
|
+
attr_reader :loader_name
|
23
26
|
|
24
27
|
# Describes the kinds of things that loaders can load
|
25
|
-
LOADABLE_KINDS = [:func_4x, :func_4xpp, :type_pp].freeze
|
28
|
+
LOADABLE_KINDS = [:func_4x, :func_4xpp, :type_pp, :resource_type_pp].freeze
|
29
|
+
|
30
|
+
# @param [String] name the name of the loader. Must be unique among all loaders maintained by a {Loader} instance
|
31
|
+
def initialize(loader_name)
|
32
|
+
@loader_name = loader_name.freeze
|
33
|
+
end
|
26
34
|
|
27
35
|
# Produces the value associated with the given name if already loaded, or available for loading
|
28
36
|
# by this loader, one of its parents, or other loaders visible to this loader.
|
@@ -52,7 +60,7 @@ class Puppet::Pops::Loader::Loader
|
|
52
60
|
# @api public
|
53
61
|
#
|
54
62
|
def load_typed(typed_name)
|
55
|
-
raise NotImplementedError.
|
63
|
+
raise NotImplementedError, "Class #{self.class.name} must implement method #load_typed"
|
56
64
|
end
|
57
65
|
|
58
66
|
# Returns an already loaded entry if one exists, or nil. This does not trigger loading
|
@@ -64,7 +72,7 @@ class Puppet::Pops::Loader::Loader
|
|
64
72
|
# @api public
|
65
73
|
#
|
66
74
|
def loaded_entry(typed_name, check_dependencies = false)
|
67
|
-
raise NotImplementedError
|
75
|
+
raise NotImplementedError, "Class #{self.class.name} must implement method #loaded_entry"
|
68
76
|
end
|
69
77
|
|
70
78
|
# Produces the value associated with the given name if defined **in this loader**, or nil if not defined.
|
@@ -94,7 +102,7 @@ class Puppet::Pops::Loader::Loader
|
|
94
102
|
# @api private
|
95
103
|
#
|
96
104
|
def find(typed_name)
|
97
|
-
raise NotImplementedError.
|
105
|
+
raise NotImplementedError, "Class #{self.class.name} must implement method #find"
|
98
106
|
end
|
99
107
|
|
100
108
|
# Returns the parent of the loader, or nil, if this is the top most loader. This implementation returns nil.
|
@@ -156,49 +164,6 @@ class Puppet::Pops::Loader::Loader
|
|
156
164
|
freeze()
|
157
165
|
end
|
158
166
|
end
|
159
|
-
|
160
|
-
# A name/type combination that can be used as a compound hash key
|
161
|
-
#
|
162
|
-
class TypedName
|
163
|
-
DOUBLE_COLON = '::'
|
164
|
-
|
165
|
-
attr_reader :hash
|
166
|
-
attr_reader :type
|
167
|
-
attr_reader :name
|
168
|
-
attr_reader :name_parts
|
169
|
-
attr_reader :compound_name
|
170
|
-
|
171
|
-
def initialize(type, name)
|
172
|
-
@type = type
|
173
|
-
# relativize the name (get rid of leading ::), and make the split string available
|
174
|
-
parts = name.to_s.split(DOUBLE_COLON)
|
175
|
-
if parts[0].empty?
|
176
|
-
parts.shift
|
177
|
-
@name = name[2..-1]
|
178
|
-
else
|
179
|
-
@name = name
|
180
|
-
end
|
181
|
-
@name_parts = parts
|
182
|
-
|
183
|
-
# Use a frozen compound key for the hash and comparison
|
184
|
-
@compound_name = "#{type}/#{name}".freeze
|
185
|
-
@hash = @compound_name.hash
|
186
|
-
freeze
|
187
|
-
end
|
188
|
-
|
189
|
-
def ==(o)
|
190
|
-
o.class == self.class && o.compound_name == @compound_name
|
191
|
-
end
|
192
|
-
|
193
|
-
alias eql? ==
|
194
|
-
|
195
|
-
def qualified?
|
196
|
-
@name_parts.size > 1
|
197
|
-
end
|
198
|
-
|
199
|
-
def to_s
|
200
|
-
@compound_name
|
201
|
-
end
|
202
|
-
end
|
203
167
|
end
|
204
|
-
|
168
|
+
end
|
169
|
+
end
|
@@ -25,6 +25,8 @@ module Puppet::Pops::Loader::LoaderPaths
|
|
25
25
|
# When wanted also add FunctionPath3x to load 3x functions
|
26
26
|
when :type
|
27
27
|
result << TypePathPP.new(loader) if loader.loadables.include?(:type_pp)
|
28
|
+
when :resource_type_pp
|
29
|
+
result << ResourceTypeImplPP.new(loader) if loader.loadables.include?(:resource_type_pp)
|
28
30
|
else
|
29
31
|
# unknown types, simply produce an empty result; no paths to check, nothing to find... move along...
|
30
32
|
[]
|
@@ -100,7 +102,6 @@ module Puppet::Pops::Loader::LoaderPaths
|
|
100
102
|
end
|
101
103
|
|
102
104
|
def root_path
|
103
|
-
# Drop the lib part (it may not exist and cannot be navigated to in a relative way)
|
104
105
|
Puppet::FileSystem.dir_string(@loader.path)
|
105
106
|
end
|
106
107
|
|
@@ -150,7 +151,6 @@ module Puppet::Pops::Loader::LoaderPaths
|
|
150
151
|
end
|
151
152
|
|
152
153
|
class TypePathPP < PuppetSmartPath
|
153
|
-
# Navigate to directory where 'lib' is, then down again
|
154
154
|
TYPE_PATH_PP = File.join('types')
|
155
155
|
|
156
156
|
def relative_path
|
@@ -162,6 +162,32 @@ module Puppet::Pops::Loader::LoaderPaths
|
|
162
162
|
end
|
163
163
|
end
|
164
164
|
|
165
|
+
class ResourceTypeImplPP < PuppetSmartPath
|
166
|
+
RESOURCE_TYPES_PATH_PP = File.join('.resource_types')
|
167
|
+
|
168
|
+
def relative_path
|
169
|
+
RESOURCE_TYPES_PATH_PP
|
170
|
+
end
|
171
|
+
|
172
|
+
def root_path
|
173
|
+
@loader.path
|
174
|
+
end
|
175
|
+
|
176
|
+
def instantiator()
|
177
|
+
Puppet::Pops::Loader::PuppetResourceTypeImplInstantiator
|
178
|
+
end
|
179
|
+
|
180
|
+
# The effect paths for resource type impl is the full name
|
181
|
+
# since resource types are not name spaced.
|
182
|
+
# This overrides the default PuppetSmartPath.
|
183
|
+
#
|
184
|
+
def effective_path(typed_name, start_index_in_name)
|
185
|
+
# Resource type to name does not skip the name-space
|
186
|
+
# i.e. <module>/mymodule/resource_types/foo.pp is the reource type foo
|
187
|
+
"#{File.join(generic_path, typed_name.name_parts)}.pp"
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
165
191
|
# SmartPaths
|
166
192
|
# ===
|
167
193
|
# Holds effective SmartPath instances per type
|
@@ -46,6 +46,15 @@ module ModuleLoaders
|
|
46
46
|
)
|
47
47
|
end
|
48
48
|
|
49
|
+
def self.pcore_resource_type_loader_from(parent_loader, loaders, environment_path)
|
50
|
+
ModuleLoaders::FileBased.new(parent_loader,
|
51
|
+
loaders,
|
52
|
+
nil,
|
53
|
+
environment_path,
|
54
|
+
'pcore_resource_types'
|
55
|
+
)
|
56
|
+
end
|
57
|
+
|
49
58
|
class AbstractPathBasedModuleLoader < BaseLoader
|
50
59
|
|
51
60
|
# The name of the module, or nil, if this is a global "component"
|
@@ -66,6 +75,7 @@ module ModuleLoaders
|
|
66
75
|
|
67
76
|
# Initialize a kind of ModuleLoader for one module
|
68
77
|
# @param parent_loader [Loader] loader with higher priority
|
78
|
+
# @param loaders [Loaders] the container for this loader
|
69
79
|
# @param module_name [String] the name of the module (non qualified name), may be nil for a global "component"
|
70
80
|
# @param path [String] the path to the root of the module (semantics defined by subclass)
|
71
81
|
# @param loader_name [String] a name that is used for human identification (useful when module_name is nil)
|
@@ -81,6 +91,7 @@ module ModuleLoaders
|
|
81
91
|
unless (loadables - LOADABLE_KINDS).empty?
|
82
92
|
raise ArgumentError, 'given loadables are not of supported loadable kind'
|
83
93
|
end
|
94
|
+
loaders.add_loader_by_name(self)
|
84
95
|
end
|
85
96
|
|
86
97
|
def loadables
|
@@ -92,6 +103,9 @@ module ModuleLoaders
|
|
92
103
|
# @return [Loader::NamedEntry, nil found/created entry, or nil if not found
|
93
104
|
#
|
94
105
|
def find(typed_name)
|
106
|
+
# This loader is tailored to only find entries in the current runtime
|
107
|
+
return nil unless typed_name.name_authority == Pcore::RUNTIME_NAME_AUTHORITY
|
108
|
+
|
95
109
|
# Assume it is a global name, and that all parts of the name should be used when looking up
|
96
110
|
name_part_index = 0
|
97
111
|
name_parts = typed_name.name_parts
|
@@ -116,6 +130,7 @@ module ModuleLoaders
|
|
116
130
|
case typed_name.type
|
117
131
|
when :function
|
118
132
|
when :resource_type
|
133
|
+
when :resource_type_pp
|
119
134
|
when :type
|
120
135
|
else
|
121
136
|
# anything else cannot possibly be in this module
|
@@ -190,7 +205,7 @@ module ModuleLoaders
|
|
190
205
|
def private_loader
|
191
206
|
# The system loader has a nil module_name and it does not have a private_loader as there are no functions
|
192
207
|
# that can only by called by puppet runtime - if so, it acts as the private loader directly.
|
193
|
-
@private_loader ||= (
|
208
|
+
@private_loader ||= (module_name.nil? || module_name == 'environment' ? self : @loaders.private_loader_for_module(module_name))
|
194
209
|
end
|
195
210
|
end
|
196
211
|
|
@@ -6,7 +6,7 @@ class Puppet::Pops::Loader::NullLoader < Puppet::Pops::Loader::Loader
|
|
6
6
|
# Construct a NullLoader, optionally with a parent loader
|
7
7
|
#
|
8
8
|
def initialize(parent_loader=nil, loader_name = "null-loader")
|
9
|
-
|
9
|
+
super(loader_name)
|
10
10
|
@parent = parent_loader
|
11
11
|
end
|
12
12
|
|
@@ -15,6 +15,14 @@ class Puppet::Pops::Loader::NullLoader < Puppet::Pops::Loader::Loader
|
|
15
15
|
@parent
|
16
16
|
end
|
17
17
|
|
18
|
+
def find(typed_name)
|
19
|
+
if @parent.nil?
|
20
|
+
nil
|
21
|
+
else
|
22
|
+
@parent.find(typed_name)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
18
26
|
def load_typed(typed_name)
|
19
27
|
if @parent.nil?
|
20
28
|
nil
|
@@ -23,6 +31,14 @@ class Puppet::Pops::Loader::NullLoader < Puppet::Pops::Loader::Loader
|
|
23
31
|
end
|
24
32
|
end
|
25
33
|
|
34
|
+
def loaded_entry(typed_name, check_dependencies = false)
|
35
|
+
if @parent.nil?
|
36
|
+
nil
|
37
|
+
else
|
38
|
+
@parent.loaded_entry(typed_name, check_dependencies)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
26
42
|
# Has no entries on its own - always nil
|
27
43
|
def get_entry(typed_name)
|
28
44
|
nil
|
@@ -46,12 +46,13 @@ class PuppetFunctionInstantiator
|
|
46
46
|
# loader to use when making calls to the new function API. Such logic have a hard time finding the closure (where
|
47
47
|
# the loader is known - hence this mechanism
|
48
48
|
private_loader = loader.private_loader
|
49
|
-
Adapters::LoaderAdapter.adapt(the_function_definition).
|
49
|
+
Adapters::LoaderAdapter.adapt(the_function_definition).loader_name = private_loader.loader_name
|
50
50
|
|
51
|
-
#
|
52
|
-
|
51
|
+
# Cannot bind loaded functions to global scope, that must be done without binding that scope as
|
52
|
+
# loaders survive a compilation.
|
53
|
+
closure_scope = nil # Puppet.lookup(:global_scope) { {} }
|
53
54
|
|
54
|
-
created = create_function_class(the_function_definition
|
55
|
+
created = create_function_class(the_function_definition)
|
55
56
|
# create the function instance - it needs closure (scope), and loader (i.e. where it should start searching for things
|
56
57
|
# when calling functions etc.
|
57
58
|
# It should be bound to global scope
|
@@ -60,22 +61,22 @@ class PuppetFunctionInstantiator
|
|
60
61
|
end
|
61
62
|
|
62
63
|
# Creates Function class and instantiates it based on a FunctionDefinition model
|
63
|
-
# @return [Array<
|
64
|
+
# @return [Array<TypedName, Functions.Function>] - array of
|
64
65
|
# typed name, and an instantiated function with global scope closure associated with the given loader
|
65
66
|
#
|
66
67
|
def self.create_from_model(function_definition, loader)
|
67
|
-
|
68
|
-
|
69
|
-
typed_name
|
70
|
-
[typed_name, created.new(closure_scope, loader)]
|
68
|
+
created = create_function_class(function_definition)
|
69
|
+
typed_name = TypedName.new(:function, function_definition.name)
|
70
|
+
[typed_name, created.new(nil, loader)]
|
71
71
|
end
|
72
72
|
|
73
|
-
def self.create_function_class(function_definition
|
73
|
+
def self.create_function_class(function_definition)
|
74
74
|
# Create a 4x function wrapper around a named closure
|
75
75
|
Puppet::Functions.create_function(function_definition.name, Puppet::Functions::PuppetFunction) do
|
76
|
+
# TODO: should not create a new evaluator per function
|
76
77
|
init_dispatch(Evaluator::Closure::Named.new(
|
77
78
|
function_definition.name,
|
78
|
-
Evaluator::EvaluatorImpl.new(), function_definition
|
79
|
+
Evaluator::EvaluatorImpl.new(), function_definition))
|
79
80
|
end
|
80
81
|
end
|
81
82
|
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module Puppet::Pops
|
2
|
+
module Loader
|
3
|
+
# The PuppetResourceTypeImplInstantiator instantiates a Puppet::Pops::ResourceTypeImpl object.
|
4
|
+
# given a Puppet Programming language source that when called evaluates the Puppet logic it contains.
|
5
|
+
#
|
6
|
+
class PuppetResourceTypeImplInstantiator
|
7
|
+
# Produces an instance of Puppet::Pops::ResourceTypeImpl, or fails with an error if the
|
8
|
+
# given puppet source does not produce such an instance when evaluated.
|
9
|
+
#
|
10
|
+
# @param loader [Loader] The loader the function is associated with
|
11
|
+
# @param typed_name [TypedName] the type / name of the resoure type impl to load
|
12
|
+
# @param source_ref [URI, String] a reference to the source / origin of the puppet code to evaluate
|
13
|
+
# @param pp_code_string [String] puppet code in a string
|
14
|
+
#
|
15
|
+
# @return [Puppet::Pops::ResourceTypeImpl] - an instantiated ResourceTypeImpl
|
16
|
+
#
|
17
|
+
def self.create(loader, typed_name, source_ref, pp_code_string)
|
18
|
+
parser = Parser::EvaluatingParser.new()
|
19
|
+
|
20
|
+
# parse and validate
|
21
|
+
result = parser.parse_string(pp_code_string, source_ref)
|
22
|
+
model = result.model
|
23
|
+
statements = if model.is_a?(Model::Program)
|
24
|
+
if model.body.is_a?(Model::BlockExpression)
|
25
|
+
statements = model.body.statements
|
26
|
+
else
|
27
|
+
statements = [model.body]
|
28
|
+
end
|
29
|
+
else
|
30
|
+
statements = EMPTY_ARRAY
|
31
|
+
end
|
32
|
+
statements = statements.reject { |s| s.is_a?(Model::Nop) }
|
33
|
+
if statements.empty?
|
34
|
+
raise ArgumentError, "The code loaded from #{source_ref} does not create the resource type '#{typed_name.name}' - it is empty"
|
35
|
+
end
|
36
|
+
|
37
|
+
rname = Resource::ResourceTypeImpl._ptype.name
|
38
|
+
unless statements.find do |s|
|
39
|
+
if s.is_a?(Model::CallMethodExpression)
|
40
|
+
functor_expr = s.functor_expr
|
41
|
+
functor_expr.is_a?(Model::NamedAccessExpression) &&
|
42
|
+
functor_expr.left_expr.is_a?(Model::QualifiedReference) &&
|
43
|
+
functor_expr.left_expr.cased_value == rname &&
|
44
|
+
functor_expr.right_expr.is_a?(Model::QualifiedName) &&
|
45
|
+
functor_expr.right_expr.value == 'new'
|
46
|
+
else
|
47
|
+
false
|
48
|
+
end
|
49
|
+
end
|
50
|
+
raise ArgumentError, "The code loaded from #{source_ref} does not create the resource type '#{typed_name.name}' - no call to #{rname}.new found."
|
51
|
+
end
|
52
|
+
|
53
|
+
unless statements.size == 1
|
54
|
+
raise ArgumentError, "The code loaded from #{source_ref} must contain only the creation of resource type '#{typed_name.name}' - it has additional logic."
|
55
|
+
end
|
56
|
+
|
57
|
+
closure_scope = Puppet.lookup(:global_scope) { {} }
|
58
|
+
resource_type_impl = parser.evaluate(closure_scope, result)
|
59
|
+
|
60
|
+
unless resource_type_impl.is_a?(Puppet::Pops::Resource::ResourceTypeImpl)
|
61
|
+
got = resource_type.class
|
62
|
+
raise ArgumentError, "The code loaded from #{source_ref} does not define the resource type '#{typed_name.name}' - got '#{got}'."
|
63
|
+
end
|
64
|
+
|
65
|
+
unless resource_type_impl.name == typed_name.name
|
66
|
+
expected = typed_name.name
|
67
|
+
actual = resource_type_impl.name
|
68
|
+
raise ArgumentError, "The code loaded from #{source_ref} produced resource type with the wrong name, expected '#{expected}', actual '#{actual}'"
|
69
|
+
end
|
70
|
+
|
71
|
+
# Adapt the resource type definition with loader - this is used from logic contained in it body to find the
|
72
|
+
# loader to use when making calls to the new function API. Such logic have a hard time finding the closure (where
|
73
|
+
# the loader is known - hence this mechanism
|
74
|
+
Adapters::LoaderAdapter.adapt(resource_type_impl).loader_name = loader.loader_name
|
75
|
+
resource_type_impl
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -30,10 +30,9 @@ class Puppet::Pops::Loader::RubyFunctionInstantiator
|
|
30
30
|
# when calling functions etc.
|
31
31
|
# It should be bound to global scope
|
32
32
|
|
33
|
-
#
|
34
|
-
closure_scope = Puppet.lookup(:global_scope) { {} }
|
33
|
+
# Sets closure scope to nil, to let it be picked up at runtime from Puppet.lookup(:global_scope)
|
35
34
|
# If function definition used the loader from the binding to create a new loader, that loader wins
|
36
|
-
created.new(
|
35
|
+
created.new(nil, loader_for_function)
|
37
36
|
end
|
38
37
|
|
39
38
|
private
|
@@ -7,9 +7,10 @@ module Loader
|
|
7
7
|
#
|
8
8
|
# @api private
|
9
9
|
class Runtime3TypeLoader < BaseLoader
|
10
|
-
def initialize(parent_loader, environment)
|
10
|
+
def initialize(parent_loader, loaders, environment, env_path)
|
11
11
|
super(parent_loader, environment.name)
|
12
12
|
@environment = environment
|
13
|
+
@resource_3x_loader = env_path.nil? ? nil : ModuleLoaders.pcore_resource_type_loader_from(parent_loader, loaders, env_path)
|
13
14
|
end
|
14
15
|
|
15
16
|
def to_s()
|
@@ -21,28 +22,66 @@ class Runtime3TypeLoader < BaseLoader
|
|
21
22
|
# @return [Loader::NamedEntry, nil found/created entry, or nil if not found
|
22
23
|
#
|
23
24
|
def find(typed_name)
|
24
|
-
return nil unless typed_name.
|
25
|
+
return nil unless typed_name.name_authority == Pcore::RUNTIME_NAME_AUTHORITY
|
26
|
+
case typed_name.type
|
27
|
+
when :type
|
28
|
+
value = nil
|
29
|
+
name = typed_name.name
|
30
|
+
if @resource_3x_loader.nil?
|
31
|
+
value = Puppet::Type.type(name) unless typed_name.qualified?
|
32
|
+
if value.nil?
|
33
|
+
# Look for a user defined type
|
34
|
+
value = @environment.known_resource_types.find_definition(name)
|
35
|
+
end
|
36
|
+
else
|
37
|
+
impl_te = find_impl(TypedName.new(:resource_type_pp, name, typed_name.name_authority))
|
38
|
+
value = impl_te.value unless impl_te.nil?
|
39
|
+
end
|
25
40
|
|
26
|
-
name = typed_name.name
|
27
|
-
value = @environment.known_resource_types.find_definition(name)
|
28
|
-
if value.nil?
|
29
|
-
# Look for Puppet::Type
|
30
|
-
value = Puppet::Type.type(name)
|
31
41
|
if value.nil?
|
32
42
|
# Cache the fact that it wasn't found
|
33
43
|
set_entry(typed_name, nil)
|
34
44
|
return nil
|
35
45
|
end
|
46
|
+
|
47
|
+
# Loaded types doesn't have the same life cycle as this loader, so we must start by
|
48
|
+
# checking if the type was created. If it was, an entry will already be stored in
|
49
|
+
# this loader. If not, then it was created before this loader was instantiated and
|
50
|
+
# we must therefore add it.
|
51
|
+
te = get_entry(typed_name)
|
52
|
+
te = set_entry(typed_name, Types::TypeFactory.resource(value.name.to_s)) if te.nil? || te.value.nil?
|
53
|
+
te
|
54
|
+
when :resource_type_pp
|
55
|
+
@resource_3x_loader.nil? ? nil : find_impl(typed_name)
|
56
|
+
else
|
57
|
+
nil
|
36
58
|
end
|
59
|
+
end
|
37
60
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
te =
|
61
|
+
# Find the implementation for the resource type by first consulting the internal loader for pp defined 'Puppet::Resource::ResourceType3'
|
62
|
+
# instances, then check for a Puppet::Type and lastly check for a defined type.
|
63
|
+
#
|
64
|
+
def find_impl(typed_name)
|
65
|
+
name = typed_name.name
|
66
|
+
te = StaticLoader::BUILTIN_TYPE_NAMES_LC.include?(name) ? nil : @resource_3x_loader.find(typed_name)
|
67
|
+
if te.nil? || te.value.nil?
|
68
|
+
# Look for Puppet::Type
|
69
|
+
value = Puppet::Type.type(name) unless typed_name.qualified?
|
70
|
+
if value.nil?
|
71
|
+
# Look for a user defined type
|
72
|
+
value = @environment.known_resource_types.find_definition(name)
|
73
|
+
if value.nil?
|
74
|
+
# Cache the fact that it wasn't found
|
75
|
+
@resource_3x_loader.set_entry(typed_name, nil)
|
76
|
+
return nil
|
77
|
+
end
|
78
|
+
end
|
79
|
+
te = @resource_3x_loader.get_entry(typed_name)
|
80
|
+
te = @resource_3x_loader.set_entry(typed_name, value) if te.nil? || te.value.nil?
|
81
|
+
end
|
44
82
|
te
|
45
83
|
end
|
84
|
+
private :find_impl
|
46
85
|
|
47
86
|
# Allows shadowing since this loader is populalted with all loaded resource types at time
|
48
87
|
# of loading. This loading will, for built in types override the aliases configured in the static
|