puppet 4.10.12 → 5.0.0
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.
- data/CONTRIBUTING.md +32 -15
- data/Gemfile +31 -14
- data/MAINTAINERS +0 -5
- data/README.md +11 -11
- data/Rakefile +2 -1
- data/conf/auth.conf +21 -0
- data/conf/fileserver.conf +7 -12
- data/conf/hiera.yaml +11 -0
- data/ext/debian/puppet-common.install +0 -1
- data/ext/debian/puppet-common.manpages +0 -2
- data/ext/hiera/hiera.yaml +15 -0
- data/ext/logcheck/puppet +1 -1
- data/ext/project_data.yaml +4 -9
- data/ext/puppet-test +0 -24
- data/ext/rack/config.ru +2 -2
- data/ext/redhat/puppet.spec.erb +0 -3
- data/ext/windows/service/daemon.rb +8 -14
- data/install.rb +1 -1
- data/lib/hiera/puppet_function.rb +1 -1
- data/lib/puppet.rb +7 -5
- data/lib/puppet/agent.rb +29 -38
- data/lib/puppet/agent/disabler.rb +3 -3
- data/lib/puppet/agent/locker.rb +3 -3
- data/lib/puppet/application.rb +12 -29
- data/lib/puppet/application/agent.rb +20 -18
- data/lib/puppet/application/apply.rb +22 -18
- data/lib/puppet/application/cert.rb +2 -7
- data/lib/puppet/application/config.rb +0 -1
- data/lib/puppet/application/describe.rb +1 -1
- data/lib/puppet/application/device.rb +94 -76
- data/lib/puppet/application/doc.rb +6 -6
- data/lib/puppet/application/face_base.rb +8 -13
- data/lib/puppet/application/filebucket.rb +12 -29
- data/lib/puppet/application/help.rb +0 -1
- data/lib/puppet/application/lookup.rb +106 -101
- data/lib/puppet/application/master.rb +14 -22
- data/lib/puppet/application/resource.rb +13 -10
- data/lib/puppet/application_support.rb +1 -6
- data/lib/puppet/configurer.rb +33 -45
- data/lib/puppet/configurer/downloader.rb +2 -2
- data/lib/puppet/configurer/fact_handler.rb +13 -4
- data/lib/puppet/context.rb +5 -5
- data/lib/puppet/context/trusted_information.rb +1 -1
- data/lib/puppet/defaults.rb +18 -131
- data/lib/puppet/environments.rb +1 -1
- data/lib/puppet/error.rb +1 -1
- data/lib/puppet/external/nagios/grammar.ry +1 -1
- data/lib/puppet/external/nagios/parser.rb +1 -1
- data/lib/puppet/external/pson/common.rb +4 -0
- data/lib/puppet/face/ca.rb +49 -42
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/catalog/select.rb +4 -4
- data/lib/puppet/face/certificate.rb +20 -20
- data/lib/puppet/face/config.rb +9 -22
- data/lib/puppet/face/epp.rb +59 -61
- data/lib/puppet/face/facts.rb +4 -4
- data/lib/puppet/face/generate.rb +8 -8
- data/lib/puppet/face/help.rb +7 -7
- data/lib/puppet/face/key.rb +2 -2
- data/lib/puppet/face/man.rb +5 -5
- data/lib/puppet/face/module.rb +2 -2
- data/lib/puppet/face/module/build.rb +7 -7
- data/lib/puppet/face/module/changes.rb +6 -6
- data/lib/puppet/face/module/generate.rb +24 -24
- data/lib/puppet/face/module/install.rb +13 -9
- data/lib/puppet/face/module/list.rb +16 -12
- data/lib/puppet/face/module/search.rb +4 -4
- data/lib/puppet/face/module/uninstall.rb +13 -10
- data/lib/puppet/face/module/upgrade.rb +11 -7
- data/lib/puppet/face/node.rb +5 -5
- data/lib/puppet/face/node/clean.rb +8 -8
- data/lib/puppet/face/parser.rb +16 -16
- data/lib/puppet/face/plugin.rb +6 -6
- data/lib/puppet/face/report.rb +9 -9
- data/lib/puppet/face/resource.rb +12 -12
- data/lib/puppet/face/status.rb +4 -4
- data/lib/puppet/feature/base.rb +3 -2
- data/lib/puppet/feature/eventlog.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +9 -9
- data/lib/puppet/file_bucket/file.rb +4 -17
- data/lib/puppet/file_serving/base.rb +3 -3
- data/lib/puppet/file_serving/configuration.rb +3 -3
- data/lib/puppet/file_serving/configuration/parser.rb +12 -12
- data/lib/puppet/file_serving/content.rb +1 -1
- data/lib/puppet/file_serving/fileset.rb +7 -5
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/metadata.rb +7 -7
- data/lib/puppet/file_serving/mount.rb +1 -1
- data/lib/puppet/file_serving/mount/file.rb +6 -6
- data/lib/puppet/file_serving/mount/modules.rb +1 -1
- data/lib/puppet/file_serving/terminus_selector.rb +1 -1
- 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/path_pattern.rb +6 -6
- data/lib/puppet/file_system/uniquefile.rb +2 -2
- data/lib/puppet/file_system/windows.rb +3 -3
- data/lib/puppet/forge.rb +8 -14
- data/lib/puppet/forge/errors.rb +12 -12
- data/lib/puppet/forge/repository.rb +1 -1
- data/lib/puppet/functions.rb +17 -45
- data/lib/puppet/functions/annotate.rb +108 -0
- data/lib/puppet/functions/binary_file.rb +1 -1
- data/lib/puppet/functions/call.rb +42 -0
- data/lib/puppet/functions/defined.rb +4 -4
- data/lib/puppet/functions/dig.rb +1 -1
- data/lib/puppet/functions/each.rb +4 -10
- data/lib/puppet/functions/epp.rb +0 -3
- data/lib/puppet/functions/hiera_include.rb +1 -1
- data/lib/puppet/functions/hocon_data.rb +2 -2
- data/lib/puppet/functions/json_data.rb +1 -1
- data/lib/puppet/functions/lookup.rb +2 -2
- data/lib/puppet/functions/map.rb +3 -13
- data/lib/puppet/functions/match.rb +2 -2
- data/lib/puppet/functions/reduce.rb +0 -31
- data/lib/puppet/functions/require.rb +1 -1
- data/lib/puppet/functions/slice.rb +3 -3
- data/lib/puppet/functions/strftime.rb +10 -2
- data/lib/puppet/functions/unique.rb +132 -0
- data/lib/puppet/generate/models/type/property.rb +1 -1
- data/lib/puppet/generate/type.rb +12 -12
- data/lib/puppet/graph/relationship_graph.rb +4 -7
- data/lib/puppet/graph/simple_graph.rb +45 -66
- data/lib/puppet/indirector.rb +2 -2
- data/lib/puppet/indirector/catalog/compiler.rb +58 -44
- data/lib/puppet/indirector/catalog/json.rb +18 -0
- data/lib/puppet/indirector/certificate/disabled_ca.rb +1 -1
- data/lib/puppet/indirector/certificate_request/ca.rb +3 -3
- data/lib/puppet/indirector/certificate_request/disabled_ca.rb +1 -1
- data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +1 -1
- data/lib/puppet/indirector/certificate_status/file.rb +6 -6
- data/lib/puppet/indirector/exec.rb +2 -2
- data/lib/puppet/indirector/face.rb +18 -18
- data/lib/puppet/indirector/file_bucket_file/file.rb +10 -9
- data/lib/puppet/indirector/file_metadata/http.rb +1 -1
- data/lib/puppet/indirector/file_server.rb +10 -2
- data/lib/puppet/indirector/hiera.rb +5 -3
- data/lib/puppet/indirector/indirection.rb +16 -18
- data/lib/puppet/indirector/json.rb +11 -12
- data/lib/puppet/indirector/key/disabled_ca.rb +1 -1
- data/lib/puppet/indirector/key/file.rb +2 -2
- data/lib/puppet/indirector/ldap.rb +6 -5
- data/lib/puppet/indirector/memory.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +8 -7
- data/lib/puppet/indirector/node/exec.rb +8 -6
- data/lib/puppet/indirector/node/ldap.rb +9 -7
- data/lib/puppet/indirector/node/plain.rb +2 -1
- data/lib/puppet/indirector/node/write_only_yaml.rb +6 -1
- data/lib/puppet/indirector/node/yaml.rb +0 -9
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/rest.rb +13 -0
- data/lib/puppet/indirector/request.rb +11 -23
- data/lib/puppet/indirector/resource/ral.rb +1 -1
- data/lib/puppet/indirector/resource/validator.rb +1 -1
- data/lib/puppet/indirector/rest.rb +28 -10
- data/lib/puppet/indirector/ssl_file.rb +9 -9
- data/lib/puppet/indirector/terminus.rb +3 -3
- data/lib/puppet/indirector/yaml.rb +5 -5
- data/lib/puppet/info_service/class_information_service.rb +4 -5
- data/lib/puppet/interface.rb +2 -7
- data/lib/puppet/interface/face_collection.rb +6 -1
- data/lib/puppet/module.rb +10 -35
- data/lib/puppet/module_tool.rb +7 -3
- data/lib/puppet/module_tool/applications/application.rb +8 -9
- data/lib/puppet/module_tool/applications/builder.rb +5 -6
- data/lib/puppet/module_tool/applications/checksummer.rb +2 -2
- data/lib/puppet/module_tool/applications/installer.rb +11 -10
- data/lib/puppet/module_tool/applications/searcher.rb +1 -1
- data/lib/puppet/module_tool/applications/uninstaller.rb +2 -1
- data/lib/puppet/module_tool/applications/unpacker.rb +3 -3
- data/lib/puppet/module_tool/applications/upgrader.rb +10 -9
- data/lib/puppet/module_tool/contents_description.rb +1 -1
- data/lib/puppet/module_tool/dependency.rb +0 -1
- data/lib/puppet/module_tool/errors/installer.rb +22 -22
- data/lib/puppet/module_tool/errors/shared.rb +44 -42
- data/lib/puppet/module_tool/errors/uninstaller.rb +13 -9
- data/lib/puppet/module_tool/errors/upgrader.rb +11 -11
- data/lib/puppet/module_tool/install_directory.rb +1 -1
- data/lib/puppet/module_tool/installed_modules.rb +3 -3
- data/lib/puppet/module_tool/local_tarball.rb +4 -4
- data/lib/puppet/module_tool/metadata.rb +16 -13
- data/lib/puppet/module_tool/shared_behaviors.rb +6 -6
- data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +1 -1
- data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +10 -4
- data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +2 -2
- data/lib/puppet/module_tool/tar.rb +2 -1
- data/lib/puppet/module_tool/tar/mini.rb +4 -57
- data/lib/puppet/network/auth_config_parser.rb +12 -11
- data/lib/puppet/network/authconfig.rb +2 -2
- data/lib/puppet/network/authstore.rb +2 -2
- data/lib/puppet/network/format.rb +7 -7
- data/lib/puppet/network/format_handler.rb +12 -9
- data/lib/puppet/network/format_support.rb +11 -5
- data/lib/puppet/network/formats.rb +38 -27
- data/lib/puppet/network/http/api/indirected_routes.rb +72 -33
- data/lib/puppet/network/http/api/master/v3/environment.rb +33 -14
- data/lib/puppet/network/http/compression.rb +10 -7
- data/lib/puppet/network/http/connection.rb +19 -23
- data/lib/puppet/network/http/error.rb +14 -10
- data/lib/puppet/network/http/factory.rb +0 -12
- data/lib/puppet/network/http/handler.rb +8 -4
- data/lib/puppet/network/http/issues.rb +1 -0
- data/lib/puppet/network/http/pool.rb +1 -1
- data/lib/puppet/network/http/rack.rb +2 -2
- data/lib/puppet/network/http/rack/rest.rb +1 -1
- data/lib/puppet/network/http/request.rb +34 -20
- data/lib/puppet/network/http/response.rb +13 -1
- data/lib/puppet/network/http/webrick.rb +8 -6
- data/lib/puppet/network/http/webrick/rest.rb +2 -2
- data/lib/puppet/network/rights.rb +6 -6
- data/lib/puppet/network/server.rb +2 -2
- data/lib/puppet/node.rb +25 -23
- data/lib/puppet/node/environment.rb +21 -4
- data/lib/puppet/node/facts.rb +0 -14
- data/lib/puppet/parameter.rb +3 -28
- data/lib/puppet/parameter/package_options.rb +1 -1
- data/lib/puppet/parameter/path.rb +3 -3
- data/lib/puppet/parameter/value_collection.rb +4 -4
- data/lib/puppet/parser/ast/leaf.rb +1 -1
- data/lib/puppet/parser/ast/node.rb +1 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +3 -3
- data/lib/puppet/parser/ast/resource.rb +1 -1
- data/lib/puppet/parser/ast/resource_instance.rb +1 -1
- data/lib/puppet/parser/ast/resourceparam.rb +1 -1
- data/lib/puppet/parser/compiler.rb +44 -117
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -2
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +6 -9
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +1 -1
- data/lib/puppet/parser/e4_parser_adapter.rb +1 -2
- data/lib/puppet/parser/environment_compiler.rb +13 -15
- data/lib/puppet/parser/functions.rb +6 -6
- data/lib/puppet/parser/functions/assert_type.rb +1 -1
- data/lib/puppet/parser/functions/binary_file.rb +1 -1
- data/lib/puppet/parser/functions/break.rb +1 -1
- data/lib/puppet/parser/functions/contain.rb +1 -1
- data/lib/puppet/parser/functions/create_resources.rb +3 -3
- data/lib/puppet/parser/functions/defined.rb +1 -1
- data/lib/puppet/parser/functions/dig.rb +1 -1
- data/lib/puppet/parser/functions/each.rb +1 -1
- data/lib/puppet/parser/functions/epp.rb +1 -4
- data/lib/puppet/parser/functions/file.rb +1 -1
- data/lib/puppet/parser/functions/filter.rb +1 -1
- data/lib/puppet/parser/functions/find_file.rb +1 -1
- data/lib/puppet/parser/functions/generate.rb +5 -4
- data/lib/puppet/parser/functions/hiera_include.rb +1 -1
- data/lib/puppet/parser/functions/include.rb +2 -1
- data/lib/puppet/parser/functions/inline_epp.rb +1 -1
- data/lib/puppet/parser/functions/inline_template.rb +1 -1
- data/lib/puppet/parser/functions/lest.rb +1 -1
- data/lib/puppet/parser/functions/map.rb +1 -1
- data/lib/puppet/parser/functions/match.rb +1 -1
- data/lib/puppet/parser/functions/new.rb +45 -30
- data/lib/puppet/parser/functions/next.rb +1 -1
- data/lib/puppet/parser/functions/reduce.rb +1 -1
- data/lib/puppet/parser/functions/require.rb +1 -1
- data/lib/puppet/parser/functions/return.rb +2 -23
- data/lib/puppet/parser/functions/reverse_each.rb +1 -1
- data/lib/puppet/parser/functions/slice.rb +1 -1
- data/lib/puppet/parser/functions/sprintf.rb +3 -17
- data/lib/puppet/parser/functions/step.rb +1 -1
- data/lib/puppet/parser/functions/strftime.rb +1 -1
- data/lib/puppet/parser/functions/then.rb +1 -1
- data/lib/puppet/parser/functions/type.rb +1 -1
- data/lib/puppet/parser/functions/with.rb +1 -1
- data/lib/puppet/parser/parser_factory.rb +0 -30
- data/lib/puppet/parser/relationship.rb +49 -20
- data/lib/puppet/parser/resource.rb +31 -30
- data/lib/puppet/parser/resource/param.rb +0 -3
- data/lib/puppet/parser/scope.rb +122 -168
- data/lib/puppet/parser/templatewrapper.rb +2 -2
- data/lib/puppet/parser/type_loader.rb +1 -1
- data/lib/puppet/plugins/configuration.rb +15 -67
- data/lib/puppet/plugins/syntax_checkers.rb +6 -11
- data/lib/puppet/pops.rb +7 -37
- data/lib/puppet/pops/adaptable.rb +8 -3
- data/lib/puppet/pops/adapters.rb +23 -83
- data/lib/puppet/pops/evaluator/access_operator.rb +10 -39
- data/lib/puppet/pops/evaluator/collector_transformer.rb +7 -12
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/compare_operator.rb +7 -7
- data/lib/puppet/pops/evaluator/epp_evaluator.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +46 -38
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +2 -9
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -2
- data/lib/puppet/pops/evaluator/puppet_proc.rb +1 -1
- data/lib/puppet/pops/evaluator/relationship_operator.rb +26 -9
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +17 -1
- data/lib/puppet/pops/evaluator/runtime3_support.rb +13 -30
- data/lib/puppet/pops/functions/dispatch.rb +1 -6
- data/lib/puppet/pops/issues.rb +182 -162
- data/lib/puppet/pops/loader/base_loader.rb +2 -2
- data/lib/puppet/pops/loader/gem_support.rb +2 -2
- data/lib/puppet/pops/loader/module_loaders.rb +59 -8
- data/lib/puppet/pops/loader/predefined_loader.rb +1 -6
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +8 -8
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +9 -10
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +3 -3
- data/lib/puppet/pops/loader/static_loader.rb +33 -64
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +7 -7
- data/lib/puppet/pops/loader/typed_name.rb +5 -0
- data/lib/puppet/pops/loaders.rb +15 -5
- data/lib/puppet/pops/lookup.rb +4 -2
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/data_provider.rb +3 -18
- data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +12 -35
- data/lib/puppet/pops/lookup/interpolation.rb +1 -0
- data/lib/puppet/pops/lookup/invocation.rb +1 -1
- data/lib/puppet/pops/lookup/lookup_adapter.rb +20 -64
- data/lib/puppet/pops/lookup/lookup_key.rb +1 -1
- data/lib/puppet/pops/lookup/module_data_provider.rb +1 -1
- data/lib/puppet/pops/lookup/sub_lookup.rb +2 -1
- data/lib/puppet/pops/merge_strategy.rb +1 -1
- data/lib/puppet/pops/model/ast.pp +692 -0
- data/lib/puppet/pops/model/ast.rb +4833 -0
- data/lib/puppet/pops/model/ast_transformer.rb +9 -10
- data/lib/puppet/pops/model/factory.rb +454 -527
- data/lib/puppet/pops/model/model_label_provider.rb +3 -2
- data/lib/puppet/pops/model/model_tree_dumper.rb +9 -8
- data/lib/puppet/pops/parser/egrammar.ra +66 -60
- data/lib/puppet/pops/parser/eparser.rb +1483 -1578
- data/lib/puppet/pops/parser/evaluating_parser.rb +5 -5
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
- data/lib/puppet/pops/parser/lexer2.rb +7 -33
- data/lib/puppet/pops/parser/locator.rb +39 -16
- data/lib/puppet/pops/parser/parser_support.rb +25 -29
- data/lib/puppet/pops/patterns.rb +1 -2
- data/lib/puppet/pops/pcore.rb +26 -19
- data/lib/puppet/pops/resource/param.rb +1 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -2
- data/lib/puppet/pops/serialization.rb +25 -1
- data/lib/puppet/pops/serialization/abstract_writer.rb +9 -1
- data/lib/puppet/pops/serialization/deserializer.rb +1 -1
- data/lib/puppet/pops/serialization/from_data_converter.rb +181 -0
- data/lib/puppet/pops/serialization/json.rb +4 -4
- data/lib/puppet/pops/serialization/json_path.rb +126 -0
- data/lib/puppet/pops/serialization/object.rb +5 -5
- data/lib/puppet/pops/serialization/serializer.rb +23 -9
- data/lib/puppet/pops/serialization/to_data_converter.rb +292 -0
- data/lib/puppet/pops/time/timespan.rb +11 -11
- data/lib/puppet/pops/time/timestamp.rb +8 -8
- data/lib/puppet/pops/types/annotatable.rb +7 -7
- data/lib/puppet/pops/types/annotation.rb +71 -0
- data/lib/puppet/pops/types/class_loader.rb +4 -6
- data/lib/puppet/pops/types/enumeration.rb +2 -2
- data/lib/puppet/pops/types/iterable.rb +2 -4
- data/lib/puppet/pops/types/p_binary_type.rb +7 -1
- data/lib/puppet/pops/types/p_meta_type.rb +16 -12
- data/lib/puppet/pops/types/p_object_type.rb +135 -96
- data/lib/puppet/pops/types/p_runtime_type.rb +1 -1
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +6 -2
- data/lib/puppet/pops/types/p_timespan_type.rb +55 -4
- data/lib/puppet/pops/types/p_type_set_type.rb +42 -34
- data/lib/puppet/pops/types/puppet_object.rb +13 -3
- data/lib/puppet/pops/types/ruby_generator.rb +291 -127
- data/lib/puppet/pops/types/ruby_method.rb +31 -0
- data/lib/puppet/pops/types/string_converter.rb +107 -30
- data/lib/puppet/pops/types/type_calculator.rb +56 -94
- data/lib/puppet/pops/types/type_factory.rb +34 -6
- data/lib/puppet/pops/types/type_formatter.rb +64 -16
- data/lib/puppet/pops/types/type_mismatch_describer.rb +13 -22
- data/lib/puppet/pops/types/type_parser.rb +28 -13
- data/lib/puppet/pops/types/type_set_reference.rb +6 -6
- data/lib/puppet/pops/types/types.rb +169 -245
- data/lib/puppet/pops/utils.rb +0 -24
- data/lib/puppet/pops/validation.rb +3 -9
- data/lib/puppet/pops/validation/checker4_0.rb +86 -76
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +0 -1
- data/lib/puppet/pops/visitor.rb +21 -0
- data/lib/puppet/property.rb +17 -14
- data/lib/puppet/property/ensure.rb +3 -3
- data/lib/puppet/property/list.rb +1 -10
- data/lib/puppet/provider.rb +2 -0
- data/lib/puppet/provider/aixobject.rb +7 -7
- data/lib/puppet/provider/augeas/augeas.rb +37 -37
- data/lib/puppet/provider/command.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +2 -2
- data/lib/puppet/provider/exec.rb +4 -4
- data/lib/puppet/provider/exec/posix.rb +4 -4
- data/lib/puppet/provider/exec/windows.rb +3 -3
- data/lib/puppet/provider/file/posix.rb +5 -5
- data/lib/puppet/provider/file/windows.rb +4 -4
- data/lib/puppet/provider/group/aix.rb +2 -2
- data/lib/puppet/provider/group/groupadd.rb +2 -2
- data/lib/puppet/provider/group/pw.rb +1 -1
- data/lib/puppet/provider/group/windows_adsi.rb +7 -4
- data/lib/puppet/provider/host/parsed.rb +1 -1
- data/lib/puppet/provider/macauthorization/macauthorization.rb +9 -9
- data/lib/puppet/provider/maillist/mailman.rb +2 -2
- data/lib/puppet/provider/mcx/mcxcontent.rb +3 -3
- data/lib/puppet/provider/mount.rb +2 -1
- data/lib/puppet/provider/mount/parsed.rb +10 -8
- data/lib/puppet/provider/naginator.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +8 -10
- data/lib/puppet/provider/nameservice/directoryservice.rb +11 -11
- data/lib/puppet/provider/network_device.rb +2 -1
- data/lib/puppet/provider/package/aix.rb +6 -6
- data/lib/puppet/provider/package/appdmg.rb +2 -2
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +4 -4
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/aptrpm.rb +2 -2
- data/lib/puppet/provider/package/blastwave.rb +4 -4
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +3 -3
- data/lib/puppet/provider/package/fink.rb +3 -3
- data/lib/puppet/provider/package/freebsd.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +6 -6
- data/lib/puppet/provider/package/hpux.rb +1 -1
- data/lib/puppet/provider/package/nim.rb +15 -12
- data/lib/puppet/provider/package/openbsd.rb +4 -4
- data/lib/puppet/provider/package/opkg.rb +1 -1
- data/lib/puppet/provider/package/pacman.rb +9 -9
- data/lib/puppet/provider/package/pkg.rb +9 -9
- data/lib/puppet/provider/package/pkgdmg.rb +4 -4
- data/lib/puppet/provider/package/pkgin.rb +3 -3
- data/lib/puppet/provider/package/pkgng.rb +1 -1
- data/lib/puppet/provider/package/pkgutil.rb +6 -6
- data/lib/puppet/provider/package/portage.rb +167 -59
- data/lib/puppet/provider/package/ports.rb +3 -3
- data/lib/puppet/provider/package/portupgrade.rb +4 -4
- data/lib/puppet/provider/package/rpm.rb +7 -4
- data/lib/puppet/provider/package/rug.rb +1 -1
- data/lib/puppet/provider/package/sun.rb +3 -2
- data/lib/puppet/provider/package/up2date.rb +1 -1
- data/lib/puppet/provider/package/urpmi.rb +1 -1
- data/lib/puppet/provider/package/windows.rb +4 -4
- data/lib/puppet/provider/package/windows/package.rb +3 -3
- data/lib/puppet/provider/package/yum.rb +5 -6
- data/lib/puppet/provider/package/zypper.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +1 -1
- data/lib/puppet/provider/service/base.rb +8 -21
- data/lib/puppet/provider/service/smf.rb +2 -2
- data/lib/puppet/provider/service/systemd.rb +1 -2
- data/lib/puppet/provider/service/upstart.rb +1 -3
- data/lib/puppet/provider/user/aix.rb +2 -2
- data/lib/puppet/provider/user/ldap.rb +1 -1
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/provider/yumrepo/inifile.rb +3 -3
- data/lib/puppet/provider/zfs/zfs.rb +1 -5
- data/lib/puppet/reference/configuration.rb +0 -2
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/reference/metaparameter.rb +1 -1
- data/lib/puppet/reference/providers.rb +6 -6
- data/lib/puppet/reference/type.rb +2 -2
- data/lib/puppet/relationship.rb +7 -9
- data/lib/puppet/reports/http.rb +8 -6
- data/lib/puppet/resource.rb +75 -134
- data/lib/puppet/resource/capability_finder.rb +1 -1
- data/lib/puppet/resource/catalog.rb +26 -34
- data/lib/puppet/resource/status.rb +13 -24
- data/lib/puppet/resource/type.rb +13 -61
- data/lib/puppet/resource/type_collection.rb +29 -23
- data/lib/puppet/settings.rb +1 -1
- data/lib/puppet/settings/array_setting.rb +1 -1
- data/lib/puppet/settings/autosign_setting.rb +1 -1
- data/lib/puppet/settings/boolean_setting.rb +1 -1
- data/lib/puppet/settings/config_file.rb +2 -2
- data/lib/puppet/settings/duration_setting.rb +1 -1
- data/lib/puppet/settings/enum_setting.rb +1 -1
- data/lib/puppet/settings/environment_conf.rb +2 -10
- data/lib/puppet/settings/file_setting.rb +2 -2
- data/lib/puppet/settings/priority_setting.rb +1 -1
- data/lib/puppet/settings/server_list_setting.rb +1 -1
- data/lib/puppet/settings/symbolic_enum_setting.rb +1 -1
- data/lib/puppet/settings/terminus_setting.rb +1 -1
- data/lib/puppet/settings/ttl_setting.rb +2 -2
- data/lib/puppet/ssl/base.rb +2 -2
- data/lib/puppet/ssl/certificate_authority.rb +21 -21
- data/lib/puppet/ssl/certificate_authority/interface.rb +13 -13
- data/lib/puppet/ssl/certificate_factory.rb +2 -2
- data/lib/puppet/ssl/certificate_request.rb +14 -14
- data/lib/puppet/ssl/certificate_request_attributes.rb +3 -3
- data/lib/puppet/ssl/certificate_revocation_list.rb +3 -3
- data/lib/puppet/ssl/host.rb +29 -29
- data/lib/puppet/ssl/inventory.rb +1 -1
- data/lib/puppet/ssl/key.rb +1 -1
- data/lib/puppet/ssl/oids.rb +5 -5
- data/lib/puppet/ssl/validator/default_validator.rb +3 -4
- data/lib/puppet/syntax_checkers/base64.rb +7 -7
- data/lib/puppet/syntax_checkers/json.rb +5 -5
- data/lib/puppet/test/test_helper.rb +0 -4
- data/lib/puppet/transaction.rb +38 -23
- data/lib/puppet/transaction/additional_resource_generator.rb +4 -3
- data/lib/puppet/transaction/event.rb +19 -8
- data/lib/puppet/transaction/event_manager.rb +6 -6
- data/lib/puppet/transaction/persistence.rb +6 -6
- data/lib/puppet/transaction/report.rb +34 -47
- data/lib/puppet/transaction/resource_harness.rb +14 -12
- data/lib/puppet/type.rb +9 -7
- data/lib/puppet/type/augeas.rb +2 -2
- data/lib/puppet/type/cron.rb +14 -31
- data/lib/puppet/type/exec.rb +16 -16
- data/lib/puppet/type/file.rb +21 -22
- data/lib/puppet/type/file/content.rb +1 -1
- data/lib/puppet/type/file/group.rb +3 -3
- data/lib/puppet/type/file/mode.rb +6 -6
- data/lib/puppet/type/file/owner.rb +3 -3
- data/lib/puppet/type/file/selcontext.rb +18 -1
- data/lib/puppet/type/file/source.rb +5 -1
- data/lib/puppet/type/filebucket.rb +3 -8
- data/lib/puppet/type/group.rb +2 -2
- data/lib/puppet/type/host.rb +6 -6
- data/lib/puppet/type/interface.rb +1 -1
- data/lib/puppet/type/k5login.rb +1 -1
- data/lib/puppet/type/macauthorization.rb +1 -1
- data/lib/puppet/type/mailalias.rb +2 -18
- data/lib/puppet/type/maillist.rb +1 -1
- data/lib/puppet/type/mount.rb +8 -8
- data/lib/puppet/type/notify.rb +2 -0
- data/lib/puppet/type/package.rb +5 -5
- data/lib/puppet/type/resources.rb +6 -6
- data/lib/puppet/type/schedule.rb +9 -9
- data/lib/puppet/type/scheduled_task.rb +9 -8
- data/lib/puppet/type/service.rb +1 -1
- data/lib/puppet/type/ssh_authorized_key.rb +3 -19
- data/lib/puppet/type/sshkey.rb +4 -4
- data/lib/puppet/type/tidy.rb +16 -19
- data/lib/puppet/type/user.rb +35 -70
- data/lib/puppet/type/yumrepo.rb +8 -8
- data/lib/puppet/type/zone.rb +7 -7
- data/lib/puppet/type/zpool.rb +3 -3
- data/lib/puppet/util.rb +16 -12
- data/lib/puppet/util/at_fork.rb +35 -0
- data/lib/puppet/util/at_fork/noop.rb +18 -0
- data/lib/puppet/util/at_fork/solaris.rb +158 -0
- data/lib/puppet/util/autoload.rb +2 -2
- data/lib/puppet/util/backups.rb +6 -6
- data/lib/puppet/util/classgen.rb +4 -4
- data/lib/puppet/util/command_line.rb +4 -4
- data/lib/puppet/util/command_line/puppet_option_parser.rb +3 -3
- data/lib/puppet/util/command_line/trollop.rb +31 -31
- data/lib/puppet/util/diff.rb +1 -1
- data/lib/puppet/util/errors.rb +4 -4
- data/lib/puppet/util/execution.rb +9 -9
- data/lib/puppet/util/feature.rb +5 -5
- data/lib/puppet/util/fileparsing.rb +8 -8
- data/lib/puppet/util/filetype.rb +15 -15
- data/lib/puppet/util/http_proxy.rb +7 -15
- data/lib/puppet/util/inifile.rb +4 -4
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/json_lockfile.rb +4 -4
- data/lib/puppet/util/ldap/connection.rb +2 -2
- data/lib/puppet/util/ldap/manager.rb +2 -2
- data/lib/puppet/util/limits.rb +1 -1
- data/lib/puppet/util/log.rb +23 -16
- data/lib/puppet/util/log/destinations.rb +10 -16
- data/lib/puppet/util/logging.rb +11 -8
- data/lib/puppet/util/metric.rb +9 -6
- data/lib/puppet/util/monkey_patches.rb +27 -66
- data/lib/puppet/util/network_device.rb +1 -1
- data/lib/puppet/util/network_device/cisco/device.rb +7 -7
- data/lib/puppet/util/network_device/cisco/interface.rb +1 -1
- data/lib/puppet/util/network_device/config.rb +6 -6
- data/lib/puppet/util/network_device/transport/ssh.rb +6 -6
- data/lib/puppet/util/plist.rb +4 -2
- data/lib/puppet/util/posix.rb +5 -5
- data/lib/puppet/util/profiler/wall_clock.rb +1 -1
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/psych_support.rb +3 -11
- data/lib/puppet/util/rdoc.rb +4 -4
- data/lib/puppet/util/reference.rb +14 -7
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/retry_action.rb +2 -2
- data/lib/puppet/util/selinux.rb +54 -12
- data/lib/puppet/util/splayer.rb +1 -1
- data/lib/puppet/util/storage.rb +5 -5
- data/lib/puppet/util/suidmanager.rb +4 -4
- data/lib/puppet/util/symbolic_file_mode.rb +9 -9
- data/lib/puppet/util/tag_set.rb +1 -4
- data/lib/puppet/util/tagging.rb +2 -2
- data/lib/puppet/util/windows.rb +2 -0
- data/lib/puppet/util/windows/adsi.rb +19 -16
- data/lib/puppet/util/windows/api_types.rb +7 -11
- data/lib/puppet/util/windows/com.rb +4 -4
- data/lib/puppet/util/windows/error.rb +2 -2
- data/lib/puppet/util/windows/eventlog.rb +192 -0
- data/lib/puppet/util/windows/file.rb +13 -96
- data/lib/puppet/util/windows/principal.rb +6 -7
- data/lib/puppet/util/windows/process.rb +6 -14
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/root_certs.rb +1 -1
- data/lib/puppet/util/windows/security.rb +14 -14
- data/lib/puppet/util/windows/sid.rb +13 -66
- data/lib/puppet/util/windows/taskscheduler.rb +62 -62
- data/lib/puppet/util/windows/user.rb +6 -6
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +2 -10
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +1 -1
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +122 -114
- data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +678 -342
- data/lib/puppet/vendor/semantic_puppet/{lib/semantic_puppet/locales → locales}/config.yaml +0 -0
- data/lib/puppet/version.rb +1 -1
- data/locales/config.yaml +1 -1
- data/locales/puppet.pot +7847 -112
- data/man/man5/puppet.conf.5 +55 -296
- data/man/man8/puppet-agent.8 +10 -32
- data/man/man8/puppet-apply.8 +6 -21
- data/man/man8/puppet-ca.8 +34 -48
- data/man/man8/puppet-catalog.8 +4 -4
- data/man/man8/puppet-cert.8 +6 -23
- data/man/man8/puppet-certificate.8 +28 -44
- data/man/man8/puppet-certificate_request.8 +4 -4
- data/man/man8/puppet-certificate_revocation_list.8 +4 -4
- data/man/man8/puppet-config.8 +5 -5
- data/man/man8/puppet-describe.8 +3 -3
- data/man/man8/puppet-device.8 +13 -23
- data/man/man8/puppet-doc.8 +5 -5
- data/man/man8/puppet-epp.8 +10 -16
- data/man/man8/puppet-facts.8 +4 -4
- data/man/man8/puppet-filebucket.8 +6 -63
- data/man/man8/puppet-help.8 +4 -4
- data/man/man8/puppet-inspect.8 +5 -8
- data/man/man8/puppet-key.8 +4 -4
- data/man/man8/puppet-man.8 +5 -5
- data/man/man8/puppet-master.8 +5 -5
- data/man/man8/puppet-module.8 +13 -22
- data/man/man8/puppet-node.8 +4 -4
- data/man/man8/puppet-parser.8 +4 -4
- data/man/man8/puppet-plugin.8 +4 -4
- data/man/man8/puppet-report.8 +4 -4
- data/man/man8/puppet-resource.8 +8 -4
- data/man/man8/puppet-status.8 +5 -5
- data/man/man8/puppet.8 +3 -12
- data/spec/fixtures/unit/application/environments/production/data/common.yaml +0 -2
- data/spec/fixtures/unit/data_providers/environments/production/modules/abc/metadata.json +9 -0
- data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/metadata.json +9 -0
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/metadata.json +9 -0
- data/spec/integration/agent/logging_spec.rb +0 -2
- data/spec/integration/application/apply_spec.rb +19 -23
- data/spec/integration/application/lookup_spec.rb +0 -21
- data/spec/integration/configurer_spec.rb +1 -1
- data/spec/integration/defaults_spec.rb +2 -2
- data/spec/integration/file_bucket/file_spec.rb +5 -20
- data/spec/integration/indirector/file_content/file_server_spec.rb +1 -0
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +1 -0
- data/spec/integration/parser/catalog_spec.rb +1 -1
- data/spec/integration/parser/class_spec.rb +6 -6
- data/spec/integration/parser/compiler_spec.rb +184 -142
- data/spec/integration/parser/dynamic_scoping_spec.rb +0 -1
- data/spec/integration/parser/pcore_resource_spec.rb +1 -1
- data/spec/integration/parser/scope_spec.rb +53 -4
- data/spec/integration/provider/cron/crontab_spec.rb +0 -1
- data/spec/integration/resource/catalog_spec.rb +0 -4
- data/spec/integration/transaction/report_spec.rb +2 -2
- data/spec/integration/transaction_spec.rb +4 -37
- data/spec/integration/type/package_spec.rb +7 -1
- data/spec/integration/util/execution_spec.rb +0 -8
- data/spec/integration/util/windows/adsi_spec.rb +1 -86
- data/spec/integration/util/windows/principal_spec.rb +1 -10
- data/spec/integration/util/windows/process_spec.rb +0 -45
- data/spec/lib/matchers/json.rb +3 -3
- data/spec/lib/puppet/indirector_testing.rb +4 -0
- data/spec/lib/puppet_spec/compiler.rb +1 -1
- data/spec/lib/puppet_spec/modules.rb +2 -2
- data/spec/lib/puppet_spec/network.rb +10 -6
- data/spec/shared_contexts/types_setup.rb +28 -9
- data/spec/spec_helper.rb +0 -11
- data/spec/unit/agent_spec.rb +12 -34
- data/spec/unit/application/agent_spec.rb +16 -0
- data/spec/unit/application/apply_spec.rb +37 -13
- data/spec/unit/application/cert_spec.rb +1 -40
- data/spec/unit/application/config_spec.rb +0 -4
- data/spec/unit/application/describe_spec.rb +19 -0
- data/spec/unit/application/device_spec.rb +41 -2
- data/spec/unit/application/face_base_spec.rb +6 -6
- data/spec/unit/application/lookup_spec.rb +1 -31
- data/spec/unit/application/master_spec.rb +22 -6
- data/spec/unit/application/resource_spec.rb +17 -0
- data/spec/unit/application_spec.rb +0 -24
- data/spec/unit/capability_spec.rb +2 -6
- data/spec/unit/configurer/fact_handler_spec.rb +74 -41
- data/spec/unit/configurer/plugin_handler_spec.rb +13 -19
- data/spec/unit/configurer_spec.rb +36 -33
- data/spec/unit/defaults_spec.rb +0 -44
- data/spec/unit/environments_spec.rb +0 -15
- data/spec/unit/face/config_spec.rb +2 -1
- data/spec/unit/face/epp_face_spec.rb +0 -9
- data/spec/unit/face/module/list_spec.rb +60 -0
- data/spec/unit/file_bucket/file_spec.rb +3 -3
- data/spec/unit/file_serving/http_metadata_spec.rb +1 -1
- data/spec/unit/file_serving/metadata_spec.rb +14 -9
- data/spec/unit/forge/forge_spec.rb +2 -2
- data/spec/unit/forge_spec.rb +0 -105
- data/spec/unit/functions/annotate_spec.rb +175 -0
- data/spec/unit/functions/break_spec.rb +52 -83
- data/spec/unit/functions/call_spec.rb +77 -0
- data/spec/unit/functions/contain_spec.rb +1 -1
- data/spec/unit/functions/defined_spec.rb +2 -2
- data/spec/unit/functions/epp_spec.rb +0 -10
- data/spec/unit/functions/hiera_spec.rb +0 -5
- data/spec/unit/functions/lookup_fixture_spec.rb +1 -6
- data/spec/unit/functions/lookup_spec.rb +4 -97
- data/spec/unit/functions/new_spec.rb +1 -1
- data/spec/unit/functions/unique_spec.rb +111 -0
- data/spec/unit/functions4_spec.rb +2 -43
- data/spec/unit/graph/relationship_graph_spec.rb +0 -15
- data/spec/unit/graph/simple_graph_spec.rb +58 -55
- data/spec/unit/indirector/catalog/compiler_spec.rb +206 -174
- data/spec/unit/indirector/catalog/json_spec.rb +50 -1
- data/spec/unit/indirector/facts/facter_spec.rb +1 -2
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +4 -4
- data/spec/unit/indirector/file_server_spec.rb +17 -2
- data/spec/unit/indirector/indirection_spec.rb +3 -60
- data/spec/unit/indirector/json_spec.rb +27 -6
- data/spec/unit/indirector/node/exec_spec.rb +12 -12
- data/spec/unit/indirector/node/ldap_spec.rb +29 -8
- data/spec/unit/indirector/node/plain_spec.rb +16 -6
- data/spec/unit/indirector/node/write_only_yaml_spec.rb +12 -0
- data/spec/unit/indirector/report/processor_spec.rb +2 -2
- data/spec/unit/indirector/report/rest_spec.rb +29 -3
- data/spec/unit/indirector/request_spec.rb +0 -45
- data/spec/unit/indirector/rest_spec.rb +57 -15
- data/spec/unit/interface/face_collection_spec.rb +7 -7
- data/spec/unit/interface_spec.rb +0 -12
- data/spec/unit/module_spec.rb +10 -31
- data/spec/unit/module_tool/applications/installer_spec.rb +0 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +0 -1
- data/spec/unit/module_tool/tar/mini_spec.rb +5 -34
- data/spec/unit/network/format_handler_spec.rb +11 -11
- data/spec/unit/network/format_spec.rb +9 -0
- data/spec/unit/network/formats_spec.rb +322 -138
- data/spec/unit/network/http/api/indirected_routes_spec.rb +62 -52
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +128 -2
- data/spec/unit/network/http/api/master/v3_spec.rb +1 -1
- data/spec/unit/network/http/api_spec.rb +1 -1
- data/spec/unit/network/http/compression_spec.rb +105 -88
- data/spec/unit/network/http/error_spec.rb +1 -2
- data/spec/unit/network/http/factory_spec.rb +9 -38
- data/spec/unit/network/http/handler_spec.rb +8 -12
- data/spec/unit/network/http/request_spec.rb +110 -0
- data/spec/unit/network/http/response_spec.rb +108 -0
- data/spec/unit/network/http/webrick_spec.rb +29 -30
- data/spec/unit/node/facts_spec.rb +13 -13
- data/spec/unit/node_spec.rb +33 -10
- data/spec/unit/parameter_spec.rb +73 -5
- data/spec/unit/parser/ast/leaf_spec.rb +4 -3
- data/spec/unit/parser/compiler_spec.rb +1 -1
- data/spec/unit/parser/environment_compiler_spec.rb +0 -2
- data/spec/unit/parser/functions/sprintf_spec.rb +0 -26
- data/spec/unit/parser/resource_spec.rb +86 -24
- data/spec/unit/parser/scope_spec.rb +4 -81
- data/spec/unit/pops/benchmark_spec.rb +8 -26
- data/spec/unit/pops/containment_spec.rb +0 -26
- data/spec/unit/pops/evaluator/access_ops_spec.rb +103 -103
- data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +59 -6
- data/spec/unit/pops/evaluator/basic_expressions_spec.rb +5 -5
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +26 -26
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +19 -7
- data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +7 -7
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +36 -1
- data/spec/unit/pops/evaluator/string_interpolation_spec.rb +10 -10
- data/spec/unit/pops/evaluator/variables_spec.rb +1 -1
- data/spec/unit/pops/factory_rspec_helper.rb +0 -4
- data/spec/unit/pops/factory_spec.rb +83 -83
- data/spec/unit/pops/loaders/loaders_spec.rb +69 -1
- data/spec/unit/pops/loaders/static_loader_spec.rb +3 -7
- data/spec/unit/pops/model/model_spec.rb +10 -10
- data/spec/unit/pops/parser/epp_parser_spec.rb +1 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +4 -59
- data/spec/unit/pops/parser/{source_pos_adapter_spec.rb → locator_spec.rb} +9 -11
- data/spec/unit/pops/parser/parse_application_spec.rb +0 -3
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +4 -4
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +0 -3
- data/spec/unit/pops/parser/parse_containers_spec.rb +17 -19
- data/spec/unit/pops/parser/parse_site_spec.rb +0 -3
- data/spec/unit/pops/parser/parser_spec.rb +8 -10
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +1 -3
- data/spec/unit/pops/serialization/serialization_spec.rb +87 -1
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +494 -0
- data/spec/unit/pops/time/timestamp_spec.rb +13 -0
- data/spec/unit/pops/types/iterable_spec.rb +1 -1
- data/spec/unit/pops/types/p_object_type_spec.rb +99 -13
- data/spec/unit/pops/types/p_timestamp_type_spec.rb +8 -8
- data/spec/unit/pops/types/p_type_set_type_spec.rb +1 -9
- data/spec/unit/pops/types/ruby_generator_spec.rb +57 -20
- data/spec/unit/pops/types/string_converter_spec.rb +78 -30
- data/spec/unit/pops/types/type_acceptor_spec.rb +2 -2
- data/spec/unit/pops/types/type_calculator_spec.rb +207 -123
- data/spec/unit/pops/types/type_factory_spec.rb +9 -9
- data/spec/unit/pops/types/type_formatter_spec.rb +32 -19
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -9
- data/spec/unit/pops/types/type_parser_spec.rb +6 -6
- data/spec/unit/pops/types/types_spec.rb +42 -2
- data/spec/unit/pops/validator/validator_spec.rb +25 -86
- data/spec/unit/pops/visitor_spec.rb +1 -1
- data/spec/unit/property/list_spec.rb +2 -2
- data/spec/unit/provider/augeas/augeas_spec.rb +1 -1
- data/spec/unit/provider/group/windows_adsi_spec.rb +22 -79
- data/spec/unit/provider/package/aix_spec.rb +0 -8
- data/spec/unit/provider/package/portage_spec.rb +103 -17
- data/spec/unit/provider/package/rpm_spec.rb +14 -1
- data/spec/unit/provider/package/yum_spec.rb +0 -10
- data/spec/unit/provider/service/base_spec.rb +0 -20
- data/spec/unit/provider/service/smf_spec.rb +4 -2
- data/spec/unit/provider/service/systemd_spec.rb +1 -15
- data/spec/unit/provider/user/directoryservice_spec.rb +7 -7
- data/spec/unit/provider/user/windows_adsi_spec.rb +4 -4
- data/spec/unit/provider/zfs/zfs_spec.rb +1 -7
- data/spec/unit/puppet_spec.rb +2 -3
- data/spec/unit/relationship_spec.rb +15 -36
- data/spec/unit/reports/http_spec.rb +11 -8
- data/spec/unit/resource/catalog_spec.rb +47 -49
- data/spec/unit/resource/status_spec.rb +114 -103
- data/spec/unit/resource/type_collection_spec.rb +5 -5
- data/spec/unit/resource/type_spec.rb +4 -71
- data/spec/unit/resource_spec.rb +30 -34
- data/spec/unit/settings_spec.rb +4 -2
- data/spec/unit/ssl/host_spec.rb +34 -34
- data/spec/unit/status_spec.rb +7 -7
- data/spec/unit/transaction/event_spec.rb +18 -15
- data/spec/unit/transaction/report_spec.rb +100 -81
- data/spec/unit/transaction/resource_harness_spec.rb +3 -3
- data/spec/unit/transaction_spec.rb +53 -8
- data/spec/unit/type/file/group_spec.rb +2 -2
- data/spec/unit/type/file/mode_spec.rb +9 -9
- data/spec/unit/type/file/owner_spec.rb +2 -2
- data/spec/unit/type/file/selinux_spec.rb +2 -0
- data/spec/unit/type/file/source_spec.rb +13 -0
- data/spec/unit/type/nagios_spec.rb +1 -21
- data/spec/unit/type/ssh_authorized_key_spec.rb +2 -2
- data/spec/unit/type/tidy_spec.rb +0 -14
- data/spec/unit/type/user_spec.rb +2 -4
- data/spec/unit/util/at_fork_spec.rb +150 -0
- data/spec/unit/util/execution_spec.rb +31 -2
- data/spec/unit/util/http_proxy_spec.rb +0 -37
- data/spec/unit/util/log/destinations_spec.rb +5 -6
- data/spec/unit/util/log_spec.rb +62 -17
- data/spec/unit/util/metric_spec.rb +9 -2
- data/spec/unit/util/monkey_patches_spec.rb +6 -188
- data/spec/unit/util/run_mode_spec.rb +17 -10
- data/spec/unit/util/tag_set_spec.rb +2 -2
- data/spec/unit/util/tagging_spec.rb +55 -0
- data/spec/unit/util/windows/adsi_spec.rb +27 -31
- data/spec/unit/util/windows/api_types_spec.rb +0 -51
- data/spec/unit/util/windows/eventlog_spec.rb +123 -0
- data/spec/unit/util/windows/sid_spec.rb +15 -86
- data/spec/unit/util_spec.rb +7 -1
- data/tasks/benchmark.rake +3 -3
- data/tasks/cfpropertylist.rake +1 -1
- data/tasks/generate_ast_model.rake +78 -0
- data/tasks/manpages.rake +1 -1
- data/tasks/parallel.rake +7 -12
- metadata +3436 -3695
- checksums.yaml +0 -7
- data/bin/extlookup2hiera +0 -56
- data/ext/emacs/puppet-mode-init.el +0 -6
- data/ext/emacs/puppet-mode.el +0 -433
- data/ext/vim/README +0 -3
- data/ext/vim/ftdetect/puppet.vim +0 -2
- data/ext/vim/ftplugin/puppet.vim +0 -94
- data/ext/vim/indent/puppet.vim +0 -76
- data/ext/vim/syntax/puppet.vim +0 -115
- data/lib/puppet/application/file.rb +0 -4
- data/lib/puppet/application/inspect.rb +0 -184
- data/lib/puppet/application/resource_type.rb +0 -7
- data/lib/puppet/data_providers.rb +0 -34
- data/lib/puppet/data_providers/data_adapter.rb +0 -37
- data/lib/puppet/data_providers/data_function_support.rb +0 -32
- data/lib/puppet/data_providers/function_env_data_provider.rb +0 -26
- data/lib/puppet/data_providers/function_module_data_provider.rb +0 -24
- data/lib/puppet/data_providers/hiera_config.rb +0 -151
- data/lib/puppet/data_providers/hiera_env_data_provider.rb +0 -25
- data/lib/puppet/data_providers/hiera_interpolate.rb +0 -21
- data/lib/puppet/data_providers/hiera_module_data_provider.rb +0 -30
- data/lib/puppet/data_providers/hiera_support.rb +0 -42
- data/lib/puppet/data_providers/json_data_provider_factory.rb +0 -38
- data/lib/puppet/data_providers/yaml_data_provider_factory.rb +0 -40
- data/lib/puppet/face/file.rb +0 -50
- data/lib/puppet/face/file/download.rb +0 -56
- data/lib/puppet/face/file/store.rb +0 -21
- data/lib/puppet/face/resource_type.rb +0 -84
- data/lib/puppet/feature/cfacter.rb +0 -15
- data/lib/puppet/feature/external_facts.rb +0 -5
- data/lib/puppet/indirector/catalog/static_compiler.rb +0 -232
- data/lib/puppet/indirector/resource_type.rb +0 -5
- data/lib/puppet/indirector/resource_type/parser.rb +0 -108
- data/lib/puppet/indirector/resource_type/rest.rb +0 -7
- data/lib/puppet/parser/yaml_trimmer.rb +0 -7
- data/lib/puppet/plugins/binding_schemes.rb +0 -140
- data/lib/puppet/plugins/data_providers.rb +0 -45
- data/lib/puppet/plugins/data_providers/data_provider.rb +0 -406
- data/lib/puppet/plugins/data_providers/registry.rb +0 -51
- data/lib/puppet/pops/binder/binder.rb +0 -398
- data/lib/puppet/pops/binder/binder_issues.rb +0 -124
- data/lib/puppet/pops/binder/bindings_checker.rb +0 -201
- data/lib/puppet/pops/binder/bindings_composer.rb +0 -181
- data/lib/puppet/pops/binder/bindings_factory.rb +0 -813
- data/lib/puppet/pops/binder/bindings_label_provider.rb +0 -45
- data/lib/puppet/pops/binder/bindings_loader.rb +0 -87
- data/lib/puppet/pops/binder/bindings_model.rb +0 -70
- data/lib/puppet/pops/binder/bindings_model_dumper.rb +0 -215
- data/lib/puppet/pops/binder/bindings_model_meta.rb +0 -215
- data/lib/puppet/pops/binder/bindings_validator_factory.rb +0 -28
- data/lib/puppet/pops/binder/config/binder_config.rb +0 -107
- data/lib/puppet/pops/binder/config/binder_config_checker.rb +0 -142
- data/lib/puppet/pops/binder/config/diagnostic_producer.rb +0 -36
- data/lib/puppet/pops/binder/config/issues.rb +0 -90
- data/lib/puppet/pops/binder/injector.rb +0 -771
- data/lib/puppet/pops/binder/injector_entry.rb +0 -57
- data/lib/puppet/pops/binder/key_factory.rb +0 -65
- data/lib/puppet/pops/binder/producers.rb +0 -831
- data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +0 -34
- data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +0 -143
- data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +0 -53
- data/lib/puppet/pops/binder/system_bindings.rb +0 -60
- data/lib/puppet/pops/containment.rb +0 -104
- data/lib/puppet/pops/model/model.rb +0 -131
- data/lib/puppet/pops/model/model_meta.rb +0 -629
- data/lib/puppet/pops/serialization/rgen.rb +0 -152
- data/lib/puppet/vendor/load_rgen.rb +0 -2
- data/lib/puppet/vendor/rgen/CHANGELOG +0 -197
- data/lib/puppet/vendor/rgen/MIT-LICENSE +0 -20
- data/lib/puppet/vendor/rgen/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/rgen/README.rdoc +0 -78
- data/lib/puppet/vendor/rgen/Rakefile +0 -41
- data/lib/puppet/vendor/rgen/TODO +0 -41
- data/lib/puppet/vendor/rgen/anounce.txt +0 -61
- data/lib/puppet/vendor/rgen/design_rationale.txt +0 -71
- data/lib/puppet/vendor/rgen/lib/ea_support/ea_support.rb +0 -54
- data/lib/puppet/vendor/rgen/lib/ea_support/id_store.rb +0 -32
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel.rb +0 -562
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_ext.rb +0 -45
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_generator.rb +0 -43
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_to_uml13.rb +0 -103
- data/lib/puppet/vendor/rgen/lib/ea_support/uml13_to_uml13_ea.rb +0 -89
- data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel.rb +0 -559
- data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel_ext.rb +0 -26
- data/lib/puppet/vendor/rgen/lib/mmgen/metamodel_generator.rb +0 -20
- data/lib/puppet/vendor/rgen/lib/mmgen/mm_ext/ecore_mmgen_ext.rb +0 -91
- data/lib/puppet/vendor/rgen/lib/mmgen/mmgen.rb +0 -28
- data/lib/puppet/vendor/rgen/lib/mmgen/templates/annotations.tpl +0 -37
- data/lib/puppet/vendor/rgen/lib/mmgen/templates/metamodel_generator.tpl +0 -172
- data/lib/puppet/vendor/rgen/lib/rgen/array_extensions.rb +0 -45
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore.rb +0 -218
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_builder_methods.rb +0 -81
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_ext.rb +0 -69
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_interface.rb +0 -47
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_to_ruby.rb +0 -167
- data/lib/puppet/vendor/rgen/lib/rgen/ecore/ruby_to_ecore.rb +0 -91
- data/lib/puppet/vendor/rgen/lib/rgen/environment.rb +0 -129
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/dump_file_cache.rb +0 -63
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/fragmented_model.rb +0 -140
- data/lib/puppet/vendor/rgen/lib/rgen/fragment/model_fragment.rb +0 -289
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_instantiator.rb +0 -66
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_xml_instantiator.rb +0 -66
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/default_xml_instantiator.rb +0 -117
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/ecore_xml_instantiator.rb +0 -169
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_instantiator.rb +0 -126
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.rb +0 -331
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.y +0 -94
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/nodebased_xml_instantiator.rb +0 -137
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/qualified_name_resolver.rb +0 -97
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/reference_resolver.rb +0 -128
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/resolution_helper.rb +0 -47
- data/lib/puppet/vendor/rgen/lib/rgen/instantiator/xmi11_instantiator.rb +0 -168
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder.rb +0 -224
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_extensions.rb +0 -556
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_runtime.rb +0 -174
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/constant_order_helper.rb +0 -89
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/data_types.rb +0 -77
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/annotation.rb +0 -30
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/feature.rb +0 -168
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/mm_multiple.rb +0 -23
- data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/module_extension.rb +0 -42
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder.rb +0 -32
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/builder_context.rb +0 -334
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/model_serializer.rb +0 -225
- data/lib/puppet/vendor/rgen/lib/rgen/model_builder/reference_resolver.rb +0 -156
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/json_serializer.rb +0 -121
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/opposite_reference_filter.rb +0 -18
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/qualified_name_provider.rb +0 -47
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi11_serializer.rb +0 -116
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi20_serializer.rb +0 -71
- data/lib/puppet/vendor/rgen/lib/rgen/serializer/xml_serializer.rb +0 -98
- data/lib/puppet/vendor/rgen/lib/rgen/template_language.rb +0 -297
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/directory_template_container.rb +0 -83
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/output_handler.rb +0 -87
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_container.rb +0 -234
- data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_helper.rb +0 -26
- data/lib/puppet/vendor/rgen/lib/rgen/transformer.rb +0 -475
- data/lib/puppet/vendor/rgen/lib/rgen/util/auto_class_creator.rb +0 -61
- data/lib/puppet/vendor/rgen/lib/rgen/util/cached_glob.rb +0 -67
- data/lib/puppet/vendor/rgen/lib/rgen/util/file_cache_map.rb +0 -124
- data/lib/puppet/vendor/rgen/lib/rgen/util/file_change_detector.rb +0 -84
- data/lib/puppet/vendor/rgen/lib/rgen/util/method_delegation.rb +0 -114
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator.rb +0 -68
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator_base.rb +0 -142
- data/lib/puppet/vendor/rgen/lib/rgen/util/model_dumper.rb +0 -29
- data/lib/puppet/vendor/rgen/lib/rgen/util/name_helper.rb +0 -42
- data/lib/puppet/vendor/rgen/lib/rgen/util/pattern_matcher.rb +0 -329
- data/lib/puppet/vendor/rgen/lib/transformers/ecore_to_uml13.rb +0 -79
- data/lib/puppet/vendor/rgen/lib/transformers/uml13_to_ecore.rb +0 -127
- data/lib/puppet/vendor/rgen/test/array_extensions_test.rb +0 -64
- data/lib/puppet/vendor/rgen/test/ea_instantiator_test.rb +0 -35
- data/lib/puppet/vendor/rgen/test/ea_serializer_test.rb +0 -23
- data/lib/puppet/vendor/rgen/test/ecore_self_test.rb +0 -54
- data/lib/puppet/vendor/rgen/test/environment_test.rb +0 -90
- data/lib/puppet/vendor/rgen/test/json_test.rb +0 -171
- data/lib/puppet/vendor/rgen/test/metamodel_builder_test.rb +0 -1482
- data/lib/puppet/vendor/rgen/test/metamodel_from_ecore_test.rb +0 -57
- data/lib/puppet/vendor/rgen/test/metamodel_order_test.rb +0 -131
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test.rb +0 -98
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/TestModel.rb +0 -70
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel.ecore +0 -42
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb +0 -44
- data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/using_builtin_types.ecore +0 -9
- data/lib/puppet/vendor/rgen/test/method_delegation_test.rb +0 -178
- data/lib/puppet/vendor/rgen/test/model_builder/builder_context_test.rb +0 -59
- data/lib/puppet/vendor/rgen/test/model_builder/builder_test.rb +0 -242
- data/lib/puppet/vendor/rgen/test/model_builder/ecore_original.rb +0 -163
- data/lib/puppet/vendor/rgen/test/model_builder/ecore_original_regenerated.rb +0 -163
- data/lib/puppet/vendor/rgen/test/model_builder/reference_resolver_test.rb +0 -156
- data/lib/puppet/vendor/rgen/test/model_builder/serializer_test.rb +0 -94
- data/lib/puppet/vendor/rgen/test/model_builder/statemachine_metamodel.rb +0 -42
- data/lib/puppet/vendor/rgen/test/model_builder/test_model/statemachine1.rb +0 -23
- data/lib/puppet/vendor/rgen/test/model_builder_test.rb +0 -6
- data/lib/puppet/vendor/rgen/test/model_fragment_test.rb +0 -30
- data/lib/puppet/vendor/rgen/test/output_handler_test.rb +0 -58
- data/lib/puppet/vendor/rgen/test/qualified_name_provider_test.rb +0 -48
- data/lib/puppet/vendor/rgen/test/qualified_name_resolver_test.rb +0 -102
- data/lib/puppet/vendor/rgen/test/reference_resolver_test.rb +0 -117
- data/lib/puppet/vendor/rgen/test/rgen_test.rb +0 -26
- data/lib/puppet/vendor/rgen/test/template_language_test.rb +0 -163
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result1.txt +0 -29
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result2.txt +0 -9
- data/lib/puppet/vendor/rgen/test/template_language_test/expected_result3.txt +0 -4
- data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestDefaultIndent.out +0 -1
- data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestTabIndent.out +0 -1
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/a.tpl +0 -12
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/b.tpl +0 -5
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/code/array.tpl +0 -11
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/author.tpl +0 -7
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/chapter.tpl +0 -5
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/local.tpl +0 -8
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/test.tpl +0 -8
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/evaluate_test/test.tpl +0 -7
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/indent_string_test.tpl +0 -12
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/c/cmod.tpl +0 -1
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/chapter.tpl +0 -3
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_backslash_r_test.tpl +0 -5
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/no_indent.tpl +0 -3
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/sub1/no_indent.tpl +0 -3
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test.tpl +0 -24
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test2.tpl +0 -13
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test3.tpl +0 -10
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/null_context_test.tpl +0 -17
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/root.tpl +0 -31
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1.tpl +0 -9
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1/sub1.tpl +0 -3
- data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/test.tpl +0 -4
- data/lib/puppet/vendor/rgen/test/template_language_test/testout.txt +0 -29
- data/lib/puppet/vendor/rgen/test/testmodel/class_model_checker.rb +0 -119
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.eap +0 -0
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.xml +0 -1029
- data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel_partial.xml +0 -317
- data/lib/puppet/vendor/rgen/test/testmodel/ecore_model_checker.rb +0 -101
- data/lib/puppet/vendor/rgen/test/testmodel/manual_testmodel.xml +0 -22
- data/lib/puppet/vendor/rgen/test/testmodel/object_model_checker.rb +0 -67
- data/lib/puppet/vendor/rgen/test/transformer_test.rb +0 -254
- data/lib/puppet/vendor/rgen/test/util/file_cache_map_test.rb +0 -99
- data/lib/puppet/vendor/rgen/test/util/pattern_matcher_test.rb +0 -97
- data/lib/puppet/vendor/rgen/test/util_test.rb +0 -5
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test.rb +0 -160
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_ecore_model_checker.rb +0 -94
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_ecore_instantiator.rb +0 -53
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_metamodel.rb +0 -49
- data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_to_ecore.rb +0 -75
- data/lib/puppet/vendor/rgen_patch.rb +0 -132
- data/lib/semver.rb +0 -146
- data/man/man8/extlookup2hiera.8 +0 -10
- data/man/man8/puppet-file.8 +0 -189
- data/man/man8/puppet-generate.8 +0 -84
- data/man/man8/puppet-lookup.8 +0 -87
- data/man/man8/puppet-resource_type.8 +0 -188
- data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -9
- data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/lib/puppet/bindings/xyz/default.rb +0 -9
- data/spec/fixtures/unit/data_providers/environments/sample/environment.conf +0 -2
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +0 -5
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +0 -9
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +0 -23
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +0 -5
- data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +0 -9
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet/bindings/dataprovider/default.rb +0 -54
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +0 -33
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_module_data.rb +0 -33
- data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +0 -5
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -9
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +0 -10
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +0 -23
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/manifests/init.pp +0 -3
- data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/metadata.json +0 -9
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-plugin-output.txt +0 -36
- data/spec/fixtures/unit/provider/service/base/ps_ef.mixed_encoding +0 -3
- data/spec/unit/application/inspect_spec.rb +0 -316
- data/spec/unit/data_providers/custom_data_provider_spec.rb +0 -50
- data/spec/unit/face/file_spec.rb +0 -14
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +0 -255
- data/spec/unit/indirector/resource_type/parser_spec.rb +0 -259
- data/spec/unit/indirector/resource_type/rest_spec.rb +0 -14
- data/spec/unit/pops/binder/binder_spec.rb +0 -43
- data/spec/unit/pops/binder/bindings_checker_spec.rb +0 -155
- data/spec/unit/pops/binder/bindings_composer_spec.rb +0 -64
- data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +0 -18
- data/spec/unit/pops/binder/config/binder_config_spec.rb +0 -42
- data/spec/unit/pops/binder/injector_spec.rb +0 -768
- data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +0 -23
- data/spec/unit/pops/serialization/rgen_spec.rb +0 -88
- data/spec/unit/semver_spec.rb +0 -546
@@ -1,201 +0,0 @@
|
|
1
|
-
module Puppet::Pops
|
2
|
-
module Binder
|
3
|
-
# A validator/checker of a bindings model
|
4
|
-
# @api public
|
5
|
-
#
|
6
|
-
class BindingsChecker
|
7
|
-
Bindings = Bindings
|
8
|
-
Issues = BinderIssues
|
9
|
-
Types = Types
|
10
|
-
|
11
|
-
attr_reader :type_calculator
|
12
|
-
attr_reader :acceptor
|
13
|
-
|
14
|
-
# @api public
|
15
|
-
def initialize(diagnostics_producer)
|
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)
|
19
|
-
@acceptor = diagnostics_producer
|
20
|
-
end
|
21
|
-
|
22
|
-
# Validates the entire model by visiting each model element and calling `check`.
|
23
|
-
# The result is collected (or acted on immediately) by the configured diagnostic provider/acceptor
|
24
|
-
# given when creating this Checker.
|
25
|
-
#
|
26
|
-
# @api public
|
27
|
-
#
|
28
|
-
def validate(b)
|
29
|
-
check(b)
|
30
|
-
b.eAllContents.each {|c| check(c) }
|
31
|
-
end
|
32
|
-
|
33
|
-
# Performs binding validity check
|
34
|
-
# @api private
|
35
|
-
def check(b)
|
36
|
-
@@check_visitor.visit_this_0(self, b)
|
37
|
-
end
|
38
|
-
|
39
|
-
# Checks that a binding has a producer and a type
|
40
|
-
# @api private
|
41
|
-
def check_Binding(b)
|
42
|
-
# Must have a type
|
43
|
-
acceptor.accept(Issues::MISSING_TYPE, b) unless b.type.is_a?(Types::PAnyType)
|
44
|
-
|
45
|
-
# Must have a producer
|
46
|
-
acceptor.accept(Issues::MISSING_PRODUCER, b) unless b.producer.is_a?(Bindings::ProducerDescriptor)
|
47
|
-
end
|
48
|
-
|
49
|
-
# Checks that the producer is a Multibind producer and that the type is a PCollectionType
|
50
|
-
# @api private
|
51
|
-
def check_Multibinding(b)
|
52
|
-
# id is optional (empty id blocks contributions)
|
53
|
-
|
54
|
-
# A multibinding must have PCollectionType
|
55
|
-
acceptor.accept(Issues::MULTIBIND_TYPE_ERROR, b, {:actual_type => b.type}) unless b.type.is_a?(Types::PCollectionType)
|
56
|
-
|
57
|
-
# if the producer is nil, a suitable producer will be picked automatically
|
58
|
-
unless b.producer.nil? || b.producer.is_a?(Bindings::MultibindProducerDescriptor)
|
59
|
-
acceptor.accept(Issues::MULTIBIND_NOT_COLLECTION_PRODUCER, b, {:actual_producer => b.producer})
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
# Checks that the bindings object contains at least one binding. Then checks each binding in turn
|
64
|
-
# @api private
|
65
|
-
def check_Bindings(b)
|
66
|
-
acceptor.accept(Issues::MISSING_BINDINGS, b) unless has_entries?(b.bindings)
|
67
|
-
end
|
68
|
-
|
69
|
-
# Checks that a name has been associated with the bindings
|
70
|
-
# @api private
|
71
|
-
def check_NamedBindings(b)
|
72
|
-
acceptor.accept(Issues::MISSING_BINDINGS_NAME, b) unless has_chars?(b.name)
|
73
|
-
check_Bindings(b)
|
74
|
-
end
|
75
|
-
|
76
|
-
# Check layer has a name
|
77
|
-
# @api private
|
78
|
-
def check_NamedLayer(l)
|
79
|
-
acceptor.accept(Issues::MISSING_LAYER_NAME, binding_parent(l)) unless has_chars?(l.name)
|
80
|
-
end
|
81
|
-
|
82
|
-
# Checks that the binding has layers and that each layer has a name and at least one binding
|
83
|
-
# @api private
|
84
|
-
def check_LayeredBindings(b)
|
85
|
-
acceptor.accept(Issues::MISSING_LAYERS, b) unless has_entries?(b.layers)
|
86
|
-
end
|
87
|
-
|
88
|
-
# Checks that the non caching producer has a producer to delegate to
|
89
|
-
# @api private
|
90
|
-
def check_NonCachingProducerDescriptor(p)
|
91
|
-
acceptor.accept(Issues::PRODUCER_MISSING_PRODUCER, p) unless p.producer.is_a?(Bindings::ProducerDescriptor)
|
92
|
-
end
|
93
|
-
|
94
|
-
# Checks that a constant value has been declared in the producer and that the type
|
95
|
-
# of the value is compatible with the type declared in the binding
|
96
|
-
# @api private
|
97
|
-
def check_ConstantProducerDescriptor(p)
|
98
|
-
# the product must be of compatible type
|
99
|
-
# TODO: Likely to change when value becomes a typed Puppet Object
|
100
|
-
b = binding_parent(p)
|
101
|
-
if p.value.nil?
|
102
|
-
acceptor.accept(Issues::MISSING_VALUE, p, {:binding => b})
|
103
|
-
else
|
104
|
-
infered = type_calculator.infer(p.value)
|
105
|
-
unless type_calculator.assignable?(b.type, infered)
|
106
|
-
acceptor.accept(Issues::INCOMPATIBLE_TYPE, p, {:binding => b, :expected_type => b.type, :actual_type => infered})
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
# Checks that an expression has been declared in the producer
|
112
|
-
# @api private
|
113
|
-
def check_EvaluatingProducerDescriptor(p)
|
114
|
-
unless p.expression.is_a?(Model::Expression)
|
115
|
-
acceptor.accept(Issues::MISSING_EXPRESSION, p, {:binding => binding_parent(p)})
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
# Checks that a class name has been declared in the producer
|
120
|
-
# @api private
|
121
|
-
def check_InstanceProducerDescriptor(p)
|
122
|
-
acceptor.accept(Issues::MISSING_CLASS_NAME, p, {:binding => binding_parent(p)}) unless has_chars?(p.class_name)
|
123
|
-
end
|
124
|
-
|
125
|
-
# Checks that a type and a name has been declared. The type must be assignable to the type
|
126
|
-
# declared in the binding. The name can be an empty string to denote 'no name'
|
127
|
-
# @api private
|
128
|
-
def check_LookupProducerDescriptor(p)
|
129
|
-
b = binding_parent(p)
|
130
|
-
unless type_calculator.assignable(b.type, p.type)
|
131
|
-
acceptor.accept(Issues::INCOMPATIBLE_TYPE, p, {:binding => b, :expected_type => b.type, :actual_type => p.type })
|
132
|
-
end
|
133
|
-
acceptor.accept(Issues::MISSING_NAME, p, {:binding => b}) if p.name.nil? # empty string is OK
|
134
|
-
end
|
135
|
-
|
136
|
-
# Checks that a key has been declared, then calls producer_LookupProducerDescriptor to perform
|
137
|
-
# checks associated with the super class
|
138
|
-
# @api private
|
139
|
-
def check_HashLookupProducerDescriptor(p)
|
140
|
-
acceptor.accept(Issues::MISSING_KEY, p, {:binding => binding_parent(p)}) unless has_chars?(p.key)
|
141
|
-
check_LookupProducerDescriptor(p)
|
142
|
-
end
|
143
|
-
|
144
|
-
# Checks that the type declared in the binder is a PArrayType
|
145
|
-
# @api private
|
146
|
-
def check_ArrayMultibindProducerDescriptor(p)
|
147
|
-
b = binding_parent(p)
|
148
|
-
acceptor.accept(Issues::MULTIBIND_INCOMPATIBLE_TYPE, p, {:binding => b, :actual_type => b.type}) unless b.type.is_a?(Types::PArrayType)
|
149
|
-
end
|
150
|
-
|
151
|
-
# Checks that the type declared in the binder is a PHashType
|
152
|
-
# @api private
|
153
|
-
def check_HashMultibindProducerDescriptor(p)
|
154
|
-
b = binding_parent(p)
|
155
|
-
acceptor.accept(Issues::MULTIBIND_INCOMPATIBLE_TYPE, p, {:binding => b, :actual_type => b.type}) unless b.type.is_a?(Types::PHashType)
|
156
|
-
end
|
157
|
-
|
158
|
-
# Checks that the producer that this producer delegates to is declared
|
159
|
-
# @api private
|
160
|
-
def check_ProducerProducerDescriptor(p)
|
161
|
-
unless p.producer.is_a?(Bindings::ProducerDescriptor)
|
162
|
-
acceptor.accept(Issues::PRODUCER_MISSING_PRODUCER, p, {:binding => binding_parent(p)})
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
# @api private
|
167
|
-
def check_Expression(t)
|
168
|
-
@expression_validator.validate(t)
|
169
|
-
end
|
170
|
-
|
171
|
-
# @api private
|
172
|
-
def check_PAnyType(t)
|
173
|
-
# Do nothing
|
174
|
-
end
|
175
|
-
|
176
|
-
# Returns true if the argument is a non empty string
|
177
|
-
# @api private
|
178
|
-
def has_chars?(s)
|
179
|
-
s.is_a?(String) && !s.empty?
|
180
|
-
end
|
181
|
-
|
182
|
-
# @api private
|
183
|
-
def has_entries?(s)
|
184
|
-
!(s.nil? || s.empty?)
|
185
|
-
end
|
186
|
-
|
187
|
-
# @api private
|
188
|
-
def binding_parent(p)
|
189
|
-
begin
|
190
|
-
x = p.eContainer
|
191
|
-
if x.nil?
|
192
|
-
acceptor.accept(Issues::MODEL_OBJECT_IS_UNBOUND, p)
|
193
|
-
return nil
|
194
|
-
end
|
195
|
-
p = x
|
196
|
-
end while !p.is_a?(Bindings::AbstractBinding)
|
197
|
-
p
|
198
|
-
end
|
199
|
-
end
|
200
|
-
end
|
201
|
-
end
|
@@ -1,181 +0,0 @@
|
|
1
|
-
module Puppet::Pops
|
2
|
-
module Binder
|
3
|
-
# The BindingsComposer handles composition of multiple bindings sources
|
4
|
-
# It is directed by a {Config::BinderConfig BinderConfig} that indicates how
|
5
|
-
# the final composition should be layered, and what should be included/excluded in each layer
|
6
|
-
#
|
7
|
-
# The bindings composer is intended to be used once per environment as the compiler starts its work.
|
8
|
-
#
|
9
|
-
# TODO: Possibly support envdir: scheme / relative to environment root (== same as confdir if there is only one environment).
|
10
|
-
# This is probably easier to do after ENC changes described in ARM-8 have been implemented.
|
11
|
-
# TODO: If same config is loaded in a higher layer, skip it in the lower (since it is meaningless to load it again with lower
|
12
|
-
# precedence. (Optimization, or possibly an error, should produce a warning).
|
13
|
-
#
|
14
|
-
require 'puppet/plugins/binding_schemes'
|
15
|
-
|
16
|
-
class BindingsComposer
|
17
|
-
|
18
|
-
# The BindingsConfig instance holding the read and parsed, but not evaluated configuration
|
19
|
-
# @api public
|
20
|
-
#
|
21
|
-
attr_reader :config
|
22
|
-
|
23
|
-
# map of scheme name to handler
|
24
|
-
# @api private
|
25
|
-
attr_reader :scheme_handlers
|
26
|
-
|
27
|
-
# @return [Hash{String => Puppet::Module}] map of module name to module instance
|
28
|
-
# @api private
|
29
|
-
attr_reader :name_to_module
|
30
|
-
|
31
|
-
# @api private
|
32
|
-
attr_reader :confdir
|
33
|
-
|
34
|
-
# @api private
|
35
|
-
attr_reader :diagnostics
|
36
|
-
|
37
|
-
# Container of all warnings and errors produced while initializing and loading bindings
|
38
|
-
#
|
39
|
-
# @api public
|
40
|
-
attr_reader :acceptor
|
41
|
-
|
42
|
-
# @api public
|
43
|
-
def initialize()
|
44
|
-
@acceptor = Validation::Acceptor.new()
|
45
|
-
@diagnostics = Config::DiagnosticProducer.new(acceptor)
|
46
|
-
@config = Config::BinderConfig.new(@diagnostics)
|
47
|
-
if acceptor.errors?
|
48
|
-
IssueReporter.assert_and_report(acceptor, :message => 'Binding Composer: error while reading config.')
|
49
|
-
raise Puppet::DevError.new("Internal Error: IssueReporter did not raise exception for errors in bindings config.")
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
# Configures and creates the boot injector.
|
54
|
-
# The read config may optionally contain mapping of bindings scheme handler name to handler class, and
|
55
|
-
# mapping of biera2 backend symbolic name to backend class.
|
56
|
-
# If present, these are turned into bindings in the category 'extension' (which is only used in the boot injector) which
|
57
|
-
# has higher precedence than 'default'. This is done to allow users to override the default bindings for
|
58
|
-
# schemes and backends.
|
59
|
-
# @param scope [Puppet::Parser:Scope] the scope (used to find compiler and injector for the environment)
|
60
|
-
# @api private
|
61
|
-
#
|
62
|
-
def configure_and_create_injector(scope)
|
63
|
-
# create the injector (which will pick up the bindings registered above)
|
64
|
-
@scheme_handlers = SchemeHandlerHelper.new(scope)
|
65
|
-
|
66
|
-
# get extensions from the config
|
67
|
-
# ------------------------------
|
68
|
-
scheme_extensions = @config.scheme_extensions
|
69
|
-
|
70
|
-
# Define a named bindings that are known by the SystemBindings
|
71
|
-
boot_bindings = BindingsFactory.named_bindings(SystemBindings::ENVIRONMENT_BOOT_BINDINGS_NAME) do
|
72
|
-
scheme_extensions.each_pair do |scheme, class_name|
|
73
|
-
# turn each scheme => class_name into a binding (contribute to the buildings-schemes multibind).
|
74
|
-
# do this in category 'extensions' to allow them to override the 'default'
|
75
|
-
bind do
|
76
|
-
name(scheme)
|
77
|
-
instance_of(Puppet::Plugins::BindingSchemes::BINDINGS_SCHEMES_TYPE)
|
78
|
-
in_multibind(Puppet::Plugins::BindingSchemes::BINDINGS_SCHEMES_KEY)
|
79
|
-
to_instance(class_name)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
@injector = scope.compiler.create_boot_injector(boot_bindings.model)
|
85
|
-
end
|
86
|
-
|
87
|
-
# @return [Bindings::LayeredBindings]
|
88
|
-
def compose(scope)
|
89
|
-
# The boot injector is used to lookup scheme-handlers
|
90
|
-
configure_and_create_injector(scope)
|
91
|
-
|
92
|
-
# get all existing modules and their root path
|
93
|
-
@name_to_module = {}
|
94
|
-
scope.environment.modules.each {|mod| name_to_module[mod.name] = mod }
|
95
|
-
|
96
|
-
# setup the confdir
|
97
|
-
@confdir = Puppet.settings[:confdir]
|
98
|
-
|
99
|
-
factory = BindingsFactory
|
100
|
-
contributions = []
|
101
|
-
configured_layers = @config.layering_config.collect do | layer_config |
|
102
|
-
# get contributions
|
103
|
-
contribs = configure_layer(layer_config, scope, diagnostics)
|
104
|
-
# collect the contributions separately for later checking of category precedence
|
105
|
-
contributions.concat(contribs)
|
106
|
-
# create a named layer with all the bindings for this layer
|
107
|
-
factory.named_layer(layer_config['name'], *contribs.collect {|c| c.bindings }.flatten)
|
108
|
-
end
|
109
|
-
|
110
|
-
# Add the two system layers; the final - highest ("can not be overridden" layer), and the lowest
|
111
|
-
# Everything here can be overridden 'default' layer.
|
112
|
-
#
|
113
|
-
configured_layers.insert(0, SystemBindings.final_contribution)
|
114
|
-
configured_layers.insert(-1, SystemBindings.default_contribution)
|
115
|
-
|
116
|
-
# and finally... create the resulting structure
|
117
|
-
factory.layered_bindings(*configured_layers)
|
118
|
-
end
|
119
|
-
|
120
|
-
private
|
121
|
-
|
122
|
-
def configure_layer(layer_description, scope, diagnostics)
|
123
|
-
name = layer_description['name']
|
124
|
-
|
125
|
-
# compute effective set of uris to load (and get rid of any duplicates in the process
|
126
|
-
included_uris = array_of_uris(layer_description['include'])
|
127
|
-
excluded_uris = array_of_uris(layer_description['exclude'])
|
128
|
-
effective_uris = Set.new(expand_included_uris(included_uris)).subtract(Set.new(expand_excluded_uris(excluded_uris)))
|
129
|
-
|
130
|
-
# Each URI should result in a ContributedBindings
|
131
|
-
effective_uris.collect { |uri| scheme_handlers[uri.scheme].contributed_bindings(uri, scope, self) }
|
132
|
-
end
|
133
|
-
|
134
|
-
def array_of_uris(descriptions)
|
135
|
-
return [] unless descriptions
|
136
|
-
descriptions = [descriptions] unless descriptions.is_a?(Array)
|
137
|
-
descriptions.collect {|d| URI.parse(d) }
|
138
|
-
end
|
139
|
-
|
140
|
-
def expand_included_uris(uris)
|
141
|
-
result = []
|
142
|
-
uris.each do |uri|
|
143
|
-
unless handler = scheme_handlers[uri.scheme]
|
144
|
-
raise ArgumentError, "Unknown bindings provider scheme: '#{uri.scheme}'"
|
145
|
-
end
|
146
|
-
result.concat(handler.expand_included(uri, self))
|
147
|
-
end
|
148
|
-
result
|
149
|
-
end
|
150
|
-
|
151
|
-
def expand_excluded_uris(uris)
|
152
|
-
result = []
|
153
|
-
uris.each do |uri|
|
154
|
-
unless handler = scheme_handlers[uri.scheme]
|
155
|
-
raise ArgumentError, "Unknown bindings provider scheme: '#{uri.scheme}'"
|
156
|
-
end
|
157
|
-
result.concat(handler.expand_excluded(uri, self))
|
158
|
-
end
|
159
|
-
result
|
160
|
-
end
|
161
|
-
|
162
|
-
class SchemeHandlerHelper
|
163
|
-
T = Types::TypeFactory
|
164
|
-
HASH_OF_HANDLER = T.hash_of(T.type_of(Puppet::Plugins::BindingSchemes::BINDINGS_SCHEMES_TYPE))
|
165
|
-
def initialize(scope)
|
166
|
-
@scope = scope
|
167
|
-
@cache = nil
|
168
|
-
end
|
169
|
-
def [] (scheme)
|
170
|
-
load_schemes unless @cache
|
171
|
-
@cache[scheme]
|
172
|
-
end
|
173
|
-
|
174
|
-
def load_schemes
|
175
|
-
@cache = @scope.compiler.boot_injector.lookup(@scope, HASH_OF_HANDLER, Puppet::Plugins::BindingSchemes::BINDINGS_SCHEMES_KEY) || {}
|
176
|
-
end
|
177
|
-
end
|
178
|
-
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
@@ -1,813 +0,0 @@
|
|
1
|
-
module Puppet::Pops
|
2
|
-
module Binder
|
3
|
-
# A helper class that makes it easier to construct a Bindings model.
|
4
|
-
#
|
5
|
-
# The Bindings Model
|
6
|
-
# ------------------
|
7
|
-
# The BindingsModel (defined in {Bindings} is a model that is intended to be generally free from Ruby concerns.
|
8
|
-
# This means that it is possible for system integrators to create and serialize such models using other technologies than
|
9
|
-
# Ruby. This manifests itself in the model in that producers are described using instances of a `ProducerDescriptor` rather than
|
10
|
-
# describing Ruby classes directly. This is also true of the type system where type is expressed using the {Types} model
|
11
|
-
# to describe all types.
|
12
|
-
#
|
13
|
-
# This class, the `BindingsFactory` is a concrete Ruby API for constructing instances of classes in the model.
|
14
|
-
#
|
15
|
-
# Named Bindings
|
16
|
-
# --------------
|
17
|
-
# The typical usage of the factory is to call {named_bindings} which creates a container of bindings wrapped in a *build object*
|
18
|
-
# equipped with convenience methods to define the details of the just created named bindings.
|
19
|
-
# The returned builder is an instance of {BindingsFactory::BindingsContainerBuilder BindingsContainerBuilder}.
|
20
|
-
#
|
21
|
-
# Binding
|
22
|
-
# -------
|
23
|
-
# A Binding binds a type/name key to a producer of a value. A binding is conveniently created by calling `bind` on a
|
24
|
-
# `BindingsContainerBuilder`. The call to bind, produces a binding wrapped in a build object equipped with convenience methods
|
25
|
-
# to define the details of the just created binding. The returned builder is an instance of
|
26
|
-
# {BindingsFactory::BindingsBuilder BindingsBuilder}.
|
27
|
-
#
|
28
|
-
# Multibinding
|
29
|
-
# ------------
|
30
|
-
# A multibinding works like a binding, but it requires an additional ID. It also places constraints on the type of the binding;
|
31
|
-
# it must be a collection type (Hash or Array).
|
32
|
-
#
|
33
|
-
# Constructing and Contributing Bindings from Ruby
|
34
|
-
# ------------------------------------------------
|
35
|
-
# The bindings system is used by referencing bindings symbolically; these are then specified in a Ruby file which is autoloaded
|
36
|
-
# by Puppet. The entry point for user code that creates bindings is described in {Puppet::Bindings Bindings}.
|
37
|
-
# That class makes use of a BindingsFactory, and the builder objects to make it easy to construct bindings.
|
38
|
-
#
|
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.
|
40
|
-
# If something advanced is wanted, use of one of the helper class methods on the BuildingsFactory, and/or the
|
41
|
-
# {Types::TypeCalculator TypeCalculator} will be required to create and configure objects that are not handled by
|
42
|
-
# the methods in the builder objects.
|
43
|
-
#
|
44
|
-
# Chaining of calls
|
45
|
-
# ------------------
|
46
|
-
# Since all the build methods return the build object it is easy to stack on additional calls. The intention is to
|
47
|
-
# do this in an order that is readable from left to right: `bind.string.name('thename').to(42)`, but there is nothing preventing
|
48
|
-
# making the calls in some other order e.g. `bind.to(42).name('thename').string`, the second is quite unreadable but produces
|
49
|
-
# the same result.
|
50
|
-
#
|
51
|
-
# For sake of human readability, the method `name` is alsp available as `named`, with the intention that it is used after a type,
|
52
|
-
# e.g. `bind.integer.named('the meaning of life').to(42)`
|
53
|
-
#
|
54
|
-
# Methods taking blocks
|
55
|
-
# ----------------------
|
56
|
-
# Several methods take an optional block. The block evaluates with the builder object as `self`. This means that there is no
|
57
|
-
# need to chain the methods calls, they can instead be made in sequence - e.g.
|
58
|
-
#
|
59
|
-
# bind do
|
60
|
-
# integer
|
61
|
-
# named 'the meaning of life'
|
62
|
-
# to 42
|
63
|
-
# end
|
64
|
-
#
|
65
|
-
# or mix the two styles
|
66
|
-
#
|
67
|
-
# bind do
|
68
|
-
# integer.named 'the meaning of life'
|
69
|
-
# to 42
|
70
|
-
# end
|
71
|
-
#
|
72
|
-
# Unwrapping the result
|
73
|
-
# ---------------------
|
74
|
-
# The result from all methods is a builder object. Call the method `model` to unwrap the constructed bindings model object.
|
75
|
-
#
|
76
|
-
# bindings = BindingsFactory.named_bindings('my named bindings') do
|
77
|
-
# # bind things
|
78
|
-
# end.model
|
79
|
-
#
|
80
|
-
# @example Create a NamedBinding with content
|
81
|
-
# result = BindingsFactory.named_bindings("mymodule::mybindings") do
|
82
|
-
# bind.name("foo").to(42)
|
83
|
-
# bind.string.name("site url").to("http://www.example.com")
|
84
|
-
# end
|
85
|
-
# result.model()
|
86
|
-
#
|
87
|
-
# @api public
|
88
|
-
#
|
89
|
-
module BindingsFactory
|
90
|
-
|
91
|
-
# Alias for the {Types::TypeFactory TypeFactory}. This is also available as the method
|
92
|
-
# `type_factory`.
|
93
|
-
#
|
94
|
-
T = Types::TypeFactory
|
95
|
-
|
96
|
-
# Abstract base class for bindings object builders.
|
97
|
-
# Supports delegation of method calls to the BindingsFactory class methods for all methods not implemented
|
98
|
-
# by a concrete builder.
|
99
|
-
#
|
100
|
-
# @abstract
|
101
|
-
#
|
102
|
-
class AbstractBuilder
|
103
|
-
# The built model object.
|
104
|
-
attr_reader :model
|
105
|
-
|
106
|
-
# @param binding [Bindings::AbstractBinding] The binding to build.
|
107
|
-
# @api public
|
108
|
-
def initialize(binding)
|
109
|
-
@model = binding
|
110
|
-
end
|
111
|
-
|
112
|
-
# Provides convenient access to the Bindings Factory class methods. The intent is to provide access to the
|
113
|
-
# methods that return producers for the purpose of composing more elaborate things than the builder convenience
|
114
|
-
# methods support directly.
|
115
|
-
# @api private
|
116
|
-
#
|
117
|
-
def method_missing(meth, *args, &block)
|
118
|
-
factory = BindingsFactory
|
119
|
-
if factory.respond_to?(meth)
|
120
|
-
factory.send(meth, *args, &block)
|
121
|
-
else
|
122
|
-
super
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
# A bindings builder for an AbstractBinding containing other AbstractBinding instances.
|
128
|
-
# @api public
|
129
|
-
class BindingsContainerBuilder < AbstractBuilder
|
130
|
-
|
131
|
-
# Adds an empty binding to the container, and returns a builder for it for further detailing.
|
132
|
-
# An optional block may be given which is evaluated using `instance_eval`.
|
133
|
-
# @return [BindingsBuilder] the builder for the created binding
|
134
|
-
# @api public
|
135
|
-
#
|
136
|
-
def bind(&block)
|
137
|
-
binding = Bindings::Binding.new()
|
138
|
-
model.addBindings(binding)
|
139
|
-
builder = BindingsBuilder.new(binding)
|
140
|
-
builder.instance_eval(&block) if block_given?
|
141
|
-
builder
|
142
|
-
end
|
143
|
-
|
144
|
-
# Binds a multibind with the given identity where later, the looked up result contains all
|
145
|
-
# contributions to this key. An optional block may be given which is evaluated using `instance_eval`.
|
146
|
-
# @param id [String] the multibind's id used when adding contributions
|
147
|
-
# @return [MultibindingsBuilder] the builder for the created multibinding
|
148
|
-
# @api public
|
149
|
-
#
|
150
|
-
def multibind(id, &block)
|
151
|
-
binding = Bindings::Multibinding.new()
|
152
|
-
binding.id = id
|
153
|
-
model.addBindings(binding)
|
154
|
-
builder = MultibindingsBuilder.new(binding)
|
155
|
-
builder.instance_eval(&block) if block_given?
|
156
|
-
builder
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
# Builds a Binding via convenience methods.
|
161
|
-
#
|
162
|
-
# @api public
|
163
|
-
#
|
164
|
-
class BindingsBuilder < AbstractBuilder
|
165
|
-
|
166
|
-
# @param binding [Bindings::AbstractBinding] the binding to build.
|
167
|
-
# @api public
|
168
|
-
def initialize(binding)
|
169
|
-
super binding
|
170
|
-
data()
|
171
|
-
end
|
172
|
-
|
173
|
-
# Sets the name of the binding.
|
174
|
-
# @param name [String] the name to bind.
|
175
|
-
# @api public
|
176
|
-
def name(name)
|
177
|
-
model.name = name
|
178
|
-
self
|
179
|
-
end
|
180
|
-
|
181
|
-
# Same as {#name}, but reads better in certain combinations.
|
182
|
-
# @api public
|
183
|
-
alias_method :named, :name
|
184
|
-
|
185
|
-
# Sets the binding to be abstract (it must be overridden)
|
186
|
-
# @api public
|
187
|
-
def abstract
|
188
|
-
model.abstract = true
|
189
|
-
self
|
190
|
-
end
|
191
|
-
|
192
|
-
# Sets the binding to be override (it must override something)
|
193
|
-
# @api public
|
194
|
-
def override
|
195
|
-
model.override = true
|
196
|
-
self
|
197
|
-
end
|
198
|
-
|
199
|
-
# Sets the binding to be final (it may not be overridden)
|
200
|
-
# @api public
|
201
|
-
def final
|
202
|
-
model.final = true
|
203
|
-
self
|
204
|
-
end
|
205
|
-
|
206
|
-
# Makes the binding a multibind contribution to the given multibind id
|
207
|
-
# @param id [String] the multibind id to contribute this binding to
|
208
|
-
# @api public
|
209
|
-
def in_multibind(id)
|
210
|
-
model.multibind_id = id
|
211
|
-
self
|
212
|
-
end
|
213
|
-
|
214
|
-
# Sets the type of the binding to the given type.
|
215
|
-
# @note
|
216
|
-
# This is only needed if something other than the default type `Data` is wanted, or if the wanted type is
|
217
|
-
# not provided by one of the convenience methods {#array_of_data}, {#boolean}, {#float}, {#hash_of_data},
|
218
|
-
# {#integer}, {#scalar}, {#pattern}, {#string}, or one of the collection methods {#array_of}, or {#hash_of}.
|
219
|
-
#
|
220
|
-
# To create a type, use the method {#type_factory}, to obtain the type.
|
221
|
-
# @example creating a Hash with Integer key and Array[Integer] element type
|
222
|
-
# tc = type_factory
|
223
|
-
# type(tc.hash(tc.array_of(tc.integer), tc.integer)
|
224
|
-
# @param type [Types::PAnyType] the type to set for the binding
|
225
|
-
# @api public
|
226
|
-
#
|
227
|
-
def type(type)
|
228
|
-
model.type = type
|
229
|
-
self
|
230
|
-
end
|
231
|
-
|
232
|
-
# Sets the type of the binding to Integer.
|
233
|
-
# @return [Types::PIntegerType] the type
|
234
|
-
# @api public
|
235
|
-
def integer()
|
236
|
-
type(T.integer())
|
237
|
-
end
|
238
|
-
|
239
|
-
# Sets the type of the binding to Float.
|
240
|
-
# @return [Types::PFloatType] the type
|
241
|
-
# @api public
|
242
|
-
def float()
|
243
|
-
type(T.float())
|
244
|
-
end
|
245
|
-
|
246
|
-
# Sets the type of the binding to Boolean.
|
247
|
-
# @return [Types::PBooleanType] the type
|
248
|
-
# @api public
|
249
|
-
def boolean()
|
250
|
-
type(T.boolean())
|
251
|
-
end
|
252
|
-
|
253
|
-
# Sets the type of the binding to String.
|
254
|
-
# @return [Types::PStringType] the type
|
255
|
-
# @api public
|
256
|
-
def string()
|
257
|
-
type(T.string())
|
258
|
-
end
|
259
|
-
|
260
|
-
# Sets the type of the binding to Pattern.
|
261
|
-
# @return [Types::PRegexpType] the type
|
262
|
-
# @api public
|
263
|
-
def pattern()
|
264
|
-
type(T.pattern())
|
265
|
-
end
|
266
|
-
|
267
|
-
# Sets the type of the binding to the abstract type Scalar.
|
268
|
-
# @return [Types::PScalarType] the type
|
269
|
-
# @api public
|
270
|
-
def scalar()
|
271
|
-
type(T.scalar())
|
272
|
-
end
|
273
|
-
|
274
|
-
# Sets the type of the binding to the abstract type Data.
|
275
|
-
# @return [Types::PDataType] the type
|
276
|
-
# @api public
|
277
|
-
def data()
|
278
|
-
type(T.data())
|
279
|
-
end
|
280
|
-
|
281
|
-
# Sets the type of the binding to Array[Data].
|
282
|
-
# @return [Types::PArrayType] the type
|
283
|
-
# @api public
|
284
|
-
def array_of_data()
|
285
|
-
type(T.array_of_data())
|
286
|
-
end
|
287
|
-
|
288
|
-
# Sets the type of the binding to Array[T], where T is given.
|
289
|
-
# @param t [Types::PAnyType] the type of the elements of the array
|
290
|
-
# @return [Types::PArrayType] the type
|
291
|
-
# @api public
|
292
|
-
def array_of(t)
|
293
|
-
type(T.array_of(t))
|
294
|
-
end
|
295
|
-
|
296
|
-
# Sets the type of the binding to Hash[Literal, Data].
|
297
|
-
# @return [Types::PHashType] the type
|
298
|
-
# @api public
|
299
|
-
def hash_of_data()
|
300
|
-
type(T.hash_of_data())
|
301
|
-
end
|
302
|
-
|
303
|
-
# Sets type of the binding to `Hash[Literal, t]`.
|
304
|
-
# To also limit the key type, use {#type} and give it a fully specified
|
305
|
-
# hash using {#type_factory} and then `hash_of(value_type, key_type)`.
|
306
|
-
# @return [Types::PHashType] the type
|
307
|
-
# @api public
|
308
|
-
def hash_of(t)
|
309
|
-
type(T.hash_of(t))
|
310
|
-
end
|
311
|
-
|
312
|
-
# Sets the type of the binding based on the given argument.
|
313
|
-
# @overload instance_of(t)
|
314
|
-
# The same as calling {#type} with `t`.
|
315
|
-
# @param t [Types::PAnyType] the type
|
316
|
-
# @overload instance_of(o)
|
317
|
-
# Infers the type from the given Ruby object and sets that as the type - i.e. "set the type
|
318
|
-
# of the binding to be that of the given data object".
|
319
|
-
# @param o [Object] the object to infer the type from
|
320
|
-
# @overload instance_of(c)
|
321
|
-
# @param c [Class] the Class to base the type on.
|
322
|
-
# Sets the type based on the given ruby class. The result is one of the specific puppet types
|
323
|
-
# if the class can be represented by a specific type, or the open ended PRuntimeType otherwise.
|
324
|
-
# @overload instance_of(s)
|
325
|
-
# The same as using a class, but instead of giving a class instance, the class is expressed using its fully
|
326
|
-
# qualified name. This method of specifying the type allows late binding (the class does not have to be loaded
|
327
|
-
# before it can be used in a binding).
|
328
|
-
# @param s [String] the fully qualified classname to base the type on.
|
329
|
-
# @return the resulting type
|
330
|
-
# @api public
|
331
|
-
#
|
332
|
-
def instance_of(t)
|
333
|
-
type(T.type_of(t))
|
334
|
-
end
|
335
|
-
|
336
|
-
# Provides convenient access to the type factory.
|
337
|
-
# This is intended to be used when methods taking a type as argument i.e. {#type}, {#array_of}, {#hash_of}, and {#instance_of}.
|
338
|
-
# @note
|
339
|
-
# The type factory is also available via the constant {T}.
|
340
|
-
# @api public
|
341
|
-
def type_factory
|
342
|
-
Types::TypeFactory
|
343
|
-
end
|
344
|
-
|
345
|
-
# Sets the binding's producer to a singleton producer, if given argument is a value, a literal producer is created for it.
|
346
|
-
# To create a producer producing an instance of a class with lazy loading of the class, use {#to_instance}.
|
347
|
-
#
|
348
|
-
# @overload to(a_literal)
|
349
|
-
# Sets a constant producer in the binding.
|
350
|
-
# @overload to(a_class, *args)
|
351
|
-
# Sets an Instantiating producer (producing an instance of the given class)
|
352
|
-
# @overload to(a_producer_descriptor)
|
353
|
-
# Sets the producer from the given producer descriptor
|
354
|
-
# @return [BindingsBuilder] self
|
355
|
-
# @api public
|
356
|
-
#
|
357
|
-
def to(producer, *args)
|
358
|
-
case producer
|
359
|
-
when Class
|
360
|
-
producer = BindingsFactory.instance_producer(producer.name, *args)
|
361
|
-
when Model::Program
|
362
|
-
# program is not an expression
|
363
|
-
producer = BindingsFactory.evaluating_producer(producer.body)
|
364
|
-
when Model::Expression
|
365
|
-
producer = BindingsFactory.evaluating_producer(producer)
|
366
|
-
when Bindings::ProducerDescriptor
|
367
|
-
else
|
368
|
-
# If given producer is not a producer, create a literal producer
|
369
|
-
producer = BindingsFactory.literal_producer(producer)
|
370
|
-
end
|
371
|
-
model.producer = producer
|
372
|
-
self
|
373
|
-
end
|
374
|
-
|
375
|
-
# Sets the binding's producer to a producer of an instance of given class (a String class name, or a Class instance).
|
376
|
-
# Use a string class name when lazy loading of the class is wanted.
|
377
|
-
#
|
378
|
-
# @overload to_instance(class_name, *args)
|
379
|
-
# @param class_name [String] the name of the class to instantiate
|
380
|
-
# @param args [Object] optional arguments to the constructor
|
381
|
-
# @overload to_instance(a_class)
|
382
|
-
# @param a_class [Class] the class to instantiate
|
383
|
-
# @param args [Object] optional arguments to the constructor
|
384
|
-
#
|
385
|
-
def to_instance(type, *args)
|
386
|
-
class_name = case type
|
387
|
-
when Class
|
388
|
-
type.name
|
389
|
-
when String
|
390
|
-
type
|
391
|
-
else
|
392
|
-
raise ArgumentError, "to_instance accepts String (a class name), or a Class.*args got: #{type.class}."
|
393
|
-
end
|
394
|
-
|
395
|
-
# Help by setting the type - since if an to_instance is bound, the type is know. This avoids having
|
396
|
-
# to specify the same thing twice.
|
397
|
-
self.instance_of(type)
|
398
|
-
model.producer = BindingsFactory.instance_producer(class_name, *args)
|
399
|
-
end
|
400
|
-
|
401
|
-
# Sets the binding's producer to a singleton producer
|
402
|
-
# @overload to_producer(a_producer)
|
403
|
-
# Sets the producer to an instantiated producer. The resulting model can not be serialized as a consequence as there
|
404
|
-
# is no meta-model describing the specialized producer. Use this only in exceptional cases, or where there is never the
|
405
|
-
# need to serialize the model.
|
406
|
-
# @param a_producer [Producers::Producer] an instantiated producer, not serializeable !
|
407
|
-
#
|
408
|
-
# @overload to_producer(a_class, *args)
|
409
|
-
# @param a_class [Class] the class to create an instance of
|
410
|
-
# @param args [Object] the arguments to the given class' new
|
411
|
-
#
|
412
|
-
# @overload to_producer(a_producer_descriptor)
|
413
|
-
# @param a_producer_descriptor [Bindings::ProducerDescriptor] a descriptor
|
414
|
-
# producing Producers::Producer
|
415
|
-
#
|
416
|
-
# @api public
|
417
|
-
#
|
418
|
-
def to_producer(producer, *args)
|
419
|
-
case producer
|
420
|
-
when Class
|
421
|
-
producer = BindingsFactory.instance_producer(producer.name, *args)
|
422
|
-
when Bindings::ProducerDescriptor
|
423
|
-
when Producers::Producer
|
424
|
-
# a custom producer instance
|
425
|
-
producer = BindingsFactory.literal_producer(producer)
|
426
|
-
else
|
427
|
-
raise ArgumentError, "Given producer argument is none of a producer descriptor, a class, or a producer"
|
428
|
-
end
|
429
|
-
metaproducer = BindingsFactory.producer_producer(producer)
|
430
|
-
model.producer = metaproducer
|
431
|
-
self
|
432
|
-
end
|
433
|
-
|
434
|
-
# Sets the binding's producer to a series of producers.
|
435
|
-
# Use this when you want to produce a different producer on each request for a producer
|
436
|
-
#
|
437
|
-
# @overload to_producer(a_producer)
|
438
|
-
# Sets the producer to an instantiated producer. The resulting model can not be serialized as a consequence as there
|
439
|
-
# is no meta-model describing the specialized producer. Use this only in exceptional cases, or where there is never the
|
440
|
-
# need to serialize the model.
|
441
|
-
# @param a_producer [Producers::Producer] an instantiated producer, not serializeable !
|
442
|
-
#
|
443
|
-
# @overload to_producer(a_class, *args)
|
444
|
-
# @param a_class [Class] the class to create an instance of
|
445
|
-
# @param args [Object] the arguments to the given class' new
|
446
|
-
#
|
447
|
-
# @overload to_producer(a_producer_descriptor)
|
448
|
-
# @param a_producer_descriptor [Bindings::ProducerDescriptor] a descriptor
|
449
|
-
# producing Producers::Producer
|
450
|
-
#
|
451
|
-
# @api public
|
452
|
-
#
|
453
|
-
def to_producer_series(producer, *args)
|
454
|
-
case producer
|
455
|
-
when Class
|
456
|
-
producer = BindingsFactory.instance_producer(producer.name, *args)
|
457
|
-
when Bindings::ProducerDescriptor
|
458
|
-
when Producers::Producer
|
459
|
-
# a custom producer instance
|
460
|
-
producer = BindingsFactory.literal_producer(producer)
|
461
|
-
else
|
462
|
-
raise ArgumentError, "Given producer argument is none of a producer descriptor, a class, or a producer"
|
463
|
-
end
|
464
|
-
non_caching = Bindings::NonCachingProducerDescriptor.new()
|
465
|
-
non_caching.producer = producer
|
466
|
-
metaproducer = BindingsFactory.producer_producer(non_caching)
|
467
|
-
|
468
|
-
non_caching = Bindings::NonCachingProducerDescriptor.new()
|
469
|
-
non_caching.producer = metaproducer
|
470
|
-
|
471
|
-
model.producer = non_caching
|
472
|
-
self
|
473
|
-
end
|
474
|
-
|
475
|
-
# Sets the binding's producer to a "non singleton" producer (each call to produce produces a new instance/copy).
|
476
|
-
# @overload to_series_of(a_literal)
|
477
|
-
# a constant producer
|
478
|
-
# @overload to_series_of(a_class, *args)
|
479
|
-
# Instantiating producer
|
480
|
-
# @overload to_series_of(a_producer_descriptor)
|
481
|
-
# a given producer
|
482
|
-
#
|
483
|
-
# @api public
|
484
|
-
#
|
485
|
-
def to_series_of(producer, *args)
|
486
|
-
case producer
|
487
|
-
when Class
|
488
|
-
producer = BindingsFactory.instance_producer(producer.name, *args)
|
489
|
-
when Bindings::ProducerDescriptor
|
490
|
-
else
|
491
|
-
# If given producer is not a producer, create a literal producer
|
492
|
-
producer = BindingsFactory.literal_producer(producer)
|
493
|
-
end
|
494
|
-
non_caching = Bindings::NonCachingProducerDescriptor.new()
|
495
|
-
non_caching.producer = producer
|
496
|
-
model.producer = non_caching
|
497
|
-
self
|
498
|
-
end
|
499
|
-
|
500
|
-
# Sets the binding's producer to one that performs a lookup of another key
|
501
|
-
# @overload to_lookup_of(type, name)
|
502
|
-
# @overload to_lookup_of(name)
|
503
|
-
# @api public
|
504
|
-
#
|
505
|
-
def to_lookup_of(type, name=nil)
|
506
|
-
unless name
|
507
|
-
name = type
|
508
|
-
type = Types::TypeFactory.data()
|
509
|
-
end
|
510
|
-
model.producer = BindingsFactory.lookup_producer(type, name)
|
511
|
-
self
|
512
|
-
end
|
513
|
-
|
514
|
-
# Sets the binding's producer to a one that performs a lookup of another key and they applies hash lookup on
|
515
|
-
# the result.
|
516
|
-
#
|
517
|
-
# @overload to_lookup_of(type, name)
|
518
|
-
# @overload to_lookup_of(name)
|
519
|
-
# @api public
|
520
|
-
#
|
521
|
-
def to_hash_lookup_of(type, name, key)
|
522
|
-
model.producer = BindingsFactory.hash_lookup_producer(type, name, key)
|
523
|
-
self
|
524
|
-
end
|
525
|
-
|
526
|
-
# Sets the binding's producer to one that produces the first found lookup of another key
|
527
|
-
# @param list_of_lookups [Array] array of arrays [type name], or just name (implies data)
|
528
|
-
# @example
|
529
|
-
# binder.bind().name('foo').to_first_found('fee', 'fum', 'extended-bar')
|
530
|
-
# binder.bind().name('foo').to_first_found(
|
531
|
-
# [T.ruby(ThisClass), 'fee'],
|
532
|
-
# [T.ruby(ThatClass), 'fum'],
|
533
|
-
# 'extended-bar')
|
534
|
-
# @api public
|
535
|
-
#
|
536
|
-
def to_first_found(*list_of_lookups)
|
537
|
-
producers = list_of_lookups.collect do |entry|
|
538
|
-
if entry.is_a?(Array)
|
539
|
-
case entry.size
|
540
|
-
when 2
|
541
|
-
BindingsFactory.lookup_producer(entry[0], entry[1])
|
542
|
-
when 1
|
543
|
-
BindingsFactory.lookup_producer(Types::TypeFactory.data(), entry[0])
|
544
|
-
else
|
545
|
-
raise ArgumentError, "Not an array of [type, name], name, or [name]"
|
546
|
-
end
|
547
|
-
else
|
548
|
-
BindingsFactory.lookup_producer(T.data(), entry)
|
549
|
-
end
|
550
|
-
end
|
551
|
-
model.producer = BindingsFactory.first_found_producer(*producers)
|
552
|
-
self
|
553
|
-
end
|
554
|
-
|
555
|
-
# Sets options to the producer.
|
556
|
-
# See the respective producer for the options it supports. All producers supports the option `:transformer`, a
|
557
|
-
# puppet or ruby lambda that is evaluated with the produced result as an argument. The ruby lambda gets scope and
|
558
|
-
# value as arguments.
|
559
|
-
# @note
|
560
|
-
# A Ruby lambda is not cross platform safe. Use a puppet lambda if you want a bindings model that is.
|
561
|
-
#
|
562
|
-
# @api public
|
563
|
-
def producer_options(options)
|
564
|
-
options.each do |k, v|
|
565
|
-
arg = Bindings::NamedArgument.new()
|
566
|
-
arg.name = k.to_s
|
567
|
-
arg.value = v
|
568
|
-
model.addProducer_args(arg)
|
569
|
-
end
|
570
|
-
self
|
571
|
-
end
|
572
|
-
end
|
573
|
-
|
574
|
-
# A builder specialized for multibind - checks that type is Array or Hash based. A new builder sets the
|
575
|
-
# multibinding to be of type Hash[Data].
|
576
|
-
#
|
577
|
-
# @api public
|
578
|
-
class MultibindingsBuilder < BindingsBuilder
|
579
|
-
# Constraints type to be one of {Types::PArrayType PArrayType}, or {Types::PHashType PHashType}.
|
580
|
-
# @raise [ArgumentError] if type constraint is not met.
|
581
|
-
# @api public
|
582
|
-
def type(type)
|
583
|
-
unless type.class == Types::PArrayType || type.class == Types::PHashType
|
584
|
-
raise ArgumentError, "Wrong type; only PArrayType, or PHashType allowed, got '#{type.to_s}'"
|
585
|
-
end
|
586
|
-
model.type = type
|
587
|
-
self
|
588
|
-
end
|
589
|
-
|
590
|
-
# Overrides the default implementation that will raise an exception as a multibind requires a hash type.
|
591
|
-
# Thus, if nothing else is requested, a multibind will be configured as Hash[Data].
|
592
|
-
#
|
593
|
-
def data()
|
594
|
-
hash_of_data()
|
595
|
-
end
|
596
|
-
end
|
597
|
-
|
598
|
-
# Produces a ContributedBindings.
|
599
|
-
# A ContributedBindings is used by bindings providers to return a set of named bindings.
|
600
|
-
#
|
601
|
-
# @param name [String] the name of the contributed bindings (for human use in messages/logs only)
|
602
|
-
# @param named_bindings [Bindings::NamedBindings, Array<Bindings::NamedBindings>] the
|
603
|
-
# named bindings to include
|
604
|
-
#
|
605
|
-
def self.contributed_bindings(name, named_bindings)
|
606
|
-
cb = Bindings::ContributedBindings.new()
|
607
|
-
cb.name = name
|
608
|
-
named_bindings = [named_bindings] unless named_bindings.is_a?(Array)
|
609
|
-
named_bindings.each {|b| cb.addBindings(b) }
|
610
|
-
cb
|
611
|
-
end
|
612
|
-
|
613
|
-
# Creates a named binding container, the top bindings model object.
|
614
|
-
# A NamedBindings is typically produced by a bindings provider.
|
615
|
-
#
|
616
|
-
# The created container is wrapped in a BindingsContainerBuilder for further detailing.
|
617
|
-
# Unwrap the built result when done.
|
618
|
-
# @api public
|
619
|
-
#
|
620
|
-
def self.named_bindings(name, &block)
|
621
|
-
binding = Bindings::NamedBindings.new()
|
622
|
-
binding.name = name
|
623
|
-
builder = BindingsContainerBuilder.new(binding)
|
624
|
-
builder.instance_eval(&block) if block_given?
|
625
|
-
builder
|
626
|
-
end
|
627
|
-
|
628
|
-
# This variant of {named_bindings} evaluates the given block as a method on an anonymous class,
|
629
|
-
# thus, if the block defines methods or do something with the class itself, this does not pollute
|
630
|
-
# the base class (BindingsContainerBuilder).
|
631
|
-
# @api private
|
632
|
-
#
|
633
|
-
def self.safe_named_bindings(name, scope, &block)
|
634
|
-
binding = Bindings::NamedBindings.new()
|
635
|
-
binding.name = name
|
636
|
-
anon = Class.new(BindingsContainerBuilder) do
|
637
|
-
def initialize(b)
|
638
|
-
super b
|
639
|
-
end
|
640
|
-
end
|
641
|
-
anon.send(:define_method, :_produce, block)
|
642
|
-
builder = anon.new(binding)
|
643
|
-
case block.arity
|
644
|
-
when 0
|
645
|
-
builder._produce()
|
646
|
-
when 1
|
647
|
-
builder._produce(scope)
|
648
|
-
end
|
649
|
-
builder
|
650
|
-
end
|
651
|
-
|
652
|
-
# Creates a literal/constant producer
|
653
|
-
# @param value [Object] the value to produce
|
654
|
-
# @return [Bindings::ProducerDescriptor] a producer description
|
655
|
-
# @api public
|
656
|
-
#
|
657
|
-
def self.literal_producer(value)
|
658
|
-
producer = Bindings::ConstantProducerDescriptor.new()
|
659
|
-
producer.value = value
|
660
|
-
producer
|
661
|
-
end
|
662
|
-
|
663
|
-
# Creates a non caching producer
|
664
|
-
# @param producer [Bindings::Producer] the producer to make non caching
|
665
|
-
# @return [Bindings::ProducerDescriptor] a producer description
|
666
|
-
# @api public
|
667
|
-
#
|
668
|
-
def self.non_caching_producer(producer)
|
669
|
-
p = Bindings::NonCachingProducerDescriptor.new()
|
670
|
-
p.producer = producer
|
671
|
-
p
|
672
|
-
end
|
673
|
-
|
674
|
-
# Creates a producer producer
|
675
|
-
# @param producer [Bindings::Producer] a producer producing a Producer.
|
676
|
-
# @return [Bindings::ProducerDescriptor] a producer description
|
677
|
-
# @api public
|
678
|
-
#
|
679
|
-
def self.producer_producer(producer)
|
680
|
-
p = Bindings::ProducerProducerDescriptor.new()
|
681
|
-
p.producer = producer
|
682
|
-
p
|
683
|
-
end
|
684
|
-
|
685
|
-
# Creates an instance producer
|
686
|
-
# An instance producer creates a new instance of a class.
|
687
|
-
# If the class implements the class method `inject` this method is called instead of `new` to allow further lookups
|
688
|
-
# to take place. This is referred to as *assisted inject*. If the class method `inject` is missing, the regular `new` method
|
689
|
-
# is called.
|
690
|
-
#
|
691
|
-
# @param class_name [String] the name of the class
|
692
|
-
# @param args[Object] arguments to the class' `new` method.
|
693
|
-
# @return [Bindings::ProducerDescriptor] a producer description
|
694
|
-
# @api public
|
695
|
-
#
|
696
|
-
def self.instance_producer(class_name, *args)
|
697
|
-
p = Bindings::InstanceProducerDescriptor.new()
|
698
|
-
p.class_name = class_name
|
699
|
-
args.each {|a| p.addArguments(a) }
|
700
|
-
p
|
701
|
-
end
|
702
|
-
|
703
|
-
# Creates a Producer that looks up a value.
|
704
|
-
# @param type [Types::PAnyType] the type to lookup
|
705
|
-
# @param name [String] the name to lookup
|
706
|
-
# @return [Bindings::ProducerDescriptor] a producer description
|
707
|
-
# @api public
|
708
|
-
def self.lookup_producer(type, name)
|
709
|
-
p = Bindings::LookupProducerDescriptor.new()
|
710
|
-
p.type = type
|
711
|
-
p.name = name
|
712
|
-
p
|
713
|
-
end
|
714
|
-
|
715
|
-
# Creates a Hash lookup producer that looks up a hash value, and then a key in the hash.
|
716
|
-
#
|
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).
|
719
|
-
# @param name [String] the name to lookup
|
720
|
-
# @param key [Object] the key to lookup in the looked up hash (type should comply with given key type).
|
721
|
-
# @api public
|
722
|
-
#
|
723
|
-
def self.hash_lookup_producer(type, name, key)
|
724
|
-
p = Bindings::HashLookupProducerDescriptor.new()
|
725
|
-
p.type = type
|
726
|
-
p.name = name
|
727
|
-
p.key = key
|
728
|
-
p
|
729
|
-
end
|
730
|
-
|
731
|
-
# Creates a first-found producer that looks up from a given series of keys. The first found looked up
|
732
|
-
# value will be produced.
|
733
|
-
# @param producers [Array<Bindings::ProducerDescriptor>] the producers to consult in given order
|
734
|
-
# @return [Bindings::ProducerDescriptor] a producer descriptor
|
735
|
-
# @api public
|
736
|
-
def self.first_found_producer(*producers)
|
737
|
-
p = Bindings::FirstFoundProducerDescriptor.new()
|
738
|
-
producers.each {|p2| p.addProducers(p2) }
|
739
|
-
p
|
740
|
-
end
|
741
|
-
|
742
|
-
# Creates an evaluating producer that evaluates a puppet expression.
|
743
|
-
# A puppet expression is most conveniently created by using the {Parser::EvaluatingParser EvaluatingParser} as it performs
|
744
|
-
# all set up and validation of the parsed source. Two convenience methods are used to parse an expression, or parse a ruby string
|
745
|
-
# as a puppet string. See methods {puppet_expression}, {puppet_string} and {parser} for more information.
|
746
|
-
#
|
747
|
-
# @example producing a puppet expression
|
748
|
-
# expr = puppet_string("Interpolated $fqdn", __FILE__)
|
749
|
-
#
|
750
|
-
# @param expression [Model::Expression] a puppet DSL expression as producer by the eparser.
|
751
|
-
# @return [Bindings::ProducerDescriptor] a producer descriptor
|
752
|
-
# @api public
|
753
|
-
#
|
754
|
-
def self.evaluating_producer(expression)
|
755
|
-
p = Bindings::EvaluatingProducerDescriptor.new()
|
756
|
-
p.expression = expression
|
757
|
-
p
|
758
|
-
end
|
759
|
-
|
760
|
-
# Creates a NamedLayer. This is used by the bindings system to create a model of the layers.
|
761
|
-
#
|
762
|
-
# @api public
|
763
|
-
#
|
764
|
-
def self.named_layer(name, *bindings)
|
765
|
-
result = Bindings::NamedLayer.new()
|
766
|
-
result.name = name
|
767
|
-
bindings.each { |b| result.addBindings(b) }
|
768
|
-
result
|
769
|
-
end
|
770
|
-
|
771
|
-
# Create a LayeredBindings. This is used by the bindings system to create a model of all given layers.
|
772
|
-
# @param named_layers [Bindings::NamedLayer] one or more named layers
|
773
|
-
# @return [Bindings::LayeredBindings] the constructed layered bindings.
|
774
|
-
# @api public
|
775
|
-
#
|
776
|
-
def self.layered_bindings(*named_layers)
|
777
|
-
result = Bindings::LayeredBindings.new()
|
778
|
-
named_layers.each {|b| result.addLayers(b) }
|
779
|
-
result
|
780
|
-
end
|
781
|
-
|
782
|
-
# @return [Parser::EvaluatingParser] a parser for puppet expressions
|
783
|
-
def self.parser
|
784
|
-
@parser ||= Parser::EvaluatingParser.new()
|
785
|
-
end
|
786
|
-
|
787
|
-
# Parses and produces a puppet expression from the given string.
|
788
|
-
# @param string [String] puppet source e.g. "1 + 2"
|
789
|
-
# @param source_file [String] the source location, typically `__File__`
|
790
|
-
# @return [Model::Expression] an expression (that can be bound)
|
791
|
-
# @api public
|
792
|
-
#
|
793
|
-
def self.puppet_expression(string, source_file)
|
794
|
-
parser.parse_string(string, source_file).current
|
795
|
-
end
|
796
|
-
|
797
|
-
# Parses and produces a puppet string expression from the given string.
|
798
|
-
# The string will automatically be quoted and special characters escaped.
|
799
|
-
# As an example if given the (ruby) string "Hi\nMary" it is transformed to
|
800
|
-
# the puppet string (illustrated with a ruby string) "\"Hi\\nMary\”" before being
|
801
|
-
# parsed.
|
802
|
-
#
|
803
|
-
# @param string [String] puppet source e.g. "On node $!{fqdn}"
|
804
|
-
# @param source_file [String] the source location, typically `__File__`
|
805
|
-
# @return [Model::Expression] an expression (that can be bound)
|
806
|
-
# @api public
|
807
|
-
#
|
808
|
-
def self.puppet_string(string, source_file)
|
809
|
-
parser.parse_string(parser.quote(string), source_file).current
|
810
|
-
end
|
811
|
-
end
|
812
|
-
end
|
813
|
-
end
|