puppet 4.3.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/COMMITTERS.md +2 -2
- data/CONTRIBUTING.md +6 -6
- data/LICENSE +1 -1
- data/README.md +8 -9
- data/conf/auth.conf +2 -2
- data/ext/README.environment +1 -1
- data/ext/build_defaults.yaml +1 -1
- data/ext/debian/README.source +1 -1
- data/ext/debian/control +1 -1
- data/ext/debian/copyright +4 -4
- data/ext/debian/puppetmaster.README.debian +11 -9
- data/ext/emacs/puppet-mode.el +1 -1
- data/ext/envpuppet +2 -2
- data/ext/ips/puppetagent.xml +1 -1
- data/ext/ips/puppetmaster.xml +1 -1
- data/ext/project_data.yaml +8 -0
- data/ext/puppet-test +3 -3
- data/ext/rack/example-passenger-vhost.conf +1 -1
- data/ext/redhat/puppet.spec.erb +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +1 -1
- data/ext/solaris/pkginfo +1 -1
- data/ext/solaris/smf/puppet.xml +1 -1
- data/ext/suse/puppet.spec +2 -2
- data/ext/upload_facts.rb +1 -1
- data/ext/windows/puppet_interactive.bat +6 -0
- data/ext/windows/puppet_shell.bat +9 -0
- data/ext/windows/run_puppet_interactive.bat +9 -0
- data/ext/yaml_nodes.rb +1 -1
- data/install.rb +30 -20
- data/lib/hiera/scope.rb +1 -1
- data/lib/puppet/agent.rb +1 -1
- data/lib/puppet/application/agent.rb +4 -2
- data/lib/puppet/application/apply.rb +7 -4
- data/lib/puppet/application/cert.rb +1 -1
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +1 -1
- data/lib/puppet/application/lookup.rb +45 -47
- data/lib/puppet/application/master.rb +2 -2
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/configurer.rb +100 -22
- data/lib/puppet/data_providers/hiera_config.rb +28 -3
- data/lib/puppet/data_providers/hiera_interpolate.rb +30 -15
- data/lib/puppet/data_providers/hiera_support.rb +1 -1
- data/lib/puppet/data_providers/json_data_provider_factory.rb +2 -2
- data/lib/puppet/data_providers/lookup_adapter.rb +73 -26
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -2
- data/lib/puppet/defaults.rb +69 -22
- data/lib/puppet/environments.rb +3 -1
- data/lib/puppet/face/config.rb +1 -1
- data/lib/puppet/face/epp.rb +1 -1
- data/lib/puppet/face/help/man.erb +1 -1
- data/lib/puppet/face/module/install.rb +6 -6
- data/lib/puppet/face/parser.rb +12 -9
- data/lib/puppet/face/status.rb +2 -1
- data/lib/puppet/feature/cfpropertylist.rb +3 -0
- data/lib/puppet/feature/telnet.rb +9 -0
- data/lib/puppet/file_serving/http_metadata.rb +46 -0
- data/lib/puppet/file_serving/metadata.rb +18 -2
- data/lib/puppet/file_serving/terminus_selector.rb +2 -0
- data/lib/puppet/file_system/file_impl.rb +2 -2
- data/lib/puppet/file_system/memory_impl.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +1 -1
- data/lib/puppet/file_system.rb +2 -2
- data/lib/puppet/forge/repository.rb +1 -31
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/functions/assert_type.rb +9 -9
- data/lib/puppet/functions/each.rb +5 -13
- data/lib/puppet/functions/filter.rb +5 -14
- data/lib/puppet/functions/lookup.rb +126 -150
- data/lib/puppet/functions/map.rb +6 -14
- data/lib/puppet/functions/match.rb +1 -0
- data/lib/puppet/functions/reduce.rb +5 -13
- data/lib/puppet/functions/reverse_each.rb +82 -0
- data/lib/puppet/functions/scanf.rb +15 -18
- data/lib/puppet/functions/slice.rb +22 -36
- data/lib/puppet/functions/split.rb +2 -2
- data/lib/puppet/functions/step.rb +88 -0
- data/lib/puppet/functions/type.rb +70 -0
- data/lib/puppet/functions.rb +45 -6
- data/lib/puppet/graph/rb_tree_map.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +188 -5
- data/lib/puppet/indirector/facts/facter.rb +2 -13
- data/lib/puppet/indirector/file_content/http.rb +15 -0
- data/lib/puppet/indirector/file_metadata/http.rb +27 -0
- data/lib/puppet/indirector/generic_http.rb +16 -0
- data/lib/puppet/indirector/hiera.rb +3 -1
- data/lib/puppet/indirector/indirection.rb +6 -2
- data/lib/puppet/indirector/json.rb +2 -2
- data/lib/puppet/indirector/node/exec.rb +1 -1
- data/lib/puppet/indirector/node/ldap.rb +1 -1
- data/lib/puppet/indirector/rest.rb +2 -1
- data/lib/puppet/info_service/class_information_service.rb +13 -12
- data/lib/puppet/loaders.rb +1 -0
- data/lib/puppet/module.rb +6 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +9 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +2 -2
- data/lib/puppet/module_tool/tar/mini.rb +3 -3
- data/lib/puppet/network/http/pool.rb +9 -0
- data/lib/puppet/node/environment.rb +11 -2
- data/lib/puppet/node.rb +11 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
- data/lib/puppet/parser/compiler.rb +4 -11
- data/lib/puppet/parser/environment_compiler.rb +0 -1
- data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/lookup.rb +128 -149
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/match.rb +1 -0
- data/lib/puppet/parser/functions/scanf.rb +15 -26
- data/lib/puppet/parser/functions/slice.rb +17 -24
- data/lib/puppet/parser/functions/split.rb +1 -1
- data/lib/puppet/parser/functions.rb +28 -16
- data/lib/puppet/parser/resource.rb +19 -17
- data/lib/puppet/parser/scope.rb +176 -5
- data/lib/puppet/plugins/data_providers/data_provider.rb +56 -14
- data/lib/puppet/pops/adaptable.rb +4 -1
- data/lib/puppet/pops/adapters.rb +80 -12
- data/lib/puppet/pops/binder/binder.rb +21 -17
- data/lib/puppet/pops/binder/binder_issues.rb +8 -6
- data/lib/puppet/pops/binder/bindings_checker.rb +12 -8
- data/lib/puppet/pops/binder/bindings_composer.rb +16 -12
- data/lib/puppet/pops/binder/bindings_factory.rb +108 -104
- data/lib/puppet/pops/binder/bindings_model.rb +49 -47
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +10 -6
- data/lib/puppet/pops/binder/injector.rb +53 -48
- data/lib/puppet/pops/binder/key_factory.rb +10 -6
- data/lib/puppet/pops/binder/producers.rb +67 -62
- data/lib/puppet/pops/evaluator/access_operator.rb +98 -96
- data/lib/puppet/pops/evaluator/closure.rb +122 -106
- data/lib/puppet/pops/evaluator/collector_transformer.rb +34 -14
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +0 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +13 -9
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +9 -8
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +78 -76
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +85 -0
- data/lib/puppet/pops/evaluator/relationship_operator.rb +13 -11
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +5 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +47 -42
- data/lib/puppet/pops/functions/function.rb +6 -2
- data/lib/puppet/pops/issue_reporter.rb +6 -4
- data/lib/puppet/pops/issues.rb +50 -11
- data/lib/puppet/pops/loader/base_loader.rb +1 -1
- data/lib/puppet/pops/loader/loader.rb +1 -1
- data/lib/puppet/pops/loader/loader_paths.rb +15 -0
- data/lib/puppet/pops/loader/module_loaders.rb +17 -13
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +18 -13
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +16 -3
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +55 -0
- data/lib/puppet/pops/loaders.rb +51 -9
- data/lib/puppet/pops/lookup/explainer.rb +73 -3
- data/lib/puppet/pops/lookup/invocation.rb +21 -19
- data/lib/puppet/pops/lookup.rb +17 -12
- data/lib/puppet/pops/merge_strategy.rb +16 -19
- data/lib/puppet/pops/model/factory.rb +179 -157
- data/lib/puppet/pops/model/model.rb +17 -8
- data/lib/puppet/pops/model/model_label_provider.rb +14 -7
- data/lib/puppet/pops/model/model_meta.rb +17 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +8 -0
- data/lib/puppet/pops/parser/egrammar.ra +38 -14
- data/lib/puppet/pops/parser/eparser.rb +1353 -1276
- data/lib/puppet/pops/parser/epp_support.rb +11 -7
- data/lib/puppet/pops/parser/evaluating_parser.rb +17 -13
- data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
- data/lib/puppet/pops/parser/lexer2.rb +428 -403
- data/lib/puppet/pops/parser/lexer_support.rb +85 -7
- data/lib/puppet/pops/parser/locator.rb +21 -0
- data/lib/puppet/pops/parser/parser_support.rb +19 -16
- data/lib/puppet/pops/parser/slurp_support.rb +16 -8
- data/lib/puppet/pops/types/class_loader.rb +23 -19
- data/lib/puppet/pops/types/enumeration.rb +9 -26
- data/lib/puppet/pops/types/iterable.rb +308 -0
- data/lib/puppet/pops/types/recursion_guard.rb +82 -0
- data/lib/puppet/pops/types/type_acceptor.rb +25 -0
- data/lib/puppet/pops/types/type_asserter.rb +10 -9
- data/lib/puppet/pops/types/type_calculator.rb +140 -387
- data/lib/puppet/pops/types/type_factory.rb +91 -57
- data/lib/puppet/pops/types/type_formatter.rb +334 -0
- data/lib/puppet/pops/types/type_mismatch_describer.rb +226 -59
- data/lib/puppet/pops/types/type_parser.rb +159 -112
- data/lib/puppet/pops/types/types.rb +2057 -1253
- data/lib/puppet/pops/utils.rb +11 -10
- data/lib/puppet/pops/validation/checker4_0.rb +115 -63
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
- data/lib/puppet/pops/validation.rb +11 -9
- data/lib/puppet/pops.rb +0 -8
- data/lib/puppet/provider/aixobject.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/group/windows_adsi.rb +2 -2
- data/lib/puppet/provider/macauthorization/macauthorization.rb +10 -9
- data/lib/puppet/provider/nameservice/directoryservice.rb +35 -50
- data/lib/puppet/provider/package/appdmg.rb +3 -2
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +16 -9
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +1 -1
- data/lib/puppet/provider/package/pkgdmg.rb +3 -2
- data/lib/puppet/provider/package/pkgng.rb +13 -4
- data/lib/puppet/provider/package/rpm.rb +0 -1
- data/lib/puppet/provider/package/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +2 -2
- data/lib/puppet/provider/package/zypper.rb +19 -0
- data/lib/puppet/provider/service/debian.rb +7 -20
- data/lib/puppet/provider/service/init.rb +7 -0
- data/lib/puppet/provider/service/launchd.rb +6 -12
- data/lib/puppet/provider/service/systemd.rb +9 -2
- data/lib/puppet/provider/sshkey/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +33 -58
- data/lib/puppet/provider/user/windows_adsi.rb +2 -2
- data/lib/puppet/provider/yumrepo/inifile.rb +6 -3
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/provider/zpool/zpool.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/resource/capability_finder.rb +20 -13
- data/lib/puppet/resource/catalog.rb +60 -3
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/resource/type.rb +33 -42
- data/lib/puppet/resource.rb +15 -12
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +13 -5
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/ssl/certificate_factory.rb +3 -3
- data/lib/puppet/ssl/certificate_request.rb +4 -4
- data/lib/puppet/ssl/certificate_signer.rb +1 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +16 -4
- data/lib/puppet/transaction/additional_resource_generator.rb +23 -5
- data/lib/puppet/transaction/report.rb +31 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -25
- data/lib/puppet/transaction.rb +15 -2
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +12 -12
- data/lib/puppet/type/file/checksum_value.rb +53 -0
- data/lib/puppet/type/file/content.rb +26 -111
- data/lib/puppet/type/file/data_sync.rb +84 -0
- data/lib/puppet/type/file/ensure.rb +17 -14
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file/source.rb +103 -18
- data/lib/puppet/type/file.rb +91 -39
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/group.rb +6 -2
- data/lib/puppet/type/interface.rb +8 -3
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/package.rb +6 -0
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/stage.rb +1 -1
- data/lib/puppet/type/user.rb +19 -17
- data/lib/puppet/type/yumrepo.rb +20 -0
- data/lib/puppet/type.rb +11 -11
- data/lib/puppet/util/autoload.rb +16 -11
- data/lib/puppet/util/checksums.rb +74 -31
- data/lib/puppet/util/execution.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +72 -0
- data/lib/puppet/util/log.rb +2 -0
- data/lib/puppet/util/logging.rb +43 -1
- data/lib/puppet/util/monkey_patches.rb +2 -2
- data/lib/puppet/util/multi_match.rb +51 -0
- data/lib/puppet/util/network_device/cisco/device.rb +10 -2
- data/lib/puppet/util/network_device/cisco/interface.rb +21 -8
- data/lib/puppet/util/network_device/transport/ssh.rb +7 -3
- data/lib/puppet/util/network_device/transport/telnet.rb +39 -36
- data/lib/puppet/util/plist.rb +130 -0
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/run_mode.rb +2 -2
- data/lib/puppet/util/skip_tags.rb +9 -0
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/access_control_list.rb +3 -3
- data/lib/puppet/util/windows/adsi.rb +65 -28
- data/lib/puppet/util/windows/api_types.rb +24 -18
- data/lib/puppet/util/windows/com.rb +3 -3
- data/lib/puppet/util/windows/error.rb +1 -1
- data/lib/puppet/util/windows/file.rb +8 -8
- data/lib/puppet/util/windows/principal.rb +190 -0
- data/lib/puppet/util/windows/process.rb +78 -11
- data/lib/puppet/util/windows/registry.rb +22 -16
- data/lib/puppet/util/windows/root_certs.rb +5 -5
- data/lib/puppet/util/windows/security.rb +33 -35
- data/lib/puppet/util/windows/security_descriptor.rb +1 -1
- data/lib/puppet/util/windows/sid.rb +84 -15
- data/lib/puppet/util/windows/taskscheduler.rb +15 -15
- data/lib/puppet/util/windows/user.rb +10 -10
- data/lib/puppet/util/windows.rb +4 -0
- data/lib/puppet/util.rb +109 -22
- data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +1 -1
- data/lib/puppet/vendor/pathspec/LICENSE +2 -2
- data/lib/puppet/vendor/pathspec/README.md +1 -1
- data/lib/puppet/vendor/rgen/README.rdoc +1 -1
- data/lib/puppet/vendor/semantic/lib/semantic/dependency/module_release.rb +14 -0
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +17 -0
- data/lib/semver.rb +17 -1
- data/man/man5/puppet.conf.5 +12 -12
- data/man/man8/extlookup2hiera.8 +1 -1
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-ca.8 +2 -2
- data/man/man8/puppet-catalog.8 +2 -2
- data/man/man8/puppet-cert.8 +2 -2
- data/man/man8/puppet-certificate.8 +2 -2
- data/man/man8/puppet-certificate_request.8 +2 -2
- data/man/man8/puppet-certificate_revocation_list.8 +2 -2
- data/man/man8/puppet-config.8 +3 -3
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +2 -2
- data/man/man8/puppet-facts.8 +2 -2
- data/man/man8/puppet-file.8 +2 -2
- data/man/man8/puppet-filebucket.8 +2 -2
- data/man/man8/puppet-help.8 +2 -2
- data/man/man8/puppet-inspect.8 +2 -2
- data/man/man8/puppet-key.8 +2 -2
- data/man/man8/puppet-man.8 +2 -2
- data/man/man8/puppet-master.8 +2 -2
- data/man/man8/puppet-module.8 +9 -9
- data/man/man8/puppet-node.8 +2 -2
- data/man/man8/puppet-parser.8 +2 -2
- data/man/man8/puppet-plugin.8 +2 -2
- data/man/man8/puppet-report.8 +2 -2
- data/man/man8/puppet-resource.8 +2 -2
- data/man/man8/puppet-resource_type.8 +2 -2
- data/man/man8/puppet-status.8 +3 -3
- data/man/man8/puppet.8 +1 -1
- data/spec/fixtures/module.tar.gz +0 -0
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +4 -0
- data/spec/fixtures/unit/application/environments/production/manifests/site.pp +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +1 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/data.pp +10 -0
- data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +7 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +1 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +6 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +2 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +4 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +5 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +3 -0
- data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/bad_data/manifests/init.pp +0 -1
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/data/empty.json +0 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_json/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/hiera.yaml +5 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/manifests/init.pp +2 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +2 -1
- data/spec/fixtures/unit/module/trailing-comma.json +1 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +3 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +6 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +8 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +5 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +81 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/metadata.json +2 -1
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +1 -0
- data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +1 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +187 -0
- data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +8 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +213 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +197 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +205 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +205 -0
- data/spec/integration/defaults_spec.rb +14 -2
- data/spec/integration/file_system/uniquefile_spec.rb +29 -0
- data/spec/integration/module_tool/tar/mini_spec.rb +28 -0
- data/spec/integration/node/environment_spec.rb +13 -0
- data/spec/integration/parser/collection_spec.rb +8 -0
- data/spec/integration/parser/dynamic_scoping_spec.rb +67 -0
- data/spec/integration/parser/parameter_defaults_spec.rb +336 -0
- data/spec/integration/parser/undef_param_spec.rb +8 -0
- data/spec/integration/provider/yumrepo_spec.rb +1 -1
- data/spec/integration/test/test_helper_spec.rb +28 -0
- data/spec/integration/transaction/report_spec.rb +16 -0
- data/spec/integration/transaction_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +194 -4
- data/spec/integration/type/package_spec.rb +5 -1
- data/spec/integration/type/tidy_spec.rb +21 -9
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/principal_spec.rb +201 -0
- data/spec/integration/util/windows/process_spec.rb +31 -0
- data/spec/{unit → integration}/util/windows/registry_spec.rb +91 -1
- data/spec/integration/util/windows/security_spec.rb +8 -8
- data/spec/integration/util/windows/user_spec.rb +1 -1
- data/spec/integration/util_spec.rb +49 -27
- data/spec/lib/puppet_spec/compiler.rb +17 -0
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/pops.rb +13 -0
- data/spec/shared_behaviours/iterative_functions.rb +1 -1
- data/spec/shared_contexts/types_setup.rb +96 -0
- data/spec/unit/agent_spec.rb +1 -0
- data/spec/unit/application/agent_spec.rb +10 -0
- data/spec/unit/application/apply_spec.rb +9 -0
- data/spec/unit/application/lookup_spec.rb +138 -28
- data/spec/unit/configurer/downloader_spec.rb +5 -5
- data/spec/unit/configurer_spec.rb +271 -39
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +182 -5
- data/spec/unit/data_providers/hiera_interpolation_spec.rb +57 -0
- data/spec/unit/defaults_spec.rb +15 -0
- data/spec/unit/environments_spec.rb +24 -4
- data/spec/unit/face/epp_face_spec.rb +2 -2
- data/spec/unit/face/parser_spec.rb +43 -2
- data/spec/unit/file_serving/http_metadata_spec.rb +85 -0
- data/spec/unit/file_serving/metadata_spec.rb +50 -0
- data/spec/unit/file_serving/terminus_selector_spec.rb +12 -2
- data/spec/unit/file_system_spec.rb +26 -0
- data/spec/unit/functions/assert_type_spec.rb +36 -2
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +17 -9
- data/spec/unit/functions/inline_epp_spec.rb +4 -4
- data/spec/unit/functions/lookup_spec.rb +88 -16
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/reverse_each_spec.rb +108 -0
- data/spec/unit/functions/step_spec.rb +113 -0
- data/spec/unit/functions/type_spec.rb +35 -0
- data/spec/unit/functions4_spec.rb +62 -6
- data/spec/unit/hiera/scope_spec.rb +5 -2
- data/spec/unit/indirector/catalog/compiler_spec.rb +705 -4
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
- data/spec/unit/indirector/indirection_spec.rb +1 -1
- data/spec/unit/indirector/json_spec.rb +1 -1
- data/spec/unit/info_service_spec.rb +94 -32
- data/spec/unit/module_spec.rb +14 -0
- data/spec/unit/module_tool/applications/builder_spec.rb +4 -4
- data/spec/unit/network/authstore_spec.rb +1 -1
- data/spec/unit/network/http/connection_spec.rb +1 -0
- data/spec/unit/network/http/pool_spec.rb +30 -0
- data/spec/unit/node_spec.rb +8 -0
- data/spec/unit/parser/compiler_spec.rb +16 -18
- data/spec/unit/parser/scope_spec.rb +28 -11
- data/spec/unit/pops/evaluator/access_ops_spec.rb +7 -7
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -2
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +4 -4
- data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +63 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +6 -0
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +53 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +127 -2
- data/spec/unit/pops/parser/lexer2_spec.rb +118 -3
- data/spec/unit/pops/parser/parse_calls_spec.rb +8 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -0
- data/spec/unit/pops/parser/parser_spec.rb +10 -0
- data/spec/unit/pops/parser/source_pos_adapter_spec.rb +26 -0
- data/spec/unit/pops/types/iterable_spec.rb +262 -0
- data/spec/unit/pops/types/recursion_guard_spec.rb +91 -0
- data/spec/unit/pops/types/type_acceptor_spec.rb +105 -0
- data/spec/unit/pops/types/type_asserter_spec.rb +43 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +275 -390
- data/spec/unit/pops/types/type_formatter_spec.rb +280 -0
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +152 -0
- data/spec/unit/pops/types/type_parser_spec.rb +58 -13
- data/spec/unit/pops/types/types_spec.rb +241 -0
- data/spec/unit/pops/validator/validator_spec.rb +159 -15
- data/spec/unit/provider/cron/parsed_spec.rb +1 -0
- data/spec/unit/provider/group/windows_adsi_spec.rb +8 -8
- data/spec/unit/provider/macauthorization_spec.rb +5 -2
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +14 -19
- data/spec/unit/provider/package/appdmg_spec.rb +3 -3
- data/spec/unit/provider/package/dnf_spec.rb +16 -0
- data/spec/unit/provider/package/pip3_spec.rb +60 -42
- data/spec/unit/provider/package/pip_spec.rb +88 -47
- data/spec/unit/provider/package/pkgdmg_spec.rb +18 -9
- data/spec/unit/provider/package/pkgng_spec.rb +4 -2
- data/spec/unit/provider/package/rpm_spec.rb +2 -25
- data/spec/unit/provider/package/yum_spec.rb +12 -1
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/debian_spec.rb +6 -24
- data/spec/unit/provider/service/init_spec.rb +11 -1
- data/spec/unit/provider/service/launchd_spec.rb +18 -25
- data/spec/unit/provider/service/systemd_spec.rb +25 -12
- data/spec/unit/provider/service/upstart_spec.rb +57 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
- data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
- data/spec/unit/provider/user/windows_adsi_spec.rb +5 -5
- data/spec/unit/provider/yumrepo/inifile_spec.rb +16 -0
- data/spec/unit/resource/capability_finder_spec.rb +28 -15
- data/spec/unit/resource/catalog_spec.rb +33 -1
- data/spec/unit/resource/type_spec.rb +149 -7
- data/spec/unit/resource_spec.rb +99 -50
- data/spec/unit/settings/environment_conf_spec.rb +18 -1
- data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
- data/spec/unit/transaction/report_spec.rb +27 -0
- data/spec/unit/transaction/resource_harness_spec.rb +0 -47
- data/spec/unit/transaction_spec.rb +5 -0
- data/spec/unit/type/file/checksum_spec.rb +6 -0
- data/spec/unit/type/file/checksum_value_spec.rb +286 -0
- data/spec/unit/type/file/content_spec.rb +12 -193
- data/spec/unit/type/file/source_spec.rb +211 -119
- data/spec/unit/type/file_spec.rb +133 -34
- data/spec/unit/type/interface_spec.rb +32 -0
- data/spec/unit/type/macauthorization_spec.rb +4 -1
- data/spec/unit/type/yumrepo_spec.rb +2 -2
- data/spec/unit/util/filetype_spec.rb +1 -1
- data/spec/unit/util/http_proxy_spec.rb +2 -2
- data/spec/unit/util/log/destinations_spec.rb +0 -2
- data/spec/unit/util/logging_spec.rb +69 -0
- data/spec/unit/util/multi_match_spec.rb +39 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +253 -216
- data/spec/unit/util/network_device/transport/telnet_spec.rb +60 -58
- data/spec/unit/util/plist_spec.rb +110 -0
- data/spec/unit/util/resource_template_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -3
- data/spec/unit/util/windows/adsi_spec.rb +46 -38
- data/spec/unit/util/windows/api_types_spec.rb +42 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +3 -3
- data/spec/unit/util/windows/sid_spec.rb +48 -11
- data/spec/unit/util_spec.rb +123 -13
- data/tasks/cfpropertylist.rake +15 -0
- metadata +3342 -3195
- data/lib/puppet/vendor/load_plist.rb +0 -1
- data/lib/puppet/vendor/plist/CHANGELOG +0 -82
- data/lib/puppet/vendor/plist/MIT-LICENSE +0 -21
- data/lib/puppet/vendor/plist/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/plist/README +0 -36
- data/lib/puppet/vendor/plist/Rakefile +0 -144
- data/lib/puppet/vendor/plist/docs/USAGE +0 -104
- data/lib/puppet/vendor/plist/docs/jamis-template.rb +0 -591
- data/lib/puppet/vendor/plist/lib/plist/generator.rb +0 -224
- data/lib/puppet/vendor/plist/lib/plist/parser.rb +0 -225
- data/lib/puppet/vendor/plist/lib/plist.rb +0 -22
- data/lib/puppet/vendor/plist/test/assets/AlbumData.xml +0 -203
- data/lib/puppet/vendor/plist/test/assets/Cookies.plist +0 -104
- data/lib/puppet/vendor/plist/test/assets/commented.plist +0 -9
- data/lib/puppet/vendor/plist/test/assets/example_data.bin +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.jpg +0 -0
- data/lib/puppet/vendor/plist/test/assets/example_data.plist +0 -259
- data/lib/puppet/vendor/plist/test/assets/test_data_elements.plist +0 -24
- data/lib/puppet/vendor/plist/test/assets/test_empty_key.plist +0 -13
- data/lib/puppet/vendor/plist/test/test_data_elements.rb +0 -115
- data/lib/puppet/vendor/plist/test/test_generator.rb +0 -59
- data/lib/puppet/vendor/plist/test/test_generator_basic_types.rb +0 -58
- data/lib/puppet/vendor/plist/test/test_generator_collections.rb +0 -82
- data/lib/puppet/vendor/plist/test/test_parser.rb +0 -90
- /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{usee → modules/usee}/lib/puppet/functions/usee/callee.rb +0 -0
- /data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/{user → modules/user}/lib/puppet/functions/user/caller.rb +0 -0
|
@@ -1,16 +1,18 @@
|
|
|
1
|
+
module Puppet::Pops
|
|
2
|
+
module Evaluator
|
|
1
3
|
# A module with bindings between the new evaluator and the 3x runtime.
|
|
2
4
|
# The intention is to separate all calls into scope, compiler, resource, etc. in this module
|
|
3
5
|
# to make it easier to later refactor the evaluator for better implementations of the 3x classes.
|
|
4
6
|
#
|
|
5
7
|
# @api private
|
|
6
|
-
module
|
|
8
|
+
module Runtime3Support
|
|
7
9
|
|
|
8
10
|
NAME_SPACE_SEPARATOR = '::'.freeze
|
|
9
11
|
|
|
10
12
|
# Fails the evaluation of _semantic_ with a given issue.
|
|
11
13
|
#
|
|
12
|
-
# @param issue [
|
|
13
|
-
# @param semantic [
|
|
14
|
+
# @param issue [Issue] the issue to report
|
|
15
|
+
# @param semantic [ModelPopsObject] the object for which evaluation failed in some way. Used to determine origin.
|
|
14
16
|
# @param options [Hash] hash of optional named data elements for the given issue
|
|
15
17
|
# @return [!] this method does not return
|
|
16
18
|
# @raise [Puppet::ParseError] an evaluation error initialized from the arguments (TODO: Change to EvaluationError?)
|
|
@@ -24,8 +26,8 @@ module Puppet::Pops::Evaluator::Runtime3Support
|
|
|
24
26
|
# Optionally (based on severity) Fails the evaluation of _semantic_ with a given issue
|
|
25
27
|
# If the given issue is configured to be of severity < :error it is only reported, and the function returns.
|
|
26
28
|
#
|
|
27
|
-
# @param issue [
|
|
28
|
-
# @param semantic [
|
|
29
|
+
# @param issue [Issue] the issue to report
|
|
30
|
+
# @param semantic [ModelPopsObject] the object for which evaluation failed in some way. Used to determine origin.
|
|
29
31
|
# @param options [Hash] hash of optional named data elements for the given issue
|
|
30
32
|
# @return [!] this method does not return
|
|
31
33
|
# @raise [Puppet::ParseError] an evaluation error initialized from the arguments (TODO: Change to EvaluationError?)
|
|
@@ -59,11 +61,11 @@ module Puppet::Pops::Evaluator::Runtime3Support
|
|
|
59
61
|
#
|
|
60
62
|
if scope.bound?(name)
|
|
61
63
|
if Puppet::Parser::Scope::RESERVED_VARIABLE_NAMES.include?(name)
|
|
62
|
-
fail(
|
|
64
|
+
fail(Issues::ILLEGAL_RESERVED_ASSIGNMENT, o, {:name => name} )
|
|
63
65
|
elsif name == "server_facts" && Puppet[:trusted_server_facts]
|
|
64
|
-
fail(
|
|
66
|
+
fail(Issues::ILLEGAL_RESERVED_ASSIGNMENT, o, {:name => name} )
|
|
65
67
|
else
|
|
66
|
-
fail(
|
|
68
|
+
fail(Issues::ILLEGAL_REASSIGNMENT, o, {:name => name} )
|
|
67
69
|
end
|
|
68
70
|
end
|
|
69
71
|
scope.setvar(name, value)
|
|
@@ -86,8 +88,9 @@ module Puppet::Pops::Evaluator::Runtime3Support
|
|
|
86
88
|
# if not set by a match expression.
|
|
87
89
|
#
|
|
88
90
|
unless name =~ Puppet::Pops::Patterns::NUMERIC_VAR_NAME
|
|
89
|
-
|
|
91
|
+
optionally_fail(Puppet::Pops::Issues::UNKNOWN_VARIABLE, o, {:name => name})
|
|
90
92
|
end
|
|
93
|
+
nil # in case unknown variable is configured as a warning
|
|
91
94
|
end
|
|
92
95
|
|
|
93
96
|
# Returns true if the variable of the given name is set in the given most nested scope. True is returned even if
|
|
@@ -136,10 +139,8 @@ module Puppet::Pops::Evaluator::Runtime3Support
|
|
|
136
139
|
end
|
|
137
140
|
|
|
138
141
|
def set_scope_nesting_level(scope, level)
|
|
139
|
-
#
|
|
140
|
-
|
|
141
|
-
#
|
|
142
|
-
scope.unset_ephemeral_var(level)
|
|
142
|
+
# 3x uses this method to reset the level,
|
|
143
|
+
scope.pop_ephemerals(level)
|
|
143
144
|
end
|
|
144
145
|
|
|
145
146
|
# Adds a relationship between the given `source` and `target` of the given `relationship_type`
|
|
@@ -196,20 +197,20 @@ module Puppet::Pops::Evaluator::Runtime3Support
|
|
|
196
197
|
# And if that is not enough, a source/target may be a Collector (a baked query that will be evaluated by the
|
|
197
198
|
# compiler - it is simply passed through here for processing by the compiler at the right time).
|
|
198
199
|
#
|
|
199
|
-
if source.is_a?(
|
|
200
|
+
if source.is_a?(Collectors::AbstractCollector)
|
|
200
201
|
# use verbatim - behavior defined by 3x
|
|
201
202
|
source_resource = source
|
|
202
203
|
else
|
|
203
204
|
# transform into the wonderful String representation in 3x
|
|
204
|
-
type, title =
|
|
205
|
+
type, title = Runtime3Converter.instance.catalog_type_to_split_type_title(source)
|
|
205
206
|
source_resource = Puppet::Resource.new(type, title)
|
|
206
207
|
end
|
|
207
|
-
if target.is_a?(
|
|
208
|
+
if target.is_a?(Collectors::AbstractCollector)
|
|
208
209
|
# use verbatim - behavior defined by 3x
|
|
209
210
|
target_resource = target
|
|
210
211
|
else
|
|
211
212
|
# transform into the wonderful String representation in 3x
|
|
212
|
-
type, title =
|
|
213
|
+
type, title = Runtime3Converter.instance.catalog_type_to_split_type_title(target)
|
|
213
214
|
target_resource = Puppet::Resource.new(type, title)
|
|
214
215
|
end
|
|
215
216
|
# Add the relationship to the compiler for later evaluation.
|
|
@@ -225,8 +226,8 @@ module Puppet::Pops::Evaluator::Runtime3Support
|
|
|
225
226
|
# @return [Numeric] value `v` converted to Numeric.
|
|
226
227
|
#
|
|
227
228
|
def coerce_numeric(v, o, scope)
|
|
228
|
-
unless n =
|
|
229
|
-
fail(
|
|
229
|
+
unless n = Utils.to_n(v)
|
|
230
|
+
fail(Issues::NOT_NUMERIC, o, {:value => v})
|
|
230
231
|
end
|
|
231
232
|
n
|
|
232
233
|
end
|
|
@@ -248,7 +249,9 @@ module Puppet::Pops::Evaluator::Runtime3Support
|
|
|
248
249
|
# this is done from the perspective of the environment.
|
|
249
250
|
loader = loaders.private_environment_loader
|
|
250
251
|
if loader && func = loader.load(:function, name)
|
|
251
|
-
|
|
252
|
+
Puppet::Util::Profiler.profile(name, [:functions, name]) do
|
|
253
|
+
return func.call(scope, *args, &block)
|
|
254
|
+
end
|
|
252
255
|
end
|
|
253
256
|
|
|
254
257
|
# Call via 3x API if function exists there
|
|
@@ -256,28 +259,25 @@ module Puppet::Pops::Evaluator::Runtime3Support
|
|
|
256
259
|
|
|
257
260
|
# Arguments must be mapped since functions are unaware of the new and magical creatures in 4x.
|
|
258
261
|
# NOTE: Passing an empty string last converts nil/:undef to empty string
|
|
259
|
-
mapped_args =
|
|
262
|
+
mapped_args = Runtime3Converter.map_args(args, scope, '')
|
|
260
263
|
result = scope.send("function_#{name}", mapped_args, &block)
|
|
261
264
|
# Prevent non r-value functions from leaking their result (they are not written to care about this)
|
|
262
265
|
Puppet::Parser::Functions.rvalue?(name) ? result : nil
|
|
263
266
|
end
|
|
264
267
|
|
|
265
268
|
def call_function(name, args, o, scope, &block)
|
|
266
|
-
|
|
267
|
-
loaders = scope.compiler.loaders
|
|
268
|
-
# find the loader that loaded the code, or use the private_environment_loader (sees env + all modules)
|
|
269
|
-
adapter = Puppet::Pops::Utils.find_adapter(o, Puppet::Pops::Adapters::LoaderAdapter)
|
|
270
|
-
loader = adapter.nil? ? loaders.private_environment_loader : adapter.loader
|
|
269
|
+
loader = Adapters::LoaderAdapter.loader_for_model_object(o, scope)
|
|
271
270
|
if loader && func = loader.load(:function, name)
|
|
272
|
-
|
|
271
|
+
Puppet::Util::Profiler.profile(name, [:functions, name]) do
|
|
272
|
+
return func.call(scope, *args, &block)
|
|
273
|
+
end
|
|
273
274
|
end
|
|
274
|
-
|
|
275
275
|
# Call via 3x API if function exists there
|
|
276
|
-
fail(
|
|
276
|
+
fail(Issues::UNKNOWN_FUNCTION, o, {:name => name}) unless Puppet::Parser::Functions.function(name)
|
|
277
277
|
|
|
278
278
|
# Arguments must be mapped since functions are unaware of the new and magical creatures in 4x.
|
|
279
279
|
# NOTE: Passing an empty string last converts nil/:undef to empty string
|
|
280
|
-
mapped_args =
|
|
280
|
+
mapped_args = Runtime3Converter.map_args(args, scope, '')
|
|
281
281
|
result = scope.send("function_#{name}", mapped_args, &block)
|
|
282
282
|
# Prevent non r-value functions from leaking their result (they are not written to care about this)
|
|
283
283
|
Puppet::Parser::Functions.rvalue?(name) ? result : nil
|
|
@@ -295,7 +295,7 @@ module Puppet::Pops::Evaluator::Runtime3Support
|
|
|
295
295
|
end
|
|
296
296
|
|
|
297
297
|
def convert(value, scope, undef_value)
|
|
298
|
-
|
|
298
|
+
Runtime3Converter.convert(value, scope, undef_value)
|
|
299
299
|
end
|
|
300
300
|
|
|
301
301
|
CLASS_STRING = 'class'.freeze
|
|
@@ -306,6 +306,7 @@ module Puppet::Pops::Evaluator::Runtime3Support
|
|
|
306
306
|
# a proper Issue. Now the result is "Error while evaluating a Resource Statement" with the message
|
|
307
307
|
# from the raised exception. (It may be good enough).
|
|
308
308
|
|
|
309
|
+
|
|
309
310
|
# resolve in scope.
|
|
310
311
|
fully_qualified_type, resource_titles = scope.resolve_type_and_titles(type_name, resource_titles)
|
|
311
312
|
|
|
@@ -371,8 +372,8 @@ module Puppet::Pops::Evaluator::Runtime3Support
|
|
|
371
372
|
# A *=> results in an array of arrays
|
|
372
373
|
evaluated_parameters = evaluated_parameters.flatten
|
|
373
374
|
evaluated_resources.each do |r|
|
|
374
|
-
unless r.is_a?(
|
|
375
|
-
fail(
|
|
375
|
+
unless r.is_a?(Types::PResourceType) && r.type_name != 'class'
|
|
376
|
+
fail(Issues::ILLEGAL_OVERRIDEN_TYPE, o, {:actual => r} )
|
|
376
377
|
end
|
|
377
378
|
resource = Puppet::Parser::Resource.new(
|
|
378
379
|
r.type_name, r.title,
|
|
@@ -464,27 +465,27 @@ module Puppet::Pops::Evaluator::Runtime3Support
|
|
|
464
465
|
end
|
|
465
466
|
|
|
466
467
|
def extract_file_line(o)
|
|
467
|
-
source_pos =
|
|
468
|
+
source_pos = Utils.find_closest_positioned(o)
|
|
468
469
|
return [nil, -1] unless source_pos
|
|
469
470
|
[source_pos.locator.file, source_pos.line]
|
|
470
471
|
end
|
|
471
472
|
|
|
472
473
|
def find_closest_positioned(o)
|
|
473
|
-
return nil if o.nil? || o.is_a?(
|
|
474
|
-
o.offset.nil? ? find_closest_positioned(o.eContainer) :
|
|
474
|
+
return nil if o.nil? || o.is_a?(Model::Program)
|
|
475
|
+
o.offset.nil? ? find_closest_positioned(o.eContainer) : Adapters::SourcePosAdapter.adapt(o)
|
|
475
476
|
end
|
|
476
477
|
|
|
477
478
|
# Creates a diagnostic producer
|
|
478
479
|
def diagnostic_producer
|
|
479
|
-
|
|
480
|
+
Validation::DiagnosticProducer.new(
|
|
480
481
|
ExceptionRaisingAcceptor.new(), # Raises exception on all issues
|
|
481
482
|
SeverityProducer.new(), # All issues are errors
|
|
482
|
-
|
|
483
|
+
Model::ModelLabelProvider.new())
|
|
483
484
|
end
|
|
484
485
|
|
|
485
486
|
# Configure the severity of failures
|
|
486
|
-
class SeverityProducer <
|
|
487
|
-
Issues =
|
|
487
|
+
class SeverityProducer < Validation::SeverityProducer
|
|
488
|
+
Issues = Issues
|
|
488
489
|
|
|
489
490
|
def initialize
|
|
490
491
|
super
|
|
@@ -496,6 +497,8 @@ module Puppet::Pops::Evaluator::Runtime3Support
|
|
|
496
497
|
p[Issues::EMPTY_RESOURCE_SPECIALIZATION] = :ignore
|
|
497
498
|
end
|
|
498
499
|
|
|
500
|
+
p[Issues::UNKNOWN_VARIABLE] = Puppet[:strict_variables] ? :error : :warning
|
|
501
|
+
|
|
499
502
|
# Store config issues, ignore or warning
|
|
500
503
|
p[Issues::RT_NO_STORECONFIGS_EXPORT] = Puppet[:storeconfigs] ? :ignore : :warning
|
|
501
504
|
p[Issues::RT_NO_STORECONFIGS] = Puppet[:storeconfigs] ? :ignore : :warning
|
|
@@ -503,10 +506,10 @@ module Puppet::Pops::Evaluator::Runtime3Support
|
|
|
503
506
|
end
|
|
504
507
|
|
|
505
508
|
# An acceptor of diagnostics that immediately raises an exception.
|
|
506
|
-
class ExceptionRaisingAcceptor <
|
|
509
|
+
class ExceptionRaisingAcceptor < Validation::Acceptor
|
|
507
510
|
def accept(diagnostic)
|
|
508
511
|
super
|
|
509
|
-
|
|
512
|
+
IssueReporter.assert_and_report(self, {
|
|
510
513
|
:message => "Evaluation Error:",
|
|
511
514
|
:emit_warnings => true, # log warnings
|
|
512
515
|
:exception_class => Puppet::PreformattedError
|
|
@@ -520,3 +523,5 @@ module Puppet::Pops::Evaluator::Runtime3Support
|
|
|
520
523
|
class EvaluationError < StandardError
|
|
521
524
|
end
|
|
522
525
|
end
|
|
526
|
+
end
|
|
527
|
+
end
|
|
@@ -89,13 +89,17 @@ class Puppet::Pops::Functions::Function
|
|
|
89
89
|
raise ArgumentError, "Function #{self.class.name}(): cannot call function '#{function_name}' - no loader specified" unless the_loader
|
|
90
90
|
|
|
91
91
|
func = the_loader.load(:function, function_name)
|
|
92
|
-
|
|
92
|
+
if func
|
|
93
|
+
Puppet::Util::Profiler.profile(function_name, [:functions, function_name]) do
|
|
94
|
+
return func.call(scope, *args, &block)
|
|
95
|
+
end
|
|
96
|
+
end
|
|
93
97
|
|
|
94
98
|
# Check if a 3x function is present. Raise a generic error if it's not to allow upper layers to fill in the details
|
|
95
99
|
# about where in a puppet manifest this error originates. (Such information is not available here).
|
|
96
100
|
loader_scope = closure_scope
|
|
97
101
|
func_3x = Puppet::Parser::Functions.function(function_name, loader_scope.environment) if loader_scope.is_a?(Puppet::Parser::Scope)
|
|
98
|
-
raise ArgumentError, "Function #{self.class.name}():
|
|
102
|
+
raise ArgumentError, "Function #{self.class.name}(): Unknown function: '#{function_name}'" unless func_3x
|
|
99
103
|
|
|
100
104
|
# Call via 3x API
|
|
101
105
|
# Arguments must be mapped since functions are unaware of the new and magical creatures in 4x.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
module Puppet::Pops
|
|
2
|
+
class IssueReporter
|
|
2
3
|
|
|
3
|
-
# @param acceptor [
|
|
4
|
+
# @param acceptor [Validation::Acceptor] the acceptor containing reported issues
|
|
4
5
|
# @option options [String] :message (nil) A message text to use as prefix in
|
|
5
6
|
# a single Error message
|
|
6
7
|
# @option options [Boolean] :emit_warnings (false) whether warnings should be emitted
|
|
@@ -23,7 +24,7 @@ class Puppet::Pops::IssueReporter
|
|
|
23
24
|
# If there are warnings output them
|
|
24
25
|
warnings = acceptor.warnings
|
|
25
26
|
if emit_warnings && warnings.size > 0
|
|
26
|
-
formatter =
|
|
27
|
+
formatter = Validation::DiagnosticFormatterPuppetStyle.new
|
|
27
28
|
emitted_w = 0
|
|
28
29
|
emitted_dw = 0
|
|
29
30
|
acceptor.warnings.each do |w|
|
|
@@ -48,7 +49,7 @@ class Puppet::Pops::IssueReporter
|
|
|
48
49
|
unless emit_errors
|
|
49
50
|
raise emit_exception.new(emit_message)
|
|
50
51
|
end
|
|
51
|
-
formatter =
|
|
52
|
+
formatter = Validation::DiagnosticFormatterPuppetStyle.new
|
|
52
53
|
if errors.size == 1 || max_errors <= 1
|
|
53
54
|
# raise immediately
|
|
54
55
|
exception = create_exception(emit_exception, emit_message, formatter, errors[0])
|
|
@@ -111,3 +112,4 @@ class Puppet::Pops::IssueReporter
|
|
|
111
112
|
end
|
|
112
113
|
private_class_method :log_message
|
|
113
114
|
end
|
|
115
|
+
end
|
data/lib/puppet/pops/issues.rb
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# Defines classes to deal with issues, and message formatting and defines constants with Issues.
|
|
2
2
|
# @api public
|
|
3
3
|
#
|
|
4
|
-
module Puppet::Pops
|
|
4
|
+
module Puppet::Pops
|
|
5
|
+
module Issues
|
|
5
6
|
# Describes an issue, and can produce a message for an occurrence of the issue.
|
|
6
7
|
#
|
|
7
8
|
class Issue
|
|
@@ -48,7 +49,7 @@ module Puppet::Pops::Issues
|
|
|
48
49
|
# Evaluate the message block in the msg data's binding
|
|
49
50
|
msgdata.format(hash, &message_block)
|
|
50
51
|
rescue StandardError => e
|
|
51
|
-
|
|
52
|
+
MessageData
|
|
52
53
|
raise RuntimeError, "Error while reporting issue: #{issue_code}. #{e.message}", caller
|
|
53
54
|
end
|
|
54
55
|
end
|
|
@@ -73,19 +74,30 @@ module Puppet::Pops::Issues
|
|
|
73
74
|
instance_eval &block
|
|
74
75
|
end
|
|
75
76
|
|
|
76
|
-
#
|
|
77
|
-
# If given an argument,
|
|
78
|
-
#
|
|
77
|
+
# Obtains the label provider given as a key `:label` in the hash passed to #format. The label provider is
|
|
78
|
+
# return if no arguments are given. If given an argument, returns the result of calling #label on the label
|
|
79
|
+
# provider.
|
|
79
80
|
#
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
# @param args [Object] one object to obtain a label for or zero arguments to obtain the label provider
|
|
82
|
+
# @return [LabelProvider,String] the label provider or label depending on if an argument is given or not
|
|
83
|
+
# @raise [Puppet::Error] if no label provider is found
|
|
84
|
+
def label(*args)
|
|
85
|
+
args.empty? ? label_provider : label_provider.label(args[0])
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Returns the label provider given as key `:label` in the hash passed to #format.
|
|
89
|
+
# @return [LabelProvider] the label provider
|
|
90
|
+
# @raise [Puppet::Error] if no label provider is found
|
|
91
|
+
def label_provider
|
|
92
|
+
label_provider = @data[:label]
|
|
93
|
+
raise Puppet::Error, 'Label provider key :label must be set to produce the text of the message!' unless label_provider
|
|
94
|
+
label_provider
|
|
83
95
|
end
|
|
84
96
|
|
|
85
97
|
# Returns the label provider given as a key in the hash passed to #format.
|
|
86
98
|
#
|
|
87
99
|
def semantic
|
|
88
|
-
raise
|
|
100
|
+
raise Puppet::Error, 'Label provider key :semantic must be set to produce the text of the message!' unless @data[:semantic]
|
|
89
101
|
@data[:semantic]
|
|
90
102
|
end
|
|
91
103
|
end
|
|
@@ -151,6 +163,10 @@ module Puppet::Pops::Issues
|
|
|
151
163
|
"Classes, definitions, and nodes may only appear at toplevel or inside other classes"
|
|
152
164
|
end
|
|
153
165
|
|
|
166
|
+
NOT_ABSOLUTE_TOP_LEVEL = hard_issue :NOT_ABSOLUTE_TOP_LEVEL do
|
|
167
|
+
"#{label.a_an_uc(semantic)} may only appear at toplevel"
|
|
168
|
+
end
|
|
169
|
+
|
|
154
170
|
CROSS_SCOPE_ASSIGNMENT = hard_issue :CROSS_SCOPE_ASSIGNMENT, :name do
|
|
155
171
|
"Illegal attempt to assign to '#{name}'. Cannot assign to variables in other namespaces"
|
|
156
172
|
end
|
|
@@ -162,7 +178,7 @@ module Puppet::Pops::Issues
|
|
|
162
178
|
|
|
163
179
|
# Variables are immutable, cannot reassign in the same assignment scope
|
|
164
180
|
ILLEGAL_REASSIGNMENT = hard_issue :ILLEGAL_REASSIGNMENT, :name do
|
|
165
|
-
if
|
|
181
|
+
if Validation::Checker4_0::RESERVED_PARAMETERS[name]
|
|
166
182
|
"Cannot reassign built in (or already assigned) variable '$#{name}'"
|
|
167
183
|
else
|
|
168
184
|
"Cannot reassign variable '$#{name}'"
|
|
@@ -343,6 +359,12 @@ module Puppet::Pops::Issues
|
|
|
343
359
|
"Attempt to use unsupported range in #{label.a_an(semantic)}, #{count} values given for max 1"
|
|
344
360
|
end
|
|
345
361
|
|
|
362
|
+
# Issues when expressions that are not implemented or activated in the current version are used.
|
|
363
|
+
#
|
|
364
|
+
UNSUPPORTED_EXPRESSION = issue :UNSUPPORTED_EXPRESSION do
|
|
365
|
+
"Expressions of type #{label.a_an(semantic)} are not supported in this version of Puppet"
|
|
366
|
+
end
|
|
367
|
+
|
|
346
368
|
ILLEGAL_RELATIONSHIP_OPERAND_TYPE = issue :ILLEGAL_RELATIONSHIP_OPERAND_TYPE, :operand do
|
|
347
369
|
"Illegal relationship operand, can not form a relationship with #{label.a_an(operand)}. A Catalog type is required."
|
|
348
370
|
end
|
|
@@ -484,7 +506,7 @@ module Puppet::Pops::Issues
|
|
|
484
506
|
end
|
|
485
507
|
|
|
486
508
|
DUPLICATE_ATTRIBUTE = issue :DUPLICATE_ATTRIBUE, :attribute do
|
|
487
|
-
"The attribute '#{attribute}' has already been set
|
|
509
|
+
"The attribute '#{attribute}' has already been set"
|
|
488
510
|
end
|
|
489
511
|
|
|
490
512
|
MISSING_TITLE = hard_issue :MISSING_TITLE do
|
|
@@ -536,6 +558,10 @@ module Puppet::Pops::Issues
|
|
|
536
558
|
"This #{label.label(semantic)} has no effect. A value was produced and then forgotten (one or more preceding expressions may have the wrong form)"
|
|
537
559
|
end
|
|
538
560
|
|
|
561
|
+
RESOURCE_WITHOUT_TITLE = issue :RESOURCE_WITHOUT_TITLE, :name do
|
|
562
|
+
"This expression is invalid. Did you try declaring a '#{name}' resource without a title?"
|
|
563
|
+
end
|
|
564
|
+
|
|
539
565
|
IDEM_NOT_ALLOWED_LAST = hard_issue :IDEM_NOT_ALLOWED_LAST, :container do
|
|
540
566
|
"This #{label.label(semantic)} has no effect. #{label.a_an_uc(container)} can not end with a value-producing expression without other effect"
|
|
541
567
|
end
|
|
@@ -564,6 +590,10 @@ module Puppet::Pops::Issues
|
|
|
564
590
|
"Resource Override can only operate on resources, got: #{label.label(actual)}"
|
|
565
591
|
end
|
|
566
592
|
|
|
593
|
+
DUPLICATE_PARAMETER = hard_issue :DUPLICATE_PARAMETER, :param_name do
|
|
594
|
+
"The parameter '#{param_name}' is declared more than once in the parameter list"
|
|
595
|
+
end
|
|
596
|
+
|
|
567
597
|
RESERVED_PARAMETER = hard_issue :RESERVED_PARAMETER, :container, :param_name do
|
|
568
598
|
"The parameter $#{param_name} redefines a built in parameter in #{label.the(container)}"
|
|
569
599
|
end
|
|
@@ -632,6 +662,10 @@ module Puppet::Pops::Issues
|
|
|
632
662
|
"Unclosed quote after #{after} followed by '#{followed_by}'"
|
|
633
663
|
end
|
|
634
664
|
|
|
665
|
+
UNCLOSED_MLCOMMENT = hard_issue :UNCLOSED_MLCOMMENT do
|
|
666
|
+
'Unclosed multiline comment'
|
|
667
|
+
end
|
|
668
|
+
|
|
635
669
|
EPP_INTERNAL_ERROR = hard_issue :EPP_INTERNAL_ERROR, :error do
|
|
636
670
|
"Internal error: #{error}"
|
|
637
671
|
end
|
|
@@ -671,4 +705,9 @@ module Puppet::Pops::Issues
|
|
|
671
705
|
HEREDOC_MULTIPLE_AT_ESCAPES = hard_issue :HEREDOC_MULTIPLE_AT_ESCAPES, :escapes do
|
|
672
706
|
"An escape char for @() may only appear once. Got '#{escapes.join(', ')}'"
|
|
673
707
|
end
|
|
708
|
+
|
|
709
|
+
ILLEGAL_BOM = hard_issue :ILLEGAL_BOM, :format_name, :bytes do
|
|
710
|
+
"Illegal #{format_name} Byte Order mark at beginning of input: #{bytes} - remove these from the puppet source"
|
|
711
|
+
end
|
|
712
|
+
end
|
|
674
713
|
end
|
|
@@ -49,7 +49,7 @@ class Puppet::Pops::Loader::BaseLoader < Puppet::Pops::Loader::Loader
|
|
|
49
49
|
# @api private
|
|
50
50
|
#
|
|
51
51
|
def set_entry(typed_name, value, origin = nil)
|
|
52
|
-
if entry = @named_values[typed_name] then
|
|
52
|
+
if entry = @named_values[typed_name] then fail_redefine(entry); end
|
|
53
53
|
@named_values[typed_name] = Puppet::Pops::Loader::Loader::NamedEntry.new(typed_name, value, origin)
|
|
54
54
|
end
|
|
55
55
|
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
class Puppet::Pops::Loader::Loader
|
|
23
23
|
|
|
24
24
|
# Describes the kinds of things that loaders can load
|
|
25
|
-
LOADABLE_KINDS = [:func_4x, :func_4xpp].freeze
|
|
25
|
+
LOADABLE_KINDS = [:func_4x, :func_4xpp, :type_pp].freeze
|
|
26
26
|
|
|
27
27
|
# Produces the value associated with the given name if already loaded, or available for loading
|
|
28
28
|
# by this loader, one of its parents, or other loaders visible to this loader.
|
|
@@ -23,6 +23,8 @@ module Puppet::Pops::Loader::LoaderPaths
|
|
|
23
23
|
result << FunctionPathPP.new(loader)
|
|
24
24
|
end
|
|
25
25
|
# When wanted also add FunctionPath3x to load 3x functions
|
|
26
|
+
when :type
|
|
27
|
+
result << TypePathPP.new(loader) if loader.loadables.include?(:type_pp)
|
|
26
28
|
else
|
|
27
29
|
# unknown types, simply produce an empty result; no paths to check, nothing to find... move along...
|
|
28
30
|
[]
|
|
@@ -147,6 +149,19 @@ module Puppet::Pops::Loader::LoaderPaths
|
|
|
147
149
|
end
|
|
148
150
|
end
|
|
149
151
|
|
|
152
|
+
class TypePathPP < PuppetSmartPath
|
|
153
|
+
# Navigate to directory where 'lib' is, then down again
|
|
154
|
+
TYPE_PATH_PP = File.join('types')
|
|
155
|
+
|
|
156
|
+
def relative_path
|
|
157
|
+
TYPE_PATH_PP
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def instantiator()
|
|
161
|
+
Puppet::Pops::Loader::TypeDefinitionInstantiator
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
150
165
|
# SmartPaths
|
|
151
166
|
# ===
|
|
152
167
|
# Holds effective SmartPath instances per type
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
module Puppet::Pops
|
|
2
|
+
module Loader
|
|
2
3
|
# =ModuleLoaders
|
|
3
4
|
# A ModuleLoader loads items from a single module.
|
|
4
5
|
# The ModuleLoaders (ruby) module contains various such loaders. There is currently one concrete
|
|
@@ -14,12 +15,12 @@
|
|
|
14
15
|
# internal layout etc.)
|
|
15
16
|
#
|
|
16
17
|
# A module loader is also not aware of the mapping of name to relative paths - this is performed by the
|
|
17
|
-
# included module
|
|
18
|
+
# included module PathBasedInstantatorConfig which knows about the map from type/name to
|
|
18
19
|
# relative path, and the logic that can instantiate what is expected to be found in the content of that path.
|
|
19
20
|
#
|
|
20
21
|
# @api private
|
|
21
22
|
#
|
|
22
|
-
module
|
|
23
|
+
module ModuleLoaders
|
|
23
24
|
def self.system_loader_from(parent_loader, loaders)
|
|
24
25
|
# Puppet system may be installed in a fixed location via RPM, installed as a Gem, via source etc.
|
|
25
26
|
# The only way to find this across the different ways puppet can be installed is
|
|
@@ -27,7 +28,7 @@ module Puppet::Pops::Loader::ModuleLoaders
|
|
|
27
28
|
# puppet.
|
|
28
29
|
#
|
|
29
30
|
puppet_lib = File.join(File.dirname(__FILE__), '../../..')
|
|
30
|
-
|
|
31
|
+
ModuleLoaders::FileBased.new(parent_loader,
|
|
31
32
|
loaders,
|
|
32
33
|
nil,
|
|
33
34
|
puppet_lib, # may or may not have a 'lib' above 'puppet'
|
|
@@ -37,7 +38,7 @@ module Puppet::Pops::Loader::ModuleLoaders
|
|
|
37
38
|
end
|
|
38
39
|
|
|
39
40
|
def self.module_loader_from(parent_loader, loaders, module_name, module_path)
|
|
40
|
-
|
|
41
|
+
ModuleLoaders::FileBased.new(parent_loader,
|
|
41
42
|
loaders,
|
|
42
43
|
module_name,
|
|
43
44
|
File.join(module_path, 'lib'),
|
|
@@ -45,7 +46,7 @@ module Puppet::Pops::Loader::ModuleLoaders
|
|
|
45
46
|
)
|
|
46
47
|
end
|
|
47
48
|
|
|
48
|
-
class AbstractPathBasedModuleLoader <
|
|
49
|
+
class AbstractPathBasedModuleLoader < BaseLoader
|
|
49
50
|
|
|
50
51
|
# The name of the module, or nil, if this is a global "component"
|
|
51
52
|
attr_reader :module_name
|
|
@@ -64,7 +65,7 @@ module Puppet::Pops::Loader::ModuleLoaders
|
|
|
64
65
|
attr_accessor :private_loader
|
|
65
66
|
|
|
66
67
|
# Initialize a kind of ModuleLoader for one module
|
|
67
|
-
# @param parent_loader [
|
|
68
|
+
# @param parent_loader [Loader] loader with higher priority
|
|
68
69
|
# @param module_name [String] the name of the module (non qualified name), may be nil for a global "component"
|
|
69
70
|
# @param path [String] the path to the root of the module (semantics defined by subclass)
|
|
70
71
|
# @param loader_name [String] a name that is used for human identification (useful when module_name is nil)
|
|
@@ -74,7 +75,7 @@ module Puppet::Pops::Loader::ModuleLoaders
|
|
|
74
75
|
|
|
75
76
|
@module_name = module_name
|
|
76
77
|
@path = path
|
|
77
|
-
@smart_paths =
|
|
78
|
+
@smart_paths = LoaderPaths::SmartPaths.new(self)
|
|
78
79
|
@loaders = loaders
|
|
79
80
|
@loadables = loadables
|
|
80
81
|
unless (loadables - LOADABLE_KINDS).empty?
|
|
@@ -87,8 +88,8 @@ module Puppet::Pops::Loader::ModuleLoaders
|
|
|
87
88
|
end
|
|
88
89
|
|
|
89
90
|
# Finds typed/named entity in this module
|
|
90
|
-
# @param typed_name [
|
|
91
|
-
# @return [
|
|
91
|
+
# @param typed_name [TypedName] the type/name to find
|
|
92
|
+
# @return [Loader::NamedEntry, nil found/created entry, or nil if not found
|
|
92
93
|
#
|
|
93
94
|
def find(typed_name)
|
|
94
95
|
# Assume it is a global name, and that all parts of the name should be used when looking up
|
|
@@ -115,6 +116,7 @@ module Puppet::Pops::Loader::ModuleLoaders
|
|
|
115
116
|
case typed_name.type
|
|
116
117
|
when :function
|
|
117
118
|
when :resource_type
|
|
119
|
+
when :type
|
|
118
120
|
else
|
|
119
121
|
# anything else cannot possibly be in this module
|
|
120
122
|
# TODO: should not be allowed anyway... may have to revisit this decision
|
|
@@ -201,7 +203,7 @@ module Puppet::Pops::Loader::ModuleLoaders
|
|
|
201
203
|
|
|
202
204
|
# Create a kind of ModuleLoader for one module (Puppet Module, or module like)
|
|
203
205
|
#
|
|
204
|
-
# @param parent_loader [
|
|
206
|
+
# @param parent_loader [Loader] typically the loader for the environment or root
|
|
205
207
|
# @param module_name [String] the name of the module (non qualified name), may be nil for "modules" only containing globals
|
|
206
208
|
# @param path [String] the path to the root of the module (semantics defined by subclass)
|
|
207
209
|
# @param loader_name [String] a name that identifies the loader
|
|
@@ -231,7 +233,7 @@ module Puppet::Pops::Loader::ModuleLoaders
|
|
|
231
233
|
end
|
|
232
234
|
|
|
233
235
|
def get_contents(effective_path)
|
|
234
|
-
Puppet::FileSystem.read(effective_path)
|
|
236
|
+
Puppet::FileSystem.read(effective_path, :encoding => 'utf-8')
|
|
235
237
|
end
|
|
236
238
|
end
|
|
237
239
|
|
|
@@ -246,7 +248,7 @@ module Puppet::Pops::Loader::ModuleLoaders
|
|
|
246
248
|
# @api private
|
|
247
249
|
#
|
|
248
250
|
class GemBased < FileBased
|
|
249
|
-
include
|
|
251
|
+
include GemSupport
|
|
250
252
|
|
|
251
253
|
attr_reader :gem_ref
|
|
252
254
|
|
|
@@ -267,3 +269,5 @@ module Puppet::Pops::Loader::ModuleLoaders
|
|
|
267
269
|
end
|
|
268
270
|
end
|
|
269
271
|
end
|
|
272
|
+
end
|
|
273
|
+
end
|