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
@@ -1,11 +1,13 @@
|
|
1
|
+
module Puppet::Pops
|
2
|
+
module Binder
|
1
3
|
# A helper class that makes it easier to construct a Bindings model.
|
2
4
|
#
|
3
5
|
# The Bindings Model
|
4
6
|
# ------------------
|
5
|
-
# The BindingsModel (defined in {
|
7
|
+
# The BindingsModel (defined in {Bindings} is a model that is intended to be generally free from Ruby concerns.
|
6
8
|
# This means that it is possible for system integrators to create and serialize such models using other technologies than
|
7
9
|
# Ruby. This manifests itself in the model in that producers are described using instances of a `ProducerDescriptor` rather than
|
8
|
-
# describing Ruby classes directly. This is also true of the type system where type is expressed using the {
|
10
|
+
# describing Ruby classes directly. This is also true of the type system where type is expressed using the {Types} model
|
9
11
|
# to describe all types.
|
10
12
|
#
|
11
13
|
# This class, the `BindingsFactory` is a concrete Ruby API for constructing instances of classes in the model.
|
@@ -14,14 +16,14 @@
|
|
14
16
|
# --------------
|
15
17
|
# The typical usage of the factory is to call {named_bindings} which creates a container of bindings wrapped in a *build object*
|
16
18
|
# equipped with convenience methods to define the details of the just created named bindings.
|
17
|
-
# The returned builder is an instance of {
|
19
|
+
# The returned builder is an instance of {BindingsFactory::BindingsContainerBuilder BindingsContainerBuilder}.
|
18
20
|
#
|
19
21
|
# Binding
|
20
22
|
# -------
|
21
23
|
# A Binding binds a type/name key to a producer of a value. A binding is conveniently created by calling `bind` on a
|
22
24
|
# `BindingsContainerBuilder`. The call to bind, produces a binding wrapped in a build object equipped with convenience methods
|
23
25
|
# to define the details of the just created binding. The returned builder is an instance of
|
24
|
-
# {
|
26
|
+
# {BindingsFactory::BindingsBuilder BindingsBuilder}.
|
25
27
|
#
|
26
28
|
# Multibinding
|
27
29
|
# ------------
|
@@ -36,7 +38,7 @@
|
|
36
38
|
#
|
37
39
|
# It is intended that a user defining bindings in Ruby should be able to use the builder object methods for the majority of tasks.
|
38
40
|
# If something advanced is wanted, use of one of the helper class methods on the BuildingsFactory, and/or the
|
39
|
-
# {
|
41
|
+
# {Types::TypeCalculator TypeCalculator} will be required to create and configure objects that are not handled by
|
40
42
|
# the methods in the builder objects.
|
41
43
|
#
|
42
44
|
# Chaining of calls
|
@@ -76,7 +78,7 @@
|
|
76
78
|
# end.model
|
77
79
|
#
|
78
80
|
# @example Create a NamedBinding with content
|
79
|
-
# result =
|
81
|
+
# result = BindingsFactory.named_bindings("mymodule::mybindings") do
|
80
82
|
# bind.name("foo").to(42)
|
81
83
|
# bind.string.name("site url").to("http://www.example.com")
|
82
84
|
# end
|
@@ -84,12 +86,12 @@
|
|
84
86
|
#
|
85
87
|
# @api public
|
86
88
|
#
|
87
|
-
module
|
89
|
+
module BindingsFactory
|
88
90
|
|
89
|
-
# Alias for the {
|
91
|
+
# Alias for the {Types::TypeFactory TypeFactory}. This is also available as the method
|
90
92
|
# `type_factory`.
|
91
93
|
#
|
92
|
-
T =
|
94
|
+
T = Types::TypeFactory
|
93
95
|
|
94
96
|
# Abstract base class for bindings object builders.
|
95
97
|
# Supports delegation of method calls to the BindingsFactory class methods for all methods not implemented
|
@@ -101,7 +103,7 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
101
103
|
# The built model object.
|
102
104
|
attr_reader :model
|
103
105
|
|
104
|
-
# @param binding [
|
106
|
+
# @param binding [Bindings::AbstractBinding] The binding to build.
|
105
107
|
# @api public
|
106
108
|
def initialize(binding)
|
107
109
|
@model = binding
|
@@ -113,7 +115,7 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
113
115
|
# @api private
|
114
116
|
#
|
115
117
|
def method_missing(meth, *args, &block)
|
116
|
-
factory =
|
118
|
+
factory = BindingsFactory
|
117
119
|
if factory.respond_to?(meth)
|
118
120
|
factory.send(meth, *args, &block)
|
119
121
|
else
|
@@ -132,7 +134,7 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
132
134
|
# @api public
|
133
135
|
#
|
134
136
|
def bind(&block)
|
135
|
-
binding =
|
137
|
+
binding = Bindings::Binding.new()
|
136
138
|
model.addBindings(binding)
|
137
139
|
builder = BindingsBuilder.new(binding)
|
138
140
|
builder.instance_eval(&block) if block_given?
|
@@ -146,7 +148,7 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
146
148
|
# @api public
|
147
149
|
#
|
148
150
|
def multibind(id, &block)
|
149
|
-
binding =
|
151
|
+
binding = Bindings::Multibinding.new()
|
150
152
|
binding.id = id
|
151
153
|
model.addBindings(binding)
|
152
154
|
builder = MultibindingsBuilder.new(binding)
|
@@ -161,7 +163,7 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
161
163
|
#
|
162
164
|
class BindingsBuilder < AbstractBuilder
|
163
165
|
|
164
|
-
# @param binding [
|
166
|
+
# @param binding [Bindings::AbstractBinding] the binding to build.
|
165
167
|
# @api public
|
166
168
|
def initialize(binding)
|
167
169
|
super binding
|
@@ -219,7 +221,7 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
219
221
|
# @example creating a Hash with Integer key and Array[Integer] element type
|
220
222
|
# tc = type_factory
|
221
223
|
# type(tc.hash(tc.array_of(tc.integer), tc.integer)
|
222
|
-
# @param type [
|
224
|
+
# @param type [Types::PAnyType] the type to set for the binding
|
223
225
|
# @api public
|
224
226
|
#
|
225
227
|
def type(type)
|
@@ -228,71 +230,71 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
228
230
|
end
|
229
231
|
|
230
232
|
# Sets the type of the binding to Integer.
|
231
|
-
# @return [
|
233
|
+
# @return [Types::PIntegerType] the type
|
232
234
|
# @api public
|
233
235
|
def integer()
|
234
236
|
type(T.integer())
|
235
237
|
end
|
236
238
|
|
237
239
|
# Sets the type of the binding to Float.
|
238
|
-
# @return [
|
240
|
+
# @return [Types::PFloatType] the type
|
239
241
|
# @api public
|
240
242
|
def float()
|
241
243
|
type(T.float())
|
242
244
|
end
|
243
245
|
|
244
246
|
# Sets the type of the binding to Boolean.
|
245
|
-
# @return [
|
247
|
+
# @return [Types::PBooleanType] the type
|
246
248
|
# @api public
|
247
249
|
def boolean()
|
248
250
|
type(T.boolean())
|
249
251
|
end
|
250
252
|
|
251
253
|
# Sets the type of the binding to String.
|
252
|
-
# @return [
|
254
|
+
# @return [Types::PStringType] the type
|
253
255
|
# @api public
|
254
256
|
def string()
|
255
257
|
type(T.string())
|
256
258
|
end
|
257
259
|
|
258
260
|
# Sets the type of the binding to Pattern.
|
259
|
-
# @return [
|
261
|
+
# @return [Types::PRegexpType] the type
|
260
262
|
# @api public
|
261
263
|
def pattern()
|
262
264
|
type(T.pattern())
|
263
265
|
end
|
264
266
|
|
265
267
|
# Sets the type of the binding to the abstract type Scalar.
|
266
|
-
# @return [
|
268
|
+
# @return [Types::PScalarType] the type
|
267
269
|
# @api public
|
268
270
|
def scalar()
|
269
271
|
type(T.scalar())
|
270
272
|
end
|
271
273
|
|
272
274
|
# Sets the type of the binding to the abstract type Data.
|
273
|
-
# @return [
|
275
|
+
# @return [Types::PDataType] the type
|
274
276
|
# @api public
|
275
277
|
def data()
|
276
278
|
type(T.data())
|
277
279
|
end
|
278
280
|
|
279
281
|
# Sets the type of the binding to Array[Data].
|
280
|
-
# @return [
|
282
|
+
# @return [Types::PArrayType] the type
|
281
283
|
# @api public
|
282
284
|
def array_of_data()
|
283
285
|
type(T.array_of_data())
|
284
286
|
end
|
285
287
|
|
286
288
|
# Sets the type of the binding to Array[T], where T is given.
|
287
|
-
# @param t [
|
288
|
-
# @return [
|
289
|
+
# @param t [Types::PAnyType] the type of the elements of the array
|
290
|
+
# @return [Types::PArrayType] the type
|
289
291
|
# @api public
|
290
292
|
def array_of(t)
|
291
293
|
type(T.array_of(t))
|
292
294
|
end
|
293
295
|
|
294
296
|
# Sets the type of the binding to Hash[Literal, Data].
|
295
|
-
# @return [
|
297
|
+
# @return [Types::PHashType] the type
|
296
298
|
# @api public
|
297
299
|
def hash_of_data()
|
298
300
|
type(T.hash_of_data())
|
@@ -301,7 +303,7 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
301
303
|
# Sets type of the binding to `Hash[Literal, t]`.
|
302
304
|
# To also limit the key type, use {#type} and give it a fully specified
|
303
305
|
# hash using {#type_factory} and then `hash_of(value_type, key_type)`.
|
304
|
-
# @return [
|
306
|
+
# @return [Types::PHashType] the type
|
305
307
|
# @api public
|
306
308
|
def hash_of(t)
|
307
309
|
type(T.hash_of(t))
|
@@ -310,7 +312,7 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
310
312
|
# Sets the type of the binding based on the given argument.
|
311
313
|
# @overload instance_of(t)
|
312
314
|
# The same as calling {#type} with `t`.
|
313
|
-
# @param t [
|
315
|
+
# @param t [Types::PAnyType] the type
|
314
316
|
# @overload instance_of(o)
|
315
317
|
# Infers the type from the given Ruby object and sets that as the type - i.e. "set the type
|
316
318
|
# of the binding to be that of the given data object".
|
@@ -337,7 +339,7 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
337
339
|
# The type factory is also available via the constant {T}.
|
338
340
|
# @api public
|
339
341
|
def type_factory
|
340
|
-
|
342
|
+
Types::TypeFactory
|
341
343
|
end
|
342
344
|
|
343
345
|
# Sets the binding's producer to a singleton producer, if given argument is a value, a literal producer is created for it.
|
@@ -355,16 +357,16 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
355
357
|
def to(producer, *args)
|
356
358
|
case producer
|
357
359
|
when Class
|
358
|
-
producer =
|
359
|
-
when
|
360
|
+
producer = BindingsFactory.instance_producer(producer.name, *args)
|
361
|
+
when Model::Program
|
360
362
|
# program is not an expression
|
361
|
-
producer =
|
362
|
-
when
|
363
|
-
producer =
|
364
|
-
when
|
363
|
+
producer = BindingsFactory.evaluating_producer(producer.body)
|
364
|
+
when Model::Expression
|
365
|
+
producer = BindingsFactory.evaluating_producer(producer)
|
366
|
+
when Bindings::ProducerDescriptor
|
365
367
|
else
|
366
368
|
# If given producer is not a producer, create a literal producer
|
367
|
-
producer =
|
369
|
+
producer = BindingsFactory.literal_producer(producer)
|
368
370
|
end
|
369
371
|
model.producer = producer
|
370
372
|
self
|
@@ -393,7 +395,7 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
393
395
|
# Help by setting the type - since if an to_instance is bound, the type is know. This avoids having
|
394
396
|
# to specify the same thing twice.
|
395
397
|
self.instance_of(type)
|
396
|
-
model.producer =
|
398
|
+
model.producer = BindingsFactory.instance_producer(class_name, *args)
|
397
399
|
end
|
398
400
|
|
399
401
|
# Sets the binding's producer to a singleton producer
|
@@ -401,30 +403,30 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
401
403
|
# Sets the producer to an instantiated producer. The resulting model can not be serialized as a consequence as there
|
402
404
|
# is no meta-model describing the specialized producer. Use this only in exceptional cases, or where there is never the
|
403
405
|
# need to serialize the model.
|
404
|
-
# @param a_producer [
|
406
|
+
# @param a_producer [Producers::Producer] an instantiated producer, not serializeable !
|
405
407
|
#
|
406
408
|
# @overload to_producer(a_class, *args)
|
407
409
|
# @param a_class [Class] the class to create an instance of
|
408
410
|
# @param args [Object] the arguments to the given class' new
|
409
411
|
#
|
410
412
|
# @overload to_producer(a_producer_descriptor)
|
411
|
-
# @param a_producer_descriptor [
|
412
|
-
# producing
|
413
|
+
# @param a_producer_descriptor [Bindings::ProducerDescriptor] a descriptor
|
414
|
+
# producing Producers::Producer
|
413
415
|
#
|
414
416
|
# @api public
|
415
417
|
#
|
416
418
|
def to_producer(producer, *args)
|
417
419
|
case producer
|
418
420
|
when Class
|
419
|
-
producer =
|
420
|
-
when
|
421
|
-
when
|
421
|
+
producer = BindingsFactory.instance_producer(producer.name, *args)
|
422
|
+
when Bindings::ProducerDescriptor
|
423
|
+
when Producers::Producer
|
422
424
|
# a custom producer instance
|
423
|
-
producer =
|
425
|
+
producer = BindingsFactory.literal_producer(producer)
|
424
426
|
else
|
425
427
|
raise ArgumentError, "Given producer argument is none of a producer descriptor, a class, or a producer"
|
426
428
|
end
|
427
|
-
metaproducer =
|
429
|
+
metaproducer = BindingsFactory.producer_producer(producer)
|
428
430
|
model.producer = metaproducer
|
429
431
|
self
|
430
432
|
end
|
@@ -436,34 +438,34 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
436
438
|
# Sets the producer to an instantiated producer. The resulting model can not be serialized as a consequence as there
|
437
439
|
# is no meta-model describing the specialized producer. Use this only in exceptional cases, or where there is never the
|
438
440
|
# need to serialize the model.
|
439
|
-
# @param a_producer [
|
441
|
+
# @param a_producer [Producers::Producer] an instantiated producer, not serializeable !
|
440
442
|
#
|
441
443
|
# @overload to_producer(a_class, *args)
|
442
444
|
# @param a_class [Class] the class to create an instance of
|
443
445
|
# @param args [Object] the arguments to the given class' new
|
444
446
|
#
|
445
447
|
# @overload to_producer(a_producer_descriptor)
|
446
|
-
# @param a_producer_descriptor [
|
447
|
-
# producing
|
448
|
+
# @param a_producer_descriptor [Bindings::ProducerDescriptor] a descriptor
|
449
|
+
# producing Producers::Producer
|
448
450
|
#
|
449
451
|
# @api public
|
450
452
|
#
|
451
453
|
def to_producer_series(producer, *args)
|
452
454
|
case producer
|
453
455
|
when Class
|
454
|
-
producer =
|
455
|
-
when
|
456
|
-
when
|
456
|
+
producer = BindingsFactory.instance_producer(producer.name, *args)
|
457
|
+
when Bindings::ProducerDescriptor
|
458
|
+
when Producers::Producer
|
457
459
|
# a custom producer instance
|
458
|
-
producer =
|
460
|
+
producer = BindingsFactory.literal_producer(producer)
|
459
461
|
else
|
460
462
|
raise ArgumentError, "Given producer argument is none of a producer descriptor, a class, or a producer"
|
461
463
|
end
|
462
|
-
non_caching =
|
464
|
+
non_caching = Bindings::NonCachingProducerDescriptor.new()
|
463
465
|
non_caching.producer = producer
|
464
|
-
metaproducer =
|
466
|
+
metaproducer = BindingsFactory.producer_producer(non_caching)
|
465
467
|
|
466
|
-
non_caching =
|
468
|
+
non_caching = Bindings::NonCachingProducerDescriptor.new()
|
467
469
|
non_caching.producer = metaproducer
|
468
470
|
|
469
471
|
model.producer = non_caching
|
@@ -483,13 +485,13 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
483
485
|
def to_series_of(producer, *args)
|
484
486
|
case producer
|
485
487
|
when Class
|
486
|
-
producer =
|
487
|
-
when
|
488
|
+
producer = BindingsFactory.instance_producer(producer.name, *args)
|
489
|
+
when Bindings::ProducerDescriptor
|
488
490
|
else
|
489
491
|
# If given producer is not a producer, create a literal producer
|
490
|
-
producer =
|
492
|
+
producer = BindingsFactory.literal_producer(producer)
|
491
493
|
end
|
492
|
-
non_caching =
|
494
|
+
non_caching = Bindings::NonCachingProducerDescriptor.new()
|
493
495
|
non_caching.producer = producer
|
494
496
|
model.producer = non_caching
|
495
497
|
self
|
@@ -503,9 +505,9 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
503
505
|
def to_lookup_of(type, name=nil)
|
504
506
|
unless name
|
505
507
|
name = type
|
506
|
-
type =
|
508
|
+
type = Types::TypeFactory.data()
|
507
509
|
end
|
508
|
-
model.producer =
|
510
|
+
model.producer = BindingsFactory.lookup_producer(type, name)
|
509
511
|
self
|
510
512
|
end
|
511
513
|
|
@@ -517,7 +519,7 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
517
519
|
# @api public
|
518
520
|
#
|
519
521
|
def to_hash_lookup_of(type, name, key)
|
520
|
-
model.producer =
|
522
|
+
model.producer = BindingsFactory.hash_lookup_producer(type, name, key)
|
521
523
|
self
|
522
524
|
end
|
523
525
|
|
@@ -536,17 +538,17 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
536
538
|
if entry.is_a?(Array)
|
537
539
|
case entry.size
|
538
540
|
when 2
|
539
|
-
|
541
|
+
BindingsFactory.lookup_producer(entry[0], entry[1])
|
540
542
|
when 1
|
541
|
-
|
543
|
+
BindingsFactory.lookup_producer(Types::TypeFactory.data(), entry[0])
|
542
544
|
else
|
543
545
|
raise ArgumentError, "Not an array of [type, name], name, or [name]"
|
544
546
|
end
|
545
547
|
else
|
546
|
-
|
548
|
+
BindingsFactory.lookup_producer(T.data(), entry)
|
547
549
|
end
|
548
550
|
end
|
549
|
-
model.producer =
|
551
|
+
model.producer = BindingsFactory.first_found_producer(*producers)
|
550
552
|
self
|
551
553
|
end
|
552
554
|
|
@@ -560,7 +562,7 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
560
562
|
# @api public
|
561
563
|
def producer_options(options)
|
562
564
|
options.each do |k, v|
|
563
|
-
arg =
|
565
|
+
arg = Bindings::NamedArgument.new()
|
564
566
|
arg.name = k.to_s
|
565
567
|
arg.value = v
|
566
568
|
model.addProducer_args(arg)
|
@@ -574,11 +576,11 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
574
576
|
#
|
575
577
|
# @api public
|
576
578
|
class MultibindingsBuilder < BindingsBuilder
|
577
|
-
# Constraints type to be one of {
|
579
|
+
# Constraints type to be one of {Types::PArrayType PArrayType}, or {Types::PHashType PHashType}.
|
578
580
|
# @raise [ArgumentError] if type constraint is not met.
|
579
581
|
# @api public
|
580
582
|
def type(type)
|
581
|
-
unless type.class ==
|
583
|
+
unless type.class == Types::PArrayType || type.class == Types::PHashType
|
582
584
|
raise ArgumentError, "Wrong type; only PArrayType, or PHashType allowed, got '#{type.to_s}'"
|
583
585
|
end
|
584
586
|
model.type = type
|
@@ -597,11 +599,11 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
597
599
|
# A ContributedBindings is used by bindings providers to return a set of named bindings.
|
598
600
|
#
|
599
601
|
# @param name [String] the name of the contributed bindings (for human use in messages/logs only)
|
600
|
-
# @param named_bindings [
|
602
|
+
# @param named_bindings [Bindings::NamedBindings, Array<Bindings::NamedBindings>] the
|
601
603
|
# named bindings to include
|
602
604
|
#
|
603
605
|
def self.contributed_bindings(name, named_bindings)
|
604
|
-
cb =
|
606
|
+
cb = Bindings::ContributedBindings.new()
|
605
607
|
cb.name = name
|
606
608
|
named_bindings = [named_bindings] unless named_bindings.is_a?(Array)
|
607
609
|
named_bindings.each {|b| cb.addBindings(b) }
|
@@ -616,7 +618,7 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
616
618
|
# @api public
|
617
619
|
#
|
618
620
|
def self.named_bindings(name, &block)
|
619
|
-
binding =
|
621
|
+
binding = Bindings::NamedBindings.new()
|
620
622
|
binding.name = name
|
621
623
|
builder = BindingsContainerBuilder.new(binding)
|
622
624
|
builder.instance_eval(&block) if block_given?
|
@@ -629,7 +631,7 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
629
631
|
# @api private
|
630
632
|
#
|
631
633
|
def self.safe_named_bindings(name, scope, &block)
|
632
|
-
binding =
|
634
|
+
binding = Bindings::NamedBindings.new()
|
633
635
|
binding.name = name
|
634
636
|
anon = Class.new(BindingsContainerBuilder) do
|
635
637
|
def initialize(b)
|
@@ -649,33 +651,33 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
649
651
|
|
650
652
|
# Creates a literal/constant producer
|
651
653
|
# @param value [Object] the value to produce
|
652
|
-
# @return [
|
654
|
+
# @return [Bindings::ProducerDescriptor] a producer description
|
653
655
|
# @api public
|
654
656
|
#
|
655
657
|
def self.literal_producer(value)
|
656
|
-
producer =
|
658
|
+
producer = Bindings::ConstantProducerDescriptor.new()
|
657
659
|
producer.value = value
|
658
660
|
producer
|
659
661
|
end
|
660
662
|
|
661
663
|
# Creates a non caching producer
|
662
|
-
# @param producer [
|
663
|
-
# @return [
|
664
|
+
# @param producer [Bindings::Producer] the producer to make non caching
|
665
|
+
# @return [Bindings::ProducerDescriptor] a producer description
|
664
666
|
# @api public
|
665
667
|
#
|
666
668
|
def self.non_caching_producer(producer)
|
667
|
-
p =
|
669
|
+
p = Bindings::NonCachingProducerDescriptor.new()
|
668
670
|
p.producer = producer
|
669
671
|
p
|
670
672
|
end
|
671
673
|
|
672
674
|
# Creates a producer producer
|
673
|
-
# @param producer [
|
674
|
-
# @return [
|
675
|
+
# @param producer [Bindings::Producer] a producer producing a Producer.
|
676
|
+
# @return [Bindings::ProducerDescriptor] a producer description
|
675
677
|
# @api public
|
676
678
|
#
|
677
679
|
def self.producer_producer(producer)
|
678
|
-
p =
|
680
|
+
p = Bindings::ProducerProducerDescriptor.new()
|
679
681
|
p.producer = producer
|
680
682
|
p
|
681
683
|
end
|
@@ -688,23 +690,23 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
688
690
|
#
|
689
691
|
# @param class_name [String] the name of the class
|
690
692
|
# @param args[Object] arguments to the class' `new` method.
|
691
|
-
# @return [
|
693
|
+
# @return [Bindings::ProducerDescriptor] a producer description
|
692
694
|
# @api public
|
693
695
|
#
|
694
696
|
def self.instance_producer(class_name, *args)
|
695
|
-
p =
|
697
|
+
p = Bindings::InstanceProducerDescriptor.new()
|
696
698
|
p.class_name = class_name
|
697
699
|
args.each {|a| p.addArguments(a) }
|
698
700
|
p
|
699
701
|
end
|
700
702
|
|
701
703
|
# Creates a Producer that looks up a value.
|
702
|
-
# @param type [
|
704
|
+
# @param type [Types::PAnyType] the type to lookup
|
703
705
|
# @param name [String] the name to lookup
|
704
|
-
# @return [
|
706
|
+
# @return [Bindings::ProducerDescriptor] a producer description
|
705
707
|
# @api public
|
706
708
|
def self.lookup_producer(type, name)
|
707
|
-
p =
|
709
|
+
p = Bindings::LookupProducerDescriptor.new()
|
708
710
|
p.type = type
|
709
711
|
p.name = name
|
710
712
|
p
|
@@ -712,14 +714,14 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
712
714
|
|
713
715
|
# Creates a Hash lookup producer that looks up a hash value, and then a key in the hash.
|
714
716
|
#
|
715
|
-
# @return [
|
716
|
-
# @param type [
|
717
|
+
# @return [Bindings::ProducerDescriptor] a producer description
|
718
|
+
# @param type [Types::PAnyType] the type to lookup (i.e. a Hash of some key/value type).
|
717
719
|
# @param name [String] the name to lookup
|
718
720
|
# @param key [Object] the key to lookup in the looked up hash (type should comply with given key type).
|
719
721
|
# @api public
|
720
722
|
#
|
721
723
|
def self.hash_lookup_producer(type, name, key)
|
722
|
-
p =
|
724
|
+
p = Bindings::HashLookupProducerDescriptor.new()
|
723
725
|
p.type = type
|
724
726
|
p.name = name
|
725
727
|
p.key = key
|
@@ -728,29 +730,29 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
728
730
|
|
729
731
|
# Creates a first-found producer that looks up from a given series of keys. The first found looked up
|
730
732
|
# value will be produced.
|
731
|
-
# @param producers [Array<
|
732
|
-
# @return [
|
733
|
+
# @param producers [Array<Bindings::ProducerDescriptor>] the producers to consult in given order
|
734
|
+
# @return [Bindings::ProducerDescriptor] a producer descriptor
|
733
735
|
# @api public
|
734
736
|
def self.first_found_producer(*producers)
|
735
|
-
p =
|
737
|
+
p = Bindings::FirstFoundProducerDescriptor.new()
|
736
738
|
producers.each {|p2| p.addProducers(p2) }
|
737
739
|
p
|
738
740
|
end
|
739
741
|
|
740
742
|
# Creates an evaluating producer that evaluates a puppet expression.
|
741
|
-
# A puppet expression is most conveniently created by using the {
|
743
|
+
# A puppet expression is most conveniently created by using the {Parser::EvaluatingParser EvaluatingParser} as it performs
|
742
744
|
# all set up and validation of the parsed source. Two convenience methods are used to parse an expression, or parse a ruby string
|
743
745
|
# as a puppet string. See methods {puppet_expression}, {puppet_string} and {parser} for more information.
|
744
746
|
#
|
745
747
|
# @example producing a puppet expression
|
746
748
|
# expr = puppet_string("Interpolated $fqdn", __FILE__)
|
747
749
|
#
|
748
|
-
# @param expression [
|
749
|
-
# @return [
|
750
|
+
# @param expression [Model::Expression] a puppet DSL expression as producer by the eparser.
|
751
|
+
# @return [Bindings::ProducerDescriptor] a producer descriptor
|
750
752
|
# @api public
|
751
753
|
#
|
752
754
|
def self.evaluating_producer(expression)
|
753
|
-
p =
|
755
|
+
p = Bindings::EvaluatingProducerDescriptor.new()
|
754
756
|
p.expression = expression
|
755
757
|
p
|
756
758
|
end
|
@@ -760,32 +762,32 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
760
762
|
# @api public
|
761
763
|
#
|
762
764
|
def self.named_layer(name, *bindings)
|
763
|
-
result =
|
765
|
+
result = Bindings::NamedLayer.new()
|
764
766
|
result.name = name
|
765
767
|
bindings.each { |b| result.addBindings(b) }
|
766
768
|
result
|
767
769
|
end
|
768
770
|
|
769
771
|
# Create a LayeredBindings. This is used by the bindings system to create a model of all given layers.
|
770
|
-
# @param named_layers [
|
771
|
-
# @return [
|
772
|
+
# @param named_layers [Bindings::NamedLayer] one or more named layers
|
773
|
+
# @return [Bindings::LayeredBindings] the constructed layered bindings.
|
772
774
|
# @api public
|
773
775
|
#
|
774
776
|
def self.layered_bindings(*named_layers)
|
775
|
-
result =
|
777
|
+
result = Bindings::LayeredBindings.new()
|
776
778
|
named_layers.each {|b| result.addLayers(b) }
|
777
779
|
result
|
778
780
|
end
|
779
781
|
|
780
|
-
# @return [
|
782
|
+
# @return [Parser::EvaluatingParser] a parser for puppet expressions
|
781
783
|
def self.parser
|
782
|
-
@parser ||=
|
784
|
+
@parser ||= Parser::EvaluatingParser.new()
|
783
785
|
end
|
784
786
|
|
785
787
|
# Parses and produces a puppet expression from the given string.
|
786
788
|
# @param string [String] puppet source e.g. "1 + 2"
|
787
789
|
# @param source_file [String] the source location, typically `__File__`
|
788
|
-
# @return [
|
790
|
+
# @return [Model::Expression] an expression (that can be bound)
|
789
791
|
# @api public
|
790
792
|
#
|
791
793
|
def self.puppet_expression(string, source_file)
|
@@ -800,10 +802,12 @@ module Puppet::Pops::Binder::BindingsFactory
|
|
800
802
|
#
|
801
803
|
# @param string [String] puppet source e.g. "On node $!{fqdn}"
|
802
804
|
# @param source_file [String] the source location, typically `__File__`
|
803
|
-
# @return [
|
805
|
+
# @return [Model::Expression] an expression (that can be bound)
|
804
806
|
# @api public
|
805
807
|
#
|
806
808
|
def self.puppet_string(string, source_file)
|
807
809
|
parser.parse_string(parser.quote(string), source_file).current
|
808
810
|
end
|
809
811
|
end
|
812
|
+
end
|
813
|
+
end
|