puppet 4.3.2-x64-mingw32 → 4.4.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- 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/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/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 +4 -4
- 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/yaml_data_provider_factory.rb +2 -2
- data/lib/puppet/defaults.rb +65 -19
- 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.rb +2 -2
- 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/forge.rb +1 -1
- data/lib/puppet/forge/repository.rb +1 -31
- data/lib/puppet/functions.rb +45 -6
- 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/map.rb +6 -14
- 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/graph/rb_tree_map.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +188 -5
- 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/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 +3 -0
- 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.rb +1 -1
- data/lib/puppet/node/environment.rb +11 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +19 -22
- data/lib/puppet/parser/compiler.rb +3 -3
- data/lib/puppet/parser/environment_compiler.rb +0 -1
- data/lib/puppet/parser/functions.rb +28 -16
- 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/map.rb +1 -1
- 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/resource.rb +19 -17
- data/lib/puppet/parser/scope.rb +176 -5
- data/lib/puppet/plugins/data_providers/data_provider.rb +54 -13
- data/lib/puppet/pops.rb +0 -8
- data/lib/puppet/pops/adaptable.rb +4 -1
- data/lib/puppet/pops/adapters.rb +38 -13
- 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 +95 -93
- data/lib/puppet/pops/evaluator/closure.rb +84 -68
- data/lib/puppet/pops/evaluator/collector_transformer.rb +18 -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 +41 -45
- data/lib/puppet/pops/issue_reporter.rb +6 -4
- data/lib/puppet/pops/issues.rb +34 -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 +16 -12
- 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.rb +14 -12
- data/lib/puppet/pops/merge_strategy.rb +16 -19
- data/lib/puppet/pops/model/factory.rb +26 -2
- data/lib/puppet/pops/model/model.rb +8 -8
- data/lib/puppet/pops/model/model_label_provider.rb +13 -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 +14 -10
- data/lib/puppet/pops/parser/heredoc_support.rb +15 -11
- data/lib/puppet/pops/parser/lexer2.rb +26 -19
- 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 +11 -7
- 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 +138 -381
- 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 -1247
- data/lib/puppet/pops/utils.rb +11 -10
- data/lib/puppet/pops/validation.rb +11 -9
- data/lib/puppet/pops/validation/checker4_0.rb +83 -55
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +8 -4
- 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/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 +5 -8
- 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/windows.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/package/zypper.rb +19 -0
- data/lib/puppet/provider/service/debian.rb +2 -2
- data/lib/puppet/provider/service/launchd.rb +6 -18
- 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/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.rb +15 -12
- 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 +28 -38
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +13 -5
- 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.rb +15 -2
- data/lib/puppet/transaction/additional_resource_generator.rb +6 -2
- data/lib/puppet/transaction/report.rb +31 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -25
- data/lib/puppet/type.rb +11 -11
- data/lib/puppet/type/augeas.rb +1 -1
- data/lib/puppet/type/cron.rb +12 -12
- data/lib/puppet/type/file.rb +91 -39
- 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/filebucket.rb +1 -1
- 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/util.rb +109 -22
- 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 +4 -4
- 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 +23 -14
- data/lib/puppet/util/windows/process.rb +78 -11
- data/lib/puppet/util/windows/registry.rb +1 -1
- 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 +42 -4
- data/lib/puppet/util/windows/taskscheduler.rb +15 -15
- data/lib/puppet/util/windows/user.rb +10 -10
- 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/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/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/manifests/init.pp +3 -1
- 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/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/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 +90 -4
- data/spec/integration/util/windows/process_spec.rb +31 -0
- data/spec/integration/util/windows/security_spec.rb +6 -6
- 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/configurer/downloader_spec.rb +5 -5
- data/spec/unit/configurer_spec.rb +271 -39
- 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/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 +11 -3
- data/spec/unit/functions/lookup_spec.rb +58 -13
- 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 +61 -5
- 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/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 +1 -1
- data/spec/unit/parser/compiler_spec.rb +16 -0
- data/spec/unit/parser/scope_spec.rb +28 -11
- data/spec/unit/pops/evaluator/access_ops_spec.rb +3 -3
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +3 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +7 -1
- 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 +44 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +112 -3
- data/spec/unit/pops/parser/parse_calls_spec.rb +8 -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 -373
- 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 +100 -43
- data/spec/unit/provider/cron/parsed_spec.rb +1 -0
- 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 +47 -34
- 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/yum_spec.rb +11 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/launchd_spec.rb +17 -35
- data/spec/unit/provider/service/systemd_spec.rb +7 -0
- data/spec/unit/provider/sshkey/parsed_spec.rb +20 -19
- data/spec/unit/provider/user/directoryservice_spec.rb +40 -59
- 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 +96 -57
- 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 +4 -4
- 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 +1 -1
- data/spec/unit/util_spec.rb +123 -13
- data/tasks/cfpropertylist.rake +15 -0
- metadata +114 -26
- 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.rb +0 -22
- 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/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/lib/puppet/pops.rb
CHANGED
@@ -34,14 +34,6 @@ module Puppet
|
|
34
34
|
|
35
35
|
# (the Types module initializes itself)
|
36
36
|
require 'puppet/pops/types/types'
|
37
|
-
require 'puppet/pops/types/type_asserter'
|
38
|
-
require 'puppet/pops/types/type_assertion_error'
|
39
|
-
require 'puppet/pops/types/type_calculator'
|
40
|
-
require 'puppet/pops/types/type_factory'
|
41
|
-
require 'puppet/pops/types/type_parser'
|
42
|
-
require 'puppet/pops/types/class_loader'
|
43
|
-
require 'puppet/pops/types/enumeration'
|
44
|
-
require 'puppet/pops/types/type_mismatch_describer'
|
45
37
|
|
46
38
|
require 'puppet/pops/merge_strategy'
|
47
39
|
|
@@ -15,7 +15,8 @@
|
|
15
15
|
# be exploited as the implementation of _being adaptable_ may change in the future.
|
16
16
|
# @api private
|
17
17
|
#
|
18
|
-
module Puppet::Pops
|
18
|
+
module Puppet::Pops
|
19
|
+
module Adaptable
|
19
20
|
# Base class for an Adapter.
|
20
21
|
#
|
21
22
|
# A typical adapter just defines some accessors.
|
@@ -199,3 +200,5 @@ module Puppet::Pops::Adaptable
|
|
199
200
|
end
|
200
201
|
end
|
201
202
|
end
|
203
|
+
end
|
204
|
+
|
data/lib/puppet/pops/adapters.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
# The Adapters module contains adapters for Documentation, Origin, SourcePosition, and Loader.
|
2
2
|
#
|
3
|
-
module Puppet::Pops
|
3
|
+
module Puppet::Pops
|
4
|
+
module Adapters
|
4
5
|
# A documentation adapter adapts an object with a documentation string.
|
5
6
|
# (The intended use is for a source text parser to extract documentation and store this
|
6
7
|
# in DocumentationAdapter instances).
|
7
8
|
#
|
8
|
-
class DocumentationAdapter <
|
9
|
+
class DocumentationAdapter < Adaptable::Adapter
|
9
10
|
# @return [String] The documentation associated with an object
|
10
11
|
attr_accessor :documentation
|
11
12
|
end
|
@@ -19,9 +20,9 @@ module Puppet::Pops::Adapters
|
|
19
20
|
# @note It is relatively expensive to compute line and position on line - it is not something that
|
20
21
|
# should be done for every token or model object.
|
21
22
|
#
|
22
|
-
# @see
|
23
|
+
# @see Utils#find_adapter, Utils#find_closest_positioned
|
23
24
|
#
|
24
|
-
class SourcePosAdapter <
|
25
|
+
class SourcePosAdapter < Adaptable::Adapter
|
25
26
|
attr_accessor :locator
|
26
27
|
attr_reader :adapted
|
27
28
|
|
@@ -45,10 +46,10 @@ module Puppet::Pops::Adapters
|
|
45
46
|
raise ArgumentError, "InternalError: SourcePosAdapter for something that has no locator among parents"
|
46
47
|
end
|
47
48
|
case
|
48
|
-
when o.is_a?(
|
49
|
+
when o.is_a?(Model::Program)
|
49
50
|
return o.locator
|
50
51
|
# TODO_HEREDOC use case of SubLocator instead
|
51
|
-
when o.is_a?(
|
52
|
+
when o.is_a?(Model::SubLocatedExpression) && !(found_locator = o.locator).nil?
|
52
53
|
return found_locator
|
53
54
|
when adapter = self.class.get(o)
|
54
55
|
return adapter.locator
|
@@ -83,7 +84,7 @@ module Puppet::Pops::Adapters
|
|
83
84
|
|
84
85
|
# Extracts the text represented by this source position (the string is obtained from the locator)
|
85
86
|
def extract_text
|
86
|
-
locator.
|
87
|
+
locator.extract_text(offset, length)
|
87
88
|
end
|
88
89
|
|
89
90
|
def extract_tree_text
|
@@ -91,11 +92,12 @@ module Puppet::Pops::Adapters
|
|
91
92
|
last = first + @adapted.length
|
92
93
|
@adapted.eAllContents.each do |m|
|
93
94
|
m_offset = m.offset
|
95
|
+
next if m_offset.nil?
|
94
96
|
first = m_offset if m_offset < first
|
95
97
|
m_last = m_offset + m.length
|
96
98
|
last = m_last if m_last > last
|
97
99
|
end
|
98
|
-
locator.
|
100
|
+
locator.extract_text(first, last-first)
|
99
101
|
end
|
100
102
|
|
101
103
|
# Produces an URI with path?line=n&pos=n. If origin is unknown the URI is string:?line=n&pos=n
|
@@ -106,19 +108,41 @@ module Puppet::Pops::Adapters
|
|
106
108
|
end
|
107
109
|
end
|
108
110
|
|
109
|
-
# A LoaderAdapter adapts an object with a {
|
111
|
+
# A LoaderAdapter adapts an object with a {Loader}. This is used to make further loading from the
|
110
112
|
# perspective of the adapted object take place in the perspective of this Loader.
|
111
113
|
#
|
112
114
|
# It is typically enough to adapt the root of a model as a search is made towards the root of the model
|
113
115
|
# until a loader is found, but there is no harm in duplicating this information provided a contained
|
114
116
|
# object is adapted with the correct loader.
|
115
117
|
#
|
116
|
-
# @see
|
118
|
+
# @see Utils#find_adapter
|
117
119
|
#
|
118
|
-
class LoaderAdapter <
|
119
|
-
# @return [
|
120
|
+
class LoaderAdapter < Adaptable::Adapter
|
121
|
+
# @return [Loader::Loader] the loader
|
120
122
|
attr_accessor :loader
|
121
123
|
|
124
|
+
# Finds the loader to use when loading originates from the source position of the given argument.
|
125
|
+
#
|
126
|
+
# @param instance [Model::PopsObject] The model object
|
127
|
+
# @param scope [Puppet::Parser::Scope] The scope to use
|
128
|
+
# @return [Loader,nil] the found loader or `nil` if it could not be found
|
129
|
+
#
|
130
|
+
def self.loader_for_model_object(model, scope)
|
131
|
+
# find the loader that loaded the code, or use the private_environment_loader (sees env + all modules)
|
132
|
+
adapter = Utils.find_adapter(model, self)
|
133
|
+
return adapter.loader unless adapter.nil?
|
134
|
+
|
135
|
+
if scope.nil?
|
136
|
+
loaders = Puppet.lookup(:loaders) { nil }
|
137
|
+
loaders.nil? ? nil : loaders.private_environment_loader
|
138
|
+
else
|
139
|
+
# Use source location to determine calling module, or use the private_environment_loader (sees env + all modules)
|
140
|
+
# This is necessary since not all .pp files are loaded by a Loader (see PUP-1833)
|
141
|
+
adapter = adapt_by_source(scope, model)
|
142
|
+
adapter.nil? ? scope.compiler.loaders.private_environment_loader : adapter.loader
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
122
146
|
# Attempts to find the module that `instance` originates from by looking at it's {SourcePosAdapter} and
|
123
147
|
# compare the `locator.file` found there with the module paths given in the environment found in the
|
124
148
|
# given `scope`. If the file is found to be relative to a path, then the first segment of the relative
|
@@ -130,7 +154,7 @@ module Puppet::Pops::Adapters
|
|
130
154
|
# @param scope
|
131
155
|
# @param instance
|
132
156
|
def self.adapt_by_source(scope, instance)
|
133
|
-
source_pos =
|
157
|
+
source_pos = Utils.find_adapter(instance, SourcePosAdapter)
|
134
158
|
unless source_pos.nil?
|
135
159
|
mod = find_module_for_file(scope.environment, source_pos.locator.file)
|
136
160
|
unless mod.nil?
|
@@ -162,3 +186,4 @@ module Puppet::Pops::Adapters
|
|
162
186
|
private_class_method :find_module_for_file
|
163
187
|
end
|
164
188
|
end
|
189
|
+
end
|
@@ -3,11 +3,13 @@
|
|
3
3
|
# An instance should be created and a call to {#define_layers} should be made which will process the layered bindings
|
4
4
|
# (handle overrides, abstract entries etc.).
|
5
5
|
# The constructed hash with `key => InjectorEntry` mappings is obtained as {#injector_entries}, and is used to initialize an
|
6
|
-
# {
|
6
|
+
# {Injector Injector}.
|
7
7
|
#
|
8
8
|
# @api public
|
9
9
|
#
|
10
|
-
|
10
|
+
module Puppet::Pops
|
11
|
+
module Binder
|
12
|
+
class Binder
|
11
13
|
|
12
14
|
# @api private
|
13
15
|
attr_reader :injector_entries
|
@@ -35,7 +37,7 @@ class Puppet::Pops::Binder::Binder
|
|
35
37
|
@parent = parent_binder
|
36
38
|
@id_index = Hash.new() { |k, v| [] }
|
37
39
|
|
38
|
-
@key_factory =
|
40
|
+
@key_factory = KeyFactory.new()
|
39
41
|
|
40
42
|
# Resulting hash of all key -> binding
|
41
43
|
@injector_entries = {}
|
@@ -58,11 +60,11 @@ class Puppet::Pops::Binder::Binder
|
|
58
60
|
# validated to get better error messages if the model is invalid. This implementation expects the model
|
59
61
|
# to be valid, and any errors raised will be more technical runtime errors.
|
60
62
|
#
|
61
|
-
# @param layered_bindings [
|
63
|
+
# @param layered_bindings [Bindings::LayeredBindings] the named and ordered layers
|
62
64
|
# @raise ArgumentError if this binder is already configured
|
63
65
|
# @raise ArgumentError if bindings with unresolved 'override' surfaces as an effective binding
|
64
66
|
# @raise ArgumentError if the given argument has the wrong type, or if model is invalid in some way
|
65
|
-
# @return [
|
67
|
+
# @return [Binder] self
|
66
68
|
# @api public
|
67
69
|
#
|
68
70
|
def define_layers(layered_bindings)
|
@@ -107,7 +109,7 @@ class Puppet::Pops::Binder::Binder
|
|
107
109
|
end
|
108
110
|
|
109
111
|
def add_id_to_index(binding)
|
110
|
-
return unless binding.is_a?(
|
112
|
+
return unless binding.is_a?(Bindings::Multibinding) && !(id = binding.id).nil?
|
111
113
|
@id_index[id] = @id_index[id] << binding
|
112
114
|
end
|
113
115
|
|
@@ -118,7 +120,7 @@ class Puppet::Pops::Binder::Binder
|
|
118
120
|
entry = lookup(key)
|
119
121
|
unless entry.precedence == @binder_precedence
|
120
122
|
# it is from a lower layer it must be promoted
|
121
|
-
injector_entries[ key ] =
|
123
|
+
injector_entries[ key ] = InjectorEntry.new(binding, binder_precedence)
|
122
124
|
end
|
123
125
|
end
|
124
126
|
# recursive "up the parent chain" to promote all
|
@@ -138,7 +140,7 @@ class Puppet::Pops::Binder::Binder
|
|
138
140
|
|
139
141
|
# @api private
|
140
142
|
def self.format_binding(b)
|
141
|
-
type_name =
|
143
|
+
type_name = b.type.to_s
|
142
144
|
layer_name, bindings_name = get_named_binding_layer_and_name(b)
|
143
145
|
"binding: '#{type_name}/#{b.name}' in: '#{bindings_name}' in layer: '#{layer_name}'"
|
144
146
|
end
|
@@ -152,14 +154,14 @@ class Puppet::Pops::Binder::Binder
|
|
152
154
|
# @api private
|
153
155
|
def self.get_named_binding_layer_and_name(b)
|
154
156
|
return ['<unknown>', '<unknown>'] if b.nil?
|
155
|
-
return [get_named_layer(b), b.name] if b.is_a?(
|
157
|
+
return [get_named_layer(b), b.name] if b.is_a?(Bindings::NamedBindings)
|
156
158
|
get_named_binding_layer_and_name(b.eContainer)
|
157
159
|
end
|
158
160
|
|
159
161
|
# @api private
|
160
162
|
def self.get_named_layer(b)
|
161
163
|
return '<unknown>' if b.nil?
|
162
|
-
return b.name if b.is_a?(
|
164
|
+
return b.name if b.is_a?(Bindings::NamedLayer)
|
163
165
|
get_named_layer(b.eContainer)
|
164
166
|
end
|
165
167
|
|
@@ -181,21 +183,21 @@ class Puppet::Pops::Binder::Binder
|
|
181
183
|
@key_factory = key_factory
|
182
184
|
@bindings = []
|
183
185
|
@contributions = []
|
184
|
-
@@bind_visitor ||=
|
186
|
+
@@bind_visitor ||= Visitor.new(nil,"bind",0,0)
|
185
187
|
end
|
186
188
|
|
187
189
|
# Add the binding to the list of potentially effective bindings from this layer
|
188
190
|
# @api private
|
189
191
|
#
|
190
192
|
def add(b)
|
191
|
-
bindings <<
|
193
|
+
bindings << InjectorEntry.new(b, binder_precedence)
|
192
194
|
end
|
193
195
|
|
194
196
|
# Add a multibind contribution
|
195
197
|
# @api private
|
196
198
|
#
|
197
199
|
def add_contribution(b)
|
198
|
-
contributions <<
|
200
|
+
contributions << InjectorEntry.new(b, binder_precedence)
|
199
201
|
end
|
200
202
|
|
201
203
|
# Bind given abstract binding
|
@@ -205,7 +207,7 @@ class Puppet::Pops::Binder::Binder
|
|
205
207
|
@@bind_visitor.visit_this_0(self, binding)
|
206
208
|
end
|
207
209
|
|
208
|
-
# @return [
|
210
|
+
# @return [InjectorEntry] the entry with the highest precedence
|
209
211
|
# @api private
|
210
212
|
def highest(b1, b2)
|
211
213
|
if b1.is_abstract? != b2.is_abstract?
|
@@ -268,7 +270,7 @@ class Puppet::Pops::Binder::Binder
|
|
268
270
|
|
269
271
|
|
270
272
|
# Produces the key for the given Binding.
|
271
|
-
# @param binding [
|
273
|
+
# @param binding [Bindings::Binding] the binding to get a key for
|
272
274
|
# @return [Object] an opaque key
|
273
275
|
# @api private
|
274
276
|
#
|
@@ -318,8 +320,8 @@ class Puppet::Pops::Binder::Binder
|
|
318
320
|
entry = binder.injector_entries[k]
|
319
321
|
unless key_factory.is_contributions_key?(k)
|
320
322
|
if v.is_abstract?()
|
321
|
-
layer_name, bindings_name =
|
322
|
-
type_name =
|
323
|
+
layer_name, bindings_name = Binder.get_named_binding_layer_and_name(v.binding)
|
324
|
+
type_name = v.binding.type.to_s
|
323
325
|
raise ArgumentError, "The abstract binding '#{type_name}/#{v.binding.name}' in '#{bindings_name}' in layer '#{layer_name}' was not overridden"
|
324
326
|
end
|
325
327
|
raise ArgumentError, "Internal Error - redefinition of key: #{k}, (should never happen)" if entry
|
@@ -392,3 +394,5 @@ class Puppet::Pops::Binder::Binder
|
|
392
394
|
end
|
393
395
|
end
|
394
396
|
end
|
397
|
+
end
|
398
|
+
end
|
@@ -1,8 +1,9 @@
|
|
1
|
+
module Puppet::Pops
|
1
2
|
# @api public
|
2
|
-
module
|
3
|
+
module Binder::BinderIssues
|
3
4
|
|
4
5
|
# NOTE: The methods #issue and #hard_issue are done in a somewhat funny way
|
5
|
-
# since the
|
6
|
+
# since the Issues is a module with these methods defined on the module-class
|
6
7
|
# This makes it hard to inherit them in this module. (Likewise if Issues was a class, and they
|
7
8
|
# need to be defined for the class, and such methods are also not inherited, it becomes more
|
8
9
|
# difficult to reuse these. It did not seem as a good idea to refactor Issues at this point
|
@@ -10,14 +11,14 @@ module Puppet::Pops::Binder::BinderIssues
|
|
10
11
|
# Meanwhile, they delegate to Issues.
|
11
12
|
|
12
13
|
|
13
|
-
# (see
|
14
|
+
# (see Issues#issue)
|
14
15
|
def self.issue (issue_code, *args, &block)
|
15
|
-
|
16
|
+
Issues.issue(issue_code, *args, &block)
|
16
17
|
end
|
17
18
|
|
18
|
-
# (see
|
19
|
+
# (see Issues#hard_issue)
|
19
20
|
def self.hard_issue(issue_code, *args, &block)
|
20
|
-
|
21
|
+
Issues.hard_issue(issue_code, *args, &block)
|
21
22
|
end
|
22
23
|
|
23
24
|
# Producer issues (binding identified using :binding argument)
|
@@ -120,3 +121,4 @@ module Puppet::Pops::Binder::BinderIssues
|
|
120
121
|
end
|
121
122
|
|
122
123
|
end
|
124
|
+
end
|
@@ -1,19 +1,21 @@
|
|
1
|
+
module Puppet::Pops
|
2
|
+
module Binder
|
1
3
|
# A validator/checker of a bindings model
|
2
4
|
# @api public
|
3
5
|
#
|
4
|
-
class
|
5
|
-
Bindings =
|
6
|
-
Issues =
|
7
|
-
Types =
|
6
|
+
class BindingsChecker
|
7
|
+
Bindings = Bindings
|
8
|
+
Issues = BinderIssues
|
9
|
+
Types = Types
|
8
10
|
|
9
11
|
attr_reader :type_calculator
|
10
12
|
attr_reader :acceptor
|
11
13
|
|
12
14
|
# @api public
|
13
15
|
def initialize(diagnostics_producer)
|
14
|
-
@@check_visitor ||=
|
15
|
-
@type_calculator =
|
16
|
-
@expression_validator =
|
16
|
+
@@check_visitor ||= Visitor.new(nil, "check", 0, 0)
|
17
|
+
@type_calculator = Types::TypeCalculator.singleton
|
18
|
+
@expression_validator = Validation::ValidatorFactory_4_0.new().checker(diagnostics_producer)
|
17
19
|
@acceptor = diagnostics_producer
|
18
20
|
end
|
19
21
|
|
@@ -109,7 +111,7 @@ class Puppet::Pops::Binder::BindingsChecker
|
|
109
111
|
# Checks that an expression has been declared in the producer
|
110
112
|
# @api private
|
111
113
|
def check_EvaluatingProducerDescriptor(p)
|
112
|
-
unless p.expression.is_a?(
|
114
|
+
unless p.expression.is_a?(Model::Expression)
|
113
115
|
acceptor.accept(Issues::MISSING_EXPRESSION, p, {:binding => binding_parent(p)})
|
114
116
|
end
|
115
117
|
end
|
@@ -195,3 +197,5 @@ class Puppet::Pops::Binder::BindingsChecker
|
|
195
197
|
p
|
196
198
|
end
|
197
199
|
end
|
200
|
+
end
|
201
|
+
end
|
@@ -1,5 +1,7 @@
|
|
1
|
+
module Puppet::Pops
|
2
|
+
module Binder
|
1
3
|
# The BindingsComposer handles composition of multiple bindings sources
|
2
|
-
# It is directed by a {
|
4
|
+
# It is directed by a {Config::BinderConfig BinderConfig} that indicates how
|
3
5
|
# the final composition should be layered, and what should be included/excluded in each layer
|
4
6
|
#
|
5
7
|
# The bindings composer is intended to be used once per environment as the compiler starts its work.
|
@@ -11,7 +13,7 @@
|
|
11
13
|
#
|
12
14
|
require 'puppet/plugins/binding_schemes'
|
13
15
|
|
14
|
-
class
|
16
|
+
class BindingsComposer
|
15
17
|
|
16
18
|
# The BindingsConfig instance holding the read and parsed, but not evaluated configuration
|
17
19
|
# @api public
|
@@ -39,11 +41,11 @@ class Puppet::Pops::Binder::BindingsComposer
|
|
39
41
|
|
40
42
|
# @api public
|
41
43
|
def initialize()
|
42
|
-
@acceptor =
|
43
|
-
@diagnostics =
|
44
|
-
@config =
|
44
|
+
@acceptor = Validation::Acceptor.new()
|
45
|
+
@diagnostics = Config::DiagnosticProducer.new(acceptor)
|
46
|
+
@config = Config::BinderConfig.new(@diagnostics)
|
45
47
|
if acceptor.errors?
|
46
|
-
|
48
|
+
IssueReporter.assert_and_report(acceptor, :message => 'Binding Composer: error while reading config.')
|
47
49
|
raise Puppet::DevError.new("Internal Error: IssueReporter did not raise exception for errors in bindings config.")
|
48
50
|
end
|
49
51
|
end
|
@@ -66,7 +68,7 @@ class Puppet::Pops::Binder::BindingsComposer
|
|
66
68
|
scheme_extensions = @config.scheme_extensions
|
67
69
|
|
68
70
|
# Define a named bindings that are known by the SystemBindings
|
69
|
-
boot_bindings =
|
71
|
+
boot_bindings = BindingsFactory.named_bindings(SystemBindings::ENVIRONMENT_BOOT_BINDINGS_NAME) do
|
70
72
|
scheme_extensions.each_pair do |scheme, class_name|
|
71
73
|
# turn each scheme => class_name into a binding (contribute to the buildings-schemes multibind).
|
72
74
|
# do this in category 'extensions' to allow them to override the 'default'
|
@@ -82,7 +84,7 @@ class Puppet::Pops::Binder::BindingsComposer
|
|
82
84
|
@injector = scope.compiler.create_boot_injector(boot_bindings.model)
|
83
85
|
end
|
84
86
|
|
85
|
-
# @return [
|
87
|
+
# @return [Bindings::LayeredBindings]
|
86
88
|
def compose(scope)
|
87
89
|
# The boot injector is used to lookup scheme-handlers
|
88
90
|
configure_and_create_injector(scope)
|
@@ -94,7 +96,7 @@ class Puppet::Pops::Binder::BindingsComposer
|
|
94
96
|
# setup the confdir
|
95
97
|
@confdir = Puppet.settings[:confdir]
|
96
98
|
|
97
|
-
factory =
|
99
|
+
factory = BindingsFactory
|
98
100
|
contributions = []
|
99
101
|
configured_layers = @config.layering_config.collect do | layer_config |
|
100
102
|
# get contributions
|
@@ -108,8 +110,8 @@ class Puppet::Pops::Binder::BindingsComposer
|
|
108
110
|
# Add the two system layers; the final - highest ("can not be overridden" layer), and the lowest
|
109
111
|
# Everything here can be overridden 'default' layer.
|
110
112
|
#
|
111
|
-
configured_layers.insert(0,
|
112
|
-
configured_layers.insert(-1,
|
113
|
+
configured_layers.insert(0, SystemBindings.final_contribution)
|
114
|
+
configured_layers.insert(-1, SystemBindings.default_contribution)
|
113
115
|
|
114
116
|
# and finally... create the resulting structure
|
115
117
|
factory.layered_bindings(*configured_layers)
|
@@ -158,7 +160,7 @@ class Puppet::Pops::Binder::BindingsComposer
|
|
158
160
|
end
|
159
161
|
|
160
162
|
class SchemeHandlerHelper
|
161
|
-
T =
|
163
|
+
T = Types::TypeFactory
|
162
164
|
HASH_OF_HANDLER = T.hash_of(T.type_of(Puppet::Plugins::BindingSchemes::BINDINGS_SCHEMES_TYPE))
|
163
165
|
def initialize(scope)
|
164
166
|
@scope = scope
|
@@ -175,3 +177,5 @@ class Puppet::Pops::Binder::BindingsComposer
|
|
175
177
|
end
|
176
178
|
|
177
179
|
end
|
180
|
+
end
|
181
|
+
end
|